Skip to content

Commit

Permalink
Merge pull request #616 from choderalab/minimal-systemgenerator-update
Browse files Browse the repository at this point in the history
Minimal changes to use new SystemGenerator for relative free energy calculations
  • Loading branch information
hannahbrucemacdonald authored Jan 15, 2020
2 parents 48b99b2 + 046d59f commit eccefd6
Show file tree
Hide file tree
Showing 15 changed files with 490 additions and 175 deletions.
8 changes: 7 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,13 @@ script:
- conda install --yes --use-local ${PACKAGENAME}-dev
# Install testing dependencies
- conda install --yes --quiet nose nose-timer
# Install openmm-forcefields via pip (until available via omnia)
- conda install --yes tinydb "openforcefield>=0.6.0" "openforcefields>=1.0.0"
- pip install git+https://github.com/openmm/openmm-forcefields.git
# Workaround for https://github.com/openmm/openmm/pull/2511
# TODO: Remove this when OpenMM builds including https://github.com/openmm/openmm/pull/2511 are released
- echo "Overwriting OpenMM forcefield.py with fix from https://github.com/openmm/openmm/pull/2511"
- wget -q https://raw.githubusercontent.com/openmm/openmm/4f48402f1be3e0f049ae0e8595db638d297b0d75/wrappers/python/simtk/openmm/app/forcefield.py -O `python -c "from simtk.openmm.app import forcefield; print(forcefield.__file__)"`
# Install desired OpenMM version
- if [ "$OPENMM" == "latest" ]; then echo "Using latest release OpenMM."; conda install --yes -c omnia openmm; fi
- if [ "$OPENMM" == "beta" ]; then echo "Using OpenMM beta"; conda install --yes -c omnia/label/beta openmm; fi
Expand All @@ -69,7 +76,6 @@ script:
env:
global:
- ORGNAME="omnia"
- OE_LICENSE="$HOME/oe_license.txt"
- PACKAGENAME="perses"
# Location of decrypted OpenEye license file
- OE_LICENSE="$HOME/oe_license.txt"
Expand Down
1 change: 1 addition & 0 deletions devtools/conda-recipe/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ requirements:
- progressbar2
- parmed
- tqdm
#- openmm-forcefields # uncomment once openmm-forcefields package is pushed to conda

about:
home: https://github.com/choderalab/perses
Expand Down
184 changes: 147 additions & 37 deletions perses/app/relative_setup.py

Large diffs are not rendered by default.

27 changes: 20 additions & 7 deletions perses/app/setup_relative_calculation.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,19 @@ def getSetupOptions(filename):
if 'protocol-type' not in setup_options:
setup_options['protocol-type'] = 'default'

if 'small_molecule_forcefield' not in setup_options:
setup_options['small_molecule_forcefield'] = 'gaff-2.11'

if 'small_molecule_parameters_cache' not in setup_options:
setup_options['small_molecule_parameters_cache'] = None

# Not sure why these are needed
# TODO: Revisit these?
if 'neglect_angles' not in setup_options:
setup_options['neglect_angles'] = False
if 'anneal_1,4s' not in setup_options:
setup_options['anneal_1,4s'] = False

if 'run_type' not in setup_options:
_logger.info(f"\t\t\trun_type is not specified; default to None")
setup_options['run_type'] = None
Expand Down Expand Up @@ -207,11 +220,11 @@ def getSetupOptions(filename):
if 'softcore_v2' not in setup_options:
setup_options['softcore_v2'] = False
_logger.info(f"\t'softcore_v2' not specified: default to 'False'")

_logger.info(f"\tCreating '{trajectory_directory}'...")
assert (not os.path.exists(trajectory_directory)), f'Output trajectory directory "{trajectory_directory}" already exists. Refusing to overwrite'
os.makedirs(trajectory_directory)

