File size: 2,237 Bytes
3f98d52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Reproduce the bundled measured-data checks, including frozen external transfer."""
import argparse
import json
from pathlib import Path
import subprocess
import sys
import joblib
import pandas as pd
import yaml
from remedi.data import prepare_h5ad
from remedi.pipeline import evaluate
from remedi.plotting import plot_summary

p=argparse.ArgumentParser()
p.add_argument('--output',default='runs/validation')
a=p.parse_args()
root=Path(__file__).resolve().parents[1]
out=Path(a.output).resolve();out.mkdir(parents=True,exist_ok=True)

def run(*args):
    subprocess.run([sys.executable,*map(str,args)],check=True,cwd=root)

for study,filename in [('tahoe','tahoe.h5ad'),('sciplex','sciplex_prototype.h5ad')]:
    run(root/'scripts/run_pipeline.py','--h5ad',root/'examples'/study/filename,
        '--mapping',root/'configs'/f'{study}.yaml','--structures',root/'examples'/study/'structures.csv',
        '--output',out/study,'--min-cells',2,'--dimensions',8,'--genes',250,'--max-queries',4,'--tolerance',1)
run(root/'scripts/align_genes.py','--inputs',root/'examples/tahoe/tahoe.h5ad',
    root/'examples/sciplex/sciplex_prototype.h5ad','--gene-columns','gene_symbol','index',
    '--drop-ambiguous','--output',out/'aligned')
run(root/'scripts/run_pipeline.py','--h5ad',out/'aligned/0_tahoe.h5ad',
    '--mapping',root/'configs/tahoe.yaml','--structures',root/'examples/tahoe/structures.csv',
    '--output',out/'transfer-source','--min-cells',2,'--dimensions',8,'--genes',250,'--max-queries',4,'--tolerance',1)
s=pd.read_csv(root/'examples/sciplex/structures.csv')
splits=s[['smiles']].copy();splits['split']='test'
d=prepare_h5ad(out/'aligned/1_sciplex_prototype.h5ad',out/'transfer/data',
    yaml.safe_load((root/'configs/sciplex.yaml').read_text()),splits,s,
    feature_model=out/'transfer-source/data/cell_feature_model.joblib',min_cells=2,max_cells=32)
m=joblib.load(out/'transfer-source/model/model.joblib')
c=json.loads((out/'transfer-source/calibration/calibration.json').read_text())
evaluate(d,m,c,out/'transfer/evaluation',external_track='unseen',scenarios=16,max_queries=4,tolerance=1)
plot_summary(out/'transfer/evaluation/summary.csv',out/'transfer/plots')
print(f'Completed measured-data integration checks in {out}')