OSCR

NERINE reveals rare variant associations in gene networks across phenotypes and implicates an SNCA-PRL-LRRK2 subnetwork in Parkinson's disease.

Code ↔ Paper

11 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 11 matches
  1. [1] § STAR★Methods › Method details › Variant and sample quality control in cohorts ↔ preprocess_gzvcf.py, lines 1–25 · score 0.95 · dbNSFP, splice region variants, splice acceptors, splice donors, stop lost, start lost
  2. [2] § STAR★Methods › Method details › Variant and sample quality control in cohorts ↔ rvtt_fixed_threshold.py, lines 1–26 · score 0.93 · splice region variants, splice acceptors, splice donors, stop lost, start lost, allele frequencies
  3. [3] § STAR★Methods › Method details › Constructing ontology-based network topologies ↔ NERINE_main.py, lines 99–137 · score 0.76 · DepMap, network topology, genetics interactions, co essentiality, co expression, GTEx
  4. [4] § STAR★Methods › Method details › Performance benchmark on UKBB lipid phenotypes ↔ rvtt_fixed_threshold.py, lines 1–26 · score 0.71 · minor allele frequency, synonymous variants, damaging missense, deletions, insertions, frameshifts
  5. [5] § STAR★Methods › Method details › Performance benchmark on UKBB lipid phenotypes ↔ rvtt_variable_threshold.py, lines 1–27 · score 0.71 · minor allele frequency, synonymous variants, damaging missense, deletions, insertions, frameshifts
  6. [6] § STAR★Methods › Method details › Gene-network topology extraction ↔ util/utility_functions.py, lines 525–590 · score 0.68 · adjacency matrices, genetic interactions, diagonal, HuRI, TDP, inBio
  7. [7] § STAR★Methods › Method details › Gene-network topology extraction ↔ NERINE_main.py, lines 99–137 · score 0.65 · adjacency matrices, network topologies, genetic interactions, Map, physical, database
  8. [8] § STAR★Methods › Method details › Gene-network topology extraction ↔ util/utility_functions.py, lines 621–652 · score 0.61 · DepMap, gene dependency, co essentiality, correlation, cell, networks
  9. [9] § Results › Modeling rare variant burden in gene networks incorporating edge geometry ↔ NERINE_main.py, lines 169–220 · score 0.58 · log likelihood ratio, rare variant burden, trait increasing, NERINE, network, gene
  10. [10] § STAR★Methods › Method details › Constructing ontology-based network topologies ↔ util/utility_functions.py, lines 525–590 · score 0.56 · protein interaction databases, genetics interactions, physical, cell, network, genes
  11. [11] § Results › Modeling rare variant burden in gene networks incorporating edge geometry ↔ NERINE_main.py, lines 169–220 · score 0.55 · log likelihood ratio, rare variant, lookup, burden, NERINE, network

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 295 lines · 14 KB · CC-BY-NC-ND-4.0 · 4 matches

  1. #!/usr/bin/env python
  2. '''
  3. Runs NERINE to assess rare variant burden in gene networks for dichotomous traits. Based of the paper "NERINE reveals rare variant associations in gene networks across multiple phenotypes and implicates an SNCA-PRL-LRRK2 subnetwork in Parkinson’s disease" by Sumaiya Nazeen et al.
  4. This is written by Sumaiya Nazeen <[email hidden]>.
  5. This software requires working installations of Python (version >= 3.12.4) and R (version >= 4.3.2) to be available. Check the README for detailed information on package dependencies.
  6. '''
  7. # import required packages
  8. from __future__ import print_function
  9. __version__ = "0.1.0"
  10. import os
  11. from os import path, mkdir
  12. from os.path import isdir
  13. import glob
  14. import argparse
  15. import sys
  16. import subprocess
  17. import random
  18. import time
  19. import threading
  20. import pandas as pd
  21. import numpy as np
  22. import csv
  23. import shutil
  24. import operator
  25. from shutil import copyfile
  26. from multiprocessing.dummy import Pool
  27. from datetime import datetime
  28. from collections import Counter
  29. import util.utility_functions as uf
  30. script_loc = os.path.realpath(__file__)
  31. sys.path.append(os.path.join(os.path.dirname(script_loc),'util'))
  32. # Setting up environment variables
  33. my_env = os.environ.copy()
  34. # Utility classes and functions
  35. class ArgClass:
  36. def __init__(self, *args, **kwargs):
  37. self.args = args
  38. self.kwargs = kwargs
  39. def eprint(*args, **kwargs):
  40. print(*args, file=sys.stderr, **kwargs)
  41. def safe_makedirs(directory):
  42. if not os.path.exists(directory):
  43. os.makedirs(directory)
  44. else:
  45. print("Directory already exists!!")
  46. return 1
  47. return 0
  48. # run count table generation
  49. def create_ftable(in_vcf, in_fam, ftable_dir, args):
  50. '''Creates case control mutation counts tables from input gzvcf file for six variant categories:
  51. in_vcf (string): Path to annotated gzipped vcf file with genotypes
  52. in_fam (string): Path to fam file with case-control status
  53. ftable_dir (string): output directory for case control mutation counts tables
  54. Unpacking args:
  55. genelist (string): Path to the list of genes in the network with one gene symbol per line
  56. mincutoff (float): minimum MAF cutoff for selecting qualifying variants. Default value 0.
  57. maxcutoff (float): maximum MAF cutoff for selecting qualifying variants. Default value 0.05.
  58. Returns case and control freqtables per category of variants for input to NERINE.
  59. '''
  60. print("inside_create_ftable",in_vcf, in_fam, ftable_dir, args.genelist_arg, args.mincutoff_arg, args.maxcutoff_arg)
  61. safe_makedirs(ftable_dir)
  62. #convert to mutations file
  63. tmp_bname = os.path.basename(in_vcf).strip("vcf.gz")
  64. tmp_mut = os.path.join(ftable_dir,tmp_bname)
  65. val = uf.convert_gzvcf_to_mutations(in_vcf, tmp_mut)
  66. if val != 0:
  67. print("conversion from gz.vcf to mutations.tsv file failed\n")
  68. exit(1)
  69. mutfile = tmp_mut + "_mutations.tsv"
  70. # subset to coding_mutations if the mutations file is too large
  71. # coding_mutfile = tmp_mut + "_coding_mutations.tsv"
  72. # subset_coding_mutations(mutfile, coding_mutfile)
  73. # create_freq_table(coding_mutfile, in_fam, genefile, min_cutoff, max_cutoff, out_prefix)
  74. genefile = args.genelist_arg
  75. min_cutoff = args.mincutoff_arg
  76. max_cutoff = args.maxcutoff_arg
  77. fam_bname = os.path.basename(in_fam).split(".")[0]
  78. out_prefix = '_'.join([tmp_mut, fam_bname, str(min_cutoff), str(max_cutoff)])
  79. val = uf.create_freq_table(mutfile, in_fam, genefile, min_cutoff, max_cutoff, out_prefix)
  80. if val != 0:
  81. print("generation of frequency tables from mutations.tsv failed\n")
  82. # run network generation
  83. def generate_network(network_dir, network_type, resource_dir, resource_prefix, args):
  84. '''Generates network topology for a gene set when bespoke network topology is not available:
  85. network_dir (string): Path to output directory for networks
  86. network_type (int): 1 (dafault) = Physical & genetic interactions
  87. from PPI database, 2 = co-expression in GTEx tissue, and
  88. 3 = co-essentiality in DepMap
  89. resource_dir (string): Path to directory containing resource files
  90. needed for network generation
  91. resource_prefix (string): Prefix for resource file
  92. Unpacking args:
  93. genelist (string): Path to file containing the list of genes
  94. Returns the adjacency matrix of the gene network.
  95. '''
  96. print("inside_generate_network",network_dir, network_type, resource_dir, resource_prefix, args.genelist_arg)
  97. safe_makedirs(network_dir)
  98. if network_type == 1:
  99. genefile = args.genelist_arg
  100. bname = os.path.splitext(os.path.basename(genefile))[0]
  101. outfile = os.path.join(network_dir,bname+"_phy.tsv")
  102. uf.generate_network_phy(genefile, resource_dir, resource_prefix, outfile)
  103. elif network_type == 2:
  104. genefile = args.genelist_arg
  105. gctfile = os.path.join(resource_dir,resource_prefix+".gct.gz")
  106. bname = os.path.splitext(os.path.basename(genefile))[0]
  107. outfile = os.path.join(network_dir,bname+"_coexpression.tsv")
  108. uf.generate_network_coexpression(gctfile, genefile, outfile)
  109. elif network_type == 3:
  110. genefile = args.genelist_arg
  111. infile = os.path.join(resource_dir,resource_prefix+".tsv")
  112. bname = os.path.splitext(os.path.basename(genefile))[0]
  113. outfile = os.path.join(network_dir,bname+"_coessentiality.tsv")
  114. uf.generate_network_coessentiality(infile, genefile, outfile)
  115. else:
  116. print("Invalid network type\n")
  117. exit(1)
  118. return 0
  119. # run lookup table generation
  120. def generate_lookup(network_file, lookup_dir, args):
  121. '''Generates lookup table for a gene network:
  122. network_file (string): Path to network file
  123. lookup_dir (string): Output directory for lookup table
  124. Unpacking args:
  125. testtype (int): 1 = genes can have only trait-increasing effect, 2 (default) = genes can have effects in both directions
  126. Returns R object containing the lookup table.
  127. '''
  128. print("inside_generate_lookup",network_file, lookup_dir, args.testtype_arg)
  129. safe_makedirs(lookup_dir)
  130. bname = os.path.splitext(os.path.basename(network_file))[0]
  131. ttype = args.testtype_arg
  132. alpha_levels = 9
  133. if ttype == 1:
  134. alpha_levels = 4
  135. elif ttype == 2:
  136. alpha_levels = 9
  137. else:
  138. print("Invalid test type\n")
  139. exit(1)
  140. out_prefix = os.path.join(lookup_dir,bname+"_l"+str(alpha_levels))
  141. command = network_file + ' ' + str(alpha_levels) + ' ' + str(10000) + ' ' + out_prefix
  142. rscript_path = os.path.dirname(script_loc)+'/genLookup.R'
  143. os.system('Rscript '+rscript_path+ ' ' + command)
  144. return 0
  145. # run NERINE test
  146. def run_nerine(ftable_dir, network_file, lt_file, in_fam, out_dir, args):
  147. '''Run NERINE to assess rare variant burden in a network:
  148. ftable_dir (string): Path to directory containing case-control
  149. mutation counts tables
  150. network_file (string): Path to network file
  151. lt_file (string): Path to lookup table file
  152. in_fam (string): Path to fam file with case-control status
  153. out_dir (string): Path to output directory
  154. Unpacking args:
  155. genelist (string): Path to file containing the list of genes
  156. testtype (int): 1 = genes can have only trait-increasing effect, 2 (default) = genes can have effects in both directions
  157. num_cores (int): number of parallel processors to use
  158. mincutoff (float): minimum MAF cutoff for selecting qualifying variants. Default value 0.
  159. maxcutoff (float): maximum MAF cutoff for selecting qualifying variants. Default value 0.05.
  160. Returns estimated network effect, log-likelihood ratio, and significance p-value as well as individual gene effects in .RDS and .txt files.
  161. '''
  162. print("running NERINE", ftable_dir, network_file, lt_file, in_fam, out_dir, args.testtype_arg, args.genelist_arg,
  163. args.numcore_arg, args.mincutoff_arg, args.maxcutoff_arg)
  164. safe_makedirs(out_dir)
  165. categories = ['LoF','damaging','damaging_missense','missense','neutral','synonymous']
  166. categories.sort()
  167. case_ftable_files = glob.glob(os.path.join(ftable_dir,"*case_freqtable*.tsv"))
  168. case_ftable_files.sort()
  169. control_ftable_files = glob.glob(os.path.join(ftable_dir,"*control_freqtable*.tsv"))
  170. control_ftable_files.sort()
  171. ttype = args.testtype_arg
  172. if ttype == 1:
  173. alpha_levels = 4
  174. elif ttype == 2:
  175. alpha_levels = 9
  176. else:
  177. print("Invalid test type\n")
  178. exit(1)
  179. genelist_file = args.genelist_arg
  180. num_cores = args.numcore_arg
  181. min_cutoff = args.mincutoff_arg
  182. max_cutoff = args.maxcutoff_arg
  183. for i in range(len(categories)):
  184. print("------ Analyzing "+ categories[i] + " ------")
  185. bname = os.path.splitext(os.path.basename(case_ftable_files[i]))[0].split("case")[0]
  186. out_prefix = os.path.join(out_dir, bname+categories[i])
  187. command = case_ftable_files[i] + ' ' + control_ftable_files[i] + ' ' + in_fam + ' ' + network_file + ' ' + lt_file + ' ' + str(alpha_levels) + ' ' + out_prefix + ' ' + str(num_cores)
  188. rscript_path = os.path.dirname(script_loc)+'/run_NERINE.R'
  189. os.system('Rscript '+rscript_path+ ' ' + command)
  190. print("------ Finished "+ categories[i] + " ------")
  191. return 0
  192. # NERINE interface
  193. def main(argv):
  194. parser = argparse.ArgumentParser(description='Assess rare variant burden in gene networks')
  195. # Shared arguments
  196. numcore_arg = ArgClass('-n', dest='numcore_arg', default=1, help='Number of parallel processors to be used', type=int)
  197. testtype_arg = ArgClass('-k', dest='testtype_arg', default=2, help='Test type: 1 = pos-only and 2 (default) = pos-neg', type=int)
  198. genelist_arg = ArgClass('--glist', dest='genelist_arg', help='path to input genelist')
  199. mincutoff_arg = ArgClass('--mincutoff_arg', help='minimum MAF cutoff for qualifying rare variants', type=float, default=0)
  200. maxcutoff_arg = ArgClass('--maxcutoff_arg', help='maximum MAF cutoff for qualifying rare variants', type=float, default=0.05)
  201. # Subparsers
  202. subparsers = parser.add_subparsers(help='sub-commands', dest='mode')
  203. # Count table args
  204. parser_count = subparsers.add_parser('create_freqtable', help='Generate case and control mutation count tables from input vcf for six variant categories: damaging, damaging_missense, LoF, missense, neutral, and synonymous', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
  205. parser_count.add_argument('in_vcf', help='Path to input gzvcf file')
  206. parser_count.add_argument('in_fam', help='Path to input fam file')
  207. parser_count.add_argument('ftable_dir', help='Output directory for case and control mutation count tables')
  208. parser_count.add_argument(*genelist_arg.args, **genelist_arg.kwargs)
  209. parser_count.add_argument(*mincutoff_arg.args, **mincutoff_arg.kwargs)
  210. parser_count.add_argument(*maxcutoff_arg.args, **maxcutoff_arg.kwargs)
  211. # Network generation args
  212. parser_network = subparsers.add_parser('generate_network', help='Prepare network file for test', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
  213. parser_network.add_argument('network_dir', help='Output directory for network file')
  214. parser_network.add_argument('network_type', type=int, default=1, help='1 (default): physical/genetic, 2: co-expression, 3: co-essentiality')
  215. parser_network.add_argument('resource_dir', help='Path to directory containing database files')
  216. parser_network.add_argument('resource_prefix', help='Prefix for resource files')
  217. parser_network.add_argument(*genelist_arg.args, **genelist_arg.kwargs)
  218. # Lookup table generation args
  219. parser_lookup = subparsers.add_parser('generate_lookup', help='Prepare lookp table for test', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
  220. parser_lookup.add_argument('network_file', help='Path for network file')
  221. parser_lookup.add_argument('lookup_dir', help='output directory for lookup table')
  222. parser_lookup.add_argument(*testtype_arg.args, **testtype_arg.kwargs)
  223. # Test network for rare variant burden
  224. parser_nerine = subparsers.add_parser('run_NERINE', help='run NERINE to assess rare variant network effect', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
  225. parser_nerine.add_argument('ftable_dir', help='Path to directory containing case-control mutation counts tables')
  226. parser_nerine.add_argument('network_file', help='Path to network adjacency matrix file')
  227. parser_nerine.add_argument('lt_file', help='Path to lookup table file')
  228. parser_nerine.add_argument('in_fam', help='Path to tab-separated .fam file')
  229. parser_nerine.add_argument('out_dir', help='Path to output directory')
  230. parser_nerine.add_argument(*genelist_arg.args, **genelist_arg.kwargs)
  231. parser_nerine.add_argument(*testtype_arg.args, **testtype_arg.kwargs)
  232. parser_nerine.add_argument(*numcore_arg.args, **numcore_arg.kwargs)
  233. parser_nerine.add_argument(*mincutoff_arg.args, **mincutoff_arg.kwargs)
  234. parser_nerine.add_argument(*maxcutoff_arg.args, **maxcutoff_arg.kwargs)
  235. args=parser.parse_args(argv)
  236. print(args)
  237. sys.stdout.flush()
  238. mode = args.mode
  239. if mode == 'run_NERINE':
  240. st_time = datetime.now()
  241. print('starting NERINE')
  242. print("{:%Y-%m-%d %H:%M:%S}".format(st_time))
  243. run_nerine(args.ftable_dir, args.network_file, args.lt_file, args.in_fam, args.out_dir, args)
  244. print("Total full annot wall clock runtime (sec): {}".format((datetime.now() - st_time).total_seconds()))
  245. elif mode == 'create_freqtable':
  246. create_ftable(args.in_vcf, args.in_fam, args.ftable_dir, args)
  247. elif mode == 'generate_network':
  248. generate_network(args.network_dir, args.network_type, args.resource_dir, args.resource_prefix, args)
  249. elif mode == 'generate_lookup':
  250. generate_lookup(args.network_file, args.lookup_dir, args)
  251. if __name__ == "__main__":
  252. main(sys.argv[1:])

NERINE_main.py at commit d1525e0, under CC-BY-NC-ND-4.0 · at the source

Overview

Authors: Sumaiya Nazeen1,2,3,4, Xinyuan Wang3, Autumn R Morrow1,3, Ronya Strom3, Elizabeth Ethier3, Dylan Ritter5, Alexander BH Henderson6, Jalwa Afroz5, Christopher S Cassa2,4, Nathan O Stitziel7,8, Rajat M Gupta2,9, Kelvin C Luk10, Lorenz Studer5,11, Vikram Khurana3,4,11,12, Shamil R Sunyaev1,2,4
ORCID iDs: Autumn R Morrow
  1. Department of Biomedical Informatics, Harvard Medical School, Boston, MA, USA
  2. Division of Genetics, Brigham and Women’s Hospital and Harvard Medical School, Boston, MA, USA
  3. American Parkinson’s Disease Association Center for Advanced Research, Harvard Biomarkers Study 2.0 and MyTrial Programs, Division of Movement Disorders, Department of Neurology, Brigham and Women’s Hospital and Harvard Medical School, Boston, MA, USA
  4. Broad Institute of MIT and Harvard, Cambridge, MA, USA
  5. The Center for Stem Cell Biology, Sloan-Kettering Institute for Cancer Research, New York, NY, USA
  6. Department of Neurology, Sean M. Healey & AMG Center for ALS, Massachusetts General Hospital and Harvard Medical School, Boston, MA, USA
  7. Cardiovascular Division, John T. Milliken Department of Medicine, Washington University School of Medicine, St. Louis, MO, USA
  8. Department of Genetics, Washington University School of Medicine, St. Louis, MO, USA
  9. Division of Cardiovascular Medicine, Brigham and Women’s Hospital and Harvard Medical School, Boston, MA, USA
  10. Department of Pathology and Laboratory Medicine, Perelman School of Medicine at the University of Pennsylvania, Philadelphia, PA, USA
  11. Aligning Science Across Parkinson’s (ASAP) Collaborative Research Network, Chevy Chase, MD, USA
  12. Harvard Stem Cell Institute, Cambridge, MA, USA
Institutions: Broad Institute (United States); Brigham and Women's Hospital (United States); Harvard University (United States); Massachusetts Institute of Technology (United States); Memorial Sloan Kettering Cancer Center (United States); Massachusetts General Hospital (United States); Washington University in St. Louis (United States); University of Pennsylvania (United States); Aligning Science Across Parkinson's (United States); Harvard Stem Cell Institute (United States)
Journal: Cell genomics, volume 6, issue 7, article 101284
Dates: received 20 May 2025; accepted 28 May 2026; published online 22 June 2026; in print July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1016/j.xgen.2026.101284 · PMID 42330948 · PMCID PMC13347950 · OpenAlex W7165569841
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), other condition (population), Parkinson's (population), cellular / molecular (subfield)
Methods: Preprocessing, Connectivity, Statistics, Physiology & signal measures, Spectral & time-frequency
Keywords: network-based rare variant association, multivariate statistical genetics, complex disease genetics, Parkinson's disease, α-synuclein/prolactin stress response, neuronal Parkinson's model, type 2 diabetes, coronary artery disease, myocardial infarction, breast cancer
MeSH: alpha-Synuclein*, Gene Regulatory Networks*, Parkinson Disease*, Female, Humans, Leucine-Rich Repeat Serine-Threonine Protein Kinase-2, Phenotype (* major topic)
Topic: Genetic Associations and Epidemiology (Genetics, Biochemistry, Genetics and Molecular Biology), according to OpenAlex
Funding: New York Stem Cell Foundation; NIGMS NIH HHS (R35 GM127131); NCI NIH HHS (P30 CA008748); NIA NIH HHS (T32 AG000222); NINDS NIH HHS (R01 NS109209); National Institutes of Health; NIMH NIH HHS (R01 MH101244); NHGRI NIH HHS (U01 HG012009); Aligning Science Across Parkinson&apos;s
Citations: cited by 1 paper (Europe PMC); 143 references in the paper

Abstract

Studying the genetic basis of human phenotypes involves two primary strategies. Model-system experiments generate interpretable gene networks but do not establish relevance to human disease. In contrast, statistical genetics identifies variant- and gene-level associations but cannot test mechanistic models. Here, we bridge these approaches by introducing NERINE, a hierarchical model-based rare variant association test that incorporates gene network topology while remaining robust to network inaccuracies. NERINE supports analysis of networks from established pathway databases and model-system screens. A comprehensive search across pathway databases reveals associations for breast cancer, cardiovascular diseases, and type 2 diabetes not detected by single-gene tests. Applied to experimental screen-derived networks in Parkinson’s disease (PD), NERINE highlights autophagy-, vesicle-trafficking-, and protein-homeostasis-related gene modules. Genome-scale CRISPR interference (CRISPRi) screening in human neurons and NERINE converge on PRL, revealing an intraneuronal α-synuclein/prolactin stress response that may impact resilience to PD.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repositories

Its files are read in the Code ↔ Paper reader above, with 11 matches between paragraphs and lines of code.

snz20/NERINE

License: CC-BY-NC-ND-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: d1525e043a940de2acdc5ba141b807759cc1a421, 20 January 2025
Languages: Python (3), R (3)
Size: 88 files, 6 scripts
Software Heritage: not archived
Found in: “Data and code availability”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (3 files), NumPy (2 files), pandas (2 files), ggplot2 (1 file), Matplotlib (1 file), NetworkX (1 file), SciPy (1 file), seaborn (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
8 files

Zenodo 19209293

License: CC-BY-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data and code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (3 files), NumPy (2 files), pandas (2 files), ggplot2 (1 file), Matplotlib (1 file), NetworkX (1 file), SciPy (1 file), seaborn (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
8 files

snz20/RVTT

License: MIT
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 41dd5186dfb577587582c0cd330b3e9ab8501452, 6 February 2024
Languages: Python (3)
Size: 5 files, 3 scripts
Software Heritage: not archived
Found in: “Data and code availability”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (3 files), pandas (3 files), SciPy (2 files)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
5 files
At the source: github.com/snz20/RVTT

Zenodo 10627549

License: CC-BY-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data and code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (3 files), pandas (3 files), SciPy (2 files)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
5 files

The paper's code and data availability statement is in the Data section.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 4 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 18 scripts, each with its path and the digest of its content;
  • 11 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data and code availability

Canonical pathway gene sets were obtained from MSigDB109 (v.7.3; https://www.gsea-msigdb.org/gsea/msigdb/human/collections.jsp). Human physical PPIs were downloaded from STRING110 (v.11.5; https://string-db.org/cgi/download), HuRI (http://www.interactome-atlas.org/download: last accessed in January 2022), and inBio Map111 (https://www.intomics.com/inbio/map: last accessed in January 2022) databases. Additional genetic interactions were obtained from the Megchelenbrink et al. study.112 TransposeNet’s humanized α-synuclein-, β-amyloid-, and TDP-43-modifier networks were obtained from our prior study.2 Bulk expression data in TPM format from different human tissues were downloaded from the GTEx113 (v.8; https://www.gtexportal.org/), and gene dependency data in different cell lines were downloaded from DepMap114 (release: 2023Q2; https://depmap.org/portal/data_page/?tab=allData).

WES and phenotypic data from the UKBB,115 available through https://ams.ukbiobank.ac.uk, were accessed via application 41250 and processed on the DNAnexus platform (https://ukbiobank.dnanexus.com/landing). MGBBB116 WES and phenotypic data were accessed via https://biobankportal.partners.org/ (PI: V.K.) and were restricted to affiliated investigators. AMP-PD117 whole-genome sequencing (WGS) and phenotypic data (v.2.5; release 2022) were accessed through the AMP-PD Knowledge Platform (https://www.amp-pd.org).

NERINE’s source code is available on GitHub (https://github.com/snz20/NERINE) and Zenodo (https://doi.org/10.5281/zenodo.19209293). RVTT was run by adapting the code from https://github.com/snz20/RVTT (Zenodo, https://doi.org/10.5281/zenodo.10627549). CMC-Fisher, Fisher’s combined test, and SKAT-O were run on R (v.4.3.2) using stats (v.4.3.2), poolr (v.1.2.0), and SKAT (v.2.2.5) packages, respectively. MAGeCK-iNC analysis was performed using the MAGeCK118 (v.0.5.9.2) package on python (v.2.7), and GO gene set enrichment analysis was performed using GSEApy (v.1.1.3) on python (v.3.12.4). Comprehensive information on study-related resources is provided in the key resources table.

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 15 authors, 10 keywords, 7 MeSH terms, 9 funders, 142 references.

Cite

This paper

Nazeen, S., Wang, X., Morrow, A. R., Strom, R., Ethier, E., Ritter, D., Henderson, A. B., Afroz, J., Cassa, C. S., Stitziel, N. O., Gupta, R. M., Luk, K. C., Studer, L., Khurana, V., & Sunyaev, S. R. (2026). NERINE reveals rare variant associations in gene networks across phenotypes and implicates an SNCA-PRL-LRRK2 subnetwork in Parkinson's disease. Cell genomics, 6(7), 101284. https://doi.org/10.1016/j.xgen.2026.101284

BibTeX

@article{nazeen2026nerine,
author = {Nazeen, Sumaiya and Wang, Xinyuan and Morrow, Autumn R and Strom, Ronya and Ethier, Elizabeth and Ritter, Dylan and Henderson, Alexander BH and Afroz, Jalwa and Cassa, Christopher S and Stitziel, Nathan O and Gupta, Rajat M and Luk, Kelvin C and Studer, Lorenz and Khurana, Vikram and Sunyaev, Shamil R},
title = {{NERINE reveals rare variant associations in gene networks across phenotypes and implicates an SNCA-PRL-LRRK2 subnetwork in Parkinson's disease}},
journal = {Cell genomics},
year = {2026},
month = jun,
volume = {6},
number = {7},
pages = {101284},
publisher = {Elsevier},
issn = {2666-979X},
doi = {10.1016/j.xgen.2026.101284},
url = {https://doi.org/10.1016/j.xgen.2026.101284},
pmid = {42330948},
pmcid = {PMC13347950}
}

RIS

TY - JOUR
AU - Nazeen, Sumaiya
AU - Wang, Xinyuan
AU - Morrow, Autumn R
AU - Strom, Ronya
AU - Ethier, Elizabeth
AU - Ritter, Dylan
AU - Henderson, Alexander BH
AU - Afroz, Jalwa
AU - Cassa, Christopher S
AU - Stitziel, Nathan O
AU - Gupta, Rajat M
AU - Luk, Kelvin C
AU - Studer, Lorenz
AU - Khurana, Vikram
AU - Sunyaev, Shamil R
TI - NERINE reveals rare variant associations in gene networks across phenotypes and implicates an SNCA-PRL-LRRK2 subnetwork in Parkinson's disease
T2 - Cell genomics
J2 - Cell Genom
PY - 2026
DA - 2026/06/22
VL - 6
IS - 7
SP - 101284
SN - 2666-979X
PB - Elsevier
DO - 10.1016/j.xgen.2026.101284
UR - https://doi.org/10.1016/j.xgen.2026.101284
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.xgen.2026.101284",
"type": "article-journal",
"title": "NERINE reveals rare variant associations in gene networks across phenotypes and implicates an SNCA-PRL-LRRK2 subnetwork in Parkinson's disease",
"container-title": "Cell genomics",
"author": [
{
"family": "Nazeen",
"given": "Sumaiya"
},
{
"family": "Wang",
"given": "Xinyuan"
},
{
"family": "Morrow",
"given": "Autumn R"
},
{
"family": "Strom",
"given": "Ronya"
},
{
"family": "Ethier",
"given": "Elizabeth"
},
{
"family": "Ritter",
"given": "Dylan"
},
{
"family": "Henderson",
"given": "Alexander BH"
},
{
"family": "Afroz",
"given": "Jalwa"
},
{
"family": "Cassa",
"given": "Christopher S"
},
{
"family": "Stitziel",
"given": "Nathan O"
},
{
"family": "Gupta",
"given": "Rajat M"
},
{
"family": "Luk",
"given": "Kelvin C"
},
{
"family": "Studer",
"given": "Lorenz"
},
{
"family": "Khurana",
"given": "Vikram"
},
{
"family": "Sunyaev",
"given": "Shamil R"
}
],
"container-title-short": "Cell Genom",
"volume": "6",
"issue": "7",
"page": "101284",
"DOI": "10.1016/j.xgen.2026.101284",
"PMID": "42330948",
"PMCID": "PMC13347950",
"ISSN": "2666-979X",
"publisher": "Elsevier",
"URL": "https://doi.org/10.1016/j.xgen.2026.101284",
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
22
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1016/j.nbd.2026.107379 [code]
DYRK1A and Parkinson's disease, facts and hypotheses.
Journal: Neurobiology of disease
In common: ggplot2, seaborn, tidyverse, 4 other tools, Parkinson's, cellular / molecular, 8 references
[2] doi:10.1038/s41467-026-76676-0 [code]
Determinants of functional burden pleiotropy and gene dosage responses across human traits.
Journal: Nature communications
In common: NetworkX, ggplot2, seaborn, 5 other tools, cellular / molecular, 3 references
[3] doi:10.1038/s41467-026-72598-z [code]
Functional impact of genetic background on variable expressivity in neurodevelopmental disorders.
Journal: Nature communications
In common: NetworkX, ggplot2, seaborn, 5 other tools, other condition, 3 references
[4] doi:10.1016/j.xcrm.2026.102766 [code]
A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.
Journal: Cell reports. Medicine
In common: NetworkX, ggplot2, seaborn, 5 other tools, other condition, cellular / molecular, 2 references
[5] doi:10.1038/s41467-026-73996-z [code]
Genetic architecture of white matter microstructure captured by unsupervised deep representation learning of fractional anisotropy maps.
Journal: Nature communications
In common: ggplot2, seaborn, tidyverse, 4 other tools, cellular / molecular, 3 references
[6] doi:10.1038/s41467-026-75882-0 [code]
A massively parallel CRISPR-based screening platform for modifiers of neuronal depolarization.
Journal: Nature communications
In common: NetworkX, seaborn, pandas, 3 other tools, cellular / molecular, 3 references
[7] doi:10.1016/j.cell.2026.05.047 [code]
An emergent disease-associated motor neuron state precedes cell death in ALS.
Journal: Cell
In common: ggplot2, seaborn, tidyverse, 4 other tools, other condition, cellular / molecular, 3 references
[8] doi:10.1038/s41467-026-76675-1 [code]
Long-read proteogenomic atlas of human neuronal differentiation reveals isoform diversity informing neurodevelopmental risk mechanisms.
Journal: Nature communications
In common: NetworkX, ggplot2, seaborn, 5 other tools, 2 references
[9] doi:10.1038/s41467-026-71351-w [code]
Variants in the proteasome regulator PSMF1 cause a phenotypic spectrum from parkinsonism to perinatal lethality.
Journal: Nature communications
In common: ggplot2, tidyverse, Parkinson's, other condition, cellular / molecular, 4 references
[10] doi:10.1038/s41380-026-03571-x [code]
Convergent coexpression reveals shared biological mechanisms underlying common and rare variant risk in six neuropsychiatric disorders.
Journal: Molecular psychiatry
In common: ggplot2, tidyverse, pandas, 2 other tools, cellular / molecular, 4 references

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.