_logger.info(f"\ttrajectory_directory detected: {trajectory_directory}. making dir...")
if setup_options['run_type'] != 'anneal':
assert (os.path.exists(trajectory_directory) == False), 'Output trajectory directory already exists. Refusing to overwrite'
os.makedirs(trajectory_directory)

return setup_options

Expand Down Expand Up @@ -264,7 +277,7 @@ def run_setup(setup_options):

if "timestep" in setup_options:
timestep = setup_options['timestep'] * unit.femtoseconds
_logger.info(f"\ttimestep: {timestep}fs.")
_logger.info(f"\ttimestep: {timestep}.")
else:
timestep = 1.0 * unit.femtoseconds
_logger.info(f"\tno timestep detected: setting default as 1.0fs.")
Expand Down Expand Up @@ -318,8 +331,8 @@ def run_setup(setup_options):
protein_pdb_filename=protein_pdb_filename,
receptor_mol2_filename=receptor_mol2, pressure=pressure,
temperature=temperature, solvent_padding=solvent_padding_angstroms,
atom_map=atom_map, neglect_angles = setup_options['neglect_angles'], anneal_14s = setup_options['anneal_1,4s'])
_logger.info(f"\n\n\n")
atom_map=atom_map, neglect_angles = setup_options['neglect_angles'], anneal_14s = setup_options['anneal_1,4s'],
small_molecule_forcefield=setup_options['small_molecule_forcefield'], small_molecule_parameters_cache=setup_options['small_molecule_parameters_cache'])

