MCPcopy Create free account
hub / github.com/InternScience/InternAgent / GEARS_Model

Class GEARS_Model

tasks/AutoTPPR/code/experiment.py:47–226  ·  view source on GitHub ↗

GEARS model

Source from the content-addressed store, hash-verified

45
46
47class GEARS_Model(torch.nn.Module):
48 """
49 GEARS model
50
51 """
52
53 def __init__(self, args):
54 """
55 :param args: arguments dictionary
56 """
57
58 super(GEARS_Model, self).__init__()
59 self.args = args
60 self.num_genes = args['num_genes']
61 self.num_perts = args['num_perts']
62 hidden_size = args['hidden_size']
63 self.uncertainty = args['uncertainty']
64 self.num_layers = args['num_go_gnn_layers']
65 self.indv_out_hidden_size = args['decoder_hidden_size']
66 self.num_layers_gene_pos = args['num_gene_gnn_layers']
67 self.no_perturb = args['no_perturb']
68 self.pert_emb_lambda = 0.2
69
70 # perturbation positional embedding added only to the perturbed genes
71 self.pert_w = nn.Linear(1, hidden_size)
72
73 # gene/globel perturbation embedding dictionary lookup
74 self.gene_emb = nn.Embedding(self.num_genes, hidden_size, max_norm=True)
75 self.pert_emb = nn.Embedding(self.num_perts, hidden_size, max_norm=True)
76
77 # transformation layer
78 self.emb_trans = nn.ReLU()
79 self.pert_base_trans = nn.ReLU()
80 self.transform = nn.ReLU()
81 self.emb_trans_v2 = MLP([hidden_size, hidden_size, hidden_size], last_layer_act='ReLU')
82 self.pert_fuse = MLP([hidden_size, hidden_size, hidden_size], last_layer_act='ReLU')
83
84 # gene co-expression GNN
85 self.G_coexpress = args['G_coexpress'].to(args['device'])
86 self.G_coexpress_weight = args['G_coexpress_weight'].to(args['device'])
87
88 self.emb_pos = nn.Embedding(self.num_genes, hidden_size, max_norm=True)
89 self.layers_emb_pos = torch.nn.ModuleList()
90 for i in range(1, self.num_layers_gene_pos + 1):
91 self.layers_emb_pos.append(SGConv(hidden_size, hidden_size, 1))
92
93 ### perturbation gene ontology GNN
94 self.G_sim = args['G_go'].to(args['device'])
95 self.G_sim_weight = args['G_go_weight'].to(args['device'])
96
97 self.sim_layers = torch.nn.ModuleList()
98 for i in range(1, self.num_layers + 1):
99 self.sim_layers.append(SGConv(hidden_size, hidden_size, 1))
100
101 # decoder shared MLP
102 self.recovery_w = MLP([hidden_size, hidden_size*2, hidden_size], last_layer_act='linear')
103
104 # gene specific decoder

Callers 1

model_initializeMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected