diff --git a/README.md b/README.md index cbd7b196..9d4292b2 100644 --- a/README.md +++ b/README.md @@ -296,6 +296,7 @@ These are currently used to find a minimum energy conformation of a molecule. | `OpenFF Sulfur Optimization Benchmarking Coverage Supplement v1.0` | [2024-09-18-OpenFF-Sulfur-Optimization-Benchmarking-Coverage-Supplement-v1.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-09-18-OpenFF-Sulfur-Optimization-Benchmarking-Coverage-Supplement-v1.0) | Additional optimization benchmarking data for Sage sulfur and phosphorus parameters | S, P, Cl, C, N, O, H, Br, F | | | `OpenFF Lipid Optimization Training Supplement v1.0` | [2024-10-08-OpenFF-Lipid-Optimization-Training-Supplement-v1.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-10-08-OpenFF-Lipid-Optimization-Training-Supplement-v1.0) | Additional optimization training data for Sage from representative LIPID MAPS fragments | I, Br, O, H, P, C, N, Cl, F, S | | | `OpenFF NAGL2 Training Optimization Dataset Part 1 v4.0` | [2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-1-v4.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-1-v4.0) | Optimization dataset for NAGL2 training, part 1 | Cl, O, C, P, I, Br, B, S, N, F, H, Si | | +| `OpenFF NAGL2 Training Optimization Dataset Part 2 v4.0` | [2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0) | Optimization dataset for NAGL2 training, part 2 | Si, B, O, I, S, Cl, N, H, C, P, F, Br | | # TorsionDrive Datasets These are currently used perform a complete rotation of one or more selected bonds, where optimizations are performed over a discrete set of angles. diff --git a/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/README.md b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/README.md new file mode 100644 index 00000000..e722d314 --- /dev/null +++ b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/README.md @@ -0,0 +1,57 @@ +# OpenFF NAGL2 Training Optimization Dataset Part 2 v4.0 + +## Description +A dataset containing molecules from the [`MLPepper RECAP Optimized Fragments v1.0`](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-07-26-MLPepper-RECAP-Optimized-Fragments-v1.0) +and [`MLPepper RECAP Optimized Fragments v1.0 Add Iodines`](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-10-11-MLPepper-RECAP-Optimized-Fragments-Add-Iodines-v1.0) datasets, +with additional conformers and optimized at the OpenFF default level of theory (B3LYP-D3BJ/DZVP). +The dataset is intended to be used for calculating single point energies and properties, +which will then be used to train our second-generation graph neural network charge model (NAGL2). +This is part 2, for molecules with molecular weight greater than 300 Da. + + +For each molecule, a set of up to 5 conformers were generated by: + + * generating a set of up to 1000 conformers with a RMS cutoff of 0.1 Å +using the OpenEye backend of the OpenFF toolkit + + * applying ELF conformer selection (max 5 conformers) using OpenEye + +## General information +* Date: 2024-11-19 +* Class: OpenFF Optimization Dataset +* Purpose: Conformer optimization +* Name: OpenFF NAGL2 Training Optimization Dataset Part 2 v4.0 +* Number of unique molecules: 1197 +* Number of conformers: 2323 +* Number of conformers (min, mean, max): 1.00, 1.94, 5.00 +* Molecular weight (min, mean, max): 300.08, 377.82, 701.59 +* Charges: -4.0 -2.0 -1.0 0.0 1.0 2.0 +* Dataset submitter: Alexandra McIsaac +* Dataset generator: Alexandra McIsaac + +## QCSubmit generation pipeline +* `generate-dataset-part2.ipynb` was used to generate conformers from CMILES and create the dataset. + +## QCSubmit Manifest +* `dataset_part2.json.bz2`: compressed dataset ready for submission +* `dataset_part2.pdf`: Visualization of dataset molecules +* `dataset_part2.smi`: Smiles strings for dataset molecules +* `generate-dataset-part2.ipynb`: Notebook describing dataset generation and submission +* `input-environment.yaml`: Environment file used to create Python environment for the notebook +* `input-environment-full.yaml`: Fully-resolved environment used to execute the notebook. +* `mlpepper.json.bz2`: Zipped version of the mlpepper dataset that can be read in for quicker conformer generation + +## Metadata +* Elements: {Si, B, O, I, S, Cl, N, H, C, P, F, Br} +* Spec: default + * basis: DZVP + * implicit_solvent: None + * keywords: {} + * maxiter: 200 + * method: B3LYP-D3BJ + * program: psi4 + * SCF properties: + * dipole + * quadrupole + * wiberg_lowdin_indices + * mayer_indices diff --git a/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.json.bz2 b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.json.bz2 new file mode 100644 index 00000000..4bd1b049 --- /dev/null +++ b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.json.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45da7481663333f9802e8baeee6217e75959e32314ac70005743c2a5a002bcf6 +size 552932 diff --git a/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.pdf b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.pdf new file mode 100644 index 00000000..4a9e9c56 Binary files /dev/null and b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.pdf differ diff --git a/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.smi b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.smi new file mode 100644 index 00000000..7c69f674 --- /dev/null +++ b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/dataset_part2.smi @@ -0,0 +1,1197 @@ +C=CC(=O)C(I)I +C=CC(=O)C(I)(I)I +C=CC(=O)c1cccc(c1I)I +C=CC[NH2+][C@@H](C(I)(I)I)N +C=CC[NH2+][C@H](C(I)(I)I)N +C=C(c1ccc(cc1I)I)I +C=CSC1=C(C=C(S1)I)[N+](=O)[O-] +C=Cc1cc(cc(c1[O-])I)I +C=Cc1cc(cc(c1O)I)I +C=Cc1c(ccc(c1O)I)I +CC(=O)C(I)I +CC(=O)C(I)(I)I +CC(=O)c1cccc(c1I)I +CC(=O)c1ccc(cc1I)I +CC(=O)c1ccc(c(c1)I)I +CC(CI)(CI)C=O +CCC(=O)c1ccc(cc1I)I +CC(C)/N=C(\C(I)(I)I)/N +CC(C)/N=C(/C(I)(I)I)\N +CC(C)(C)[NH2+][C@@H](C(I)(I)I)N +CC(C)(C)[NH2+][C@H](C(I)(I)I)N +CC(C)[NH2+][C@@H](C(I)(I)I)N +CC(C)[NH2+][C@H](C(I)(I)I)N +CC(C)(C)C(=O)CCC(I)(I)I +CC(C)(c1c(cccc1I)I)[NH3+] +CC(C)(c1c(cccc1I)I)N +CCC(I)(I)I +CCCN1C=NC(=C1I)I +CCCO[C@@H](C(I)(I)I)[NH3+] +CCCO[C@@H](C(I)(I)I)N +CCCO[C@H](C(I)(I)I)[NH3+] +CCCO[C@H](C(I)(I)I)N +CCC[Si](CCCI)(OC)OC +CCC[Si](C)(I)I +CCC[Si](I)(I)I +CCC[Si](c1ccccc1)(I)I +CCCc1ccc(c(c1)I)I +CCCc1c(cccc1I)I +CCC1=C(N=C(C(=O)N1)I)I +CC[C@@]1([C@H](C1(I)I)C)C=O +CC[C@@]1([C@@H](C1(I)I)C)C=O +CC[C@@H]1CC1(I)I +CC[C@]1([C@H](C1(I)I)C)C=O +CC[C@]1([C@@H](C1(I)I)C)C=O +CC[C@H]1CC1(I)I +CC(I)(I)I +CC([N+](=O)[O-])(I)I +CC[NH+](CC)[C@@H](C(I)(I)I)N +CC[NH+](CC)[C@H](C(I)(I)I)N +CC[NH+](CCI)CCI +CC[NH2+]Cc1ccc(c(c1)I)I +CC[NH2+][C@@H](C(I)(I)I)N +CC[NH2+][C@H](C(I)(I)I)N +CCNCCC[Si](I)(I)I +CCNCc1ccc(c(c1)I)I +CCNc1c(c[nH+]c(c1N)I)Br +CCNc1c(cnc(c1N)I)Br +CCNc1c(cccc1I)I +CCN1C(=NC(=C1I)I)C +CCN1C=C(N=C(C1=O)I)I +CCN1C(=C(C(=N1)C=O)I)I +CCN1C(=NC(=N1)I)I +CCO[Si]1(CCCCC1)c2ccc(cc2)I +CCOc1ccc(cc1Br)I +CCOc1c(cccc1I)I +CCOc1c(cc(cc1I)N)I +CCS(=O)(=O)C1=CC=C(S1)I +CCSc1c(cccc1I)I +CC[Si](CC)(CC)O[C@H](C=O)c1ccccc1I +CC[Si](CC)(CC)O[C@@H](C=O)c1ccccc1I +CC[Si](C)(I)I +CC[Si](I)(I)I +CCc1cccc(c1I)I +CCc1ccc(cc1I)I +CCc1ccc(c(c1)I)I +CCc1cc(ccc1I)I +CCc1cc(cc(c1)I)I +CCc1cc(c(cc1I)I)F +CCc1cc(c(c(c1)I)N)I +CCc1ccc(c(c1I)I)OC +CCc1cc(cc(c1OC)I)I +CCc1cc(c(cc1I)OC)I +CCc1c(ccc(c1I)F)I +CCc1nc(cc(n1)I)I +CC1([C@H](C1(I)I)C=O)C +CC1([C@@H](C1(I)I)C=O)C +CC1=C(c2c(ccnc2N1)I)Br +CC1=C(N=C(N1C)I)I +CC1=C(C(=NN1)I)I +CC1=C(NC(=N1)I)I +CC1=C(N=C(N1)I)I +CC1=[N+](C(=C(N1C)I)I)CC=O +CC1=NC(=C(N1)I)I +CC1=NN(C(=C1I)I)C +CC1=NNC(=C1I)I +C[C@@H](C[Si](C)(I)I)C=O +C[C@H](C=O)c1c(cccc1I)I +C[C@H](C[NH3+])c1ccc(cc1I)I +C[C@H](C[NH3+])c1c(cccc1I)I +C[C@H](CN)c1ccc(cc1I)I +C[C@H](CN)c1c(cccc1I)I +C[C@](C(F)(F)Br)(F)I +C[C@@H](c1cccc(c1I)I)[NH3+] +C[C@@H](c1ccc(cc1I)I)[NH3+] +C[C@@H](c1ccc(c(c1)I)I)[NH3+] +C[C@@H](c1cc(ccc1I)I)[NH3+] +C[C@@H](Cc1cc(cc(c1)I)I)[NH3+] +C[C@@H](Cc1c(cccc1I)I)[NH3+] +C[C@@H](c1cc(c(cc1I)I)F)[NH3+] +C[C@@H](c1c(ccc(c1I)F)I)[NH3+] +C[C@@H](c1cccc(c1I)I)N +C[C@@H](c1ccc(cc1I)I)N +C[C@@H](c1ccc(c(c1)I)I)N +C[C@@H](c1cc(ccc1I)I)N +C[C@@H](Cc1c(cccc1I)I)N +C[C@@H](c1cc(c(cc1I)I)F)N +C[C@@H](c1c(ccc(c1I)F)I)N +C[C@@H](C(I)(I)I)O +C[C@@H](c1cccc(c1I)I)O +C[C@@H](c1ccc(cc1I)I)O +C[C@@H](c1c(cccc1I)I)O +C[C@@H](c1c(ccc(c1I)F)I)O +C[C@@]1(CC1(I)I)C=O +C[C@@]1(CC1(I)I)C2=NC=NO2 +C[C@@H]1CC1(I)I +C[C@@H]1[C@H](C1(I)I)CO +C[C@@H]1[C@@H](C1(I)I)CO +C[C@@H]1C[C@H]1c2ccc(cc2I)I +C[C@@H]1C[C@@H]1c2ccc(cc2I)I +C[C@]1(CC([C@@H](N=C1)O)(I)I)I +C[C@]1(CC([C@H](N=C1)O)(I)I)I +C[C@@]1(CC([C@H](N=C1O)O)(I)I)I +C[C@@]1(CC([C@@H](N=C1O)O)(I)I)I +C[C@H](C[Si](C)(I)I)C=O +C[C@@H](C[NH3+])c1ccc(cc1I)I +C[C@@H](C[NH3+])c1c(cccc1I)I +C[C@@H](CN)c1ccc(cc1I)I +C[C@@H](CN)c1c(cccc1I)I +C[C@@](C(F)(F)Br)(F)I +C[C@H](c1cccc(c1I)I)[NH3+] +C[C@H](c1ccc(cc1I)I)[NH3+] +C[C@H](c1ccc(c(c1)I)I)[NH3+] +C[C@H](c1cc(ccc1I)I)[NH3+] +C[C@H](Cc1cc(cc(c1)I)I)[NH3+] +C[C@H](Cc1c(cccc1I)I)[NH3+] +C[C@H](c1cc(c(cc1I)I)F)[NH3+] +C[C@H](c1c(ccc(c1I)F)I)[NH3+] +C[C@H](c1cccc(c1I)I)N +C[C@H](c1ccc(cc1I)I)N +C[C@H](c1ccc(c(c1)I)I)N +C[C@H](c1cc(ccc1I)I)N +C[C@H](Cc1c(cccc1I)I)N +C[C@H](c1cc(c(cc1I)I)F)N +C[C@H](c1c(ccc(c1I)F)I)N +C[C@H](C(I)(I)I)O +C[C@H](c1cccc(c1I)I)O +C[C@H](c1ccc(cc1I)I)O +C[C@H](c1c(cccc1I)I)O +C[C@H](c1c(ccc(c1I)F)I)O +C[C@]1(CC1(I)I)C=O +C[C@]1(CC1(I)I)C2=NC=NO2 +C[C@H]1CC1(I)I +C[C@H]1[C@H](C1(I)I)CO +C[C@H]1[C@@H](C1(I)I)CO +C[C@H]1C[C@H]1c2ccc(cc2I)I +C[C@H]1C[C@@H]1c2ccc(cc2I)I +C[C@@]1(CC([C@@H](N=C1)O)(I)I)I +C[C@@]1(CC([C@H](N=C1)O)(I)I)I +C[C@]1(CC([C@H](N=C1O)O)(I)I)I +C[C@]1(CC([C@@H](N=C1O)O)(I)I)I +C[NH2+]CCc1ccc(c(c1)I)I +C[NH2+]CC1=NN(C(=C1I)I)C +C[NH+](C)[C@@H](C(I)(I)I)N +C[NH+](C)[C@H](C(I)(I)I)N +C[NH+](C)CC[NH2+][C@@H](C(I)(I)I)N +C[NH+](C)CC[NH2+][C@H](C(I)(I)I)N +C[NH2+]Cc1ccc(cc1I)Br +C[NH2+]Cc1ccc(cc1I)I +C[NH2+]Cc1cc(cc(c1)I)I +C[NH2+]Cc1c(cccc1I)I +C[C@H](c1ccc(c(c1)I)I)[NH2+]C +C[NH2+][C@@H](C(I)(I)I)N +C[C@@H](c1ccc(c(c1)I)I)[NH2+]C +C[NH2+][C@H](C(I)(I)I)N +CNCC1=NN(C(=C1I)I)C +CN(C)C(=S)S[C@@H](C(I)(I)I)[NH3+] +CN(C)C(=S)S[C@@H](C(I)(I)I)N +CN(C)C(=S)S[C@H](C(I)(I)I)[NH3+] +CN(C)C(=S)S[C@H](C(I)(I)I)N +CN(C)CC[NH2+][C@@H](C(I)(I)I)N +CN(C)CC[NH2+][C@H](C(I)(I)I)N +CN(C)c1ccc(c(c1N)I)I +CN(C)c1cc(cc(c1N)I)I +CN(C)c1cc(c(c(c1)I)N)I +CN(C)c1cc(cc(c1I)I)N +CNCc1ccc(cc1I)Br +CNCc1ccc(cc1I)I +CNCc1cc(cc(c1)I)I +CNCc1c(cccc1I)I +CNC1=C(NC(=N1)I)I +CNC1=C(N=C(N1)I)I +C[C@H](c1ccc(c(c1)I)I)NC +C[C@@H](c1ccc(c(c1)I)I)NC +CNc1c(cc(cc1Br)I)C=O +CNc1cccc(c1I)I +CNc1ccc(cc1I)I +CNc1cc(cc(c1)I)I +CNc1c(cccc1I)I +CNc1c(cc(cn1)I)I +CNc1ncc(c(n1)I)I +CNc1c(c(ncn1)I)I +CN1C(=CC(=C1I)I)C=O +CN1C(=CC(=C1I)I)C[NH3+] +CN1C(=CC(=C1I)I)CN +CN1C=C(C(=N1)I)I +CN1C=NC(=C1I)I +CN1C=C(C(=C(C1=O)Br)I)C=O +CN1C=C(C(=C(C1=O)I)I)C=O +CN1C=C(c2c1ncnc2I)I +CN1C(=C(C(=N1)C[NH3+])I)I +CN1C(=C(C(=N1)CN)I)I +CN1C(=O)C(=C(C=N1)I)I +CN1C(=C(C(=N1)I)I)N +COCC(I)(I)I +COCC[NH2+][C@@H](C(I)(I)I)N +COCC[NH2+][C@H](C(I)(I)I)N +COC1=C(SC(=C1I)I)C=O +COC1=NC(=C(NC1=O)CI)I +COC1=NNC(=O)C(=C1I)I +CO[C@@H](C(I)(I)I)[NH3+] +CO[C@@H](C(I)(I)I)N +CO[C@@H](C(I)(I)I)O +C[C@@H](CNC(=[NH2+])C(I)(I)I)OC +CO[C@H](C(I)(I)I)[NH3+] +CO[C@H](C(I)(I)I)N +CO[C@H](C(I)(I)I)O +COP(=O)([C@@H](C(I)(I)I)[NH3+])OC +COP(=O)([C@@H](C(I)(I)I)N)OC +COP(=O)([C@H](C(I)(I)I)[NH3+])OC +COP(=O)([C@H](C(I)(I)I)N)OC +Cc1cc(cc(c1OC)I)I +COc1ccc(cc1I)I +COc1ccc(c(c1)I)I +COc1cc(ccc1I)I +COc1cc(cc(c1)I)I +Cc1cc(c(cc1I)OC)I +COc1cc(c(cc1I)C=O)I +Cc1c(cc(c(c1I)N)OC)I +COc1cc(c(c(c1)I)I)C#N +COc1cc(c(cc1C=O)I)I +COc1c(cc(cc1I)N)I +COc1c(cc(cc1I)C=O)I +COc1c(ccc(c1C=O)I)I +COc1c(cc(cc1I)I)C=O +COc1c(cc(cc1I)I)CO +COc1c(cc(nc1C=O)I)I +COc1c(cc(cc1Br)I)N +COc1c(cc(cc1I)I)O +CS(=O)(=O)C1=CSC(=C1I)C=O +CSc1cc(cc(c1)I)I +CSc1cc(c(c(c1)I)[O-])I +CSc1cc(c(c(c1)I)O)I +CSc1cc(c(cc1I)I)C=O +CSc1c(cccc1I)I +CSc1c(cc(cc1I)I)C=O +CSc1ncc(c(n1)I)Br +CSc1nc(c(c(n1)I)C=O)I +C[Si](C)(CCCCCCCCCCC=O)I +C[Si](CCC=O)(I)I +C[Si](CCCCCCCCCCC=O)(I)I +C[Si](CCCO)(I)I +C[Si](CCO)(I)I +Cc1c(ccc(c1I)I)F +Cc1cccc(c1I)I +Cc1ccc(cc1I)I +Cc1ccc(c(c1)I)I +Cc1cc(ccc1I)I +Cc1cc(cc(c1)I)I +Cc1cc(nc(c1)I)I +Cc1cc(cc(c1O)I)Br +Cc1ccc(c(c1I)C)Br +Cc1ccc(c(c1F)I)Br +Cc1ccc(c(c1I)C)I +Cc1ccc(c(c1I)N)I +Cc1cc(c(c(n1)I)C)I +Cc1cc(cc(c1O)Br)I +Cc1cc(cc(c1C)I)I +Cc1cc(cc(c1F)I)I +Cc1cc(cc(c1I)I)I +Cc1cc(cc(c1O)I)I +Cc1cc(c(c(c1)I)N)I +Cc1cc(c(c(c1)I)[O-])I +Cc1cc(c(c(c1)I)O)I +Cc1cc(cc(c1I)I)N +Cc1cc(c(c(c1)I)I)N +Cc1cc(c(c(c1N)I)C)I +Cc1cc(cc(c1C[NH3+])I)I +Cc1cc(cc(c1CN)I)I +Cc1cc(nc(c1C=O)I)I +Cc1cc(c(c(c1I)C)I)N +Cc1cc(c(c(c1I)I)O)O +B(c1ccc(c(c1)I)C)(c2ccc(c(c2)I)C)O +Cc1c(cccc1I)I +Cc1c(cncc1I)I +Cc1c(ccc(c1I)I)I +Cc1c(ccc(c1I)O)I +Cc1c(cc(cc1I)N)I +Cc1c(cnc(c1I)N)I +Cc1c(cc(c(c1I)O)N)I +B([C@H](CC1=COc2c1ccc(c2C)I)N)(O)O +B([C@@H](CC1=COc2c1ccc(c2C)I)N)(O)O +Cc1c(ncnc1I)I +Cc1c(ccc(c1I)Br)N +Cc1c(cc(c(c1I)C)I)N +Cc1c(c(c(c(c1I)N)I)C)N +Cc1c(cc(c(c1C=O)Br)I)N +Cc1c(c(cc(c1N)I)I)C=O +Cc1c(c(cc(c1I)I)I)[O-] +Cc1c(c(cc(c1I)I)I)O +Cc1c(cc(c(n1)C)I)I +Cc1c(c(ccn1)I)I +Cc1c(cc(cn1)I)I +Cc1c(c(c(cn1)C=O)Br)I +Cc1c(c(c(cn1)C=O)I)Br +Cc1c(c(c(cn1)C=O)I)I +Cc1nc(c(c(n1)I)Br)C=O +Cc1c(c(nc(c1I)C)I)C=O +Cc1c(ccc(n1)I)I +Cc1nc(cc(n1)I)I +Cc1c(cc(c(n1)N)I)I +C1=C(OC(=C1I)C=O)Br +C1=C(C(=C(S1)I)Br)C=O +C(S(=O)[O-])(Br)(Br)Br +C1(=C(SC(=C1Br)Br)Br)S(=O)[O-] +C1(=NN=N[N-]1)C(Br)(Br)Br +c1c2c(cc(c1Cl)Cl)N=C(N2)I +c1cnc(c(c1C(F)(F)F)I)Cl +c1cnc(c(c1C(F)(F)F)Br)I +c1c(cc(cc1I)I)C(F)(F)F +C1=NN2C(=NN=C2S1)C(F)(F)I +C(F)(S)(I)I +c1cc(c(c(c1)I)I)F +c1cc(c(cc1I)F)I +c1c(cc(cc1I)I)F +c1cc(c(c(c1F)I)F)I +c1cc(c(c(c1)I)F)I +c1c(c(nc(c1I)F)F)I +C(C(C(Br)(Br)Br)O)[NH3+] +C(C(C(Br)(Br)Br)O)N +C(C(C(Br)(Br)Br)O)S(=O)[O-] +C1(=C(C(=O)NC(=C1Br)Br)Br)N +Cc1cc(c(cc1Br)Br)S(=O)[O-] +c1cnc(nc1)C(C(Br)(Br)Br)O +c1c(cc(nc1Br)Br)SCC=O +C(CCS(=O)[O-])CC(Br)(Br)Br +C(C1=NNN=C1C(Br)(Br)Br)[NH3+] +C1CNC([NH2+]1)(C(Br)(Br)Br)O +C1COC(O1)(C(Br)(Br)Br)N +C1=C(C(=C(S1)S(=O)[O-])Br)Br +c1(c(c(nc(c1Br)Br)O)Br)N +c1cc(c(c(c1Br)CC=O)Br)Br +c1c(cc(c(c1S(=O)[O-])O)Br)Br +C(CSC(=O)C(Br)(Br)Br)[NH3+] +C(C=O)C(C(Br)(Br)Br)O +C[NH+](C)C(C(Br)(Br)Br)N +CC1(CC(C(N=C1O)O)(Br)Br)Br +C1COCC[NH+]1C(C(Br)(Br)Br)N +c1c(c(c(c(c1Br)N)Br)C=O)Cl +CCCOC(C(Br)(Br)Br)N +CC(C)NC(=[NH2+])C(Br)(Br)Br +C[NH2+]C(C(Br)(Br)Br)N +COP(=O)(C(C(Br)(Br)Br)N)OC +NP1(=NP(=N[PH2]=N1)(N)Br)Br +c1cc(c(c(c1)Br)Br)SCCO +CC(C)(C)[NH2+]C(C(Br)(Br)Br)N +C1COCC1C(Br)(Br)Br +C1COC([NH2+]1)C(Br)(Br)Br +CC[NH+](CC)C(C(Br)(Br)Br)N +CC(C)[NH2+]C(C(Br)(Br)Br)N +c1cnc(nc1)CC(Br)(Br)Br +CC[NH2+]C(C(Br)(Br)Br)N +C(CCCCC[Si](Cl)(Cl)Cl)CCCCC=O +c1c(c(cnc1SCC=O)Br)Br +CC(C[NH+]=C(C(Br)(Br)Br)N)OC +C[Si](C)(C)O[Si](O)(O[Si](C)(C)C)O[Si](C)(C)C +C=CC(=O)C(Br)(Br)Br +C=CC[NH2+]C(C(Br)(Br)Br)N +C(C=O)C(C(Br)(Br)Br)(Br)Br +C(C=O)C(C(Br)(Br)Br)N +C(C=O)C(C(Br)(Br)Br)[NH3+] +C(=O)c1c(c(c(nc1Br)Br)Br)Br +C(=O)c1c(c(c(c(n1)Br)Br)N)Br +C(=O)c1c(c(c(nc1Br)Br)N)Br +C(=O)c1c(c(c(c([nH+]1)Br)Br)N)Br +CSc1nc(c(c(n1)Br)C=O)Br +C(=S)NC(C(Br)(Br)Br)N +C(=S)NC(C(Br)(Br)Br)[NH3+] +C(C(Br)(Br)Br)([NH3+])S(=O)(=O)[O-] +C(C(C([N+](=O)[O-])Br)Br)Br +C(C([N+](=O)[O-])(Br)Br)Br +C(C(Br)(Br)Br)OS(=O)[O-] +CC(C)(C)C(=O)CCC(Br)(Br)Br +CCCOC(C(Br)(Br)Br)[NH3+] +CN(C)C(=S)SC(C(Br)(Br)Br)[NH3+] +COC(C(Br)(Br)Br)[NH3+] +COP(=O)(C(C(Br)(Br)Br)[NH3+])OC +C1COC(O1)(C(Br)(Br)Br)[NH3+] +C1=CN=C(N1)C(Br)(Br)Br +C1=CSC(=N1)SC(C(Br)(Br)Br)N +C1=CSC(=N1)SC(C(Br)(Br)Br)[NH3+] +C1=C(SC(=C1S(=O)[O-])Br)Br +C1C(C1(Br)Br)CSC2=NC=NN2 +C1=NC(=C(S1)C(=O)[O-])C(Br)(Br)Br +C1C(C1(Br)Br)CSC2=NNC=N2 +C1C(C1(Br)Br)CSC2=NN=CN2 +C1=NN=C(O1)C(Br)(Br)Br +C1=NOC(=N1)C(Br)(Br)Br +C1(=NN=NN1)C(Br)(Br)Br +C(#N)C1=C(NN=N1)C(Br)(Br)Br +C(#N)C1=NNN=C1C(Br)(Br)Br +C1(=NNN=C1C(Br)(Br)Br)C(=O)[O-] +c12c(nc(c(n1)Br)Br)N=C(N2)Br +C(P(=O)(O)[O-])(P(=O)(O)[O-])(Br)Br +c1(c(c(c(c(c1Br)Br)O)Br)Br)O +c1c2c(cc(c1Br)Br)N=C(N2)Br +c1c(c(c(c(n1)Br)Br)C#N)Br +c1c(c(c(c(n1)Br)C#N)Br)Br +c1c(c(c(c(c1Br)[O-])Br)Br)N +c1c(c(c(c(n1)Br)Br)N)Br +Cc1cc(nc(c1S(=O)[O-])Br)Br +c1c(c(nc(c1Br)Br)C(=O)[O-])Br +c1c(c(c(c(c1Br)N)Br)Br)N +c1c(cc(c(c1Br)S(=O)[O-])Br)N +c1c(c(c(c(c1Br)[O-])Br)N)Br +Cc1c(cc(cc1Br)S(=O)[O-])Br +c1c(c(c(c(c1Br)Br)N)[O-])Br +Cc1c(c(cc(c1Br)Br)Br)[O-] +c1cc(c(cc1Br)S(=O)(=O)[O-])Br +c1ccc(cc1)C(Br)(Br)Br +c1cc(c(cc1Br)CS(=O)[O-])Br +c1cc(c(c(c1)Br)CS(=O)[O-])Br +c1c(c(cc(c1Br)Br)Br)Br +c1c(c(c(c(c1Br)Br)[O-])Br)Br +c1cc(c(cc1Br)Br)Br +c1c(cc(cc1Br)Br)Br +c1cc(c(c(c1Br)[O-])Br)Br +c1c(cc(c(c1Br)[O-])Br)Br +c1c(cc(c(c1Br)N)Br)Br +c1c(cc(c(c1Br)S(=O)[O-])Br)Br +c1c(c(c(c([nH+]1)Br)Br)N)Br +c1nc(c(c(n1)Br)Br)Br +C1=C(SC(=C1CCCC=O)Br)Br +CN(C)CC[NH2+]C(C(Br)(Br)Br)N +COCC[NH2+]C(C(Br)(Br)Br)N +CC(CNC(=[NH2+])C(Br)(Br)Br)OC +C[NH+](C)CC[NH2+]C(C(Br)(Br)Br)N +B(c1cc2c(cc1CSc3ccc(cn3)C=O)OCO2)(O)O +CO[Si](C)(Oc1ccccc1C=O)Oc2ccccc2C=O +B(c1ccccc1CSc2c(cc(cn2)C=O)Cl)(O)O +CN1C(=O)c2cc(ccc2N3C1=C(N=C3)C=O)C#C[Si](C)(C)C +B(CCC[C@H]1C[C@@H](C[C@@]1(C=O)N)c2c3c(ncn2)NC=N3)(O)O +B(CCC[C@H]1C[C@@H](C[C@]1(C=O)N)c2c3c(ncn2)NC=N3)(O)O +B(CCC[C@@H]1C[C@@H](C[C@@]1(C=O)N)c2c3c(ncn2)NC=N3)(O)O +B(CCC[C@@H]1C[C@@H](C[C@]1(C=O)N)c2c3c(ncn2)NC=N3)(O)O +B(CCC[C@H]1C[C@H](C[C@@]1(C=O)N)c2c3c(ncn2)NC=N3)(O)O +B(CCC[C@H]1C[C@H](C[C@]1(C=O)N)c2c3c(ncn2)NC=N3)(O)O +B(CCC[C@@H]1C[C@H](C[C@@]1(C=O)N)c2c3c(ncn2)NC=N3)(O)O +B(CCC[C@@H]1C[C@H](C[C@]1(C=O)N)c2c3c(ncn2)NC=N3)(O)O +B(c1ccc(cc1CSc2ccc(cn2)C=O)OC)(O)O +C[Si](c1cccc(c1O)C=O)(c2cccc(c2O)C=O)c3cccc(c3O)C=O +C[Si](Oc1ccccc1C=O)(Oc2ccccc2C=O)Oc3ccccc3C=O +CN1CC2=C(N=CN2c3ccc(cc3C1=O)C#C[Si](C)(C)C)C=O +C(C1=C(NN=N1)C(Br)(Br)Br)O +C(C1=NNN=C1C(Br)(Br)Br)O +C1COC(N1)C(Br)(Br)Br +c1cc(c(c(c1S(=O)[O-])Br)Br)Br +c1cc(c(cc1Br)Br)CBr +Cc1c(ccc(c1Br)Br)Br +c1cc(c(c(c1S(=O)[O-])Br)N)Br +c1cc(c(cc1Br)Br)CS(=O)[O-] +c1cc(c(cc1CS(=O)[O-])Br)Br +C(C(Br)(Br)Br)(N)S(=O)(=O)[O-] +C(C1=C(N=C(C(=O)N1)Br)Br)Br +C(CSC(=O)C(Br)(Br)Br)N +c1c(c(c(c(c1Br)Br)Br)N)O +c1c(cc(c(c1O)S(=O)[O-])Br)Br +C(C(Br)Br)C(Br)Br +c1c(c(c(c(n1)Br)Br)Br)C=O +c1c(c(c(c(c1Br)Br)Br)Br)C=O +c1c(cc(c(c1Br)Br)Br)C=O +c1c(cc(c(c1C=O)Br)Br)Br +CSc1c(cc(cc1Br)Br)C=O +CSc1cc(c(cc1Br)Br)C=O +c1c(cc(c(c1N)Br)Br)Br +c1c(cc(c(c1S(=O)[O-])Br)Br)Br +c1c(cc(c(c1N)S(=O)[O-])Br)Br +Cc1cc(cc(c1Br)Br)Br +c1c(cc(cc1Br)Br)C(F)(F)F +c1c(cc(cc1Br)Br)CS(=O)[O-] +c1c(cc(c2c1OC(=O)S2)Br)Br +c1c(cc(c2c1NC(=S)N2)Br)Br +C(C1=C(NN=N1)C(Br)(Br)Br)[NH3+] +COC(C(Br)(Br)Br)O +CC1(CC(C(N=C1)O)(Br)Br)Br +c1c(c(c(c(c1Br)Br)C=O)O)Br +Cc1c(c(cc(c1Br)Br)Br)O +c1c(c(c(c(c1Br)Br)C[NH3+])O)Br +c1c(c(c(c(c1Br)Br)CN)O)Br +c1c(c(c(c(c1Br)Br)N)O)Br +c1cc(c(c(c1Br)O)Br)Br +c1c(cc(c(c1Br)O)Br)Br +c1c(c(c(c(n1)C=O)Br)Br)Br +c1c(c(c(c(c1Br)O)Br)N)Br +c1c(c(c(c(c1Br)O)Br)Br)N +COC(C(Br)(Br)Br)N +C=C(c1ccc(cc1Br)Br)Br +c1cc(c(c(c1Br)C=O)Br)Br +c1c(c(cc(c1Br)Br)Br)N +c1c(c(cc(c1Br)Br)Br)S(=O)[O-] +Cc1cc(c(cc1S(=O)[O-])Br)Br +CC(C)N=C(C(Br)(Br)Br)N +C1(=C(NN=C1Br)Br)Br +C1(=C(N=C(N1)Br)Br)Br +c1c(cnc(c1Br)Br)Br +c1c(c(c(c(c1Br)Br)O)Br)Br +C(C(I)I)C(I)I +c1cnc(nc1)CC(I)(I)I +C1=CN=C(N1)C(I)(I)I +C1=NOC(=N1)C(I)(I)I +C1=NN=C(O1)C(I)(I)I +C1(=NN=N[N-]1)C(I)(I)I +C1(=NN=NN1)C(I)(I)I +C1COC[C@@H]1C(I)(I)I +C1CO[C@@H]([NH2+]1)C(I)(I)I +C1CO[C@@H](N1)C(I)(I)I +C1COC[C@H]1C(I)(I)I +C1CO[C@H]([NH2+]1)C(I)(I)I +C1CO[C@H](N1)C(I)(I)I +C(I)(I)I +c1ccc(cc1)C(I)(I)I +c1cc(c(cc1I)I)CI +C1[C@H](C1(I)I)C2=NC=NO2 +C1[C@@H](C1(I)I)C2=NC=NO2 +c1ccc(cc1)[C@@H]2CC2(I)I +c1ccc(cc1)[C@H]2CC2(I)I +C1[C@H](C1(I)I)CSC2=NNC=N2 +C1[C@H](C1(I)I)CSC2=NC=NN2 +C1[C@H](C1(I)I)CSC2=NN=CN2 +C1[C@@H](C1(I)I)CSC2=NNC=N2 +C1[C@@H](C1(I)I)CSC2=NC=NN2 +C1[C@@H](C1(I)I)CSC2=NN=CN2 +C1C[NH2+]CCC1(I)I +C1CNCCC1(I)I +c1nc2c(c(n1)I)C(=CN2)I +C1=CN2C=C(N=C(C2=N1)I)I +c1nc2c(c(n1)I)C=C(N2)I +C1=C(SC(=C1)I)I +C1=C(C(=NN1)I)I +C1=C(N=C(S1)I)I +C1=NC(=C(N1)I)I +C1=NNC(=C1I)I +C1=NC(=C(S1)I)I +C1=CSC(=C1I)I +C1(=C(N=C(N1)Br)I)I +C1(=C(N=C(N1)I)I)I +C1(=NC(=NN1)I)I +C1(=C(NN=C1I)I)I +C1(=NN=C(N1)I)I +c1c2c(cc(c1I)I)N=C(N2)I +c12c(nc(c(n1)I)I)N=C(N2)I +C1C[NH2+]C[C@H]([C@@H]1I)I +C1C[NH2+]C[C@@H]([C@@H]1I)I +C1CNC[C@H]([C@@H]1I)I +C1CNC[C@@H]([C@@H]1I)I +C1C[NH2+]C[C@H]([C@H]1I)I +C1C[NH2+]C[C@@H]([C@H]1I)I +C1CNC[C@H]([C@H]1I)I +C1CNC[C@@H]([C@H]1I)I +c1ccc(cc1)[Si](I)(I)I +c1ccc(cc1)[SiH](c2ccccc2)I +c1cc(c(c2c1NC=C2)I)Br +c1cc(c(c2=CCN=c21)I)Br +c1cc(c(cc1I)I)I +c1c(cc(cc1I)I)Br +c1c(cc(cc1I)I)I +c1c(cnc(c1I)I)I +c1c(c(cc(c1I)I)I)I +c1c(cc(c2=NNC=c21)I)Br +c1c(cc(c2c1C=NN2)I)Br +c1c(cc(c2c1C=CN2)I)Br +c1c(cc(c2c1CCN2)I)Br +c1c(cc(c2c1NC=N2)Br)I +c1c(cc(c2c1N=CN2)Br)I +c1c(cc(c2c1CCN2)Br)I +c1cc(c2c(c1I)N=CO2)I +c1cc(c2c(c1I)N=CS2)I +c1cc2c(cc1I)SC=C2I +c1cc(c(c2c1SC=N2)I)I +c1c(cc(cc1I)I)C2CC2 +c1c(cc(c2=NNC=c21)I)I +c1c(cc(c2c1C=NN2)I)I +c1c(cc(c2c1CCC2)I)I +c1c(cc(c2c1CCN2)I)I +c1c2=NNN=c2cc(c1I)I +c1c2c(cc(c1I)I)N=NN2 +c1c2c(cc(c1I)I)NC=C2 +c1c(cnc2c1C(=CN2)I)I +c1c(cc(c2c1CCCN2)I)Br +c1cc2c(cc(cc2I)Br)nc1 +c1c(cc(c2c1CCCN2)Br)I +c1c(cc(c2c1CC[NH2+]C2)Br)I +c1c(cc(c2c1CCNC2)Br)I +c1cc(c2cnccc2c1Br)I +c1cc(c(cc1C2C[NH2+]C2)I)I +c1cc(c(c(c1)I)CC2CC2)I +c1cc(c2c(c1I)CC[NH2+]C2)I +c1cc(c2c(c1I)CCNC2)I +c1cc(c(c2c1cncc2)Br)I +c1cc(c(c2c1C[NH2+]CC2)I)I +c1cc(c(c2c1CNCC2)I)I +c1cc(c(c2c1CC[NH2+]C2)I)I +c1cc(c(c2c1CCNC2)I)I +c1cc(c(c2c1CCCN2)I)I +c1cc2c(cc(cc2I)I)nc1 +c1cncc2c1cc(cc2I)I +c1c(cc(c2c1CCCN2)I)I +c1c(cc(c2c1CC[NH2+]C2)I)I +c1c(cc(c2c1CCNC2)I)I +c1c(cc(c2c1C[NH2+]CC2)I)I +c1c(cc(c2c1CNCC2)I)I +c1c(cc(c2c1NCCC2)I)I +c1c(cc(c2c1OCCN2)I)I +c1cnc2c(n1)cc(cc2I)I +c1c(cc(c2c1cncn2)I)I +c1ccc2cc(c(cc2c1)I)I +c1c2c(cc(c1I)I)CCCC2 +c1c2c(cc(c1I)I)N=C(N2)Br +c1ccc(c(c1)I)I +c1cc(cc(c1)I)I +c1cc(nc(c1)I)I +c1cc(c(nc1)I)I +c1cc(ccc1I)I +c1cc(ncc1I)I +c1cc(nnc1I)I +c1cncc(c1I)I +c1cnc(cc1I)I +c1cnc(nc1I)I +c1cnnc(c1I)I +c1c(ncnc1I)I +c1c(cncc1I)I +c1c(nc(cn1)I)I +c1c(c(ncn1)I)I +c1c(nnc(n1)I)I +c1nc(c(c(n1)I)Br)I +c1nc(c(c(n1)I)I)I +c1nc2c(c(n1)I)C(=CN2)Br +c1nc(nc(n1)I)I +C1=Nc2c(nc(nc2I)I)N1 +C1=Nc2c(c(nc(n2)I)I)N1 +C1=Nc2c(c(nnc2I)I)N1 +c1cc(c(cc1CC=[NH2+])I)I +c1cc(c(c(c1)I)CC=[NH2+])I +C1C(=[NH2+])NOC1(CI)CI +C1[C@H](C1(I)I)CC[NH3+] +C1[C@@H](C1(I)I)CC[NH3+] +C(C(Br)(I)I)[NH3+] +C(C(I)(I)I)[NH3+] +C(CSC(=O)C(I)(I)I)[NH3+] +c1cc(c(c(c1)I)I)CC[NH3+] +c1cc(c(cc1I)I)CC[NH3+] +c1cc(c(cc1CC[NH3+])I)I +c1c(cc(cc1I)I)CC[NH3+] +c1cc(c(c(c1)I)CC[NH3+])I +C(C1=C(NN=N1)C(I)(I)I)[NH3+] +C(C1=NNN=C1C(I)(I)I)[NH3+] +C1[C@H](C1(I)I)C2=NC(=NO2)C[NH3+] +C1[C@@H](C1(I)I)C2=NC(=NO2)C[NH3+] +C([C@@H](C(I)(I)I)O)[NH3+] +c1cc(c(c(c1)I)[C@H](C[NH3+])O)I +C([C@H](C(I)(I)I)O)[NH3+] +c1cc(c(c(c1)I)[C@@H](C[NH3+])O)I +c1cc(c(c(c1)I)I)C[NH3+] +c1cc(c(cc1I)I)C[NH3+] +c1cc(c(cc1C[NH3+])I)I +c1c(cc(cc1I)I)C[NH3+] +c1c(c(nnc1I)I)C[NH3+] +c1c(cc(c(c1C[NH3+])O)I)I +c1cc(c(c(c1)I)C[NH3+])I +c1nc(c(c(n1)I)C[NH3+])I +c1c(c(c(c(c1I)I)C[NH3+])O)I +C1COC(O1)(C(I)(I)I)[NH3+] +c1cc(c(cc1C2(CC2)[NH3+])I)I +c1cc(c(c(c1)I)C2(CC2)[NH3+])I +C(C1=C(N=C(N1)I)I)[C@@H](C=O)[NH3+] +C(C=O)[C@H](C(I)(I)I)[NH3+] +[C@H](C(I)(I)I)([NH3+])S(=O)(=O)[O-] +C(=S)N[C@H](C(I)(I)I)[NH3+] +[C@@H](C(I)(I)I)([NH3+])O +C1=CSC(=N1)S[C@H](C(I)(I)I)[NH3+] +[C@@H]1(C(=C(C(=O)O1)I)I)[NH3+] +c1cc(c(c2c1[C@@H](CC2)[NH3+])I)I +c1cc(c(c2c1[C@@H](CO2)[NH3+])I)I +C(C1=C(NC(=N1)I)I)[C@H](C=O)[NH3+] +C(C1=C(N=C(N1)I)I)[C@H](C=O)[NH3+] +C(C=O)[C@@H](C(I)(I)I)[NH3+] +[C@@H](C(I)(I)I)([NH3+])S(=O)(=O)[O-] +C(=S)N[C@@H](C(I)(I)I)[NH3+] +[C@H](C(I)(I)I)([NH3+])O +C1=CSC(=N1)S[C@@H](C(I)(I)I)[NH3+] +[C@H]1(C(=C(C(=O)O1)I)I)[NH3+] +c1cc(c(c2c1[C@H](CC2)[NH3+])I)I +c1cc(c(c2c1[C@H](CO2)[NH3+])I)I +c1cc(c(cc1I)I)CC#N +c1cc(c(cc1CC#N)I)I +C1=C(SC(=C1I)I)C#N +C(#N)C1=C(SC(=C1I)I)N +C(#N)C1=C(NN=N1)C(I)(I)I +C(C=O)SC1=C(C(=NS1)I)C#N +C(#N)C1=NC(=C(N1)I)I +C(#N)C1=NNN=C1C(I)(I)I +c1cc(c(c(c1)I)I)[C@H](C#N)N +c1cc(c(cc1I)I)[C@H](C#N)N +c1cc(c(cc1[C@H](C#N)N)I)I +c1cc(c(c(c1)I)I)[C@@H](C#N)N +c1cc(c(cc1I)I)[C@@H](C#N)N +c1cc(c(cc1[C@@H](C#N)N)I)I +c1c(cc(cc1Br)I)C#N +c1c(cc(cc1I)I)C#N +c1c(c(nnc1I)I)C#N +c1c(cc(c(c1C#N)[O-])I)Br +c1c(cc(c(c1C#N)O)I)Br +c1c(cc(c(c1C#N)[O-])Br)I +c1c(cc(c(c1C#N)O)Br)I +c1c(cc(c(c1C#N)[O-])I)I +c1c(cc(c(c1C#N)O)I)I +c1c(cc(c(c1I)C=O)I)C#N +c1c(c(c(c(n1)I)I)C#N)I +c1c(cc(c(c1I)C#N)I)C=O +c1c(c(c(c(n1)I)C#N)I)I +c1c(cc(c(c1O)/C=N/N)I)I +c1c(cc(c(c1O)/C=N\N)I)I +[H]/N=C/C(I)(I)I +[H]/N=C/Cc1ccc(c(c1)I)I +[H]/N=C/Cc1c(cccc1I)I +[H]/N=C(\c1cc(cc(c1)I)I)/N +[H]/N=C(\c1cc(nc(c1)I)I)/N +[H]/N=C(\C(I)(I)I)/N +[H]/N=C/c1cc(cc(c1O)I)I +[H]/N=C\C(I)(I)I +[H]/N=C\Cc1ccc(c(c1)I)I +[H]/N=C\Cc1c(cccc1I)I +[H]/N=C(/c1cc(cc(c1)I)I)\N +[H]/N=C(/c1cc(nc(c1)I)I)\N +[H]/N=C(/C(I)(I)I)\N +[H]/N=C\c1cc(cc(c1O)I)I +[H]/N=C/1\C(=O)[C@H](/C(=N\[H])/C(=O)[C@H]1I)I +[H]/N=C\1/C(=O)[C@H](/C(=N/[H])/C(=O)[C@@H]1I)I +[H]/N=C\1/C(=O)[C@H](/C(=N\[H])/C(=O)[C@H]1I)I +[H]/N=C\1/C(=O)[C@H](/C(=N\[H])/C(=O)[C@@H]1I)I +[H]/N=C/1\C(=O)[C@H](/C(=N\[H])/C(=O)[C@@H]1I)I +[H]/N=C/1\C(=O)[C@@H](/C(=N\[H])/C(=O)[C@@H]1I)I +[H]/N=C\1/C(=O)[C@@H](/C(=N\[H])/C(=O)[C@@H]1I)I +[H]/N=C/1\[C@@H]([C@@H](CC=C1I)C[NH3+])I +[H]/N=C/1\[C@H]([C@@H](CC=C1I)C[NH3+])I +[H]/N=C/1\[C@@H]([C@H](CC=C1I)C[NH3+])I +[H]/N=C/1\[C@H]([C@H](CC=C1I)C[NH3+])I +[H]/N=C/1\C(=O)[C@H](/C(=N/[H])/C(=O)[C@H]1I)I +[H]/N=C/1\C(=O)[C@H](/C(=N/[H])/C(=O)[C@@H]1I)I +[H]/N=C/1\C(=O)[C@@H](/C(=N/[H])/C(=O)[C@@H]1I)I +[H]/N=C\1/[C@@H]([C@@H](CC=C1I)C[NH3+])I +[H]/N=C\1/[C@H]([C@@H](CC=C1I)C[NH3+])I +[H]/N=C\1/[C@@H]([C@H](CC=C1I)C[NH3+])I +[H]/N=C\1/[C@H]([C@H](CC=C1I)C[NH3+])I +[H]/N=N/C(CI)CI +[H]/N=N/Cc1c(cc(cc1I)I)O +[H]/N=N\C(CI)CI +[H]/N=N\Cc1c(cc(cc1I)I)O +c1c(cc(cc1I)I)C(=[NH2+])N +c1c(cc(nc1I)I)C(=[NH2+])N +C1(=C(N=C(N1)I)I)C(=O)N +c1c(cc(c(c1I)N)I)C(=O)N +C1[C@H](C1(I)I)CCN +C1[C@@H](C1(I)I)CCN +C(C(Br)(I)I)N +C(C(I)(I)I)N +C(CSC(=O)C(I)(I)I)N +c1cc(c(c(c1)I)I)CCN +c1cc(c(cc1I)I)CCN +c1c(cc(cc1I)I)CCN +c1cc(c(c(c1)I)CCN)I +C1[C@H](C1(I)I)C2=NC(=NO2)CN +C1[C@@H](C1(I)I)C2=NC(=NO2)CN +C([C@@H](C(I)(I)I)O)N +c1cc(c(c(c1)I)[C@H](CN)O)I +C1C=C(C(=C([C@@H]1CN)I)N)I +C([C@H](C(I)(I)I)O)N +c1cc(c(c(c1)I)[C@@H](CN)O)I +C1C=C(C(=C([C@H]1CN)I)N)I +c1cc(c(c(c1)I)I)CN +c1cc(c(cc1I)I)CN +c1cc(c(cc1CN)I)I +c1c(cc(cc1I)I)CN +c1c(c(nnc1I)I)CN +c1c(cc(c(c1CN)O)I)I +c1cc(c(c(c1)I)CN)I +c1nc(c(c(n1)I)CN)I +c1c(c(c(c(c1I)I)CN)O)I +C1[C@@H]2[C@@H](C2(I)I)CC1(C(=O)[O-])N +C1COC(O1)(C(I)(I)I)N +c1cc(c(cc1C2(CC2)N)I)I +c1cc(c(c(c1)I)C2(CC2)N)I +C1(=C(C(=O)NC(=C1I)I)I)N +C1=CC(=NN2C1=NC(=C2Br)N)I +C(=O)C1=C(C(=C(S1)I)I)N +C1(=C(C(=O)C(=C(C1=O)I)N)I)N +C1(=C(SC(=C1N)I)I)N +C1(=C(NN=C1I)N)I +C1=C(SC(=C1N)I)I +C1(=C(NN=C1N)I)I +C1C(=NOC1(CI)CI)N +c1c(cc(c2c1N=C(N2)N)I)I +c1c(cc(c2c1NC(=N2)N)I)I +C(C1=C(NC(=N1)I)I)[C@@H](C=O)N +C(C=O)[C@H](C(I)(I)I)N +B([C@@H](CC1=COc2c1cccc2I)N)(O)O +B([C@@H](CC1=C(Oc2c1cccc2)I)N)(O)O +B([C@@H](C[C@@H]1COc2c1cccc2I)N)(O)O +B([C@@H](C[C@H]1COc2c1cccc2I)N)(O)O +[C@H](C(I)(I)I)(N)S(=O)(=O)[O-] +B([C@@H](Cc1ccc(cc1I)I)N)(O)O +B([C@@H](Cc1ccc(c(c1)I)I)N)(O)O +C1COCC[NH+]1[C@H](C(I)(I)I)N +C(=S)N[C@H](C(I)(I)I)N +[C@@H](C(I)(I)I)(N)O +C1=CSC(=N1)S[C@H](C(I)(I)I)N +[C@@H]1(C(=C(C(=O)O1)I)I)N +c1cc(c(c2c1[C@@H](CC2)N)I)I +c1cc(c(c2c1[C@@H](CO2)N)I)I +C(C1=C(NC(=N1)I)I)[C@H](C=O)N +C(C=O)[C@@H](C(I)(I)I)N +B([C@H](CC1=COc2c1cccc2I)N)(O)O +B([C@H](CC1=C(Oc2c1cccc2)I)N)(O)O +B([C@H](C[C@@H]1COc2c1cccc2I)N)(O)O +B([C@H](C[C@H]1COc2c1cccc2I)N)(O)O +[C@@H](C(I)(I)I)(N)S(=O)(=O)[O-] +B([C@H](Cc1ccc(cc1I)I)N)(O)O +B([C@H](Cc1ccc(c(c1)I)I)N)(O)O +C1COCC[NH+]1[C@@H](C(I)(I)I)N +C(=S)N[C@@H](C(I)(I)I)N +[C@H](C(I)(I)I)(N)O +C1=CSC(=N1)S[C@@H](C(I)(I)I)N +[C@H]1(C(=C(C(=O)O1)I)I)N +c1cc(c(c2c1[C@H](CC2)N)I)I +c1cc(c(c2c1[C@H](CO2)N)I)I +C(C(=NN)CI)I +c1cc(c(cc1I)I)CON +N[P@]1(=N[P@@](=N[PH2]=N1)(N)I)I +N[P@]1(=N[P@](=N[PH2]=N1)(N)I)I +N[P@@]1(=N[P@](=N[PH2]=N1)(N)I)I +C1=C(C(=C(S1)S(=O)(=O)N)C=O)I +C1=C(SC(=C1C=O)S(=O)(=O)N)I +C1=C(NC(=C1S(=O)(=O)N)I)C=O +C1=C(SC(=C1S(=O)(=O)N)I)C=O +C1=C(OC(=C1C=O)I)S(=O)(=O)N +c1c(c(c(c(c1I)C=O)Br)N)Br +c1c(c(c(c(c1I)F)I)N)C=O +c1c(cc(c(c1F)N)I)I +c1cc(c(c(c1)I)I)N +c1cc(c(cc1I)I)N +c1cc(c(cc1N)I)I +c1cc(c(cc1I)N)I +c1c(cc(cc1I)I)N +c1c(cnc(c1N)I)I +c1c(c(cnc1N)I)I +c1c(cc([nH+]c1I)I)N +c1c(cc(nc1I)I)N +c1c(c(c(cn1)I)I)N +c1cc(c(c(c1N)I)I)[O-] +c1cc(c(c(c1N)I)I)O +c1c(c(cc(c1I)F)I)N +c1c(cc(c(c1I)F)I)N +c1c(cc(c(c1N)I)I)I +c1c(cc(c(c1N)N)I)I +c1c(c(cc(c1I)I)F)N +c1c(c(cc(c1I)I)I)N +c1c(cc(c(c1Br)N)I)N +c1c(cc(c(c1Br)[O-])I)N +c1c(cc(c(c1Br)O)I)N +c1c(cc(c(c1C=O)I)N)Br +c1c(cc(c(c1N)I)I)C=O +c1c(c(c(c(c1Cl)N)I)Cl)N +c1c(c(c(c(c1I)F)I)F)N +c1c(cc(c(c1C=O)I)N)I +c1c(cc(c(c1N)C=O)I)I +c1c(c(c(c(c1I)N)Br)I)N +c1c(c(c(c(c1I)N)I)I)N +c1c(c(c(c(c1I)O)I)I)N +c1cc(ccc1[C@@H]2CC2(I)I)N +c1cc(ccc1[C@H]2CC2(I)I)N +c1cc(c(c(c1)I)SC(F)F)N +c1cc(c(cc1S(=O)(=O)F)I)N +c1c(c(c(c(c1F)I)N)I)C=O +c1cc(c(c(c1)I)N)I +c1c(c(c(c[nH+]1)I)N)I +c1c(c(c(cn1)I)N)I +c1c(cc(c(c1I)N)I)F +c1c(cc(c(c1I)N)I)I +c1c(c(c(c([nH+]1)F)I)N)I +c1c(c(c(c([nH+]1)I)I)N)I +c1c(c(c(c(n1)F)I)N)I +c1c(c(c(c(n1)I)I)N)I +c1c(cc(c(c1I)N)I)C=O +c1cc(c(c(c1C=O)I)N)I +c1c(cc(c(c1C=O)N)I)I +c1c(c(c(c(c1I)O)I)N)I +c1c(cc(c(c1I)N)I)CC=O +c1c(c(c(c(c1I)N)I)C=O)Cl +c1c(cc(c(c1C(=O)[O-])N)I)I +C(=O)c1c(c(c(c([nH+]1)I)I)N)I +C(=O)c1c(c(c(c(n1)I)I)N)I +c1(c(c(nc(c1I)I)O)I)N +c1nc(c(c(n1)I)N)I +C(=O)c1c(c(c(nc1I)I)N)I +c1c(c(c(c(c1I)I)N)[O-])I +c1c(c(c(c(c1I)I)I)N)O +c1c(c(c(c(c1I)I)N)O)I +c1cnc(c(c1I)I)N +c1c(cnc(c1I)N)I +c1c(c(c(c(n1)N)I)C=O)I +c1nc(c2c(n1)NC(=C2I)I)N +c1c(nc(nc1I)N)I +C(=O)c1c(nc(c(n1)I)I)N +c1c(c(c(cn1)I)/N=C/[O-])Br +c1c(c(c(cn1)I)/N=C\[O-])Br +c1cc(c(cc1I)I)[O-] +c1cc(c(c(c1)I)[O-])I +c1cc(c(c(c1I)[O-])I)I +c1c(cc(c(c1Br)[O-])I)I +c1c(cc(c(c1I)[O-])I)I +c1c(c(c(c(c1I)I)[O-])I)I +c1(c(c(c(c(c1I)I)[O-])I)I)[O-] +C(/C(=[NH+]\O)/I)I +C(/C(=[NH+]/O)/I)I +C(CO)C[Si](I)(I)I +C(C(F)(F)I)(C(F)(F)I)O +C(C(I)(I)I)O +c1cc(c(c(c1)I)I)SCCO +C(C[Si](I)(I)I)O +c1cc(c(cc1I)I)CCO +C1=C(SC(=C1I)I)CO +C(C1=C(NN=N1)C(I)(I)I)O +C(C1=C(NC(=N1)I)I)O +C(C1=C(N=C(N1)I)I)O +C(C1=NNN=C1C(I)(I)I)O +C1[C@H](C1(I)I)CO +C([C@@H]1[C@H](C1(I)I)CO)O +C([C@@H]1[C@@H](C1(I)I)CO)O +C1[C@@H](C1(I)I)CO +C([C@H]1[C@@H](C1(I)I)CO)O +C(O)(I)(I)I +c1cc(c(c(c1)I)I)CO +c1cc(c(cc1CO)I)I +c1c(cc(cc1Br)I)CO +c1cc(c(c(c1)I)CO)I +c1cc(nc(c1I)CO)I +c1cc(c(c2c1NC=C2O)I)Br +c1c2c(cc(c1I)I)N=C(N2)O +c1cc(c2c(c1I)N=C(O2)O)I +c1c(cc(c2c1OC(=N2)O)I)I +c1cc(c(c2=C(CN=c21)O)I)Br +c1cnc(nc1)[C@H](C(I)(I)I)O +C1CN[C@@]([NH2+]1)(C(I)(I)I)O +C1[C@H]([C@@H]([C@@H](O1)CSCCI)O)O +C1[C@H]([C@H]([C@@H](O1)CSCCI)O)O +C1[C@H]([C@@H]([C@H](O1)CSCCI)O)O +C1[C@H]([C@H]([C@H](O1)CSCCI)O)O +C1[C@H](C1(I)I)O +c1cnc(nc1)[C@@H](C(I)(I)I)O +C1CN[C@]([NH2+]1)(C(I)(I)I)O +C1[C@@H]([C@@H]([C@@H](O1)CSCCI)O)O +C1[C@@H]([C@H]([C@@H](O1)CSCCI)O)O +C1[C@@H]([C@@H]([C@H](O1)CSCCI)O)O +C1[C@@H]([C@H]([C@H](O1)CSCCI)O)O +C1[C@@H](C1(I)I)O +c1cc(ccc1[Si]2(CCNCC2)O)I +c1cc(c(c(c1)I)I)O +c1cc(c(cc1I)I)O +c1cc(c(cc1O)I)I +c1cc(c(cc1I)O)I +c1c(cc(cc1I)I)O +c1cc(c(c(c1)I)O)I +c1cc(c(c(c1I)O)I)I +c1c(cc(c(c1Br)O)I)I +c1c(cc(c(c1I)O)I)I +c1c(c(c(c(c1I)I)O)I)I +c1(c(c(c(c(c1I)I)O)I)I)O +C(CCCCC[Si](I)(I)I)CCCCC=O +C1=C(SC(=C1CCCC=O)I)I +C(C(CI)C=O)I +C(C=O)C(C(I)(I)I)(I)I +C(C[Si](I)(I)I)C=O +c1cc(c(cc1CCC=O)I)I +c1cc(c(c(c1)I)CCC=O)I +C(C=O)C1=NC(=C(NC1=O)I)I +C(C=O)[C@@H](C(I)(I)I)O +C(C=O)[C@H](C(I)(I)I)O +C(=O)C(I)(I)I +c1c(cc(cc1I)I)C(=O)CO +c1c(c(cnc1SCC=O)I)I +c1c(cc(nc1I)I)SCC=O +c1cc(c(c(c1)I)Br)CC=O +c1cc(c(c(c1)I)I)CC=O +c1cc(c(cc1I)Br)CC=O +c1cc(c(cc1I)I)CC=O +c1cc(c(cc1CC=O)I)I +c1cc(c(cc1I)CC=O)Br +c1cc(c(cc1I)CC=O)I +c1c(cc(cc1I)I)CC=O +c1cc(c(c(c1)I)CC=O)I +c1cc(c(c(c1I)CC=O)I)I +C(=O)C1=C(C(=C(S1)C=O)I)I +C1=C(SC(=C1I)I)C=O +C1=C(C(=C(S1)I)I)C=O +C(=O)C1=C(N=C(S1)I)Br +C(=O)C1=C(OC(=N1)I)Br +C(=O)C1=C(SC(=N1)I)Br +C(=O)C1=C(N=C(S1)I)C(F)(F)F +C1=C(C(=C(O1)C=O)I)I +C1=C(C(=C(S1)C=O)I)I +C(=O)C1=C(C(=NN1)I)I +C(=O)C1=C(C(=NS1)I)I +C1=C(SC(=C1I)C=O)Br +C1=C(OC(=C1I)C=O)I +C(=O)C1=C(NC(=N1)Br)I +C(=O)C1=C(NC(=N1)I)I +C(=O)C1=C(NN=C1I)I +C(=O)C1=C(N=C(N1)Br)I +C(=O)C1=C(N=C(N1)I)I +C(=O)C1=C(OC(=N1)Br)I +C1=C(OC(=C1C=O)I)I +C(=O)C1=C(OC(=N1)I)I +C1=C(SC(=C1C=O)I)Br +C(=O)C1=C(SC(=N1)Br)I +C1=C(SC(=C1C=O)I)I +C(=O)C1=C(SN=C1I)I +C1=C(SC(=C1S(=O)(=O)[O-])C=O)I +C(=O)C1=C(C(=C(S1)I)I)F +C(=O)C1=C(C(=C(S1)I)I)O +C(=O)C1=NC(=C(S1)I)C(F)(F)F +C(=O)C1=NNC(=C1I)I +C(=O)C1=NSC(=C1I)I +c1ccc(cc1)[C@H]([C@H](C=O)I)I +c1ccc(cc1)[C@@H]([C@H](C=O)I)I +c1c(cc(cc1I)I)[C@H](C=O)O +C(C1([C@@H]([C@H]1C=O)C=O)I)I +C1[C@H](C1(I)I)C=O +c1ccc(cc1)[C@H]([C@@H](C=O)I)I +c1ccc(cc1)[C@@H]([C@@H](C=O)I)I +c1c(cc(cc1I)I)[C@@H](C=O)O +C(C1([C@@H]([C@@H]1C=O)C=O)I)I +C(C1([C@H]([C@@H]1C=O)C=O)I)I +C1[C@@H](C1(I)I)C=O +c1c(c(c(cn1)I)NC=O)Br +C1=C(NC(=C1I)I)C(=O)[O-] +C1=C(SC(=C1I)I)C(=O)[O-] +C1(=C(NN=N1)C(I)(I)I)C(=O)[O-] +C1=NC(=C(S1)C(=O)[O-])C(I)(I)I +C1(=C(NC(=N1)Br)I)C(=O)[O-] +C1(=C(NN=C1I)I)C(=O)[O-] +C1(=C(N=C(N1)Br)I)C(=O)[O-] +C1(=NNN=C1C(I)(I)I)C(=O)[O-] +C1[C@@H]2[C@@H](C2(I)I)[C@@H](N1)C(=O)[O-] +C1[C@H]2[C@H](C2(I)I)[C@@H](N1)C(=O)[O-] +C1[C@@H]2[C@@H](C2(I)I)[C@H](N1)C(=O)[O-] +C1[C@H]2[C@H](C2(I)I)[C@H](N1)C(=O)[O-] +c1cc(c(cc1C(=O)[O-])I)I +c1cc(c(cc1I)C(=O)[O-])I +c1c(cc(cc1I)I)C(=O)[O-] +c1c(cc(c(c1C(=O)[O-])O)I)I +c1c(c(nc(c1I)I)C(=O)[O-])I +c1cc(c(c(c1)I)SC=O)I +c1cnc(c(c1Br)C=O)I +c1cc(c(c(c1Br)C=O)F)I +c1c(cc(c(c1F)C=O)I)I +c1cc(c(cc1Br)C=O)I +c1c(cc(nc1C=O)I)Br +c1cc(c(cc1Br)I)C=O +c1cc(c(cc1C=O)I)Br +c1cc(c(nc1C=O)I)Br +c1cc(c(c(c1)Br)I)C=O +c1cc(c(c(c1)I)I)C=O +c1cc(c(nc1C=O)Br)I +c1cc(c(cc1I)Br)C=O +c1cc(c(cc1I)I)C=O +c1cc(c(cc1C=O)I)I +c1cc(nc(c1C=O)Br)I +c1cc(c(cc1I)C=O)Br +c1cc(c(cc1I)C=O)I +c1c(cc(nc1C=O)I)I +c1c(cnc(c1C=O)I)I +c1c(cc(nc1I)I)C=O +c1c(cnc(c1I)Br)C=O +c1c(c(c(cn1)I)I)C=O +c1c(c(cnc1I)C=O)I +c1c(cnc(c1I)I)C=O +c1c(cc(c(c1C=O)I)Br)Br +c1c(cc(c(c1Cl)I)Cl)C=O +c1c(c(cc(c1F)I)I)C=O +c1c(c(nc(c1F)I)I)C=O +c1cc(c(c(c1C=O)I)I)F +c1cc(c(c(c1C=O)I)F)I +c1c(cc(c(c1I)Br)I)C=O +c1c(c(cc(c1I)F)I)C=O +c1c(cc(c(c1C=O)Cl)I)I +c1c(cc(c(c1C=O)I)I)I +c1c(cc(c(c1C=O)[O-])I)I +c1c(cc(c(c1C=O)O)I)I +c1c(cc(c(c1C=O)[S-])I)I +c1c(cc(c(c1C=O)S)I)I +c1c(c(cc(c1I)I)O)C=O +c1c(cc(c(c1I)I)I)C=O +c1c(c(c(c(n1)Cl)I)Cl)C=O +c1c(c(c(c(n1)I)Br)I)C=O +c1c(c(c(c(n1)I)I)I)C=O +c1c(c(c(c(c1I)I)I)I)C=O +B1(Oc2cc(c(cc2O1)I)I)c3ccc(cc3)C=O +B(c1ccccc1CSc2c(cc(cn2)C=O)I)(O)O +c1cc(c(c(c1)I)C=O)I +c1c(c(c(cn1)I)C=O)I +c1cc(c(c(c1Br)F)C=O)I +c1cc(c(c(c1I)C=O)I)I +c1cc(c(c(c1I)C=O)O)I +c1c(c(c(c(c1O)I)C=O)I)O +C(=O)c1c(c(c(nc1I)I)I)I +c1c(cc(c(c1O)C=O)I)I +c1c(c(c(c(c1I)I)C=O)O)I +c1c(c(c(c(c1I)O)C=O)O)I +c1c(cnc(c1I)C=O)Br +c1c(cnc(c1Br)C=O)I +c1c(cnc(c1I)C=O)I +c1c(nc(c(n1)C=O)I)I +c1c(c(c(c(n1)C=O)I)I)I +c1c(c(nc(c1Br)I)C=O)F +c1cc(nc(c1I)C=O)I +c1c(c(c(nc1I)C=O)O)I +C1=C(C(=O)C=C(C1=O)I)I +c1cc(c(c2c1NCC2=O)I)Br +c1c(c2c(nc1I)NC(=O)C2)I +C1=C(C(=O)C(=CN1)I)I +C1(=C(C(=O)NC1=O)I)I +C1=C(C(=O)NC=C1I)I +C1=C(N=C(C(=O)N1)I)I +C1=NNC(=O)C(=C1Br)I +C1=NNC(=O)C(=C1I)I +C1=C(C(=O)NN=C1I)I +C1(=C(NC(=O)C(=O)N1)I)I +C1(=C(C(=O)NNC1=O)I)I +C(C1=C(N=C(C(=O)N1)I)I)Br +C(C1=C(N=C(C(=O)N1)Cl)Cl)I +C(C1=C(N=C(C(=O)N1)I)I)I +c1c(cc(c2c1C(=O)NO2)I)I +c1c2c(cc(c1I)I)NC(=O)N2 +c1cc(c2c(c1I)NC(=O)O2)I +c1c(cc(c2c1OC(=O)N2)I)I +C1(=C(SNC1=O)I)I +C1=C([NH+]=C(C(=O)O1)I)I +C1=C(N=C(C(=O)O1)I)I +c1c2c(cc(c1I)I)C(=O)OC2 +C1C(=C(C(=O)O1)I)I +c1c(cc(c2c1OC(=O)S2)I)I +C(C([N+](=O)[O-])(I)I)I +C([C@H]([C@H]([N+](=O)[O-])I)I)I +C([C@@H]([C@H]([N+](=O)[O-])I)I)I +C([C@H]([C@@H]([N+](=O)[O-])I)I)I +C([C@@H]([C@@H]([N+](=O)[O-])I)I)I +c1cc(c(cc1I)I)[N+](=O)[O-] +c1cc(c(cc1[N+](=O)[O-])I)I +c1c(cc(cc1I)I)[N+](=O)[O-] +C([C@H](N=O)I)I +C([C@@H](N=O)I)I +C(P(=O)([O-])[O-])(P(=O)([O-])[O-])(I)I +C1[C@@H](CO[C@H]1CI)OP(=O)([O-])[O-] +C1[C@@H](CO[C@@H]1CI)OP(=O)([O-])[O-] +C1[C@H](CO[C@H]1CI)OP(=O)([O-])[O-] +C1[C@H](CO[C@@H]1CI)OP(=O)([O-])[O-] +c1cc(c(cc1I)S(=O)(=O)[O-])I +C1NC2=C(SC(=C2)I)S(=O)(=O)N1 +C1=C(SC2=C1N=CNS2(=O)=O)I +C1=C(SC2=C1NC=NS2(=O)=O)I +C([C@@H](C(I)(I)I)O)S(=O)[O-] +C1[C@H](C1(I)I)CS(=O)[O-] +C(S)(I)(I)I +c1cc(c(c(c1)I)NC=S)I +c1cc(c(cc1I)I)C=S +c1cc(c(cc1C=S)I)I +c1c(cc(c2c1NC(=S)N2)I)I +c1(c(c(c(c(c1Br)Br)[O-])Br)Br)[O-] diff --git a/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/generate-dataset-part2.ipynb b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/generate-dataset-part2.ipynb new file mode 100644 index 00000000..5147b02d --- /dev/null +++ b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/generate-dataset-part2.ipynb @@ -0,0 +1,945 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "id": "446abbf1-11bc-4e09-b10a-e51aeb256ed9", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:46:54.802317Z", + "iopub.status.busy": "2024-11-21T01:46:54.801117Z", + "iopub.status.idle": "2024-11-21T01:46:54.821124Z", + "shell.execute_reply": "2024-11-21T01:46:54.820064Z", + "shell.execute_reply.started": "2024-11-21T01:46:54.802225Z" + } + }, + "outputs": [], + "source": [ + "from qcportal import PortalClient\n", + "from qcelemental.models.results import WavefunctionProtocolEnum\n", + "from openff.qcsubmit.results import OptimizationResultCollection,BasicResultCollection\n", + "from openff.qcsubmit.datasets import OptimizationDataset\n", + "from openff.qcsubmit.factories import OptimizationDatasetFactory\n", + "from openff.qcsubmit.common_structures import Metadata, QCSpec\n", + "import numpy as np\n", + "from openff.toolkit import Molecule\n", + "import tqdm\n", + "from openff.toolkit.utils import OpenEyeToolkitWrapper, ToolkitRegistry\n", + "from openff.units import unit\n", + "import itertools\n", + "import multiprocess\n", + "from openeye import oechem" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4ba7e990-e473-43ae-92ad-41eec7217cdb", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:46:55.647435Z", + "iopub.status.busy": "2024-11-21T01:46:55.646745Z", + "iopub.status.idle": "2024-11-21T01:46:56.300595Z", + "shell.execute_reply": "2024-11-21T01:46:56.296582Z", + "shell.execute_reply.started": "2024-11-21T01:46:55.647400Z" + } + }, + "outputs": [], + "source": [ + "client = PortalClient(\"https://api.qcarchive.molssi.org:443/\")" + ] + }, + { + "cell_type": "markdown", + "id": "e7f552de-3ad5-4b9f-a060-20cd79d2c669", + "metadata": {}, + "source": [ + "# Generate conformers (part 2 only)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "da40a8a4-2408-4b10-9c15-d3d6e0d88854", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:46:56.530915Z", + "iopub.status.busy": "2024-11-21T01:46:56.530114Z", + "iopub.status.idle": "2024-11-21T01:46:57.389005Z", + "shell.execute_reply": "2024-11-21T01:46:57.388620Z", + "shell.execute_reply.started": "2024-11-21T01:46:56.530869Z" + } + }, + "outputs": [], + "source": [ + "mlpepper_results = BasicResultCollection.parse_file('mlpepper.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2097888a-6574-420a-908c-f69e3c770c2c", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:46:57.538970Z", + "iopub.status.busy": "2024-11-21T01:46:57.538094Z", + "iopub.status.idle": "2024-11-21T01:46:57.542402Z", + "shell.execute_reply": "2024-11-21T01:46:57.541702Z", + "shell.execute_reply.started": "2024-11-21T01:46:57.538894Z" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "# mlpepper_results = BasicResultCollection.from_server(client=client, datasets=['MLPepper RECAP Optimized Fragments v1.0','MLPepper RECAP Optimized Fragments v1.0 Add Iodines'],spec_name='wb97x-d/def2-tzvpp')" + ] + }, + { + "cell_type": "markdown", + "id": "60d29a6d-7f9f-4861-9d8c-9a1d3d37a82c", + "metadata": {}, + "source": [ + "`mlpepper.json` was created in the Dataset part 1 notebook and can be unqipped and loaded in. It can be downloaded with the above command." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "776c5442-0e57-4dec-8b2c-31a38a7914e0", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:47:23.646391Z", + "iopub.status.busy": "2024-11-21T01:47:23.645095Z", + "iopub.status.idle": "2024-11-21T01:47:23.679269Z", + "shell.execute_reply": "2024-11-21T01:47:23.678739Z", + "shell.execute_reply.started": "2024-11-21T01:47:23.646321Z" + }, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "56346" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mlpepper_results.n_molecules" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "be64495f-e616-4b4b-acff-18ebab7c0545", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:47:23.800956Z", + "iopub.status.busy": "2024-11-21T01:47:23.800366Z", + "iopub.status.idle": "2024-11-21T01:47:23.990553Z", + "shell.execute_reply": "2024-11-21T01:47:23.990114Z", + "shell.execute_reply.started": "2024-11-21T01:47:23.800917Z" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "mlpepper_cmiles = np.unique([result.cmiles for result in mlpepper_results.entries['https://api.qcarchive.molssi.org:443/']])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d94183de-a6f4-4ee5-a820-d7b856b891b0", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:48:47.938162Z", + "iopub.status.busy": "2024-11-21T01:48:47.937042Z", + "iopub.status.idle": "2024-11-21T01:48:47.950562Z", + "shell.execute_reply": "2024-11-21T01:48:47.949948Z", + "shell.execute_reply.started": "2024-11-21T01:48:47.938097Z" + } + }, + "outputs": [], + "source": [ + "def generate_conformers_pool_lg(inputs) -> Molecule:\n", + " '''\n", + " Function to generate conformers from a CMILES string. Taken from Lily's NAGL2 code.\n", + " Modified to only run for molecules > 300 Da, because conformer generation takes a long time\n", + "\n", + " inputs should be a list of:\n", + " cmiles: CMILES string to use\n", + " max_conf_elf: maximum number of conformers to keep during the ELF process \n", + " elf_perc: Percentage of conformers to select from for the ELF process\n", + " n_conf_start: initial number of conformers to generate, to use later for ELF selection\n", + " rms_cut: RMS cutoff for conformer generation\n", + " '''\n", + " # OE logging\n", + " errfs = oechem.oeofstream(\"openeye_log.txt\")\n", + " if not errfs:\n", + " oechem.OEThrow.Fatal(\"Unable to create %s\" % fname)\n", + " oechem.OEThrow.SetOutputStream(errfs)\n", + " oechem.OEThrow.SetLevel(oechem.OEErrorLevel_MIN)\n", + " \n", + " cmiles, max_conf_elf, elf_perc, n_conf_start, rms_cut=inputs\n", + " wrapper = OpenEyeToolkitWrapper()\n", + " \n", + " try:\n", + " mol = Molecule.from_mapped_smiles(\n", + " cmiles,\n", + " allow_undefined_stereo=True,\n", + " toolkit_registry=wrapper,\n", + " )\n", + " if sum([atom.mass.m for atom in mol.atoms]) > 300:\n", + " # generate max 1000 conformers with OpenEye\n", + " mol.generate_conformers(\n", + " n_conformers=n_conf_start,\n", + " rms_cutoff=rms_cut * unit.angstrom,\n", + " toolkit_registry=wrapper,\n", + " )\n", + " \n", + " # prune based on ELF method, max 5 conformers output\n", + " mol.apply_elf_conformer_selection(\n", + " percentage=elf_perc,\n", + " limit=max_conf_elf,\n", + " toolkit_registry=wrapper\n", + " )\n", + " \n", + " assert mol.n_conformers > 0\n", + "\n", + " errfs.flush()\n", + " errfs.close()\n", + " return (mol,'success')\n", + " else:\n", + " errfs.flush()\n", + " errfs.close()\n", + " return (mol,'too small')\n", + " except BaseException as e:\n", + " errfs.flush()\n", + " errfs.close()\n", + " return (mol,e)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "b53086c2-8fa1-4fe2-9fb6-44f4f311d50f", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:48:54.776481Z", + "iopub.status.busy": "2024-11-21T01:48:54.775983Z", + "iopub.status.idle": "2024-11-21T01:51:55.044841Z", + "shell.execute_reply": "2024-11-21T01:51:55.043426Z", + "shell.execute_reply.started": "2024-11-21T01:48:54.776448Z" + }, + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "generating conformers: 100%|██████████████████████████████████████████████████████████████████████████████| 56346/56346 [02:59<00:00, 313.46it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OpenEye Omega conformer generation failed\n", + "OpenEye Omega conformer generation failed\n" + ] + } + ], + "source": [ + "import itertools\n", + "import multiprocess\n", + "\n", + "mols = []\n", + "n_confs = []\n", + "errs = []\n", + "with multiprocess.Pool(8) as pool:\n", + " for ms in tqdm.tqdm(pool.imap(generate_conformers_pool_lg,zip(mlpepper_cmiles,itertools.repeat(5),itertools.repeat(2),itertools.repeat(1000),itertools.repeat(0.1))), desc=\"generating conformers\",total=len(mlpepper_cmiles)):\n", + " mol = ms[0]\n", + " status = ms[1]\n", + " if status == 'success':\n", + " n_confs.append(mol.n_conformers)\n", + " mols.append(mol)\n", + " else:\n", + " if status != 'too small':\n", + " print(status)\n", + " errs.append((mol,status))" + ] + }, + { + "cell_type": "markdown", + "id": "288244a0-0259-47a9-85de-bd16972ad97b", + "metadata": {}, + "source": [ + "# Analyze conformers (part 2 only)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "625ae694-4d46-4bc7-b58f-bc58c6c7a516", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:51:55.048362Z", + "iopub.status.busy": "2024-11-21T01:51:55.048079Z", + "iopub.status.idle": "2024-11-21T01:51:55.060606Z", + "shell.execute_reply": "2024-11-21T01:51:55.060249Z", + "shell.execute_reply.started": "2024-11-21T01:51:55.048339Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 1.940685045948204 1.0 5\n" + ] + } + ], + "source": [ + "print(min(n_confs),np.mean(n_confs),np.median(n_confs),max(n_confs))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c1a0baf2-87ad-4424-997b-b0f5ffd2e059", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:51:55.061601Z", + "iopub.status.busy": "2024-11-21T01:51:55.061350Z", + "iopub.status.idle": "2024-11-21T01:51:55.633494Z", + "shell.execute_reply": "2024-11-21T01:51:55.633124Z", + "shell.execute_reply.started": "2024-11-21T01:51:55.061584Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot as plt\n", + "plt.figure()\n", + "plt.hist(n_confs)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7414fffd-c290-4555-82cb-57353412f432", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:51:55.635050Z", + "iopub.status.busy": "2024-11-21T01:51:55.634740Z", + "iopub.status.idle": "2024-11-21T01:51:55.637973Z", + "shell.execute_reply": "2024-11-21T01:51:55.637603Z", + "shell.execute_reply.started": "2024-11-21T01:51:55.635036Z" + }, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(errs)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "30985c30-0926-419c-98c7-1b8dd31731dc", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:51:55.638583Z", + "iopub.status.busy": "2024-11-21T01:51:55.638437Z", + "iopub.status.idle": "2024-11-21T01:51:55.653704Z", + "shell.execute_reply": "2024-11-21T01:51:55.653294Z", + "shell.execute_reply.started": "2024-11-21T01:51:55.638571Z" + } + }, + "outputs": [], + "source": [ + "all_masses = np.array([\n", + " sum([atom.mass.m for atom in mol.atoms])\n", + " for mol in mols\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "68bd0fb8-e4e6-4446-9931-73652dbb0f3e", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:51:55.654391Z", + "iopub.status.busy": "2024-11-21T01:51:55.654249Z", + "iopub.status.idle": "2024-11-21T01:51:55.890435Z", + "shell.execute_reply": "2024-11-21T01:51:55.890097Z", + "shell.execute_reply.started": "2024-11-21T01:51:55.654379Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAfYUlEQVR4nO3de3DU1f3/8ddCYE1oiICym1Uu0YZ6CSIlDiU4giJpKagdpt7ACuNlYEAlxRaJtF+CIwnSSmllxEIdiEWKf3gpHaoSqobatBVDqRidiEOEiOxkBmOCQhMl5/cHk8/PzQUCbtj3Z3k+Zj4z7vmc/XDeOURecz63gHPOCQAAwJAeiR4AAABAWwQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOakJHoAp6OlpUWffPKJ0tPTFQgEEj0cAADQBc45HT58WJFIRD16nHiNxJcB5ZNPPtGgQYMSPQwAAHAaamtrdeGFF56wjy8DSnp6uqTjBfbt2zfBowEAAF3R2NioQYMGef+On4gvA0rraZ2+ffsSUAAA8JmuXJ7BRbIAAMAcAgoAADCHgAIAAMwhoAAAAHMIKAAAwBwCCgAAMIeAAgAAzCGgAAAAcwgoAADAHAIKAAAwh4ACAADMIaAAAABzCCgAAMAcAgoAADAnJdEDQHIaunBLu7aPlk1OwEgAAH7ECgoAADCHgAIAAMwhoAAAAHMIKAAAwBwCCgAAMIeAAgAAzCGgAAAAcwgoAADAHAIKAAAwhyfJwpS2T6Dl6bMAcHZiBQUAAJhDQAEAAOacckDZvn27brjhBkUiEQUCAb300ksx+51zKioqUiQSUWpqqsaPH6+qqqqYPk1NTbr//vt13nnnqU+fPrrxxhv18ccff6NCAABA8jjlgPLFF19oxIgRWrVqVYf7ly9frhUrVmjVqlXasWOHwuGwJk6cqMOHD3t9CgoK9OKLL2rTpk1688039fnnn2vKlCk6duzY6VcCAACSxilfJDtp0iRNmjSpw33OOa1cuVKLFi3S1KlTJUmlpaUKhULauHGjZs2apYaGBj399NP64x//qOuvv16StGHDBg0aNEjbtm3T97///W9QDgAASAZxvQalpqZG0WhU+fn5XlswGNS4ceNUUVEhSaqsrNSXX34Z0ycSiSgnJ8fr01ZTU5MaGxtjNgAAkLziGlCi0agkKRQKxbSHQiFvXzQaVe/evdWvX79O+7RVUlKijIwMbxs0aFA8hw0AAIzplrt4AoFAzGfnXLu2tk7Up7CwUA0NDd5WW1sbt7ECAAB74hpQwuGwJLVbCamrq/NWVcLhsJqbm1VfX99pn7aCwaD69u0bswEAgOQV14CSlZWlcDissrIyr625uVnl5eXKy8uTJI0aNUq9evWK6XPw4EG9++67Xh8AAHB2O+W7eD7//HN9+OGH3ueamhrt2rVL/fv31+DBg1VQUKDi4mJlZ2crOztbxcXFSktL07Rp0yRJGRkZuvvuu/Xggw9qwIAB6t+/v372s59p+PDh3l09AADg7HbKAeXtt9/Wtdde632eP3++JGnGjBlav369FixYoKNHj2rOnDmqr6/X6NGjtXXrVqWnp3vf+c1vfqOUlBTdcsstOnr0qCZMmKD169erZ8+ecSgJAAD4XcA55xI9iFPV2NiojIwMNTQ0cD2KUW1f+id17cV/vCwQAJLXqfz7zbt4AACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAObEPaB89dVX+sUvfqGsrCylpqbqoosu0iOPPKKWlhavj3NORUVFikQiSk1N1fjx41VVVRXvoQAAAJ+Ke0B57LHH9NRTT2nVqlV6//33tXz5cv3qV7/SE0884fVZvny5VqxYoVWrVmnHjh0Kh8OaOHGiDh8+HO/hAAAAH4p7QPnnP/+pm266SZMnT9bQoUP14x//WPn5+Xr77bclHV89WblypRYtWqSpU6cqJydHpaWlOnLkiDZu3Bjv4QAAAB+Ke0C5+uqr9be//U0ffPCBJOm///2v3nzzTf3whz+UJNXU1CgajSo/P9/7TjAY1Lhx41RRUdHhMZuamtTY2BizAQCA5JUS7wM+9NBDamho0CWXXKKePXvq2LFjWrp0qW6//XZJUjQalSSFQqGY74VCIe3bt6/DY5aUlGjJkiXxHioAADAq7isozz33nDZs2KCNGzdq586dKi0t1a9//WuVlpbG9AsEAjGfnXPt2loVFhaqoaHB22pra+M9bAAAYEjcV1B+/vOfa+HChbrtttskScOHD9e+fftUUlKiGTNmKBwOSzq+kpKZmel9r66urt2qSqtgMKhgMBjvoQIAAKPivoJy5MgR9egRe9iePXt6txlnZWUpHA6rrKzM29/c3Kzy8nLl5eXFezgAAMCH4r6CcsMNN2jp0qUaPHiwLr/8cv3nP//RihUrdNddd0k6fmqnoKBAxcXFys7OVnZ2toqLi5WWlqZp06bFezgAAMCH4h5QnnjiCf3yl7/UnDlzVFdXp0gkolmzZun//u//vD4LFizQ0aNHNWfOHNXX12v06NHaunWr0tPT4z0cAADgQwHnnEv0IE5VY2OjMjIy1NDQoL59+yZ6OOjA0IVb2rV9tGzyKX+vK98BAPjDqfz7zbt4AACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5KYkeAGwZunBLu7aPlk1OwEgAAGczVlAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDncxZOkuBsHAOBnrKAAAABzCCgAAMAcAgoAADCHgAIAAMwhoAAAAHMIKAAAwBwCCgAAMIeAAgAAzCGgAAAAcwgoAADAHAIKAAAwh4ACAADMIaAAAABzCCgAAMAcAgoAADCHgAIAAMwhoAAAAHMIKAAAwBwCCgAAMIeAAgAAzCGgAAAAcwgoAADAHAIKAAAwh4ACAADMIaAAAABzCCgAAMAcAgoAADCHgAIAAMwhoAAAAHMIKAAAwBwCCgAAMIeAAgAAzOmWgHLgwAHdcccdGjBggNLS0nTllVeqsrLS2++cU1FRkSKRiFJTUzV+/HhVVVV1x1AAAIAPxT2g1NfXa+zYserVq5defvllvffee3r88cd17rnnen2WL1+uFStWaNWqVdqxY4fC4bAmTpyow4cPx3s4AADAh1LifcDHHntMgwYN0rp167y2oUOHev/tnNPKlSu1aNEiTZ06VZJUWlqqUCikjRs3atasWfEeEgAA8Jm4r6Bs3rxZubm5uvnmmzVw4ECNHDlSa9eu9fbX1NQoGo0qPz/fawsGgxo3bpwqKio6PGZTU5MaGxtjNgAAkLzivoKyd+9erV69WvPnz9fDDz+st956Sw888ICCwaDuvPNORaNRSVIoFIr5XigU0r59+zo8ZklJiZYsWRLvocIHhi7c0q7to2WTEzASAMCZFPcVlJaWFn33u99VcXGxRo4cqVmzZunee+/V6tWrY/oFAoGYz865dm2tCgsL1dDQ4G21tbXxHjYAADAk7gElMzNTl112WUzbpZdeqv3790uSwuGwJHkrKa3q6uraraq0CgaD6tu3b8wGAACSV9wDytixY1VdXR3T9sEHH2jIkCGSpKysLIXDYZWVlXn7m5ubVV5erry8vHgPBwAA+FDcr0H56U9/qry8PBUXF+uWW27RW2+9pTVr1mjNmjWSjp/aKSgoUHFxsbKzs5Wdna3i4mKlpaVp2rRp8R4OAADwobgHlKuuukovvviiCgsL9cgjjygrK0srV67U9OnTvT4LFizQ0aNHNWfOHNXX12v06NHaunWr0tPT4z0cAADgQ3EPKJI0ZcoUTZkypdP9gUBARUVFKioq6o4/HgAA+Bzv4gEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmpCR6ALBv6MItMZ8/Wjb5pH0AAPgmWEEBAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOd0eUEpKShQIBFRQUOC1OedUVFSkSCSi1NRUjR8/XlVVVd09FAAA4BMp3XnwHTt2aM2aNbriiiti2pcvX64VK1Zo/fr1GjZsmB599FFNnDhR1dXVSk9P784hJYWhC7e0a/to2eQEjAQAgO7RbSson3/+uaZPn661a9eqX79+XrtzTitXrtSiRYs0depU5eTkqLS0VEeOHNHGjRu7azgAAMBHui2gzJ07V5MnT9b1118f015TU6NoNKr8/HyvLRgMaty4caqoqOjwWE1NTWpsbIzZAABA8uqWUzybNm3Szp07tWPHjnb7otGoJCkUCsW0h0Ih7du3r8PjlZSUaMmSJfEfaBxx2gUAgPiJ+wpKbW2t5s2bpw0bNuicc87ptF8gEIj57Jxr19aqsLBQDQ0N3lZbWxvXMQMAAFvivoJSWVmpuro6jRo1yms7duyYtm/frlWrVqm6ulrS8ZWUzMxMr09dXV27VZVWwWBQwWAw3kMFAABGxX0FZcKECdq9e7d27drlbbm5uZo+fbp27dqliy66SOFwWGVlZd53mpubVV5erry8vHgPBwAA+FDcV1DS09OVk5MT09anTx8NGDDAay8oKFBxcbGys7OVnZ2t4uJipaWladq0afEeDgAA8KFufQ5KZxYsWKCjR49qzpw5qq+v1+jRo7V161aegQIAACSdoYDyxhtvxHwOBAIqKipSUVHRmfjjAQCAzyRkBQWd43ZlAAB4WSAAADCIgAIAAMzhFM9p6uhUDAAAiA9WUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5PEn2DOJFgAAAdA0rKAAAwBwCCgAAMIeAAgAAzCGgAAAAcwgoAADAHAIKAAAwh4ACAADMIaAAAABzCCgAAMAcAgoAADCHgAIAAMwhoAAAAHMIKAAAwBzeZtyNOnp7MQAAODlWUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAObwssAu4KV/8dH25/jRsskJGgkAwDpWUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5PEnWB7ryJNvT7ZPIp7nyhF4AQGdYQQEAAOYQUAAAgDkEFAAAYA7XoCQY12EgEXizNADrWEEBAADmxD2glJSU6KqrrlJ6eroGDhyoH/3oR6quro7p45xTUVGRIpGIUlNTNX78eFVVVcV7KAAAwKfifoqnvLxcc+fO1VVXXaWvvvpKixYtUn5+vt577z316dNHkrR8+XKtWLFC69ev17Bhw/Too49q4sSJqq6uVnp6eryHdMo47QIAQGLFPaC88sorMZ/XrVungQMHqrKyUtdcc42cc1q5cqUWLVqkqVOnSpJKS0sVCoW0ceNGzZo1K95DAgAAPtPt16A0NDRIkvr37y9JqqmpUTQaVX5+vtcnGAxq3Lhxqqio6PAYTU1NamxsjNkAAEDy6ta7eJxzmj9/vq6++mrl5ORIkqLRqCQpFArF9A2FQtq3b1+HxykpKdGSJUu6c6gATgN3AwHoLt26gnLffffpnXfe0Z/+9Kd2+wKBQMxn51y7tlaFhYVqaGjwttra2m4ZLwAAsKHbVlDuv/9+bd68Wdu3b9eFF17otYfDYUnHV1IyMzO99rq6unarKq2CwaCCwWB3DRUAABgT9xUU55zuu+8+vfDCC3rttdeUlZUVsz8rK0vhcFhlZWVeW3Nzs8rLy5WXlxfv4QAAAB+K+wrK3LlztXHjRv35z39Wenq6d81JRkaGUlNTFQgEVFBQoOLiYmVnZys7O1vFxcVKS0vTtGnT4j0cAADgQ3EPKKtXr5YkjR8/PqZ93bp1mjlzpiRpwYIFOnr0qObMmaP6+nqNHj1aW7duNfEMFAAAkHhxDyjOuZP2CQQCKioqUlFRUbz/eAAAkAR4Fw8AADCHgAIAAMwhoAAAAHO69UmySE68TBGd6ejvBk+XBXA6WEEBAADmEFAAAIA5BBQAAGAO16DgrJCs10Yka10AwAoKAAAwh4ACAADM4RQPcAo4pQIAZwYrKAAAwBwCCgAAMIdTPGc5ngoLALCIFRQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmMNtxgB4Qi4Ac1hBAQAA5hBQAACAOZziARKAUyqxuvJE47P55wOcjVhBAQAA5hBQAACAOQQUAABgDgEFAACYQ0ABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAObwJFkA3artU2J5IiyArmAFBQAAmENAAQAA5hBQAACAOVyDAiS5rrwp2I94IzSQ3FhBAQAA5hBQAACAOZziQVLqymkNbn9NjGQ95QQgvlhBAQAA5hBQAACAOQQUAABgDtegwPe4puHswDwDZxdWUAAAgDkEFAAAYA6neIAT4LTC/3c2/Sy6cgt6V34e3LoOnD5WUAAAgDkEFAAAYA6neOA71k41xOt0QFe+05VTBtZ+PkBneOEjToQVFAAAYA4BBQAAmENAAQAA5nANCuAjZ/L6Eq5lAZBIrKAAAABzEhpQnnzySWVlZemcc87RqFGj9Pe//z2RwwEAAEYk7BTPc889p4KCAj355JMaO3asfv/732vSpEl67733NHjw4EQNC0gYTqnEX6JvY+3KLehnUryeftudT9G19jM7WyT6d6UjCVtBWbFihe6++27dc889uvTSS7Vy5UoNGjRIq1evTtSQAACAEQlZQWlublZlZaUWLlwY056fn6+Kiop2/ZuamtTU1OR9bmhokCQ1NjZ2y/hamo50y3FhW0d/n07n70K8joNT1/Zn39HPvSv/32j7ve78u3EmdWXMp/PzSfRx8M2d7u/KqWo9pnPu5J1dAhw4cMBJcv/4xz9i2pcuXeqGDRvWrv/ixYudJDY2NjY2NrYk2Gpra0+aFRJ6m3EgEIj57Jxr1yZJhYWFmj9/vve5paVFn376qQYMGNBh/2+isbFRgwYNUm1trfr27RvXY1tAff5Gff6X7DVSn791d33OOR0+fFiRSOSkfRMSUM477zz17NlT0Wg0pr2urk6hUKhd/2AwqGAwGNN27rnnducQ1bdv36T8y9eK+vyN+vwv2WukPn/rzvoyMjK61C8hF8n27t1bo0aNUllZWUx7WVmZ8vLyEjEkAABgSMJO8cyfP18/+clPlJubqzFjxmjNmjXav3+/Zs+enaghAQAAIxIWUG699VYdOnRIjzzyiA4ePKicnBz99a9/1ZAhQxI1JEnHTyctXry43SmlZEF9/kZ9/pfsNVKfv1mqL+BcV+71AQAAOHN4Fw8AADCHgAIAAMwhoAAAAHMIKAAAwJyzIqCsXr1aV1xxhffgmTFjxujll1/29jvnVFRUpEgkotTUVI0fP15VVVUxx2hqatL999+v8847T3369NGNN96ojz/++EyX0qGT1Tdz5kwFAoGY7Xvf+17MMSzX93UlJSUKBAIqKCjw2vw+f211VKOf57CoqKjd2MPhsLff7/N3svr8PHetDhw4oDvuuEMDBgxQWlqarrzySlVWVnr7/T6H0slr9PM8Dh06tN3YA4GA5s6dK8nw/H3T9+r4webNm92WLVtcdXW1q66udg8//LDr1auXe/fdd51zzi1btsylp6e7559/3u3evdvdeuutLjMz0zU2NnrHmD17trvgggtcWVmZ27lzp7v22mvdiBEj3FdffZWosjwnq2/GjBnuBz/4gTt48KC3HTp0KOYYlutr9dZbb7mhQ4e6K664ws2bN89r9/v8fV1nNfp5DhcvXuwuv/zymLHX1dV5+/0+fyerz89z55xzn376qRsyZIibOXOm+/e//+1qamrctm3b3Icffuj18fscdqVGP89jXV1dzLjLysqcJPf666875+zO31kRUDrSr18/94c//MG1tLS4cDjsli1b5u373//+5zIyMtxTTz3lnHPus88+c7169XKbNm3y+hw4cMD16NHDvfLKK2d87F3RWp9zx3+xbrrppk77+qG+w4cPu+zsbFdWVubGjRvn/eOdTPPXWY3O+XsOFy9e7EaMGNHhvmSYvxPV55y/58455x566CF39dVXd7o/GebwZDU65/95/Lp58+a5iy++2LW0tJiev7PiFM/XHTt2TJs2bdIXX3yhMWPGqKamRtFoVPn5+V6fYDCocePGqaKiQpJUWVmpL7/8MqZPJBJRTk6O18eKtvW1euONNzRw4EANGzZM9957r+rq6rx9fqhv7ty5mjx5sq6//vqY9mSav85qbOXnOdyzZ48ikYiysrJ02223ae/evZKSZ/46q6+Vn+du8+bNys3N1c0336yBAwdq5MiRWrt2rbc/GebwZDW28vM8tmpubtaGDRt01113KRAImJ6/syag7N69W9/61rcUDAY1e/Zsvfjii7rsssu8Fxa2fUlhKBTy9kWjUfXu3Vv9+vXrtE+idVafJE2aNEnPPvusXnvtNT3++OPasWOHrrvuOjU1NUmyX9+mTZu0c+dOlZSUtNuXLPN3oholf8/h6NGj9cwzz+jVV1/V2rVrFY1GlZeXp0OHDiXF/J2oPsnfcydJe/fu1erVq5Wdna1XX31Vs2fP1gMPPKBnnnlGUnL8Dp6sRsn/89jqpZde0meffaaZM2dKsj1/CXvU/Zn2ne98R7t27dJnn32m559/XjNmzFB5ebm3PxAIxPR3zrVra6srfc6Uzuq77LLLdOutt3r9cnJylJubqyFDhmjLli2aOnVqp8e0UF9tba3mzZunrVu36pxzzum0n5/nrys1+nkOJ02a5P338OHDNWbMGF188cUqLS31LjL08/ydqL758+f7eu4kqaWlRbm5uSouLpYkjRw5UlVVVVq9erXuvPNOr5+f57ArNfp9Hls9/fTTmjRpkiKRSEy7xfk7a1ZQevfurW9/+9vKzc1VSUmJRowYod/+9rfe1fZtU2BdXZ2XKMPhsJqbm1VfX99pn0TrrL6OZGZmasiQIdqzZ48k2/VVVlaqrq5Oo0aNUkpKilJSUlReXq7f/e53SklJ8cbn5/k7WY3Hjh1r9x0/zWFbffr00fDhw7Vnz56k+f37uq/X1xG/zV1mZqa3Gtvq0ksv1f79+yUpKebwZDV29h0/zaMk7du3T9u2bdM999zjtVmev7MmoLTlnFNTU5OysrIUDodVVlbm7WtublZ5ebny8vIkSaNGjVKvXr1i+hw8eFDvvvuu18ea1vo6cujQIdXW1iozM1OS7fomTJig3bt3a9euXd6Wm5ur6dOna9euXbrooot8P38nq7Fnz57tvuOnOWyrqalJ77//vjIzM5Py9+/r9XXEb3M3duxYVVdXx7R98MEH3otdk2EOT1ZjR/w2j5K0bt06DRw4UJMnT/baTM9ft11+a0hhYaHbvn27q6mpce+88457+OGHXY8ePdzWrVudc8dvscrIyHAvvPCC2717t7v99ts7vMXqwgsvdNu2bXM7d+501113nYnbx5w7cX2HDx92Dz74oKuoqHA1NTXu9ddfd2PGjHEXXHCBb+prq+0dLn6fv458vUa/z+GDDz7o3njjDbd37173r3/9y02ZMsWlp6e7jz76yDnn//k7UX1+nzvnjt/6npKS4pYuXer27Nnjnn32WZeWluY2bNjg9fH7HJ6sxmSYx2PHjrnBgwe7hx56qN0+q/N3VgSUu+66yw0ZMsT17t3bnX/++W7ChAleOHHu+G1yixcvduFw2AWDQXfNNde43bt3xxzj6NGj7r777nP9+/d3qampbsqUKW7//v1nupQOnai+I0eOuPz8fHf++ee7Xr16ucGDB7sZM2a0G7vl+tpqG1D8Pn8d+XqNfp/D1mcq9OrVy0UiETd16lRXVVXl7ff7/J2oPr/PXau//OUvLicnxwWDQXfJJZe4NWvWxOz3+xw6d+Iak2EeX331VSfJVVdXt9tndf4CzjnXfeszAAAAp+6svQYFAADYRUABAADmEFAAAIA5BBQAAGAOAQUAAJhDQAEAAOYQUAAAgDkEFAAAYA4BBQAAmENAAQAA5hBQAACAOQQUAABgzv8D9WqDANgYQ6AAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "plt.hist(all_masses,bins=100)\n", + "\n", + "plt.figure()\n", + "plt.hist(all_masses,bins=100)\n", + "plt.ylim(0,200)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "78dccf5f-a01c-4a4f-9f63-59e42e7d08d8", + "metadata": {}, + "source": [ + "We discussed binning by 300 Da; since there are only a couple of molecules greater than 600 Da I'll leave them in here for now." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "2c552973-d566-43bb-971f-f9f80abab90b", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:51:55.891102Z", + "iopub.status.busy": "2024-11-21T01:51:55.890980Z", + "iopub.status.idle": "2024-11-21T01:51:55.894848Z", + "shell.execute_reply": "2024-11-21T01:51:55.894546Z", + "shell.execute_reply.started": "2024-11-21T01:51:55.891091Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "300.075338 377.8161830431913 370.917627 701.588756\n" + ] + } + ], + "source": [ + "print(min(all_masses),np.mean(all_masses),np.median(all_masses),max(all_masses))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "5a8f4bbf-8be1-409c-8915-58bb581bd212", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:51:55.895452Z", + "iopub.status.busy": "2024-11-21T01:51:55.895329Z", + "iopub.status.idle": "2024-11-21T01:51:55.908647Z", + "shell.execute_reply": "2024-11-21T01:51:55.908248Z", + "shell.execute_reply.started": "2024-11-21T01:51:55.895441Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 1197/1197 [00:00<00:00, 141472.66it/s]\n" + ] + } + ], + "source": [ + "mols_part1 = []\n", + "mols_part2 = []\n", + "for mol in tqdm.tqdm(mols):\n", + " if sum([atom.mass.m for atom in mol.atoms]) <= 300:\n", + " mols_part1.append(mol)\n", + " else:\n", + " mols_part2.append(mol)" + ] + }, + { + "cell_type": "markdown", + "id": "ae9b58f5-ac39-4b4f-9236-8fdda47b7f7f", + "metadata": {}, + "source": [ + "# Create dataset" + ] + }, + { + "cell_type": "markdown", + "id": "d3111e32-038b-4199-b194-57326966d532", + "metadata": {}, + "source": [ + "## Part 2-- Molecules > 300 Da" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "fcae8d7d-6b20-4795-8eeb-dea85fae2214", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:53:44.956438Z", + "iopub.status.busy": "2024-11-21T01:53:44.955216Z", + "iopub.status.idle": "2024-11-21T01:53:44.970939Z", + "shell.execute_reply": "2024-11-21T01:53:44.969021Z", + "shell.execute_reply.started": "2024-11-21T01:53:44.956315Z" + } + }, + "outputs": [], + "source": [ + "dataset_factory2 = OptimizationDatasetFactory()\n", + "provenance2 = dataset_factory2.provenance(ToolkitRegistry([OpenEyeToolkitWrapper]))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "0f80dc22-115e-4d49-836a-37179612a0ce", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:53:45.154474Z", + "iopub.status.busy": "2024-11-21T01:53:45.153428Z", + "iopub.status.idle": "2024-11-21T01:54:08.612229Z", + "shell.execute_reply": "2024-11-21T01:54:08.611425Z", + "shell.execute_reply.started": "2024-11-21T01:53:45.154414Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Deduplication : 100%|██████| 1197/1197 [00:01<00:00, 691.47it/s]\n", + "Preparation : 100%|███████| 1197/1197 [00:21<00:00, 55.16it/s]\n" + ] + } + ], + "source": [ + "dataset2 = dataset_factory2.create_dataset(\n", + " dataset_name=\"OpenFF NAGL2 Training Optimization Dataset Part 2 v4.0\",\n", + " tagline=\"B3LYP-D3BJ/DZVP conformers of diverse fragment molecules with molecular weight greater than 300 Da.\",\n", + " description=(\n", + " \"A dataset containing molecules from the \"\n", + " \"`MLPepper RECAP Optimized Fragments v1.0` and `MLPepper RECAP Optimized Fragments v1.0 Add Iodines` \"\n", + " \"with new conformers and optimized at the OpenFF default level of theory (B3LYP-D3BJ/DZVP). \"\n", + " \"The dataset is intended to be used for calculating single point energies and properties, \"\n", + " \"which will then be used to train our second-generation graph neural network charge model (NAGL2).\"\n", + " \"This is part 2, for molecules with molecular weight greater than 300 Da.\\n\\n\"\n", + " \"For each molecule, a set of up to 5 conformers were generated by:\\n\"\n", + " \" * generating a set of up to 1000 conformers with a RMS cutoff of 0.1 Å \"\n", + " \"using the OpenEye backend of the OpenFF toolkit\\n\"\n", + " \" * applying ELF conformer selection (max 5 conformers) using OpenEye\\n\\n\"\n", + " \"Each conformer will be converged according to the 'GAU_LOOSE' criteria.\"\n", + " ),\n", + " molecules=mols_part2\n", + ")\n", + "dataset2.metadata.submitter = \"amcisaac\"\n", + "dataset2.metadata.long_description_url = (\n", + " \"https://github.com/openforcefield/qca-dataset-submission/tree/master/\"\n", + " \"submissions/\"\n", + " \"2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "419758d0-dbbe-4942-bfd2-d615068381ae", + "metadata": {}, + "source": [ + "## Dataset info" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "64369cac-25db-402d-8400-d83b7853410c", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:54:08.613808Z", + "iopub.status.busy": "2024-11-21T01:54:08.613611Z", + "iopub.status.idle": "2024-11-21T01:54:08.618987Z", + "shell.execute_reply": "2024-11-21T01:54:08.618382Z", + "shell.execute_reply.started": "2024-11-21T01:54:08.613793Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'default': OptimizationSpecification(program='geometric', qc_specification=QCSpecification(program='psi4', driver=, method='b3lyp-d3bj', basis='dzvp', keywords={'maxiter': 200, 'scf_properties': [, , , ]}, protocols=AtomicResultProtocols(wavefunction=, stdout=True, error_correction=ErrorCorrectionProtocol(default_policy=True, policies=None), native_files=)), keywords={'coordsys': 'dlc', 'enforce': 0.0, 'epsilon': 1e-05, 'reset': True, 'qccnv': False, 'molcnv': False, 'check': 0, 'trust': 0.1, 'tmax': 0.3, 'maxiter': 300, 'convergence_set': 'GAU'}, protocols=OptimizationProtocols(trajectory=))}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset2._get_specifications()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ddb1d43f-5842-4e7b-851e-d56c562b1f2f", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:55:03.032753Z", + "iopub.status.busy": "2024-11-21T01:55:03.031855Z", + "iopub.status.idle": "2024-11-21T01:55:16.923492Z", + "shell.execute_reply": "2024-11-21T01:55:16.922897Z", + "shell.execute_reply.started": "2024-11-21T01:55:03.032715Z" + } + }, + "outputs": [], + "source": [ + "n_confs2 = np.array(\n", + " [mol.n_conformers for mol in dataset2.molecules]\n", + ")\n", + "\n", + "n_heavy_atoms2 = np.array(\n", + " [mol.to_rdkit().GetNumHeavyAtoms() for mol in dataset2.molecules]\n", + ")\n", + "\n", + "masses2 = np.array([\n", + " sum([atom.mass.m for atom in mol.atoms])\n", + " for mol in dataset2.molecules\n", + "])\n", + "\n", + "unique_charges2 = [str(charge) for charge in sorted(set([\n", + " mol.total_charge.m_as(unit.elementary_charge)\n", + " for mol in dataset2.molecules\n", + "]))]\n", + "\n", + "elements2 = set(\n", + " atom.symbol\n", + " for mol in dataset2.molecules\n", + " for atom in mol.atoms\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "3f0c5df1-55a2-45ee-baa4-b9ed962b9710", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:55:16.924478Z", + "iopub.status.busy": "2024-11-21T01:55:16.924340Z", + "iopub.status.idle": "2024-11-21T01:55:16.928559Z", + "shell.execute_reply": "2024-11-21T01:55:16.928244Z", + "shell.execute_reply.started": "2024-11-21T01:55:16.924466Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# heavy atoms\n", + " 4: 1\n", + " 5: 4\n", + " 6: 20\n", + " 7: 38\n", + " 8: 83\n", + " 9: 159\n", + " 10: 218\n", + " 11: 288\n", + " 12: 343\n", + " 14: 6\n", + " 16: 13\n", + " 17: 3\n", + " 18: 3\n", + " 19: 1\n", + " 20: 2\n", + " 21: 1\n", + " 22: 2\n", + " 23: 9\n", + " 24: 1\n", + " 29: 2\n" + ] + } + ], + "source": [ + "from collections import Counter\n", + "\n", + "print(\"# heavy atoms\")\n", + "counts2 = Counter(n_heavy_atoms2)\n", + "for n_heavy in sorted(counts2):\n", + " print(f\"{str(n_heavy):>3}: {counts2[n_heavy]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b4949f92-18d6-42bd-917f-32ec6323fffb", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:55:16.929172Z", + "iopub.status.busy": "2024-11-21T01:55:16.929048Z", + "iopub.status.idle": "2024-11-21T01:55:17.093808Z", + "shell.execute_reply": "2024-11-21T01:55:17.093464Z", + "shell.execute_reply.started": "2024-11-21T01:55:16.929161Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "* Name: OpenFF NAGL2 Training Optimization Dataset Part 2 v4.0\n", + "* Number of unique molecules: 1197\n", + "* Number of conformers: 2323\n", + "* Number of conformers (min, mean, max): 1.00, 1.94, 5.00\n", + "* Molecular weight (min, mean, max): 300.08, 377.82, 701.59\n", + "* Charges: -4.0 -2.0 -1.0 0.0 1.0 2.0\n" + ] + } + ], + "source": [ + "print('* Name: {}'.format(dataset2.dataset_name))\n", + "print('* Number of unique molecules: {}'.format(dataset2.n_molecules))\n", + "print('* Number of conformers: {}'.format(dataset2.n_records))\n", + "print('* Number of conformers (min, mean, max): {:.2f}, {:.2f}, {:.2f}'.format(min(n_confs2),np.mean(n_confs2),max(n_confs2)))\n", + "print('* Molecular weight (min, mean, max): {:.2f}, {:.2f}, {:.2f}'.format(min(masses2),np.mean(masses2),max(masses2)))\n", + "print('* Charges: {}'.format(' '.join(unique_charges2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "cb564595-4669-413d-b673-296567b9910b", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:55:17.095054Z", + "iopub.status.busy": "2024-11-21T01:55:17.094931Z", + "iopub.status.idle": "2024-11-21T01:55:17.098655Z", + "shell.execute_reply": "2024-11-21T01:55:17.098207Z", + "shell.execute_reply.started": "2024-11-21T01:55:17.095042Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "## Metadata\n", + "* Elements: {I, F, H, S, C, Br, P, N, Si, Cl, O, B}\n", + "* Spec: default\n", + " * basis: DZVP\n", + " * implicit_solvent: None\n", + " * keywords: {}\n", + " * maxiter: 200\n", + " * method: B3LYP-D3BJ\n", + " * program: psi4\n", + " * SCF properties:\n", + " * dipole\n", + " * quadrupole\n", + " * wiberg_lowdin_indices\n", + " * mayer_indices\n" + ] + } + ], + "source": [ + "print(\"## Metadata\")\n", + "print(f\"* Elements: {{{', '.join(dataset2.metadata.dict()['elements'])}}}\")\n", + "\n", + "def print_field(od, field): print(f\" * {field}: {od[field]}\")\n", + "\n", + "fields = [\"basis\", \"implicit_solvent\", \"keywords\", \"maxiter\", \"method\", \"program\"]\n", + "for spec, obj in dataset2.qc_specifications.items():\n", + " od = obj.dict()\n", + " print(\"* Spec:\", spec)\n", + " for field in fields:\n", + " print_field(od, field)\n", + " print(\" * SCF properties:\")\n", + " for field in od[\"scf_properties\"]:\n", + " print(f\" * {field}\")" + ] + }, + { + "cell_type": "markdown", + "id": "3a0d8f58-0b13-4ec2-a7e9-6beba3023e3e", + "metadata": {}, + "source": [ + "## Exporting dataset" + ] + }, + { + "cell_type": "markdown", + "id": "abbdc8a8-61a3-448f-a933-7cd1c7bd64ce", + "metadata": {}, + "source": [ + "Update description to comply with standards" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "0477674f-337f-41b8-bada-2c243b80d12f", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:55:26.494621Z", + "iopub.status.busy": "2024-11-21T01:55:26.492658Z", + "iopub.status.idle": "2024-11-21T01:55:26.685603Z", + "shell.execute_reply": "2024-11-21T01:55:26.685174Z", + "shell.execute_reply.started": "2024-11-21T01:55:26.494547Z" + } + }, + "outputs": [], + "source": [ + "dataset2.metadata.long_description=((\"A dataset containing molecules from the \"\n", + " \"`MLPepper RECAP Optimized Fragments v1.0` and `MLPepper RECAP Optimized Fragments v1.0 Add Iodines` \"\n", + " \"with new conformers and optimized at the OpenFF default level of theory (B3LYP-D3BJ/DZVP). \"\n", + " \"The dataset is intended to be used for calculating single point energies and properties, \"\n", + " \"which will then be used to train our second-generation graph neural network charge model (NAGL2).\"\n", + " \"This is part 2, for molecules with molecular weight greater than 300 Da.\\n\\n\"\n", + " \"For each molecule, a set of up to 5 conformers were generated by:\\n\"\n", + " \" * generating a set of up to 1000 conformers with a RMS cutoff of 0.1 Å \"\n", + " \"using the OpenEye backend of the OpenFF toolkit\\n\"\n", + " \" * applying ELF conformer selection (max 5 conformers) using OpenEye\\n\\n\"\n", + " \"Dataset information:\\n\"\n", + " \"* Number of unique molecules: {}\\n\"\n", + " \"* Number of conformers: {}\\n\"\n", + " \"* Number of conformers (min, mean, max): {:.2f}, {:.2f}, {:.2f}\\n\"\n", + " \"* Molecular weight (min, mean, max): {:.2f}, {:.2f}, {:.2f}\\n\"\n", + " \"* Charges: {}\".format(dataset2.n_molecules,dataset2.n_records,min(n_confs2),np.mean(n_confs2),max(n_confs2),min(masses2),np.mean(masses2),max(masses2),' '.join(unique_charges2))\n", + " ))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "e5e1b306-8f67-4908-8b54-15122eee5a37", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:55:27.978057Z", + "iopub.status.busy": "2024-11-21T01:55:27.976700Z", + "iopub.status.idle": "2024-11-21T01:55:27.995186Z", + "shell.execute_reply": "2024-11-21T01:55:27.992699Z", + "shell.execute_reply.started": "2024-11-21T01:55:27.978005Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A dataset containing molecules from the `MLPepper RECAP Optimized Fragments v1.0` and `MLPepper RECAP Optimized Fragments v1.0 Add Iodines` with new conformers and optimized at the OpenFF default level of theory (B3LYP-D3BJ/DZVP). The dataset is intended to be used for calculating single point energies and properties, which will then be used to train our second-generation graph neural network charge model (NAGL2).This is part 2, for molecules with molecular weight greater than 300 Da.\n", + "\n", + "For each molecule, a set of up to 5 conformers were generated by:\n", + " * generating a set of up to 1000 conformers with a RMS cutoff of 0.1 Å using the OpenEye backend of the OpenFF toolkit\n", + " * applying ELF conformer selection (max 5 conformers) using OpenEye\n", + "\n", + "Dataset information:\n", + "* Number of unique molecules: 1197\n", + "* Number of conformers: 2323\n", + "* Number of conformers (min, mean, max): 1.00, 1.94, 5.00\n", + "* Molecular weight (min, mean, max): 300.08, 377.82, 701.59\n", + "* Charges: -4.0 -2.0 -1.0 0.0 1.0 2.0\n" + ] + } + ], + "source": [ + "print(dataset2.metadata.long_description)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "2805dcab-d6af-4341-bc6a-598108c93647", + "metadata": { + "execution": { + "iopub.execute_input": "2024-11-21T01:55:29.193851Z", + "iopub.status.busy": "2024-11-21T01:55:29.193304Z", + "iopub.status.idle": "2024-11-21T01:55:33.910956Z", + "shell.execute_reply": "2024-11-21T01:55:33.910344Z", + "shell.execute_reply.started": "2024-11-21T01:55:29.193818Z" + } + }, + "outputs": [], + "source": [ + "dataset2.export_dataset(\"dataset_part2.json.bz2\")\n", + "dataset2.molecules_to_file('dataset_part2.smi', 'smi')\n", + "dataset2.visualize(\"dataset_part2.pdf\", columns=8)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a265c7e7-b415-4481-864f-244393b455e0", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/input-environment-full.yaml b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/input-environment-full.yaml new file mode 100644 index 00000000..a9d9993c --- /dev/null +++ b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/input-environment-full.yaml @@ -0,0 +1,437 @@ +name: nagl2-conf-gen +channels: + - openeye + - conda-forge + - defaults +dependencies: + - ambertools=23.6=cuda_None_nompi_py312hc98840c_105 + - annotated-types=0.7.0=pyhd8ed1ab_0 + - anyio=4.6.2.post1=pyhd8ed1ab_0 + - appnope=0.1.4=pyhd8ed1ab_0 + - apsw=3.46.1.0=py312h920bacf_1 + - archspec=0.2.3=pyhd8ed1ab_0 + - argcomplete=3.5.1=pyhd8ed1ab_0 + - argon2-cffi=23.1.0=pyhd8ed1ab_0 + - argon2-cffi-bindings=21.2.0=py312hb553811_5 + - arpack=3.9.1=nompi_hf81eadf_101 + - arrow=1.3.0=pyhd8ed1ab_0 + - asttokens=2.4.1=pyhd8ed1ab_0 + - async-lru=2.0.4=pyhd8ed1ab_0 + - attrs=24.2.0=pyh71513ae_0 + - aws-c-auth=0.8.0=hb1b2711_10 + - aws-c-cal=0.8.0=h1c3498a_2 + - aws-c-common=0.10.3=h6e16a3a_0 + - aws-c-compression=0.3.0=h1c3498a_2 + - aws-c-event-stream=0.5.0=heedde58_7 + - aws-c-http=0.9.1=h0c96e2d_2 + - aws-c-io=0.15.2=h789f5c1_2 + - aws-c-mqtt=0.11.0=h00ab244_8 + - aws-c-s3=0.7.1=h704940e_3 + - aws-c-sdkutils=0.2.1=h1c3498a_1 + - aws-checksums=0.2.2=h1c3498a_1 + - aws-crt-cpp=0.29.4=h44c5c52_1 + - aws-sdk-cpp=1.11.449=h7bf9075_2 + - azure-core-cpp=1.14.0=h9a36307_0 + - azure-identity-cpp=1.10.0=ha4e2ba9_0 + - azure-storage-blobs-cpp=12.13.0=h3d2f5f1_1 + - azure-storage-common-cpp=12.8.0=h1ccc5ac_1 + - azure-storage-files-datalake-cpp=12.12.0=h86941f0_1 + - babel=2.16.0=pyhd8ed1ab_0 + - basis_set_exchange=0.10=pyhd8ed1ab_1 + - beautifulsoup4=4.12.3=pyha770c72_0 + - black=24.10.0=py312hb401068_0 + - bleach=6.2.0=pyhd8ed1ab_0 + - blosc=1.21.6=h7d75f6d_0 + - bokeh=3.6.1=pyhd8ed1ab_0 + - boltons=24.0.0=pyhd8ed1ab_0 + - brotli=1.1.0=h00291cd_2 + - brotli-bin=1.1.0=h00291cd_2 + - brotli-python=1.1.0=py312h5861a67_2 + - bson=0.5.9=py_0 + - bzip2=1.0.8=hfdf4475_7 + - c-ares=1.34.3=hf13058a_0 + - c-blosc2=2.15.1=hb9356d3_0 + - ca-certificates=2024.8.30=h8857fd0_0 + - cached-property=1.5.2=hd8ed1ab_1 + - cached_property=1.5.2=pyha770c72_1 + - cachetools=5.5.0=pyhd8ed1ab_0 + - cairo=1.18.0=h37bd5c4_3 + - certifi=2024.8.30=pyhd8ed1ab_0 + - cffi=1.17.1=py312hf857d28_0 + - cfgv=3.3.1=pyhd8ed1ab_0 + - chardet=5.2.0=py312hb401068_2 + - charset-normalizer=3.4.0=pyhd8ed1ab_0 + - click=8.1.7=unix_pyh707e725_0 + - click-option-group=0.5.6=pyhd8ed1ab_0 + - cloudpickle=3.1.0=pyhd8ed1ab_1 + - cmiles=0.1.6=ha770c72_2 + - cmiles-base=0.1.6=pyhd8ed1ab_2 + - colorama=0.4.6=pyhd8ed1ab_0 + - comm=0.2.2=pyhd8ed1ab_0 + - conda=23.9.0=py312hb401068_2 + - conda-pack=0.8.1=pyhff2d567_0 + - conda-package-handling=2.4.0=pyh7900ff3_0 + - conda-package-streaming=0.11.0=pyhd8ed1ab_0 + - contourpy=1.3.1=py312hc47a885_0 + - coverage=7.6.7=py312h3520af0_0 + - cpp-expected=1.1.0=hb8565cd_0 + - cryptography=43.0.3=py312h83535b2_0 + - cycler=0.12.1=pyhd8ed1ab_0 + - cytoolz=1.0.0=py312hb553811_1 + - dask=2024.11.2=pyhd8ed1ab_0 + - dask-core=2024.11.2=pyhd8ed1ab_0 + - dask-expr=1.1.19=pyhd8ed1ab_0 + - dask-jobqueue=0.9.0=pyhd8ed1ab_0 + - debugpy=1.8.8=py312haafddd8_0 + - decorator=5.1.1=pyhd8ed1ab_0 + - defusedxml=0.7.1=pyhd8ed1ab_0 + - dill=0.3.9=pyhd8ed1ab_0 + - distlib=0.3.9=pyhd8ed1ab_0 + - distributed=2024.11.2=pyhd8ed1ab_0 + - entrypoints=0.4=pyhd8ed1ab_0 + - exceptiongroup=1.2.2=pyhd8ed1ab_0 + - execnet=2.1.1=pyhd8ed1ab_0 + - executing=2.1.0=pyhd8ed1ab_0 + - fftw=3.3.10=nompi_h292e606_110 + - filelock=3.16.1=pyhd8ed1ab_0 + - flake8=7.1.1=pyhd8ed1ab_0 + - fmt=11.0.2=h3c5361c_0 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_3 + - fontconfig=2.15.0=h37eeddb_1 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.55.0=py312h3520af0_0 + - forcebalance=1.9.6=py312hafa5229_2 + - fqdn=1.5.1=pyhd8ed1ab_0 + - freetype=2.12.1=h60636b9_2 + - freetype-py=2.3.0=pyhd8ed1ab_0 + - fsspec=2024.10.0=pyhff2d567_0 + - future=1.0.0=pyhd8ed1ab_0 + - geometric=1.0.2=pyhd8ed1ab_0 + - gflags=2.2.2=hac325c4_1005 + - glog=0.7.1=h2790a97_0 + - greenlet=3.1.1=py312h5861a67_0 + - h11=0.14.0=pyhd8ed1ab_0 + - h2=4.1.0=pyhd8ed1ab_0 + - hdf4=4.2.15=h8138101_7 + - hdf5=1.14.4=nompi_h1607680_103 + - hpack=4.0.0=pyh9f0ad1d_0 + - httpcore=1.0.7=pyh29332c3_1 + - httpx=0.27.2=pyhd8ed1ab_0 + - hyperframe=6.0.1=pyhd8ed1ab_0 + - icu=75.1=h120a0e1_0 + - identify=2.6.2=pyhd8ed1ab_0 + - idna=3.10=pyhd8ed1ab_0 + - importlib-metadata=8.5.0=pyha770c72_0 + - importlib_metadata=8.5.0=hd8ed1ab_0 + - importlib_resources=6.4.5=pyhd8ed1ab_0 + - iniconfig=2.0.0=pyhd8ed1ab_0 + - ipdb=0.13.13=pyhd8ed1ab_0 + - ipykernel=6.29.5=pyh57ce528_0 + - ipython=8.29.0=pyh707e725_0 + - ipywidgets=8.1.5=pyhd8ed1ab_0 + - isoduration=20.11.0=pyhd8ed1ab_0 + - isort=5.13.2=pyhd8ed1ab_0 + - jedi=0.19.2=pyhff2d567_0 + - jinja2=3.1.4=pyhd8ed1ab_0 + - joblib=1.4.2=pyhd8ed1ab_0 + - json5=0.9.28=pyhff2d567_0 + - jsonpatch=1.33=pyhd8ed1ab_0 + - jsonpointer=3.0.0=py312hb401068_1 + - jsonschema=4.23.0=pyhd8ed1ab_0 + - jsonschema-specifications=2024.10.1=pyhd8ed1ab_0 + - jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_0 + - jupyter=1.1.1=pyhd8ed1ab_0 + - jupyter-lsp=2.2.5=pyhd8ed1ab_0 + - jupyter_client=8.6.3=pyhd8ed1ab_0 + - jupyter_console=6.6.3=pyhd8ed1ab_0 + - jupyter_core=5.7.2=pyh31011fe_1 + - jupyter_events=0.10.0=pyhd8ed1ab_0 + - jupyter_server=2.14.2=pyhd8ed1ab_0 + - jupyter_server_terminals=0.5.3=pyhd8ed1ab_0 + - jupyterlab=4.2.6=pyhff2d567_0 + - jupyterlab_pygments=0.3.0=pyhd8ed1ab_1 + - jupyterlab_server=2.27.3=pyhd8ed1ab_0 + - jupyterlab_widgets=3.0.13=pyhd8ed1ab_0 + - khronos-opencl-icd-loader=2024.05.08=h00291cd_0 + - kiwisolver=1.4.7=py312hc5c4d5f_0 + - krb5=1.21.3=h37d8d59_0 + - lcms2=2.16=ha2f27b4_0 + - lerc=4.0.0=hb486fe8_0 + - libabseil=20240722.0=cxx17_hac325c4_1 + - libaec=1.1.3=h73e2aa4_0 + - libarchive=3.7.4=h20e244c_0 + - libarrow=18.0.0=hd4c0275_7_cpu + - libarrow-acero=18.0.0=h240833e_7_cpu + - libarrow-dataset=18.0.0=h240833e_7_cpu + - libarrow-substrait=18.0.0=h5c0c8cd_7_cpu + - libblas=3.9.0=25_osx64_openblas + - libboost=1.84.0=hbe88bda_6 + - libboost-python=1.84.0=py312h082b758_6 + - libbrotlicommon=1.1.0=h00291cd_2 + - libbrotlidec=1.1.0=h00291cd_2 + - libbrotlienc=1.1.0=h00291cd_2 + - libcblas=3.9.0=25_osx64_openblas + - libcrc32c=1.1.2=he49afe7_0 + - libcurl=8.10.1=h58e7537_0 + - libcxx=19.1.3=hf95d169_0 + - libdeflate=1.22=h00291cd_0 + - libedit=3.1.20191231=h0678c8f_2 + - libev=4.33=h10d778d_2 + - libevent=2.1.12=ha90c15b_1 + - libexpat=2.6.4=h240833e_0 + - libffi=3.4.2=h0d85af4_5 + - libgfortran=5.0.0=13_2_0_h97931a8_3 + - libgfortran5=13.2.0=h2873a65_3 + - libglib=2.82.2=hb6ef654_0 + - libgoogle-cloud=2.31.0=hd00c612_0 + - libgoogle-cloud-storage=2.31.0=h3f2b517_0 + - libgrpc=1.67.1=he6e0b18_0 + - libiconv=1.17=hd75f5a5_2 + - libintl=0.22.5=hdfe23c8_3 + - libjpeg-turbo=3.0.0=h0dc2134_1 + - liblapack=3.9.0=25_osx64_openblas + - libmamba=2.0.2=h7eaea7e_2 + - libnetcdf=4.9.2=nompi_h976d569_115 + - libnghttp2=1.64.0=hc7306c3_0 + - libopenblas=0.3.28=openmp_hbf64a52_1 + - libparquet=18.0.0=hc957f30_7_cpu + - libpng=1.6.44=h4b8f8c9_0 + - libpq=16.5=ha9f57a1_0 + - libprotobuf=5.28.2=h8b30cf6_0 + - librdkit=2024.03.5=hbc19afa_3 + - libre2-11=2024.07.02=hd530cb8_1 + - libsodium=1.0.20=hfdf4475_0 + - libsolv=0.7.30=h69d5d9b_0 + - libsqlite=3.46.1=h4b8f8c9_0 + - libssh2=1.11.0=hd019ec5_0 + - libthrift=0.21.0=h75589b3_0 + - libtiff=4.7.0=h583c2ba_1 + - libutf8proc=2.8.0=hb7f2c08_0 + - libwebp-base=1.4.0=h10d778d_0 + - libxcb=1.17.0=hf1f96e2_0 + - libxml2=2.13.5=h495214b_0 + - libxslt=1.1.39=h03b04e6_0 + - libzip=1.11.2=h31df5bb_0 + - libzlib=1.3.1=hd23fc13_2 + - llvm-openmp=19.1.3=hf78d878_0 + - locket=1.0.0=pyhd8ed1ab_0 + - lxml=5.3.0=py312h4feaf87_2 + - lz4=4.3.3=py312h83408cd_1 + - lz4-c=1.9.4=hf0c8a7f_0 + - lzo=2.10=h10d778d_1001 + - mamba=2.0.2=h5750114_2 + - markdown-it-py=3.0.0=pyhd8ed1ab_0 + - markupsafe=3.0.2=py312hbe3f5e4_0 + - matplotlib-base=3.9.2=py312h30cc4df_2 + - matplotlib-inline=0.1.7=pyhd8ed1ab_0 + - mccabe=0.7.0=pyhd8ed1ab_0 + - mda-xdrlib=0.2.0=pyhd8ed1ab_0 + - mdtraj=1.10.1=py312hd8e3cac_0 + - mdurl=0.1.2=pyhd8ed1ab_0 + - mistune=3.0.2=pyhd8ed1ab_0 + - msgpack-python=1.1.0=py312hc5c4d5f_0 + - multiprocess=0.70.17=py312h01d7ebd_1 + - munkres=1.1.4=pyh9f0ad1d_0 + - mypy_extensions=1.0.0=pyha770c72_0 + - nbclient=0.10.0=pyhd8ed1ab_0 + - nbconvert-core=7.16.4=pyhd8ed1ab_1 + - nbformat=5.10.4=pyhd8ed1ab_0 + - ncurses=6.5=hf036a51_1 + - ndcctools=7.13.3=py312hcfe40cb_0 + - nest-asyncio=1.6.0=pyhd8ed1ab_0 + - netcdf-fortran=4.6.1=nompi_h4dd9276_107 + - networkx=3.4.2=pyh267e887_2 + - nglview=3.1.2=pyhceb8b5e_1 + - nlohmann_json=3.11.3=hf036a51_1 + - nodeenv=1.9.1=pyhd8ed1ab_0 + - notebook=7.2.2=pyhd8ed1ab_0 + - notebook-shim=0.2.4=pyhd8ed1ab_0 + - numexpr=2.10.1=py312h6b48bed_3 + - numpy=1.26.4=py312he3a82b2_0 + - ocl_icd_wrapper_apple=1.0.0=hbcb3906_0 + - openeye-toolkits=2024.1.3=py312_0 + - openff-amber-ff-ports=0.0.4=pyhca7485f_0 + - openff-forcefields=2024.09.0=pyhff2d567_0 + - openff-interchange=0.4.0=pyhd8ed1ab_0 + - openff-interchange-base=0.4.0=pyhd8ed1ab_0 + - openff-qcsubmit=0.54.0=pyhd8ed1ab_0 + - openff-toolkit=0.16.6=pyhd8ed1ab_0 + - openff-toolkit-base=0.16.6=pyhd8ed1ab_0 + - openff-units=0.2.2=pyhca7485f_0 + - openff-utilities=0.1.12=pyhd8ed1ab_0 + - openjpeg=2.5.2=h7310d3a_0 + - openmm=8.2.0=py312h182294e_0_khronos + - openmmforcefields=0.14.1=pyhd8ed1ab_0 + - openssl=3.4.0=hd471939_0 + - orc=2.0.3=h5cd248e_0 + - overrides=7.7.0=pyhd8ed1ab_0 + - packaging=24.2=pyhff2d567_1 + - pandas=2.2.3=py312h98e817e_1 + - pandocfilters=1.5.0=pyhd8ed1ab_0 + - panedr=0.8.0=pyhd8ed1ab_0 + - parmed=4.3.0=py312h93b526f_0 + - parso=0.8.4=pyhd8ed1ab_0 + - partd=1.4.2=pyhd8ed1ab_0 + - pathspec=0.12.1=pyhd8ed1ab_0 + - patsy=1.0.1=pyhff2d567_0 + - pcre2=10.44=h7634a1b_2 + - perl=5.32.1=7_h10d778d_perl5 + - pexpect=4.9.0=pyhd8ed1ab_0 + - pickleshare=0.7.5=py_1003 + - pillow=11.0.0=py312h66fe14f_0 + - pint=0.23=pyhd8ed1ab_1 + - pip=24.3.1=pyh8b19718_0 + - pixman=0.43.4=h73e2aa4_0 + - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1 + - platformdirs=4.3.6=pyhd8ed1ab_0 + - pluggy=1.5.0=pyhd8ed1ab_0 + - pre-commit=4.0.1=pyha770c72_0 + - prometheus_client=0.21.0=pyhd8ed1ab_0 + - prompt-toolkit=3.0.48=pyha770c72_0 + - prompt_toolkit=3.0.48=hd8ed1ab_0 + - psutil=6.1.0=py312h3d0f464_0 + - pthread-stubs=0.4=h00291cd_1002 + - ptyprocess=0.7.0=pyhd3deb0d_0 + - pure_eval=0.2.3=pyhd8ed1ab_0 + - py-cpuinfo=9.0.0=pyhd8ed1ab_0 + - pyarrow=18.0.0=py312hb401068_1 + - pyarrow-core=18.0.0=py312h5157fe3_1_cpu + - pycairo=1.27.0=py312hc3eca63_0 + - pycalverter=1.6.1=pyhd8ed1ab_1 + - pycodestyle=2.12.1=pyhd8ed1ab_0 + - pycosat=0.6.6=py312h104f124_0 + - pycparser=2.22=pyhd8ed1ab_0 + - pydantic=2.9.2=pyhd8ed1ab_0 + - pydantic-core=2.23.4=py312h669792a_0 + - pyedr=0.8.0=pyhd8ed1ab_0 + - pyflakes=3.2.0=pyhd8ed1ab_0 + - pygments=2.18.0=pyhd8ed1ab_0 + - pyjwt=2.10.0=pyhff2d567_0 + - pymbar=3.1.1=py312hd903386_3 + - pyobjc-core=10.3.1=py312hab44e94_1 + - pyobjc-framework-cocoa=10.3.1=py312hab44e94_1 + - pyopenssl=24.2.1=pyhd8ed1ab_2 + - pyparsing=3.2.0=pyhd8ed1ab_1 + - pysocks=1.7.1=pyha2e5f31_6 + - pytables=3.10.1=py312h9f7c63d_3 + - pytest=8.3.3=pyhd8ed1ab_0 + - pytest-cov=6.0.0=pyhd8ed1ab_0 + - pytest-randomly=3.15.0=pyhd8ed1ab_0 + - pytest-timeout=2.3.1=pyhd8ed1ab_1 + - pytest-xdist=3.6.1=pyhd8ed1ab_0 + - python=3.12.7=h8f8b54e_0_cpython + - python-constraint=1.4.0=py_0 + - python-dateutil=2.9.0.post0=pyhff2d567_0 + - python-fastjsonschema=2.20.0=pyhd8ed1ab_0 + - python-json-logger=2.0.7=pyhd8ed1ab_0 + - python-tzdata=2024.2=pyhd8ed1ab_0 + - python_abi=3.12=5_cp312 + - pytz=2024.1=pyhd8ed1ab_0 + - pyyaml=6.0.2=py312hb553811_1 + - pyzmq=26.2.0=py312h1060d5c_3 + - qcelemental=0.28.0=pyhd8ed1ab_1 + - qcengine=0.30.0=pyhd8ed1ab_0 + - qcportal=0.56=pyhd8ed1ab_1 + - qhull=2020.2=h3c5361c_5 + - qubekit=2.1.0=pyhd8ed1ab_0 + - rdkit=2024.03.5=py312hcfd6466_3 + - re2=2024.07.02=h2fb0a26_1 + - readline=8.2=h9e318b2_1 + - referencing=0.35.1=pyhd8ed1ab_0 + - regex=2024.11.6=py312h01d7ebd_0 + - reportlab=4.2.5=py312hb553811_0 + - reproc=14.2.5.post0=h6e16a3a_0 + - reproc-cpp=14.2.5.post0=h240833e_0 + - requests=2.32.3=pyhd8ed1ab_0 + - rfc3339-validator=0.1.4=pyhd8ed1ab_0 + - rfc3986-validator=0.1.1=pyh9f0ad1d_0 + - rich=13.9.4=pyhd8ed1ab_0 + - rlpycairo=0.2.0=pyhd8ed1ab_0 + - rpds-py=0.21.0=py312h0d0de52_0 + - ruamel.yaml=0.17.40=py312h41838bb_0 + - ruamel.yaml.clib=0.2.8=py312h3d0f464_1 + - scipy=1.13.1=py312hb9702fa_0 + - seaborn=0.13.2=hd8ed1ab_2 + - seaborn-base=0.13.2=pyhd8ed1ab_2 + - send2trash=1.8.3=pyh31c8845_0 + - setuptools=75.5.0=pyhff2d567_0 + - simdjson=3.10.1=h37c8870_0 + - six=1.16.0=pyh6c4a22f_0 + - smirnoff-plugins=2024.07.0=pyhd8ed1ab_0 + - smirnoff99frosst=1.1.0=pyh44b312d_0 + - snappy=1.2.1=he1e6707_0 + - sniffio=1.3.1=pyhd8ed1ab_0 + - sortedcontainers=2.4.0=pyhd8ed1ab_0 + - soupsieve=2.5=pyhd8ed1ab_1 + - spdlog=1.14.1=h325aa07_1 + - sqlalchemy=2.0.36=py312h3d0f464_0 + - sqlite=3.46.1=he26b093_0 + - stack_data=0.6.2=pyhd8ed1ab_0 + - statsmodels=0.14.4=py312h3a11e2b_0 + - tabulate=0.9.0=pyhd8ed1ab_1 + - tblib=3.0.0=pyhd8ed1ab_0 + - terminado=0.18.1=pyh31c8845_0 + - threadpoolctl=3.5.0=pyhc1e730c_0 + - tinycss2=1.4.0=pyhd8ed1ab_0 + - tinydb=4.8.2=pyhd8ed1ab_0 + - tk=8.6.13=h1abcd95_1 + - toml=0.10.2=pyhd8ed1ab_0 + - tomli=2.1.0=pyhff2d567_0 + - toolz=1.0.0=pyhd8ed1ab_0 + - tornado=6.4.1=py312hb553811_1 + - torsiondrive=1.1.0=pyhd8ed1ab_0 + - tqdm=4.67.0=pyhd8ed1ab_0 + - traitlets=5.14.3=pyhd8ed1ab_0 + - truststore=0.10.0=pyhd8ed1ab_0 + - types-python-dateutil=2.9.0.20241003=pyhff2d567_0 + - typing-extensions=4.12.2=hd8ed1ab_0 + - typing_extensions=4.12.2=pyha770c72_0 + - typing_utils=0.1.0=pyhd8ed1ab_0 + - tzdata=2024b=hc8b5060_0 + - ukkonen=1.0.1=py312hc5c4d5f_5 + - unicodedata2=15.1.0=py312h3d0f464_1 + - unidecode=1.3.8=pyhd8ed1ab_0 + - uri-template=1.3.0=pyhd8ed1ab_0 + - urllib3=2.2.3=pyhd8ed1ab_0 + - validators=0.34.0=pyhd8ed1ab_0 + - virtualenv=20.27.1=pyhd8ed1ab_0 + - wcwidth=0.2.13=pyhd8ed1ab_0 + - webcolors=24.8.0=pyhd8ed1ab_0 + - webencodings=0.5.1=pyhd8ed1ab_2 + - websocket-client=1.8.0=pyhd8ed1ab_0 + - wheel=0.45.0=pyhd8ed1ab_0 + - widgetsnbextension=4.0.13=pyhd8ed1ab_0 + - xmltodict=0.14.2=pyhd8ed1ab_0 + - xorg-libice=1.1.1=h00291cd_1 + - xorg-libsm=1.2.4=h00291cd_1 + - xorg-libx11=1.8.10=ha6c16c8_0 + - xorg-libxau=1.0.11=h00291cd_1 + - xorg-libxdmcp=1.1.5=h00291cd_0 + - xorg-libxext=1.3.6=h00291cd_0 + - xorg-libxt=1.3.1=h6e16a3a_0 + - xorg-xorgproto=2024.1=h00291cd_1 + - xyzservices=2024.9.0=pyhd8ed1ab_0 + - xz=5.2.6=h775f41a_0 + - yaml=0.2.5=h0d85af4_2 + - yaml-cpp=0.8.0=he965462_0 + - zeromq=4.3.5=h7130eaa_7 + - zict=3.0.0=pyhd8ed1ab_0 + - zipp=3.21.0=pyhd8ed1ab_0 + - zlib=1.3.1=hd23fc13_2 + - zlib-ng=2.2.2=hac325c4_0 + - zstandard=0.23.0=py312h7122b0e_1 + - zstd=1.5.6=h915ae27_0 + - pip: + - amberutils==21.0 + - edgembar==0.2 + - mmpbsa-py==16.0 + - packmol-memgen==2024.2.9 + - pdb4amber==22.0 + - pymsmt==22.0 + - pytraj==2.0.6 + - sander==22.0 +prefix: /Users/lexiemcisaac/miniconda3/envs/nagl2-conf-gen diff --git a/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/input-environment.yaml b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/input-environment.yaml new file mode 100644 index 00000000..edf96ac5 --- /dev/null +++ b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/input-environment.yaml @@ -0,0 +1,47 @@ +name: nagl2-conf-gen +channels: + - conda-forge + - openeye +dependencies: + - python + - pip + - click + - openff-toolkit + - openff-qcsubmit + - openmmforcefields + - openeye::openeye-toolkits + - openff-interchange-base + - qcportal + - geometric=1 + - jupyter + - seaborn + - pandas + - pydantic =2 + - ipython + - ipdb + - pre-commit + - rich + - pytest + - pytest-cov + - pytest-xdist + - pytest-randomly + - pytest-timeout + - smirnoff-plugins + - click-option-group + - dask + - dask-jobqueue + - tqdm + - openmm + - ambertools + - qubekit + - forcebalance=1.9.6 + - ndcctools + - cmiles + - geometric + - black + - isort + - flake8 + - mamba + - nglview + - multiprocess + - mamba=2.0.2 diff --git a/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/mlpepper.json.bz2 b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/mlpepper.json.bz2 new file mode 100644 index 00000000..f61c01b7 --- /dev/null +++ b/submissions/2024-11-19-OpenFF-NAGL2-Training-Optimization-Dataset-Part-2-v4.0/mlpepper.json.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ec20d8c29a94bb0fe3f792546d5f221146b93c8c0b24b159c6661f8e9404dec +size 1409254