_logger.info(f"\twriting pickle output...")
with open(os.path.join(os.getcwd(), trajectory_directory, setup_pickle_file), 'wb') as f:
Expand Down
15 changes: 15 additions & 0 deletions perses/data/cdk2-example/cdk2-cache.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"_default": {},
"gaff-2.11": {
"1": {
"ffxml": "<ForceField>\n <Info>\n <DateGenerated>2020-01-08</DateGenerated>\n </Info>\n <PeriodicTorsionForce>\n <Improper type1=\"ca\" type2=\"nb\" type3=\"nb\" type4=\"nh\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"cc\" type2=\"h5\" type3=\"na\" type4=\"nd\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"ca\" type4=\"ha\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"nb\" type4=\"os\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"ca\" type4=\"nd\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"na\" type2=\"ca\" type3=\"cc\" type4=\"hn\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"na\" type4=\"nb\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"nh\" type2=\"ca\" type3=\"ca\" type4=\"hn\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"ca\" type4=\"nh\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n </PeriodicTorsionForce>\n<Residues><Residue name=\"[H]c1c(c(c(c(c1[H])Br)[H])N([H])c2nc3c(c(n2)OC([H])([H])C4(C(C(C(C(C4([H])[H])([H])[H])([H])[H])([H])[H])([H])[H])[H])N=C(N3[H])[H])[H]\"><Atom name=\"C1\" type=\"ca\" charge=\"0.9380199955183061\"/><Atom name=\"C2\" type=\"cc\" charge=\"0.5029900098656933\"/><Atom name=\"C3\" type=\"c3\" charge=\"0.13049000565586533\"/><Atom name=\"C4\" type=\"c3\" charge=\"-0.06813999977094644\"/><Atom name=\"C5\" type=\"c3\" charge=\"-0.07626000754412668\"/><Atom name=\"C6\" type=\"c3\" charge=\"-0.07506000213790623\"/><Atom name=\"C7\" type=\"c3\" charge=\"-0.07825999668627928\"/><Atom name=\"C8\" type=\"c3\" charge=\"-0.07506000213790623\"/><Atom name=\"C9\" type=\"c3\" charge=\"-0.07626000754412668\"/><Atom name=\"C10\" type=\"ca\" charge=\"-0.10790000057982278\"/><Atom name=\"C11\" type=\"ca\" charge=\"-0.1262799942264854\"/><Atom name=\"C12\" type=\"ca\" charge=\"-0.007579997144742428\"/><Atom name=\"C13\" type=\"ca\" charge=\"-0.1115899974599122\"/><Atom name=\"N1\" type=\"nb\" charge=\"-0.8348100144479806\"/><Atom name=\"C14\" type=\"ca\" charge=\"0.7623299993683912\"/><Atom name=\"O1\" type=\"os\" charge=\"-0.4173700192976787\"/><Atom name=\"C15\" type=\"ca\" charge=\"-0.20807999270501196\"/><Atom name=\"N2\" type=\"nd\" charge=\"-0.5032399868142949\"/><Atom name=\"N3\" type=\"na\" charge=\"-0.7800700030242173\"/><Atom name=\"C16\" type=\"ca\" charge=\"0.6003999739508927\"/><Atom name=\"N4\" type=\"nb\" charge=\"-0.7764600477310883\"/><Atom name=\"N5\" type=\"nh\" charge=\"-0.7468699776284606\"/><Atom name=\"C17\" type=\"ca\" charge=\"0.17254000986738674\"/><Atom name=\"C18\" type=\"ca\" charge=\"-0.162819995678184\"/><Atom name=\"H1\" type=\"h5\" charge=\"0.0745200071410825\"/><Atom name=\"H2\" type=\"h1\" charge=\"0.06093000277936648\"/><Atom name=\"H3\" type=\"h1\" charge=\"0.06093000277936648\"/><Atom name=\"H4\" type=\"hc\" charge=\"0.06834000382538596\"/><Atom name=\"H5\" type=\"hc\" charge=\"0.045400005056444516\"/><Atom name=\"H6\" type=\"hc\" charge=\"0.045400005056444516\"/><Atom name=\"H7\" type=\"hc\" charge=\"0.04058000092725349\"/><Atom name=\"H8\" type=\"hc\" charge=\"0.04058000092725349\"/><Atom name=\"H9\" type=\"hc\" charge=\"0.03983000312894956\"/><Atom name=\"H10\" type=\"hc\" charge=\"0.03983000312894956\"/><Atom name=\"H11\" type=\"hc\" charge=\"0.04058000092725349\"/><Atom name=\"H12\" type=\"hc\" charge=\"0.04058000092725349\"/><Atom name=\"H13\" type=\"hc\" charge=\"0.045400005056444516\"/><Atom name=\"H14\" type=\"hc\" charge=\"0.045400005056444516\"/><Atom name=\"H15\" type=\"ha\" charge=\"0.13868999549173872\"/><Atom name=\"H16\" type=\"ha\" charge=\"0.14825999809448898\"/><Atom name=\"H17\" type=\"ha\" charge=\"0.16364000817867916\"/><Atom name=\"H18\" type=\"hn\" charge=\"0.47447997564164407\"/><Atom name=\"H19\" type=\"hn\" charge=\"0.46240002143510067\"/><Atom name=\"H20\" type=\"ha\" charge=\"0.13816000588895963\"/><Atom name=\"Br1\" type=\"br\" charge=\"-0.08859000311586836\"/><Bond atomName1=\"C1\" atomName2=\"N1\"/><Bond atomName1=\"C1\" atomName2=\"N4\"/><Bond atomName1=\"C1\" atomName2=\"N5\"/><Bond atomName1=\"C2\" atomName2=\"N2\"/><Bond atomName1=\"C2\" atomName2=\"N3\"/><Bond atomName1=\"C2\" atomName2=\"H1\"/><Bond atomName1=\"C3\" atomName2=\"C4\"/><Bond atomName1=\"C3\" atomName2=\"O1\"/><Bond atomName1=\"C3\" atomName2=\"H2\"/><Bond atomName1=\"C3\" atomName2=\"H3\"/><Bond atomName1=\"C4\" atomName2=\"C5\"/><Bond atomName1=\"C4\" atomName2=\"C9\"/><Bond atomName1=\"C4\" atomName2=\"H4\"/><Bond atomName1=\"C5\" atomName2=\"C6\"/><Bond atomName1=\"C5\" atomName2=\"H5\"/><Bond atomName1=\"C5\" atomName2=\"H6\"/><Bond atomName1=\"C6\" atomName2=\"C7\"/><Bond atomName1=\"C6\" atomName2=\"H7\"/><Bond atomName1=\"C6\" atomName2=\"H8\"/><Bond atomName1=\"C7\" atomName2=\"C8\"/><Bond atomName1=\"C7\" atomName2=\"H9\"/><Bond atomName1=\"C7\" atomName2=\"H10\"/><Bond atomName1=\"C8\" atomName2=\"C9\"/><Bond atomName1=\"C8\" atomName2=\"H11\"/><Bond atomName1=\"C8\" atomName2=\"H12\"/><Bond atomName1=\"C9\" atomName2=\"H13\"/><Bond atomName1=\"C9\" atomName2=\"H14\"/><Bond atomName1=\"C10\" atomName2=\"C11\"/><Bond atomName1=\"C10\" atomName2=\"C18\"/><Bond atomName1=\"C10\" atomName2=\"H15\"/><Bond atomName1=\"C11\" atomName2=\"C12\"/><Bond atomName1=\"C11\" atomName2=\"H16\"/><Bond atomName1=\"C12\" atomName2=\"C13\"/><Bond atomName1=\"C12\" atomName2=\"Br1\"/><Bond atomName1=\"C13\" atomName2=\"C17\"/><Bond atomName1=\"C13\" atomName2=\"H17\"/><Bond atomName1=\"N1\" atomName2=\"C14\"/><Bond atomName1=\"C14\" atomName2=\"O1\"/><Bond atomName1=\"C14\" atomName2=\"C15\"/><Bond atomName1=\"C15\" atomName2=\"N2\"/><Bond atomName1=\"C15\" atomName2=\"C16\"/><Bond atomName1=\"N3\" atomName2=\"C16\"/><Bond atomName1=\"N3\" atomName2=\"H18\"/><Bond atomName1=\"C16\" atomName2=\"N4\"/><Bond atomName1=\"N5\" atomName2=\"C17\"/><Bond atomName1=\"N5\" atomName2=\"H19\"/><Bond atomName1=\"C17\" atomName2=\"C18\"/><Bond atomName1=\"C18\" atomName2=\"H20\"/></Residue></Residues></ForceField>\n",
"iupac": "~{N}-(3-bromophenyl)-6-(cyclohexylmethoxy)-9~{H}-purin-2-amine",
"smiles": "[H]c1c(c(c(c(c1[H])Br)[H])N([H])c2nc3c(c(n2)OC([H])([H])C4(C(C(C(C(C4([H])[H])([H])[H])([H])[H])([H])[H])([H])[H])[H])N=C(N3[H])[H])[H]"
},
"2": {
"ffxml": "<ForceField>\n <Info>\n <DateGenerated>2020-01-08</DateGenerated>\n </Info>\n <PeriodicTorsionForce>\n <Improper type1=\"ca\" type2=\"nb\" type3=\"nb\" type4=\"nh\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"cc\" type2=\"h5\" type3=\"na\" type4=\"nd\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"ca\" type4=\"ha\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"nb\" type4=\"os\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"ca\" type4=\"nd\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"na\" type2=\"ca\" type3=\"cc\" type4=\"hn\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"na\" type4=\"nb\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"nh\" type2=\"ca\" type3=\"ca\" type4=\"hn\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n <Improper type1=\"ca\" type2=\"ca\" type3=\"ca\" type4=\"nh\" periodicity1=\"2\" phase1=\"3.141592653589793\" k1=\"4.6024\"/>\n </PeriodicTorsionForce>\n<Residues><Residue name=\"[H]c1c(c(c(c(c1[H])[H])N([H])c2nc3c(c(n2)OC([H])([H])C4(C(C(C(C(C4([H])[H])([H])[H])([H])[H])([H])[H])([H])[H])[H])N=C(N3[H])[H])[H])[H]\"><Atom name=\"C1\" type=\"ca\" charge=\"0.940720009377084\"/><Atom name=\"C2\" type=\"cc\" charge=\"0.5003000432150067\"/><Atom name=\"C3\" type=\"c3\" charge=\"0.13035999067384332\"/><Atom name=\"C4\" type=\"c3\" charge=\"-0.06669999746609903\"/><Atom name=\"C5\" type=\"c3\" charge=\"-0.07492000707974124\"/><Atom name=\"C6\" type=\"c3\" charge=\"-0.07463000067678004\"/><Atom name=\"C7\" type=\"c3\" charge=\"-0.07776000452779244\"/><Atom name=\"C8\" type=\"c3\" charge=\"-0.07463000067678004\"/><Atom name=\"C9\" type=\"c3\" charge=\"-0.07492000707974124\"/><Atom name=\"C10\" type=\"ca\" charge=\"-0.11158000079222616\"/><Atom name=\"C11\" type=\"ca\" charge=\"-0.1493899990855215\"/><Atom name=\"C12\" type=\"ca\" charge=\"-0.11158000079222616\"/><Atom name=\"C13\" type=\"ca\" charge=\"-0.15166999598739633\"/><Atom name=\"N1\" type=\"nb\" charge=\"-0.8346700777891322\"/><Atom name=\"C14\" type=\"ca\" charge=\"0.7609900136244427\"/><Atom name=\"O1\" type=\"os\" charge=\"-0.42016000107077534\"/><Atom name=\"C15\" type=\"ca\" charge=\"-0.20837000285898155\"/><Atom name=\"N2\" type=\"nd\" charge=\"-0.5049499935624883\"/><Atom name=\"N3\" type=\"na\" charge=\"-0.7809599740491758\"/><Atom name=\"C16\" type=\"ca\" charge=\"0.6021500150799053\"/><Atom name=\"N4\" type=\"nb\" charge=\"-0.7818800313580052\"/><Atom name=\"N5\" type=\"nh\" charge=\"-0.742069969380697\"/><Atom name=\"C17\" type=\"ca\" charge=\"0.16614000281177976\"/><Atom name=\"C18\" type=\"ca\" charge=\"-0.15166999598739633\"/><Atom name=\"H1\" type=\"h5\" charge=\"0.07525999745290168\"/><Atom name=\"H2\" type=\"h1\" charge=\"0.06003000135902299\"/><Atom name=\"H3\" type=\"h1\" charge=\"0.06003000135902299\"/><Atom name=\"H4\" type=\"hc\" charge=\"0.06889000444588278\"/><Atom name=\"H5\" type=\"hc\" charge=\"0.04262999761774103\"/><Atom name=\"H6\" type=\"hc\" charge=\"0.04262999761774103\"/><Atom name=\"H7\" type=\"hc\" charge=\"0.0412699984557519\"/><Atom name=\"H8\" type=\"hc\" charge=\"0.0412699984557519\"/><Atom name=\"H9\" type=\"hc\" charge=\"0.039019997650819725\"/><Atom name=\"H10\" type=\"hc\" charge=\"0.039019997650819725\"/><Atom name=\"H11\" type=\"hc\" charge=\"0.0412699984557519\"/><Atom name=\"H12\" type=\"hc\" charge=\"0.0412699984557519\"/><Atom name=\"H13\" type=\"hc\" charge=\"0.04262999761774103\"/><Atom name=\"H14\" type=\"hc\" charge=\"0.04262999761774103\"/><Atom name=\"H15\" type=\"ha\" charge=\"0.1329600048494636\"/><Atom name=\"H16\" type=\"ha\" charge=\"0.13350999180074835\"/><Atom name=\"H17\" type=\"ha\" charge=\"0.1329600048494636\"/><Atom name=\"H18\" type=\"ha\" charge=\"0.14020000214136588\"/><Atom name=\"H19\" type=\"hn\" charge=\"0.4749000010145257\"/><Atom name=\"H20\" type=\"hn\" charge=\"0.4592699944295195\"/><Atom name=\"H21\" type=\"ha\" charge=\"0.14020000214136588\"/><Bond atomName1=\"C1\" atomName2=\"N1\"/><Bond atomName1=\"C1\" atomName2=\"N4\"/><Bond atomName1=\"C1\" atomName2=\"N5\"/><Bond atomName1=\"C2\" atomName2=\"N2\"/><Bond atomName1=\"C2\" atomName2=\"N3\"/><Bond atomName1=\"C2\" atomName2=\"H1\"/><Bond atomName1=\"C3\" atomName2=\"C4\"/><Bond atomName1=\"C3\" atomName2=\"O1\"/><Bond atomName1=\"C3\" atomName2=\"H2\"/><Bond atomName1=\"C3\" atomName2=\"H3\"/><Bond atomName1=\"C4\" atomName2=\"C5\"/><Bond atomName1=\"C4\" atomName2=\"C9\"/><Bond atomName1=\"C4\" atomName2=\"H4\"/><Bond atomName1=\"C5\" atomName2=\"C6\"/><Bond atomName1=\"C5\" atomName2=\"H5\"/><Bond atomName1=\"C5\" atomName2=\"H6\"/><Bond atomName1=\"C6\" atomName2=\"C7\"/><Bond atomName1=\"C6\" atomName2=\"H7\"/><Bond atomName1=\"C6\" atomName2=\"H8\"/><Bond atomName1=\"C7\" atomName2=\"C8\"/><Bond atomName1=\"C7\" atomName2=\"H9\"/><Bond atomName1=\"C7\" atomName2=\"H10\"/><Bond atomName1=\"C8\" atomName2=\"C9\"/><Bond atomName1=\"C8\" atomName2=\"H11\"/><Bond atomName1=\"C8\" atomName2=\"H12\"/><Bond atomName1=\"C9\" atomName2=\"H13\"/><Bond atomName1=\"C9\" atomName2=\"H14\"/><Bond atomName1=\"C10\" atomName2=\"C11\"/><Bond atomName1=\"C10\" atomName2=\"C18\"/><Bond atomName1=\"C10\" atomName2=\"H15\"/><Bond atomName1=\"C11\" atomName2=\"C12\"/><Bond atomName1=\"C11\" atomName2=\"H16\"/><Bond atomName1=\"C12\" atomName2=\"C13\"/><Bond atomName1=\"C12\" atomName2=\"H17\"/><Bond atomName1=\"C13\" atomName2=\"C17\"/><Bond atomName1=\"C13\" atomName2=\"H18\"/><Bond atomName1=\"N1\" atomName2=\"C14\"/><Bond atomName1=\"C14\" atomName2=\"O1\"/><Bond atomName1=\"C14\" atomName2=\"C15\"/><Bond atomName1=\"C15\" atomName2=\"N2\"/><Bond atomName1=\"C15\" atomName2=\"C16\"/><Bond atomName1=\"N3\" atomName2=\"C16\"/><Bond atomName1=\"N3\" atomName2=\"H19\"/><Bond atomName1=\"C16\" atomName2=\"N4\"/><Bond atomName1=\"N5\" atomName2=\"C17\"/><Bond atomName1=\"N5\" atomName2=\"H20\"/><Bond atomName1=\"C17\" atomName2=\"C18\"/><Bond atomName1=\"C18\" atomName2=\"H21\"/></Residue></Residues></ForceField>\n",
"iupac": "6-(cyclohexylmethoxy)-~{N}-phenyl-9~{H}-purin-2-amine",
"smiles": "[H]c1c(c(c(c(c1[H])[H])N([H])c2nc3c(c(n2)OC([H])([H])C4(C(C(C(C(C4([H])[H])([H])[H])([H])[H])([H])[H])([H])[H])[H])N=C(N3[H])[H])[H])[H]"
}
}
}
Loading

0 comments on commit eccefd6

Please sign in to comment.