Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate finetuning & fingerprinting #529

Merged
merged 8 commits into from
Nov 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 33 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ Visit https://graphium-docs.datamol.io/.

## Installation for developers

### For CPU and GPU developers

Use [`mamba`](https://github.com/mamba-org/mamba), a faster and better alternative to `conda`.

If you are using a GPU, we recommend enforcing the CUDA version that you need with `CONDA_OVERRIDE_CUDA=XX.X`.
Expand All @@ -53,18 +51,6 @@ mamba activate graphium
pip install --no-deps -e .
```

### For IPU developers
```bash
# Install Graphcore's SDK and Graphium dependencies in a new environment called `.graphium_ipu`
./install_ipu.sh .graphium_ipu
```

The above step needs to be done once. After that, enable the SDK and the environment as follows:

```bash
source enable_ipu.sh .graphium_ipu
```

## Training a model

To learn how to train a model, we invite you to look at the documentation, or the jupyter notebooks available [here](https://github.com/datamol-io/graphium/tree/master/docs/tutorials/model_training).
Expand Down Expand Up @@ -148,6 +134,39 @@ graphium-train --config-path [PATH] --config-name [CONFIG]
```
Thanks to the modular nature of `hydra` you can reuse many of our config settings for your own experiments with Graphium.

### Finetuning

After pretraining a model and saving a model checkpoint, the model can be finetuned to a new task

```bash
graphium-train +finetuning [example-custom OR example-tdc] finetuning.pretrained_model=[model_identifier]
```

The `[model_identifier]` serves to identify the pretrained model among those maintained in the `GRAPHIUM_PRETRAINED_MODELS_DICT` in `graphium/utils/spaces.py`, where the `[model_identifier]` maps to the location of the checkpoint of the pretrained model.

We have provided two example yaml configs under `expts/hydra-configs/finetuning` for finetuning on a custom dataset (`example-custom.yaml`) or for a task from the TDC benchmark collection (`example-tdc.yaml`).

When using `example-custom.yaml`, to finetune on a custom dataset, we nee to provide the location of the data (`constants.data_path=[path_to_data]`) and the type of task (`constants.task_type=[cls OR reg]`).

When using `example-tdc.yaml`, to finetune on a TDC task, we only need to provide the task name (`constants.task=[task_name]`) and the task type is inferred automatically.

Custom datasets to finetune from consist of two files `raw.csv` and `split.csv`. The `raw.csv` contains two columns, namely `smiles` with the smiles strings, and `target` with the corresponding targets. In `split.csv`, three columns `train`, `val`, `test` contain the indices of the rows in `raw.csv`. Examples can be found under `expts/data/finetuning_example-reg` (regression) and `expts/data/finetuning_example-cls` (binary classification).

### Fingerprinting

Alternatively, we can also obtain molecular embeddings (fingerprints) from a pretrained model:
```bash
graphium fps create [example-custom OR example-tdc] pretrained.model=[model_identifier] pretrained.layers=[layer_identifiers]
```

We have provided two example yaml configs under `expts/hydra-configs/fingerprinting` for extracting fingerprints for a custom dataset (`example-custom.yaml`) or for a dataset from the TDC benchmark collection (`expample-tdc.yaml`).

After specifiying the `[model_identifier]`, we need to provide a list of layers from that model where we want to read out embeddings via `[layer_identifiers]` (which requires knowledge of the architecture of the pretrained model).

When using `example-custom.yaml`, the location of the smiles to be embedded needs to be passed via `datamodule.df_path=[path_to_data]`. The data can be passed as a csv/parquet file with a column `smiles`, similar to `expts/data/finetuning_example-reg/raw.csv`.

When extracting fingerprints for a TDC task using `expample-tdc.yaml`, we need to specify `datamodule.benchmark` and `datamodule.task` instead of `datamodule.df_path`.

## License

Under the Apache-2.0 license. See [LICENSE](LICENSE).
Expand Down
2 changes: 1 addition & 1 deletion docs/api/graphium.finetuning.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ Module for finetuning models and doing linear probing (fingerprinting).

::: graphium.finetuning.finetuning_architecture.FinetuningHead

::: graphium.finetuning.fingerprinting.Fingerprinter
::: graphium.fingerprinting.fingerprinter.Fingerprinter
2 changes: 1 addition & 1 deletion docs/cli/graphium-train.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ graphium-train architecture=toymix tasks=toymix training=toymix model=gcn accele
automatically selects the correct configs to run the experiment on GPU.
Finally, you can also run a fine-tuning loop:
```bash
graphium-train +finetuning=admet
graphium-train +finetuning=example-tdc
```

To use a config file you built from scratch you can run
Expand Down
4 changes: 2 additions & 2 deletions docs/cli/graphium.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ $ graphium finetune [OPTIONS] COMMAND [ARGS]...

**Commands**:

* `admet`: Utility CLI to easily fine-tune a model on...
* `tdc`: Utility CLI to easily fine-tune a model on...
* `fingerprint`: Endpoint for getting fingerprints from a...

### `graphium finetune admet`
Expand Down Expand Up @@ -135,7 +135,7 @@ Endpoint for getting fingerprints from a pretrained model.
The pretrained model should be a `.ckpt` path or pre-specified, named model within Graphium.
The fingerprint layer specification should be of the format `module:layer`.
If specified as a list, the fingerprints from all the specified layers will be concatenated.
See the docs of the `graphium.finetuning.fingerprinting.Fingerprinter` class for more info.
See the docs of the `graphium.fingerprinting.fingerprinter.Fingerprinter` class for more info.

**Usage**:

Expand Down
201 changes: 201 additions & 0 deletions expts/data/finetuning_example-cls/raw.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
,Drug_ID,smiles,target
0,644675,CC(=O)N(c1ccc2oc(=O)sc2c1)S(=O)(=O)c1cccs1,0
1,644890,COc1ccccc1C(c1nnnn1C(C)(C)C)N1CCN(Cc2ccncc2)CC1,1
2,645164,CCC(c1nnnn1CC1CCCO1)N(CCN1CCOCC1)Cc1cc2cc(C)ccc2[nH]c1=O,0
3,6602688,Br.N=c1n(CCN2CCOCC2)c2ccccc2n1CC(=O)c1ccc(Cl)c(Cl)c1,1
4,645448,CCC(C)(C)NC(=O)c1ccc2c(c1)N(CC(=O)OC)C(=O)C(C)(C)O2,0
5,645569,CCc1cc2c(=O)[nH]cnc2s1,0
6,645818,COc1cccc2c(=O)c(C(=O)NCc3cccs3)c[nH]c12,1
7,645911,CCc1nnc(SCc2ccc(OC(C)C)cc2)n1N,0
8,645965,Cc1ccc2c(c1)nnn2C1CCN(CC(=O)N2c3ccccc3CC2C)CC1,1
9,646164,CCOC(=O)CSC1=C(C#N)C(C)C2=C(CCCC2=O)N1,0
10,646293,Cc1ccc2cc(C)c3nnc(SCC(=O)NCc4ccco4)n3c2c1,0
11,646353,CCOC(=O)N1CCN(S(=O)(=O)Cc2ccccc2)CC1,0
12,646472,CCOC(=O)c1cc2sc(C)cc2n1CC(=O)N1CCN(C(=O)c2ccco2)CC1,0
13,646515,CCOC(=O)C(NC(C)=O)C(OC(C)=O)c1cccc(N(CCO)CCO)c1,0
14,646597,CCC(=O)Nc1cc2c(cc1C(=O)c1ccccc1)OCCO2,0
15,6602690,CN(C)CCNC(=O)C(C(=O)c1ccc(F)cc1)n1ccccc1=O.Cl,0
16,646768,Cc1cc(C)nc(N2CCC(C(=O)NCCc3ccc(F)cc3)CC2)n1,0
17,646780,COc1cc(-c2nnc(-c3ccc(N4CCOCC4)cc3)o2)cc(OC)c1OC,0
18,646897,CN(C)C=C1C(=O)N(C2CCCCC2)C(=O)N(C2CCCCC2)C1=O,0
19,646955,COC(=O)CN(c1ccccn1)S(=O)(=O)c1ccccc1,0
20,6398903,Cc1ccc(C)c(/C(O)=C2/C(=O)C(=O)N(CCN3CCOCC3)C2c2ccco2)c1,0
21,647114,Cn1c(SC2=CS(=O)(=O)c3ccccc32)nc2ccccc21,0
22,647205,CC(C(=O)NC1CCCC1)N(C(=O)c1snc(C(N)=O)c1N)c1ccc2c(c1)OCCO2,1
23,647430,Cc1cc(C)n(-c2nc3c(c(=O)[nH]c(=O)n3C)n2C(C)C)n1,0
24,647727,O=C(Nc1ccc(S(=O)(=O)N2CCCC2)cc1)c1ccc(CN2CCOCC2)cc1,1
25,6602522,Cl.O=C(CN1CCN(c2ncccn2)CC1)NCCC1=CCCCC1,1
26,647937,CC(=O)NC1(c2cccc(F)c2)CCN(CC(=O)NC2CCCCC2)CC1,0
27,647996,Cc1cccc(Nc2nc3c(c(=O)n(C)c(=O)n3C)n2CC(O)CO)c1,0
28,648175,CCn1c(Cc2ccccc2)nnc1SCC(=O)NC(C)(C)C,0
29,648282,COc1cc2cc(CN(CCCO)S(=O)(=O)c3ccccc3Cl)c(=O)[nH]c2cc1OC,0
30,648407,CCc1nnc(NC(=O)CSc2nnc(COc3ccccc3)n2Cc2ccccc2)s1,0
31,648481,CSc1nc2nc3c(c(=O)n2[nH]1)CN(Cc1ccccc1)CC3,0
32,648708,Cc1nn(C)c(C)c1CNC(=O)c1cnn2c1NC(c1ccccc1)CC2C(F)(F)F,0
33,648836,Cc1ccc(C(c2nnnn2CC2CCCO2)N2CCN(C(=O)c3ccco3)CC2)cc1,0
34,648878,CCN(CC)c1ccc2c(Cl)c(Br)c(=O)oc2c1,0
35,648947,COc1ccc(OC)c(NC(=O)C(CC(=O)O)NCc2ccco2)c1,0
36,649015,O=C1CC(c2cccs2)c2cc3c(cc2N1)OCO3,1
37,649453,CCn1c(COc2ccccc2)nnc1SCC(=O)Nc1cc(OC)ccc1OC,0
38,649754,Nc1ncc(-c2ccccc2)n1CC1CCCO1,1
39,649786,CCCCn1c(SCC(=O)N2CCCC2)nc2c1c(=O)n(C)c(=O)n2C,0
40,649878,O=C(O)CCn1nnc(-c2cccs2)n1,0
41,650002,Cn1c(=O)[nH]c(=O)c2c1nc(NCCCO)n2CCCc1ccccc1,0
42,650100,COc1ccccc1OCCn1cc(C(=O)c2ccco2)c2ccccc21,0
43,650250,Cc1ccc(-c2csc(N3CCC(NS(=O)(=O)c4ccc5c(c4)OCCO5)CC3)n2)cc1,0
44,650341,COc1ccc(S(=O)(=O)N2CCC(NC(=O)Nc3ccc(C)cc3)CC2)cc1,0
45,650486,Cn1c(CNC(=O)Nc2ccccc2)nnc1SCc1ccccc1,0
46,650558,O=C(CSc1nnc(CNc2ccccc2)o1)N1CCCc2ccccc21,0
47,650691,CCCCNC(=O)NS(=O)(=O)c1ccc(C(=O)OC(C)C)o1,0
48,6602999,CCOC(=O)C1Cc2c([nH]c3ccccc23)CN1.Cl,1
49,650985,COc1ccc(CCNc2c(C)c(C)nc3ncnn23)cc1,1
50,5768893,COCCN1C(=O)C(=O)/C(=C(/O)c2cccc(OC)c2)C1c1ccco1,0
51,651076,CCC(=O)Nc1cccc(NC(=O)CSc2nnnn2Cc2ccccc2)c1,0
52,651205,CCc1c(C)nc2c(C#N)c(C)[nH]n2c1=O,0
53,651338,CCC(=O)N(Cc1ccco1)c1nc(-c2ccccc2)cs1,0
54,651587,O=C(OCCCN1CCCCC1)c1ccc(O)cc1,1
55,651589,Cc1cc(NC(=O)CCC(=O)N2CCC3(CC2)OCCO3)no1,0
56,651769,O=C(CNC(=O)c1ccco1)OCc1c(F)cccc1Cl,0
57,652002,O=C(CSc1nnc(-c2cccnc2)o1)Oc1ccccc1,0
58,652521,CN(C)S(=O)(=O)c1ccc(C(=O)Nc2ccc(CN3CCCC3)cc2)cc1,1
59,652549,CC(C)C(C(=O)NCC1CCCO1)N(Cc1ccco1)C(=O)CNS(=O)(=O)c1ccc(F)cc1,0
60,652700,COCCNC(=O)COC(=O)c1nsc(Cl)c1Cl,0
61,652799,CCOc1ccc(-c2nnn(CC(=O)Nc3cc(OC)ccc3OC)n2)cc1OCC,0
62,6603138,Cl.O=C(CN1CCN(C2CCCCC2)CC1)NCCC1=CCCCC1,1
63,653279,O=C(O)C1C2C=CC3(CN(Cc4ccccn4)C(=O)C13)O2,0
64,653412,Cn1c(SCC(=O)NCc2ccc3c(c2)OCO3)nnc1-c1cc2ccccc2cc1O,1
65,6603457,CCC(c1nnnn1CCOC)N1CCN(C(=O)c2ccco2)CC1.Cl,0
66,653646,O=S(=O)(c1ccccc1)N1CCN(c2cc(-c3ccccc3)nc3ncnn23)CC1,0
67,653695,O=C(CSc1n[nH]c(-c2ccccc2O)n1)N1CCCc2ccccc21,1
68,653778,COc1ccccc1-n1c(SCC(=O)N2CCCC2)nc2cccnc21,0
69,653799,CCc1nnc2sc(-c3ccc(NC(=O)c4ccco4)cc3)nn12,0
70,653914,COc1ccc(-c2nnn(CC(=O)N(CC(=O)NCCC(C)C)Cc3cccs3)n2)cc1OC,1
71,654078,CCn1c(SCc2ccc(C#N)cc2)nnc1-c1ccc(S(=O)(=O)N2CCCCC2)cc1,0
72,654182,CCOC(=O)Cc1cc(=O)n2[nH]c(C)c(-c3ccccc3)c2n1,0
73,6398932,CCOc1cccc(/C(O)=C2/C(=O)C(=O)N(Cc3ccco3)C2c2ccncc2)c1,0
74,654363,O=C(NC1CCCCC1)C(c1cccs1)N(Cc1cccs1)C(=O)c1ccco1,1
75,654435,O=C(CSc1nc2ccccc2o1)Nc1nc2ccccc2s1,0
76,5373216,COc1n[nH]c2nncnc12,0
77,654546,CCc1ccc(N2CC(C(=O)NC3=NCCS3)CC2=O)cc1,0
78,654623,COc1ccc(CNC(=O)CN(CC2CCCO2)C(=O)CNS(=O)(=O)c2ccccc2)cc1,0
79,654635,COc1cc(C2C(C(=O)c3ccc(C)o3)=C(O)C(=O)N2CCc2ccccc2)ccc1O,0
80,654761,Cc1ccc(C)n1C(Cc1ccccc1)C(=O)O,0
81,655183,COc1ccccc1CN(Cc1cc2cc(C)cc(C)c2[nH]c1=O)Cc1nnnn1CC1CCCO1,0
82,655265,COc1ccc(OCc2nnc(SCC(=O)O)n2N)cc1,0
83,5768421,COCCCN1C(=O)C(=O)/C(=C(/O)c2ccc(OC(C)C)c(C)c2)C1c1ccncc1,0
84,655401,CCN(C1CCCCC1)S(=O)(=O)c1ccc(S(=O)(=O)NCc2ccncc2)cc1,1
85,655439,CCOC(=O)C1=C(C)NC(=O)NC1c1ccoc1,0
86,655857,c1ccc(Cn2nnc3c(N4CCc5ccccc5C4)ncnc32)cc1,0
87,655866,COc1ccc(C(=O)NC2CC3CCCC(C2)N3CC(C)C)cc1OC,1
88,655948,Cc1cc(N2CCN(c3nc4ccccc4s3)CC2)n2ncnc2n1,0
89,656017,CC(C)C(=O)Nc1cc2c(cc1C(=O)c1ccccc1)OCCO2,0
90,656027,COc1ccc(CCN2C(=O)C(O)=C(C(=O)c3ccco3)C2c2cccs2)cc1OC,0
91,656095,COc1ccc(C2C(C(=O)N3CCOCC3)=C(C)NC3=C2C(=O)CC(C)(C)C3)c(OC)c1,0
92,656157,O=c1oc(-c2ccco2)nc2c1cnn2-c1ccccc1,0
93,656183,CC(C)OC(=O)NCCOC(=O)Nc1cccc(Cl)c1,0
94,656257,Cc1ccccc1OCC1Cn2c(nc3c2c(=O)[nH]c(=O)n3C)O1,0
95,656272,Cc1ccc(-c2[nH]n3c(=O)c4c(nc3c2C)CCCC4)cc1,1
96,656290,Cc1cccc(NC(=O)Cn2c(=O)oc3ccccc32)c1,1
97,6603060,I.OCCNC1=NCCN1,0
98,6449251,COc1cc2c(cc1OC)/C(=C/C(=O)N1CCOCC1)NC(C)(C)C2.Cl,1
99,135449532,Cc1cc(=O)[nH]c(-n2nc(C)cc2C)n1,0
100,5940036,CCOC(=O)C1=C(N)n2c(s/c(=C\c3ccco3)c2=O)=C(C(=O)OCC)C1c1ccco1,0
101,208296,O=c1nc(-c2ccccc2)cn[nH]1,0
102,658411,COC(=O)c1ccc(Oc2cc(C)nc(-n3nc(C)cc3C)n2)cc1,0
103,658723,COC(=O)c1[nH]c2ccc(Br)cc2c1NC(=O)CN1CCN(C2CCCCC2)CC1,1
104,658813,CCc1c(C)c(C#N)c2nc3ccccc3n2c1Nc1c(C)n(C)n(-c2ccccc2)c1=O,0
105,135415833,O=c1c(Cc2ccccc2)c(O)nc2n1CCS2,0
106,658879,CCC(NC(=O)Nc1cc(OC)c(OC)c(OC)c1)(C(F)(F)F)C(F)(F)F,0
107,659040,O=c1[nH]c(=S)[nH]nc1Cc1ccccc1,0
108,135435901,COc1ccc(C2CC(=O)C(C=NCCN3CCOCC3)=C(O)C2)cc1,0
109,16411130,Cc1nc(/N=C(\N)Nc2ccccc2)nc2ccccc12,0
110,659321,CCOc1ccc(CSC(CC(=O)O)C(=O)O)cc1,0
111,2838016,CC1=CC=CN2CC(O)CN=C12.Cl,0
112,6603569,Cc1ccc2c(c1)[C@@H]1CN(C)CC[C@@H]1N2S(=O)(=O)c1ccc(F)cc1.Cl,1
113,1922089,Cc1cc(C)c(-n2c(O)c(C=NCCN3CCOCC3)c(=O)[nH]c2=O)c(C)c1,0
114,659756,O=C1CCCN1CC(CN1CCOCC1)Sc1nnnn1-c1ccccc1,0
115,660120,Cc1cc(-c2cc(-c3ccc(Cl)cc3)nc(N)c2C#N)co1,0
116,660285,COc1ccc(S(=O)(=O)N2CCC(N3CCCCC3)CC2)cc1,1
117,660304,O=C(COc1ccccc1)Nc1ccc(-c2nnc(-c3ccco3)o2)cc1,0
118,5389248,COc1ccc(C2/C(=C(/O)c3ccc(Cl)cc3)C(=O)C(=O)N2CCN2CCOCC2)c(OC)c1,0
119,5389254,Cc1oc2cc(O)ccc2c(=O)c1-c1cnn(-c2ccccc2)c1,0
120,660546,Cc1cccc(OCC(=O)N2CCC(N3CCCCCC3)CC2)c1,1
121,135420605,CCCCc1c(O)nc(SCCN(C)C)n(-c2ccccc2)c1=O,0
122,660831,COC1(OC)N=C(NC(=O)Nc2ccccc2)C2(C#N)C(c3ccccc3)C12C#N,0
123,660995,Cc1ccc(S(=O)(=O)NCCSc2nnnn2C)cc1,0
124,661065,CNc1oc(-c2cccs2)nc1C#N,0
125,661098,CC(=O)Nc1ccc(Nc2ncnc3c2cnn3-c2ccccc2)cc1,0
126,661170,O=C(Cc1ccc(Cl)cc1)Nc1cccc(-c2nnc(-c3ccco3)o2)c1,0
127,661178,CCCOc1ccc(CSC(CC(=O)O)C(=O)O)cc1,0
128,661187,c1ccc(-n2ncc3c(NCCCN4CCOCC4)ncnc32)cc1,0
129,661203,CC1CCc2cccc3c2N1c1cc(C#N)c(C#N)cc1O3,0
130,661217,N#Cc1nc(-c2cccs2)oc1NCc1ccccc1,1
131,661296,CCc1c(C(=O)O)[nH]c2ccc(Br)cc12,0
132,661300,S=c1nc(-c2ccccc2)[nH]n1-c1ccccc1,0
133,661349,CC(=O)c1c(C(C)=O)c(C)n(NC(=O)c2ccncc2)c1C,0
134,661355,Cn1c(=O)n(CCC(=O)O)c2ccccc21,0
135,661406,CC1(C)CC(=O)C(CCCN2C(=O)c3ccccc3C2=O)C(=O)C1,0
136,6603015,CN(C)CC(O)COc1cccc(OCC(O)CN(C)C)c1.Cl,0
137,6603014,CN(C)CC(O)COc1ccc(C(C)(C)c2ccc(OCC(O)CN(C)C)cc2)cc1.Cl,0
138,661455,Oc1ccccc1CNn1cnnc1,0
139,661513,CCn1c(SCC(=O)Nc2ccccc2C(=O)OC)nnc1-c1ccc(N)cc1,0
140,661518,CCc1cc2c(=O)c(-c3nc4ccccc4[nH]3)coc2cc1OC(=O)N1CCOCC1,0
141,661528,Cc1ccc(C2Nc3ccccc3C(=O)N2Cc2ccco2)cc1,0
142,661552,Cc1cn2c(-c3ccncc3)nnc2s1,0
143,661761,CCOC(=O)c1[nH]c2cc3c(cc2c1NC(=O)CN1CCc2ccccc2C1)OCO3,1
144,5389368,COc1ccc(/C(O)=C2\C(=O)C(=O)N(c3cc(C)on3)C2c2ccc(OC)c(OC)c2)cc1OC,0
145,5389389,COc1cccc(/C(O)=C2/C(=O)C(=O)N(c3cc(C)on3)C2c2cccs2)c1,0
146,5389423,CCN(CC)CCN1C(=O)C(=O)/C(=C(/O)c2cccc(OC)c2)C1c1ccccn1,0
147,661999,COc1cccc(C2C(C(=O)c3cc4ccccc4o3)=C(O)C(=O)N2c2cc(C)on2)c1OC,0
148,662011,CCN1CCCC1Cn1cnc2c([nH]c3ccc(C)cc32)c1=O,1
149,6881185,COCCCNC(=O)c1c(N)n(/N=C/c2ccccn2)c2nc3ccccc3nc12,0
150,6881246,CCO/C(C)=N/n1c2nc3ccccc3nc2c2c(=O)n(CC(C)C)c(C)nc21,0
151,662144,CCOC(=O)c1c(C)n(C)c2ccc(OC)c(NC(=O)CN3CCN(Cc4ccccc4)CC3)c12,1
152,662340,CCOC(=O)c1cc2c(=O)n3cccc(C)c3nc2n(CCCOC)c1=NC(=O)c1cccnc1,0
153,5389504,CCOc1ccc(/C(O)=C2/C(=O)C(=O)N(CCOCCO)C2c2cccnc2)cc1,0
154,662407,NC(=O)C1CCN(C(=O)CN2C(=O)c3ccccc3S2(=O)=O)CC1,0
155,662515,CCOC(=O)c1[nH]c2cc(OC)c(OC)cc2c1NC(=O)c1nonc1C,0
156,6603499,COc1ccc(C(=O)OC(C)CN2CCN(C)CC2)cc1OC.Cl,1
157,9614332,C[n+]1cccc(CNC(=O)/C=N/O)c1.[I-],0
158,662647,COc1ccccc1-c1nnc2n1N=C(c1ccc(O)c(O)c1)CS2,0
159,662710,COc1cccc(-c2nnc3sc(-c4ccc(C)cc4)nn23)c1,0
160,662745,CCOCCCn1cnc2c([nH]c3cc(OC)ccc32)c1=O,0
161,200556,Cl.OC1(c2ccc(F)cc2)CCNC1,0
162,662794,CC(C)(C)OC(=O)NCCc1nnc(SCC(=O)Nc2cccc(Cl)c2)o1,0
163,662799,O=C1C2ON(c3ccccc3)C(c3ccncc3)C2C(=O)N1c1ccccc1,0
164,662838,CCCn1nc(NC(=O)CC(C)C)c2cc3ccccc3nc21,0
165,662878,CCOc1ccccc1NC(=O)CSc1nnc(-c2cnccn2)n1C,1
166,662996,CCOc1ccc(-c2nnc3n2N=C(c2ccc(OC)cc2)CS3)cc1,0
167,663008,CC(C)COP(=O)(c1ccc(N(C)C)cc1)C(O)c1ccccc1F,0
168,6603621,Cl.NCCCCCc1nnc(SCc2ccccc2Cl)o1,1
169,663121,Nc1c(S(=O)(=O)c2ccccc2)c2nc3ccccc3nc2n1Cc1ccco1,1
170,9615342,Cn1c[n+](C)cc1/C=N/O.[I-],0
171,663125,Oc1ccc(-c2[nH]ncc2-c2ccc(Cl)cc2)c(O)c1,1
172,663143,CCOc1ccc(C2=Nn3c(nnc3-c3ccccc3OC)SC2)cc1,0
173,663146,COc1ccc2c(c1)[nH]c1c(N3CCN(Cc4ccc5c(c4)OCO5)CC3)ncnc12,1
174,663168,COc1cccc(-c2nnc3n2N=C(C(C)(C)C)CS3)c1,0
175,663337,CCOC(=O)c1[nH]c2cc(OC)c(OC)cc2c1NC(=O)c1ccc2c(c1)OCO2,0
176,663340,COc1ccc(CCn2c(=N)c(C(=O)NCc3ccco3)cc3c(=O)n4ccccc4nc32)cc1,1
177,663539,Cc1nc(SCC(=O)Nc2ccc3c(c2)OCCO3)c2oc3ccccc3c2n1,0
178,663581,COC(=O)[C@@H](NC(=O)Nc1ccc(C(C)=O)cc1)C(C)C,0
179,5389740,CCCN1C(=O)C2(/C(=C(\O)c3ccc4c(c3)OCCO4)C(=O)C(=O)N2CCCOC)c2ccccc21,0
180,663736,COC(=O)[C@H](Cc1ccccc1)NC(=O)N1CCN(Cc2ccccc2)CC1,1
181,663792,CCOCCCn1c(=N)c(C(=O)NCc2ccc3c(c2)OCO3)cc2c(=O)n3cccc(C)c3nc21,1
182,54676164,CCOC(=O)C1=C(O)C(=O)N(c2ccc(S(N)(=O)=O)cc2)C1c1ccc(OC)cc1,0
183,664033,CC1(C)CCCN(C(=O)c2coc(=O)c(Br)c2)C1,0
184,664154,COC(=O)c1[nH]c2cc(C)ccc2c1NC(=O)CN1CCCc2ccccc21,1
185,5389802,Cc1nc2ccccn2c1/C(O)=C1\C(=O)C(=O)N(CCCn2ccnc2)C1c1ccncc1,0
186,664250,CC(C)(C)OC(=O)N1CCCC1C(=O)NCCc1ccccc1,0
187,135513628,CCOC(=O)/C(C(N)=NCCCO)=C(\O)OCC,0
188,664461,O=C1COc2ccc(OCc3ccc(F)cc3)cc21,0
189,6603365,Cl.c1ccc2c(c1)oc1c(NCCCn3ccnc3)ncnc12,1
190,5389869,COc1ccc(-c2c(C)oc3c(CN4CCN(CCO)CC4)c(O)ccc3c2=O)cc1OC,0
191,5389875,CC1Cc2cc(/C(O)=C3/C(=O)C(=O)N(CCN4CCOCC4)C3c3cccc(Cl)c3)ccc2O1,0
192,5389878,COc1ccc(C2/C(=C(/O)c3ccc4c(c3)CC(C)O4)C(=O)C(=O)N2CCN2CCOCC2)cc1,0
193,664733,Cc1nc2c3cnn(-c4ccc(C)c(C)c4)c3ncn2n1,0
194,664737,CCn1c(=N)c(S(=O)(=O)c2ccc(F)cc2)cc2c(=O)n3ccccc3nc21,1
195,664759,O=C(CN1CCN(Cc2ccccc2)CC1)c1ccc(Br)cc1,1
196,5389891,C/C(Cl)=C\Cn1c(N2CCCC2)nc2c1c(=O)[nH]c(=O)n2C,0
197,664983,CCc1ccc(N2CC(C)Cn3c2nc2c3c(=O)n(CCN3CCOCC3)c(=O)n2C)cc1,0
198,6603255,Br.CC1(C(=O)CSc2nc3ccccc3s2)CCC(=O)O1,0
199,665081,Cn1c(-c2ccc(CN3CCCCC3)o2)nc2ccccc21,0
Loading
Loading