Skip to content

Instantly share code, notes, and snippets.

@johnmay
Created November 16, 2012 10:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnmay/4086209 to your computer and use it in GitHub Desktop.
Save johnmay/4086209 to your computer and use it in GitHub Desktop.
Current/Proposed SMILES parsing
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
SmilesParser parser = new SmilesParser(builder);
IAtomContainer sodiumChloride = parser.parseSmiles("[Na+].[Cl-]");
IAtomContainer adenine = parser.parseSmiles("n1c(c2c(nc1)ncn2)N");
// if you want the separate parts
// import static org.openscience.cdk.graph.ConnectivityChecker.partitionIntoMolecules;
IAtomContainerSet sodiumChlorideSet = partitionIntoMolecules(sodiumChloride);
IAtomContainerSet adenineSet = partitionIntoMolecules(adenine);
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
SmilesParser parser = new SmilesParser(builder);
IAtomContainerSet sodiumChlorideSet = builder.newInstance(IAtomContainerSet.class);
IAtomContainerSet adenineSet = builder.newInstance(IAtomContainerSet.class);
sodiumChlorideSet.addAtomContainer(parser.parseSmiles("[Na+].[Cl-]"));
while (parser.hasMoreMolecules()){
sodiumChlorideSet.addAtomContainer(parser.getNextMolecule());
}
adenineSet.addAtomContainer(parser.parseSmiles("n1c(c2c(nc1)ncn2)N"));
while (parser.hasMoreMolecules()){
adenineSet.addAtomContainer(parser.getNextMolecule());
}
// merge sets into single atom containers
IAtomContainer sodimChloride = builder.newInstance(IAtomContainer.class);
IAtomContainer adenin = builder.newInstance(IAtomContainer.class);
for(IAtomContainer part : sodiumChlorideSet.atomContainers()) {
sodimChloride.add(part);
}
for(IAtomContainer part : adenineSet.atomContainers()) {
adenin.add(part);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment