Skip to content

Commit 2e536a3

Browse files
DriessenAAlice Driessen
andauthored
Revisions (#4)
* Revisions, long time no commit * Re-ordered figures, main fig 5 and fig. 6 * before resubmit revision --------- Co-authored-by: Alice Driessen <alicedriessen@Alices-MacBook-Air.local>
1 parent 9f7b126 commit 2e536a3

112 files changed

Lines changed: 59681 additions & 16292 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

carot/models/embedding.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ def encode_car_11dim(self, car: str) -> list:
7070

7171
return encoding
7272

73-
def __call__(self, condition: str):
73+
def __call__(self, condition: str, dose_split=None):
74+
# dose_split for compatability with CMonge
7475
condition = self.embeddings[condition]
7576
condition_batch = jnp.asarray([condition for _ in range(self.batch_size)])
7677
return condition_batch, 1
@@ -141,7 +142,8 @@ def encode_car_16dim(self, car):
141142

142143
return encoding
143144

144-
def __call__(self, condition: str):
145+
def __call__(self, condition: str, dose_split=None):
146+
# dose_split for compatability with CMonge
145147
condition = self.embeddings[condition]
146148
condition_batch = jnp.asarray([condition for _ in range(self.batch_size)])
147149
return condition_batch, 1
@@ -172,7 +174,8 @@ def __init__(
172174
values = jnp.asarray(row.values.astype("float"))
173175
self.embeddings[index] = values
174176

175-
def __call__(self, condition: str):
177+
def __call__(self, condition: str, dose_split=None):
178+
# dose_split for compatability with CMonge
176179
condition = self.embeddings[condition]
177180
condition_batch = jnp.asarray([condition for _ in range(self.batch_size)])
178181
return condition_batch, 1
@@ -242,7 +245,8 @@ def __init__(
242245
values = jnp.asarray(row.values.astype("float"))
243246
self.embeddings[index] = values
244247

245-
def __call__(self, condition: str):
248+
def __call__(self, condition: str, dose_split=None):
249+
# dose_split for compatability with CMonge
246250
condition = self.embeddings[condition]
247251
condition_batch = jnp.asarray([condition for _ in range(self.batch_size)])
248252
return condition_batch, 1

carot/utils.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,91 @@ def score_transports_and_targets_combinations(all_expr, all_meta):
181181
scores["scores"] = scores["scores"].astype(float)
182182

183183
return scores
184+
185+
def monge_get_source_target_transport(
186+
trainer: "MongeGapTrainer",
187+
datamodule: "AbstractDataModule",
188+
n_samples=1,
189+
target=True,
190+
source=True,
191+
transport=True,
192+
batch_size: int = None,
193+
):
194+
if batch_size is None:
195+
batch_size = datamodule.batch_size
196+
197+
if datamodule.split[2] > 0:
198+
print("Evaluating on test set")
199+
split_type = "test"
200+
elif datamodule.split[1] > 0:
201+
print("Evaluating on validation set")
202+
split_type = "valid"
203+
else:
204+
print("Evaluating on training set")
205+
split_type = "train"
206+
all_expr = []
207+
all_meta = []
208+
for i in range(n_samples):
209+
if split_type == "valid":
210+
sel_target_cells = random.sample(
211+
datamodule.target_valid_cells.tolist(),
212+
batch_size,
213+
)
214+
sel_control_cells = random.sample(
215+
datamodule.control_valid_cells.tolist(),
216+
batch_size,
217+
)
218+
219+
elif split_type == "test":
220+
sel_target_cells = random.sample(
221+
datamodule.target_test_cells.tolist(), batch_size
222+
)
223+
sel_control_cells = random.sample(
224+
datamodule.control_test_cells.tolist(),
225+
batch_size,
226+
)
227+
elif split_type == "train":
228+
sel_target_cells = random.sample(
229+
datamodule.target_train_cells.tolist(),
230+
batch_size,
231+
)
232+
sel_control_cells = random.sample(
233+
datamodule.control_train_cells.tolist(),
234+
batch_size,
235+
)
236+
237+
cond_expr = datamodule.adata[sel_target_cells].X
238+
cond_meta = datamodule.adata.obs.loc[sel_target_cells, :]
239+
240+
source_expr = datamodule.adata[sel_control_cells].X
241+
source_meta = datamodule.adata.obs.loc[sel_control_cells, :]
242+
243+
if target:
244+
cond_meta["sample_n"] = i
245+
cond_meta["dtype"] = "target"
246+
all_expr.append(pd.DataFrame(cond_expr, columns=datamodule.adata.var_names))
247+
all_meta.append(cond_meta)
248+
249+
if source:
250+
source_meta["dtype"] = "source"
251+
source_meta["sample_n"] = i
252+
253+
all_meta.append(source_meta)
254+
all_expr.append(
255+
pd.DataFrame(source_expr, columns=datamodule.adata.var_names)
256+
)
257+
258+
if transport:
259+
trans = trainer.transport(source_expr)
260+
trans = datamodule.decoder(trans)
261+
trans_meta = cond_meta.copy()
262+
trans_meta["dtype"] = "transport"
263+
trans_meta["sample_n"] = i
264+
265+
all_expr.append(pd.DataFrame(trans, columns=datamodule.adata.var_names))
266+
all_meta.append(trans_meta)
267+
268+
all_expr = pd.concat(all_expr).reset_index(drop=True)
269+
all_meta = pd.concat(all_meta).reset_index(drop=True)
270+
271+
return all_expr, all_meta
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
overwrite: 1007
2+
db_collection: finetuning_num_genes
3+
dataset:
4+
data_params:
5+
covariate_keys: dummy_donor
6+
dataset_path: /Users/alicedriessen/Box/CAR_Tcells/Model/OT/CD4_chemCPA_anno.h5ad
7+
degs_key: all_genes
8+
dose_key: dose
9+
pert_category: car_dummydonor
10+
perturbation_key: CAR_Variant
11+
smiles_key: SMILES
12+
split_key: 41BB_OOD
13+
use_drugs_idx: true
14+
dataset_type: trapnell
15+
model:
16+
additional_params:
17+
decoder_activation: ReLU
18+
doser_type: amortized
19+
multi_task: false
20+
patience: 50
21+
seed: 1337
22+
append_ae_layer: true
23+
enable_cpa_mode: false
24+
embedding:
25+
directory: /Users/alicedriessen/Library/CloudStorage/Box-Box/CAR_Tcells/Model/OT/embedding
26+
model: esm2_t48_15B_UR50D_tail_dim
27+
hparams:
28+
adversary_depth: 2
29+
adversary_lr: 0.0011926173789223548
30+
adversary_steps: 2
31+
adversary_wd: 0.000009846738873614555
32+
adversary_width: 128
33+
autoencoder_depth: 4
34+
autoencoder_lr: 0.0015751320499779737
35+
autoencoder_wd: 6.251373574521742e-7
36+
autoencoder_width: 256
37+
batch_size: 32
38+
dim: 32
39+
dosers_depth: 3
40+
dosers_lr: 0.0015751320499779737
41+
dosers_wd: 6.251373574521742e-7
42+
dosers_width: 64
43+
dropout: 0.262378
44+
embedding_encoder_depth: 4
45+
embedding_encoder_width: 128
46+
penalty_adversary: 0.4550475813202185
47+
reg_adversary: 9.100951626404369
48+
reg_adversary_cov: 26.975154833351137
49+
reg_multi_task: 10.675229346653245
50+
step_size_lr: 50
51+
load_pretrained: false
52+
pretrained_model_hashes:
53+
grover_base: ff420aea264fca7668ecb147f60762a1
54+
jtvae: a7060ac4e2c6154e64a13acd414cbba2
55+
rdkit: 4f061dbfc7af05cf84f06a724b0c8563
56+
pretrained_model_path: /Users/alicedriessen/Library/CloudStorage/Box-Box/CAR_Tcells/Model/chemCPA/CD4_41BB_OOD_dummy_donor
57+
profiling:
58+
outdir: ./
59+
run_profiler: false
60+
training:
61+
checkpoint_freq: 25
62+
full_eval_during_train: false
63+
max_minutes: 1400
64+
num_epochs: 201
65+
run_eval_disentangle: true
66+
run_eval_logfold: false
67+
run_eval_r2: true
68+
run_eval_r2_sc: false
69+
save_checkpoints: true
70+
save_dir: /Users/alicedriessen/Library/CloudStorage/Box-Box/CAR_Tcells/Model/chemCPA/CD4_41BB_OOD_dummy_donor
71+
ckpt_name: model
72+
seed: 497393925
73+

configs/chemCPA_CD4_ID_config.yml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
overwrite: 1007
2+
db_collection: finetuning_num_genes
3+
dataset:
4+
data_params:
5+
covariate_keys: Donor
6+
dataset_path: /Users/alicedriessen/Box/CAR_Tcells/Model/OT/CD4_chemCPA_anno.h5ad
7+
degs_key: all_genes
8+
dose_key: dose
9+
pert_category: car_donor
10+
perturbation_key: CAR_Variant
11+
smiles_key: SMILES
12+
split_key: sel_CARs_ID
13+
use_drugs_idx: true
14+
dataset_type: trapnell
15+
model:
16+
additional_params:
17+
decoder_activation: ReLU
18+
doser_type: amortized
19+
multi_task: false
20+
patience: 50
21+
seed: 1337
22+
append_ae_layer: true
23+
enable_cpa_mode: false
24+
embedding:
25+
directory: /Users/alicedriessen/Library/CloudStorage/Box-Box/CAR_Tcells/Model/OT/embedding
26+
model: esm2_t48_15B_UR50D_tail_dim
27+
hparams:
28+
adversary_depth: 2
29+
adversary_lr: 0.0011926173789223548
30+
adversary_steps: 2
31+
adversary_wd: 0.000009846738873614555
32+
adversary_width: 128
33+
autoencoder_depth: 4
34+
autoencoder_lr: 0.0015751320499779737
35+
autoencoder_wd: 6.251373574521742e-7
36+
autoencoder_width: 256
37+
batch_size: 32
38+
dim: 32
39+
dosers_depth: 3
40+
dosers_lr: 0.0015751320499779737
41+
dosers_wd: 6.251373574521742e-7
42+
dosers_width: 64
43+
dropout: 0.262378
44+
embedding_encoder_depth: 4
45+
embedding_encoder_width: 128
46+
penalty_adversary: 0.4550475813202185
47+
reg_adversary: 9.100951626404369
48+
reg_adversary_cov: 26.975154833351137
49+
reg_multi_task: 10.675229346653245
50+
step_size_lr: 50
51+
load_pretrained: false
52+
pretrained_model_hashes:
53+
grover_base: ff420aea264fca7668ecb147f60762a1
54+
jtvae: a7060ac4e2c6154e64a13acd414cbba2
55+
rdkit: 4f061dbfc7af05cf84f06a724b0c8563
56+
pretrained_model_path: /Users/alicedriessen/Library/CloudStorage/Box-Box/CAR_Tcells/Model/chemCPA/CD4_ID
57+
profiling:
58+
outdir: ./
59+
run_profiler: false
60+
training:
61+
checkpoint_freq: 25
62+
full_eval_during_train: false
63+
max_minutes: 1400
64+
num_epochs: 201
65+
run_eval_disentangle: true
66+
run_eval_logfold: false
67+
run_eval_r2: true
68+
run_eval_r2_sc: false
69+
save_checkpoints: true
70+
save_dir: /Users/alicedriessen/Library/CloudStorage/Box-Box/CAR_Tcells/Model/chemCPA/CD4_ID
71+
ckpt_name: model
72+
seed: 497393925
73+
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
overwrite: 1007
2+
db_collection: finetuning_num_genes
3+
dataset:
4+
data_params:
5+
covariate_keys: dummy_donor
6+
dataset_path: /Users/alicedriessen/Box/LegacyFromOldColleagues/Alice/CAR_Tcells/Model/OT/CD4_chemCPA_anno.h5ad
7+
degs_key: all_genes
8+
dose_key: dose
9+
pert_category: car_dummydonor
10+
perturbation_key: CAR_Variant
11+
smiles_key: SMILES
12+
split_key: sel_CARs_ID
13+
use_drugs_idx: true
14+
dataset_type: trapnell
15+
model:
16+
additional_params:
17+
decoder_activation: ReLU
18+
doser_type: amortized
19+
multi_task: false
20+
patience: 50
21+
seed: 1337
22+
append_ae_layer: true
23+
enable_cpa_mode: false
24+
embedding:
25+
directory: /Users/alicedriessen/Box/LegacyFromOldColleagues/Alice/CAR_Tcells/Model/OT/embedding
26+
model: esm2_t48_15B_UR50D_tail_dim
27+
hparams:
28+
adversary_depth: 2
29+
adversary_lr: 0.0011926173789223548
30+
adversary_steps: 2
31+
adversary_wd: 0.000009846738873614555
32+
adversary_width: 128
33+
autoencoder_depth: 4
34+
autoencoder_lr: 0.0015751320499779737
35+
autoencoder_wd: 6.251373574521742e-7
36+
autoencoder_width: 256
37+
batch_size: 32
38+
dim: 32
39+
dosers_depth: 3
40+
dosers_lr: 0.0015751320499779737
41+
dosers_wd: 6.251373574521742e-7
42+
dosers_width: 64
43+
dropout: 0.262378
44+
embedding_encoder_depth: 4
45+
embedding_encoder_width: 128
46+
penalty_adversary: 0.4550475813202185
47+
reg_adversary: 9.100951626404369
48+
reg_adversary_cov: 26.975154833351137
49+
reg_multi_task: 10.675229346653245
50+
step_size_lr: 50
51+
load_pretrained: false
52+
pretrained_model_hashes:
53+
grover_base: ff420aea264fca7668ecb147f60762a1
54+
jtvae: a7060ac4e2c6154e64a13acd414cbba2
55+
rdkit: 4f061dbfc7af05cf84f06a724b0c8563
56+
pretrained_model_path: /Users/alicedriessen/Box/LegacyFromOldColleagues/Alice/CAR_Tcells/Model/chemCPA/CD4_ID_dummy_donor
57+
profiling:
58+
outdir: ./
59+
run_profiler: false
60+
training:
61+
checkpoint_freq: 25
62+
full_eval_during_train: false
63+
max_minutes: 1400
64+
num_epochs: 201
65+
run_eval_disentangle: true
66+
run_eval_logfold: false
67+
run_eval_r2: true
68+
run_eval_r2_sc: false
69+
save_checkpoints: true
70+
save_dir: /Users/alicedriessen/Box/LegacyFromOldColleagues/Alice/CAR_Tcells/Model/chemCPA/CD4_ID_dummy_donor
71+
ckpt_name: model
72+
seed: 497393925
73+

0 commit comments

Comments
 (0)