Skip to content

Instantly share code, notes, and snippets.

@MarioZZJ
Last active April 25, 2024 01:12
Show Gist options
  • Save MarioZZJ/a8afdc5284106a9f128d5ad3924e73da to your computer and use it in GitHub Desktop.
Save MarioZZJ/a8afdc5284106a9f128d5ad3924e73da to your computer and use it in GitHub Desktop.
计算种子文献前后1年内含同mesh的耦合强度
DECLARE @PMID INT;
DECLARE @PYEAR INT;
DECLARE @THRESHOLD INT = 2;
DECLARE cur CURSOR FOR
SELECT py.pmid AS PMID, py.publish_year AS PYEAR FROM
userdb_mariozzj_SAO4D.dbo.sample_xyc AS s
INNER JOIN
pubmed_2024.dbo.pmid_py AS py
ON s.pmid = py.pmid;
DECLARE @MergeResult TABLE (
seed INT,
pmid INT,
num_comesh INT,
num_cocite INT
);
OPEN cur;
FETCH NEXT FROM cur INTO @PMID, @PYEAR;
WHILE @@FETCH_STATUS = 0
BEGIN
WITH pym AS (
SELECT py.pmid, py.publish_year, pm.descriptor_ui_n FROM
(
SELECT pmid, publish_year FROM pubmed_2024.dbo.pmid_py
) AS py
INNER JOIN
(
SELECT pmid, descriptor_ui_n FROM pubmed_2024.dbo.pub_descriptor
) AS pm
ON py.pmid = pm.pmid
), comesh AS (
SELECT pmid, COUNT(*) AS num_comesh FROM pym
WHERE publish_year >= @PYEAR -1 AND publish_year <= @PYEAR +1 AND descriptor_ui_n IN
(
SELECT descriptor_ui_n FROM pubmed_2024.dbo.pub_descriptor
WHERE pmid = @PMID
)
GROUP BY pmid
HAVING COUNT(*) >= @THRESHOLD
), fp_ref AS (
SELECT referenced FROM pubmed_2024.dbo.open_citation_collection
WHERE citing = @PMID
)
INSERT INTO @MergeResult (seed, pmid, num_comesh, num_cocite)
SELECT @PMID AS seed, comesh.pmid, comesh.num_comesh, COALESCE(cocite.num_cocite,0) AS num_cocite FROM
comesh LEFT JOIN
(
SELECT comesh_ref.pmid, COUNT(*) AS num_cocite FROM
(
SELECT comesh.pmid, occ.referenced
FROM comesh
INNER JOIN pubmed_2024.dbo.open_citation_collection AS occ
ON comesh.pmid = occ.citing
) AS comesh_ref
INNER JOIN fp_ref
ON comesh_ref.referenced = fp_ref.referenced
GROUP BY comesh_ref.pmid
) AS cocite
ON comesh.pmid = cocite.pmid
ORDER BY num_cocite
FETCH NEXT FROM cur INTO @PMID, @PYEAR;
END
CLOSE cur;
DEALLOCATE cur;
SELECT *
FROM @MergeResult;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment