-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsim_utils.py
More file actions
111 lines (75 loc) · 4.74 KB
/
Copy pathsim_utils.py
File metadata and controls
111 lines (75 loc) · 4.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import argparse, logging, gzip, os
import scanpy as sc
import pandas as pd
import numpy as np
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
MIN_NUM_CELL = 5
MIN_NUM_DONOR = 30
EPS = 1e-16
ERROR_TOL = 1e-3
def get_command_line_sim():
# Create the parser
parser = argparse.ArgumentParser(description="Generate simulated data")
# Add the arguments
parser.add_argument('--adata', type=str, required=False,
help='scRNA-seq data')
parser.add_argument('--cell-type-col', type=str, required=False, default='',
help='Cell type column name')
parser.add_argument('--gene-id-col', type=str, required=False, default='ID',
help='Column name for gene ID')
parser.add_argument('--cell-id-col', type=str, required=False, default='ID',
help='Column name for gene ID')
parser.add_argument('--focal-cell-type', type=str, required=False, default='',
help='Cell type to focus on')
parser.add_argument('--donor-id-col', type=str, required=False,
help='Donor ID column name')
parser.add_argument('--gene-list', type=str, required=False, default='',
help='A list of genes of interest')
parser.add_argument('--max-step-size', type=int, required=False, default=15,
help='Max number of step size in the random walk')
parser.add_argument('--num-gwas-genes', type=int, required=False, default=1000,
help='Number of gwas genes to select')
parser.add_argument('--prob-thres', type=float, required=False, default=0.0,
help='Random walk probability threshold')
parser.add_argument('--min-expr-var-thres', type=float, required=False, default=1e-4,
help='Gene expression standard deviation threshold')
parser.add_argument('--max-expr-var-thres', type=float, required=False, default=10.0,
help='Gene expression standard deviation threshold')
parser.add_argument('--prop-causal-cells', type=float, required=False, default=0.05,
help='Proportion of causal cell neighborhoods')
parser.add_argument('--num-expr-bins', type=int, required=False, default=10,
help='Number of bins on the mean expression')
parser.add_argument('--prop-causal-gwas-genes', type=float, required=False, default=0.5,
help='Proportion of causal genes')
parser.add_argument('--varexp-total', type=float, required=False, default=0.3,
help='variance in outcome explained by GWAS genes')
parser.add_argument('--varexp-per-gwas-gene', type=float, required=False, default=0.3,
help='variance in outcome explained by GWAS genes')
parser.add_argument('--varexp-per-control-gene', type=float, required=False, default=0.3,
help='variance in outcome explained by GWAS genes')
parser.add_argument('--max-relmat-gwas-ctrl-corr', type=float, required=False, default=0.95,
help='variance in outcome explained by all the genes')
parser.add_argument('--gwas-causal-enrichment', type=float, required=False, default=10.0,
help='Enrichment of causal genes among GWAS genes')
parser.add_argument('--num-sim', type=int, required=False, default=2000,
help='Number of simulations')
parser.add_argument('--min-num-donor', type=int, required=False, default=30,
help='Minimum number of donors in each neighborhood')
parser.add_argument('--min-num-cell', type=int, required=False, default=5,
help='Minimum number of cell in each neighborhood')
parser.add_argument('--neighborhood-definition-method', type=str, required=False, default='nam',
help='Choose from threshold or nam')
parser.add_argument('--seed', type=int, required=True, help="Seed for the random number generator")
parser.add_argument('--out-dir', type=str, required=False,
help='Output directory')
# Execute the parse_args() method
args = parser.parse_args()
return args
def get_sim_str(args):
out_str = 'numgwasgenes{}'.format(args.num_gwas_genes)
out_str = out_str + '_propcaugwasgenes{}'.format(args.prop_causal_gwas_genes)
out_str = out_str + '_gwascauen{}'.format(args.gwas_causal_enrichment)
out_str = out_str + '_varexptotal{}'.format(args.varexp_total)
out_str = out_str + '_varexppergwasgene{}'.format(args.varexp_per_gwas_gene)
out_str = out_str + '_varexppercontrolgene{}'.format(args.varexp_per_control_gene)
return out_str