@Override public List<IAtomContainer> getSubstituents() { List<IAtomContainer> substitutes = new ArrayList<IAtomContainer>(); for (Integer r : rGroupDefinitions.keySet()) { for (RGroup rgrp : rGroupDefinitions.get(r).getRGroups()) { IAtomContainer subst = rgrp.getGroup(); if (subst != null) substitutes.add(subst); } } return substitutes; }
@Override public int getAtomContainerCount() { int retVal = 0; if (this.rootStructure != null) retVal++; for (Integer r : rGroupDefinitions.keySet()) { for (RGroup rgrp : rGroupDefinitions.get(r).getRGroups()) { if (rgrp.getGroup() != null) { retVal++; } } } return retVal; }
@Override public boolean areSubstituentsDefined() { List<IAtom> allRgroupAtoms = getAllRgroupQueryAtoms(); if (allRgroupAtoms == null) return false; for (IAtom rgp : allRgroupAtoms) { if (RGroupQuery.isValidRgroupQueryLabel(((IPseudoAtom) rgp).getLabel())) { int groupNum = Integer.valueOf(((IPseudoAtom) rgp).getLabel().substring(1)); if (rGroupDefinitions == null || rGroupDefinitions.get(groupNum) == null || rGroupDefinitions.get(groupNum).getRGroups() == null || rGroupDefinitions.get(groupNum).getRGroups().size() == 0) { return false; } } } return true; }
/** * Method to check whether a given atom is part of one of the substitutes. * @param atom */ public boolean isAtomPartOfSubstitute(IAtom atom) { if (rGroupQuery!=null && rGroupQuery.getRGroupDefinitions()!=null) { for (Iterator<Integer> itr = rGroupQuery.getRGroupDefinitions().keySet().iterator(); itr.hasNext(); ) { RGroupList rgpList =rGroupQuery.getRGroupDefinitions().get(itr.next()); if(rgpList!=null && rgpList.getRGroups()!=null) { for (RGroup rgrp: rgpList.getRGroups() ) { if(rgrp.getGroup().contains(atom)) { return true; } } } } } return false; }
for(Iterator<Integer> itr= def.keySet().iterator();itr.hasNext();) { int rgrpNum=itr.next(); List<RGroup> rgpList = def.get(rgrpNum).getRGroups(); for(RGroup rgp : rgpList) { if (rgp!=null) {
mapSubstitutes(rgpList, listOffset + 1, distribution, mapping, result); } else { for (RGroup rgrp : rgpList.getRGroups()) { mapping[listOffset] = rgrp; mapSubstitutes(rgpList, listOffset + 1, distribution, mapping, result);
List<RGroup> rgpList = def.get(rgrpNum).getRGroups(); for (int i = 0; i < rgpList.size(); i++) { if(!exists(rgpList.get(i).getGroup(),moleculeSet) || rgpList.get(i).getGroup().getAtomCount()==0) { for (RGroup rgrp :rGroupQuery.getRGroupDefinitions().get(rgrpNum).getRGroups()) { atomCount+=rgrp.getGroup().getAtomCount();
/** * See restores what was saved by makeHash(). */ public void restoreFromHash(Map<Integer,Map<Integer,Integer>> mash, IAtomContainerSet mset) { if(rGroupQuery!=null) { int rootHash = mash.get(-1).get(0); rGroupQuery.setRootStructure(findContainer(rootHash,mset)); Map<Integer,RGroupList> def = rGroupQuery.getRGroupDefinitions(); for (Iterator<Integer>rgpHashItr=mash.keySet().iterator(); rgpHashItr.hasNext();) { int rgpHash = rgpHashItr.next(); restore: for(Iterator<Integer> itr= def.keySet().iterator();itr.hasNext();) { int rgrpNum=itr.next(); List<RGroup> rgpList = def.get(rgrpNum).getRGroups(); for(RGroup rgp : rgpList) { if (rgp!=null && rgp.hashCode()==rgpHash) { rgp.setGroup(findContainer(mash.get(rgpHash).get(0),mset)); if (rgp.getGroup()!=null) { rgp.setFirstAttachmentPoint(findAtom(mash.get(rgpHash).get(1),rgp.getGroup())); rgp.setSecondAttachmentPoint(findAtom(mash.get(rgpHash).get(2),rgp.getGroup())); } break restore; } } } } } }
RGroup redoRGroup=redoRGroupApo.keySet().iterator().next(); for (Iterator<Integer> rnumItr= hub.getRGroupHandler().getrGroupQuery().getRGroupDefinitions().keySet().iterator(); rnumItr.hasNext();) { for (RGroup rgrp: hub.getRGroupHandler().getrGroupQuery().getRGroupDefinitions().get(rnumItr.next()).getRGroups()) { if(rgrp.equals(redoRGroup)) { IAtom apo1=redoRGroupApo.get(redoRGroup).get(1);
RGroup undoRGroup=existingRGroupApo.keySet().iterator().next(); for (Iterator<Integer> rnumItr= hub.getRGroupHandler().getrGroupQuery().getRGroupDefinitions().keySet().iterator(); rnumItr.hasNext();) { for (RGroup rgrp: hub.getRGroupHandler().getrGroupQuery().getRGroupDefinitions().get(rnumItr.next()).getRGroups()) { if(rgrp.equals(undoRGroup)) { redoRGroupApo= new HashMap <RGroup,Map<Integer,IAtom>>();
RGroup undoRGroup=existingRGroupApo.keySet().iterator().next(); for (Iterator<Integer> rnumItr= hub.getRGroupHandler().getrGroupQuery().getRGroupDefinitions().keySet().iterator(); rnumItr.hasNext();) { for (RGroup rgrp: hub.getRGroupHandler().getrGroupQuery().getRGroupDefinitions().get(rnumItr.next()).getRGroups()) { if(rgrp.equals(undoRGroup)) { IAtom apo1=existingRGroupApo.get(undoRGroup).get(1); for (Iterator<Integer> rnumItr= hub.getRGroupHandler().getrGroupQuery().getRGroupDefinitions().keySet().iterator(); rnumItr.hasNext();) { int rNum=rnumItr.next(); for (RGroup rgrp: hub.getRGroupHandler().getrGroupQuery().getRGroupDefinitions().get(rNum).getRGroups()) { rgrp.getGroup().setProperty(CDKConstants.TITLE,RGroup.makeLabel(rNum));
List<RGroup> rgrpList = rGroupQuery.getRGroupDefinitions().get(rgrpNum).getRGroups(); if (rgrpList != null && rgrpList.size() != 0) { rgpBlock.append("$RGP").append(LSEP);;
for(Iterator<Integer> itr= def.keySet().iterator();itr.hasNext();) { int rgrpNum=itr.next(); List<RGroup> rgpList = def.get(rgrpNum).getRGroups(); for (int i = 0; i < rgpList.size(); i++) {
/** * Clones an RGroupList * * @param original * @return */ private static RGroupList makeClone(RGroupList original) { RGroupList clone = new RGroupList(original.getRGroupNumber()); try { clone.setOccurrence(original.getOccurrence()); clone.setRequiredRGroupNumber(original.getRequiredRGroupNumber()); clone.setRestH(original.isRestH()); List<RGroup> rgpList = new ArrayList<RGroup>(); for (RGroup r : original.getRGroups()) { rgpList.add(r); } clone.setRGroups(rgpList); } catch (CDKException e) { e.printStackTrace(); } return clone; } }
apo: for(Iterator<Integer> itr =rGroupQuery.getRGroupDefinitions().keySet().iterator();itr.hasNext();) { for (RGroup rgrp :rGroupQuery.getRGroupDefinitions().get(itr.next()).getRGroups()) { if(rgrp.getGroup()==ac) { acDetachedFromRGroup=false;
/** * Creates a {@link org.openscience.cdk.interfaces.IAtomContainerSet} from a * provided {@link org.openscience.cdk.isomorphism.matchers.IRGroupQuery). * The root structure becomes the atom container as position zero, the * substitutes follow on position 1..n, ordered by R-group number. * * @param chemModel * @param RgroupQuery * @throws CDKException */ public IAtomContainerSet getMoleculeSet (IChemModel chemModel) throws CDKException { if (rGroupQuery==null || rGroupQuery.getRootStructure() == null || rGroupQuery.getRootStructure().getAtomCount()==0) throw new CDKException( "The R-group is empty"); IAtomContainerSet moleculeSet = chemModel.getBuilder().newInstance(IAtomContainerSet.class); moleculeSet.addAtomContainer(rGroupQuery.getRootStructure()); chemModel.setMoleculeSet(moleculeSet); for (int rgrpNum : sortRGroupNumbers()) { RGroupList rgrpList = rGroupQuery.getRGroupDefinitions().get(rgrpNum); for (RGroup rgrp : rgrpList.getRGroups()) { chemModel.getMoleculeSet().addAtomContainer(rgrp.getGroup()); } } return moleculeSet; }
Assert.assertEquals(allrGroupQueryAtoms.size(), 1); RGroupList rList = rGroupQuery.getRGroupDefinitions().get(1); Assert.assertEquals(rList.getRGroups().size(), 2); Assert.assertEquals(rList.getRequiredRGroupNumber(), 0); Assert.assertFalse(rList.isRestH()); List<RGroup> rGroups = rList.getRGroups(); Assert.assertEquals(rGroups.get(0).getFirstAttachmentPoint(), null); Assert.assertEquals(rGroups.get(0).getSecondAttachmentPoint(), null);
Assert.assertEquals(rList.getRGroups().size(), 2); List<RGroup> rGroups = rList.getRGroups(); Assert.assertEquals(rGroups.get(0).getSecondAttachmentPoint().getSymbol(), "O"); Assert.assertEquals(rGroups.get(1).getSecondAttachmentPoint().getSymbol(), "O"); case 2: { RGroupList rList = rGroupQuery.getRGroupDefinitions().get(2); Assert.assertEquals(rList.getRGroups().size(), 2); Assert.assertEquals(rList.getOccurrence(), "0,2"); Assert.assertEquals(rList.getRequiredRGroupNumber(), 11); case 11: { RGroupList rList = rGroupQuery.getRGroupDefinitions().get(11); Assert.assertEquals(rList.getRGroups().size(), 1); Assert.assertEquals(rList.getRequiredRGroupNumber(), 0); Assert.assertTrue(rList.isRestH()); List<RGroup> rGroups = rList.getRGroups(); Assert.assertEquals(rGroups.get(0).getFirstAttachmentPoint().getSymbol(), "Pt"); Assert.assertEquals(rGroups.get(0).getSecondAttachmentPoint(), null);
Assert.assertEquals(rList.getOccurrence(), "0,1-3"); List<RGroup> rGroups = rList.getRGroups(); Assert.assertEquals(rGroups.get(0).getFirstAttachmentPoint().getSymbol(), "N"); Assert.assertEquals(rGroups.get(1).getFirstAttachmentPoint().getSymbol(), "O");
for (RGroup rgrp : rgrpList.getRGroups()) {