private synchronized Map<IBond, IBond> makeBondMapsOfAtomMaps(IAtomContainer ac1, IAtomContainer ac2, AtomAtomMapping mappings) { Map<IBond, IBond> bondbondMappingMap = new HashMap<>(); mappings.getMappingsByAtoms().entrySet().forEach((Map.Entry<IAtom, IAtom> map1) -> { mappings.getMappingsByAtoms().entrySet().stream().filter((map2) -> (map1.getKey() != map2.getKey())).forEachOrdered((map2) -> { IBond bond1 = ac1.getBond(map1.getKey(), map2.getKey()); IBond bond2 = ac2.getBond(map1.getValue(), map2.getValue()); if (bond1 != null && bond2 != null && !bondbondMappingMap.containsKey(bond1)) { bondbondMappingMap.put(bond1, bond2); } }); }); // System.out.println("Mol Map size:" + bondbondMappingMap.size()); return bondbondMappingMap; }
private static Map<Integer, Integer> getIndexMapping(AtomAtomMapping aam) { Map<IAtom, IAtom> mappings = aam.getMappingsByAtoms(); Map<Integer, Integer> mapping = new TreeMap<>(); mappings.keySet().stream().forEach((keys) -> { mapping.put(aam.getQueryIndex(keys), aam.getTargetIndex(mappings.get(keys))); }); return mapping; } }
private synchronized Map<IBond, IBond> makeBondMapsOfAtomMaps(IAtomContainer ac1, IAtomContainer ac2, AtomAtomMapping mappings) { Map<IBond, IBond> bondbondMappingMap = new HashMap<>(); mappings.getMappingsByAtoms().entrySet().stream().forEach((Map.Entry<IAtom, IAtom> map1) -> { mappings.getMappingsByAtoms().entrySet().stream().filter((map2) -> (map1.getKey() != map2.getKey())).forEach((map2) -> { IBond bond1 = ac1.getBond(map1.getKey(), map2.getKey()); IBond bond2 = ac2.getBond(map1.getValue(), map2.getValue()); if (bond1 != null && bond2 != null && !bondbondMappingMap.containsKey(bond1)) { bondbondMappingMap.put(bond1, bond2); } }); }); // System.out.println("Mol Map size:" + bondbondMappingMap.size()); return bondbondMappingMap; }
private synchronized Map<IBond, IBond> makeBondMapsOfAtomMaps(IAtomContainer ac1, IAtomContainer ac2, AtomAtomMapping mappings) { Map<IBond, IBond> bondbondMappingMap = new HashMap<>(); for (Map.Entry<IAtom, IAtom> map1 : mappings.getMappingsByAtoms().entrySet()) { for (Map.Entry<IAtom, IAtom> map2 : mappings.getMappingsByAtoms().entrySet()) { if (map1.getKey() != map2.getKey()) { IBond bond1 = ac1.getBond(map1.getKey(), map2.getKey()); IBond bond2 = ac2.getBond(map1.getValue(), map2.getValue()); if (bond1 != null && bond2 != null && !bondbondMappingMap.containsKey(bond1)) { bondbondMappingMap.put(bond1, bond2); } } } } // System.out.println("Mol Map size:" + bondbondMappingMap.size()); return bondbondMappingMap; }
/** * * Returns bond map between sourceAtomCount and targetAtomCount molecules * based on the atoms * * @param ac1 sourceAtomCount molecule * @param ac2 targetAtomCount molecule * @param mapping mappings between sourceAtomCount and targetAtomCount * molecule atoms * @return bond map between sourceAtomCount and targetAtomCount molecules * based on the atoms */ private synchronized Map<IBond, IBond> makeBondMapOfAtomMap(IAtomContainer ac1, IAtomContainer ac2, AtomAtomMapping mapping) { Map<IBond, IBond> bondbondMappingMap = Collections.synchronizedMap(new HashMap<>()); mapping.getMappingsByAtoms().entrySet().forEach((map1) -> { mapping.getMappingsByAtoms().entrySet().stream().filter((map2) -> (map1.getKey() != map2.getKey())).forEachOrdered((map2) -> { IBond bond1 = ac1.getBond(map1.getKey(), map2.getKey()); IBond bond2 = ac2.getBond(map1.getValue(), map2.getValue()); if (bond1 != null && bond2 != null && !bondbondMappingMap.containsKey(bond1)) { bondbondMappingMap.put(bond1, bond2); } }); }); // System.out.println("Mol Map size:" + bondbondMappingMap.size()); return bondbondMappingMap; }
mapping.getMappingsByAtoms().entrySet().stream().forEach((Map.Entry<IAtom, IAtom> map1) -> { mapping.getMappingsByAtoms().entrySet().stream().filter((map2) -> (map1.getKey() != map2.getKey())).forEach((Map.Entry<IAtom, IAtom> map2) -> { IBond bond1;
for (Map.Entry<IAtom, IAtom> map1 : mapping.getMappingsByAtoms().entrySet()) { for (Map.Entry<IAtom, IAtom> map2 : mapping.getMappingsByAtoms().entrySet()) { if (map1.getKey() != map2.getKey()) { IBond bond1 = ac1.getBond(map1.getKey(), map2.getKey());
@Override public int hashCode() { int hash = 7; hash = 67 * hash + (this.getQuery() != null ? this.getQuery().hashCode() : 0); hash = 67 * hash + (this.getTarget() != null ? this.getTarget().hashCode() : 0); hash = 67 * hash + (this.mapping != null ? this.getMappingsByAtoms().hashCode() : 0); hash = 67 * hash + (this.mappingIndex != null ? this.getMappingsByIndex().hashCode() : 0); return hash; }
@Override public int hashCode() { int hash = 7; hash = 67 * hash + (this.getQuery() != null ? this.getQuery().hashCode() : 0); hash = 67 * hash + (this.getTarget() != null ? this.getTarget().hashCode() : 0); hash = 67 * hash + (this.mapping != null ? this.getMappingsByAtoms().hashCode() : 0); hash = 67 * hash + (this.mappingIndex != null ? this.getMappingsByIndex().hashCode() : 0); return hash; }
@Override public int hashCode() { int hash = 7; hash = 67 * hash + (this.getQuery() != null ? this.getQuery().hashCode() : 0); hash = 67 * hash + (this.getTarget() != null ? this.getTarget().hashCode() : 0); hash = 67 * hash + (this.mapping != null ? this.getMappingsByAtoms().hashCode() : 0); hash = 67 * hash + (this.mappingIndex != null ? this.getMappingsByIndex().hashCode() : 0); return hash; }
@Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final AtomAtomMapping other = (AtomAtomMapping) obj; if (this.getQuery() != other.getQuery() && (this.getQuery() == null || !this.query.equals(other.query))) { return false; } if (this.getTarget() != other.getTarget() && (this.getTarget() == null || !this.target.equals(other.target))) { return false; } if (this.mapping != other.getMappingsByAtoms() && (this.mapping == null || !this.mapping.equals(other.mapping))) { return false; } return this.mappingIndex == other.getMappingsByIndex() || (this.mappingIndex != null && this.mappingIndex.equals(other.mappingIndex)); }
@Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final AtomAtomMapping other = (AtomAtomMapping) obj; if (this.getQuery() != other.getQuery() && (this.getQuery() == null || !this.query.equals(other.query))) { return false; } if (this.getTarget() != other.getTarget() && (this.getTarget() == null || !this.target.equals(other.target))) { return false; } if (this.mapping != other.getMappingsByAtoms() && (this.mapping == null || !this.mapping.equals(other.mapping))) { return false; } return this.mappingIndex == other.getMappingsByIndex() || (this.mappingIndex != null && this.mappingIndex.equals(other.mappingIndex)); }
@Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final AtomAtomMapping other = (AtomAtomMapping) obj; if (this.getQuery() != other.getQuery() && (this.getQuery() == null || !this.query.equals(other.query))) { return false; } if (this.getTarget() != other.getTarget() && (this.getTarget() == null || !this.target.equals(other.target))) { return false; } if (this.mapping != other.getMappingsByAtoms() && (this.mapping == null || !this.mapping.equals(other.mapping))) { return false; } return this.mappingIndex == other.getMappingsByIndex() || (this.mappingIndex != null && this.mappingIndex.equals(other.mappingIndex)); }
private static Image generateImage(IAtomContainer query, IAtomContainer target, Isomorphism smsd) throws Exception { ImageGenerator imageGenerator = new ImageGenerator(); ////set the format right for the Tanimoto score (only two digits printed) NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); nf.setMinimumFractionDigits(2); System.out.println("Output of the final Mappings: "); int counter = 1; for (AtomAtomMapping aam : smsd.getAllAtomMapping()) { Map<IAtom, IAtom> mappings = aam.getMappingsByAtoms(); Map<Integer, Integer> mapping = new TreeMap<>(); for (IAtom keys : mappings.keySet()) { mapping.put(aam.getQueryIndex(keys), aam.getTargetIndex(mappings.get(keys))); } String tanimoto = nf.format(smsd.getTanimotoSimilarity()); String stereo = "NA"; if (smsd.getStereoScore(counter - 1) != null) { stereo = nf.format(smsd.getStereoScore(counter - 1)); } String label = "Scores [" + "Tanimoto: " + tanimoto + ", Stereo: " + stereo + "]"; imageGenerator.addImages(query, target, label, mapping); counter++; } return (Image) imageGenerator.createImage(); }
private synchronized int getMappedMoleculeFragmentSize(AtomAtomMapping mcsAtomSolution) { IAtomContainer Educt = SilentChemObjectBuilder.getInstance().newInstance(IAtomContainer.class, chemfilter.getQuery()); IAtomContainer product = SilentChemObjectBuilder.getInstance().newInstance(IAtomContainer.class, chemfilter.getTarget()); if (mcsAtomSolution != null) { mcsAtomSolution.getMappingsByAtoms().entrySet().stream().forEach((map) -> { IAtom atomE = map.getKey(); IAtom atomP = map.getValue(); Educt.removeAtom(atomE); product.removeAtom(atomP); }); } return getFragmentCount(Educt) + getFragmentCount(product); }
private synchronized int getMappedMoleculeFragmentSize(AtomAtomMapping mcsAtomSolution) { IAtomContainer Educt = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class, chemfilter.getQuery()); IAtomContainer product = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class, chemfilter.getTarget()); if (mcsAtomSolution != null) { for (Map.Entry<IAtom, IAtom> map : mcsAtomSolution.getMappingsByAtoms().entrySet()) { IAtom atomE = map.getKey(); IAtom atomP = map.getValue(); Educt.removeAtom(atomE); product.removeAtom(atomP); } } return getFragmentCount(Educt) + getFragmentCount(product); }
private synchronized int getMappedMoleculeFragmentSize(AtomAtomMapping mcsAtomSolution) { IAtomContainer Educt = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class, chemfilter.getQuery()); IAtomContainer product = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class, chemfilter.getTarget()); if (mcsAtomSolution != null) { for (Map.Entry<IAtom, IAtom> map : mcsAtomSolution.getMappingsByAtoms().entrySet()) { IAtom atomE = map.getKey(); IAtom atomP = map.getValue(); Educt.removeAtomAndConnectedElectronContainers(atomE); product.removeAtomAndConnectedElectronContainers(atomP); } } return getFragmentCount(Educt) + getFragmentCount(product); }
&& !(chemfilter.getQuery() instanceof IQueryAtomContainer || chemfilter.getTarget() instanceof IQueryAtomContainer)) { List<IAtomContainer> subgraphRList = getMappedFragment(chemfilter.getQuery(), atomMapMCS.getMappingsByAtoms().keySet()); double rscore = getRingMatchScore(subgraphRList); List<IAtomContainer> subgraphPList = getMappedFragment(chemfilter.getTarget(), atomMapMCS.getMappingsByAtoms().values()); double pscore = getRingMatchScore(subgraphPList); ringScore = rscore + pscore;
private synchronized void setVFMappings(List<AtomAtomMapping> mappingsVF2) { int counter = 0; for (AtomAtomMapping solution : mappingsVF2) { AtomAtomMapping atomatomMapping = new AtomAtomMapping(getQuery(), getTarget()); if (solution.getCount() > vfMappingSize) { this.vfMappingSize = solution.getCount(); counter = 0; } for (Map.Entry<IAtom, IAtom> mapping : solution.getMappingsByAtoms().entrySet()) { IAtom qAtom; IAtom tAtom; qAtom = mapping.getKey(); tAtom = mapping.getValue(); if (qAtom != null && tAtom != null) { atomatomMapping.put(qAtom, tAtom); } else { try { throw new CDKException("Atom index pointing to NULL"); } catch (CDKException ex) { Logger.error(Level.SEVERE, null, ex); } } } if (!atomatomMapping.isEmpty() && !hasMap(atomatomMapping, getMCSList()) && atomatomMapping.getCount() == vfMappingSize) { getMCSList().add(counter, atomatomMapping); counter++; } } }
private synchronized void setVFMappings(List<AtomAtomMapping> mappingsVF2) { int counter = 0; for (AtomAtomMapping solution : mappingsVF2) { AtomAtomMapping atomatomMapping = new AtomAtomMapping(getQuery(), getTarget()); if (solution.getCount() > vfMappingSize) { this.vfMappingSize = solution.getCount(); counter = 0; } for (Map.Entry<IAtom, IAtom> mapping : solution.getMappingsByAtoms().entrySet()) { IAtom qAtom; IAtom tAtom; qAtom = mapping.getKey(); tAtom = mapping.getValue(); if (qAtom != null && tAtom != null) { atomatomMapping.put(qAtom, tAtom); } else { try { throw new CDKException("Atom index pointing to NULL"); } catch (CDKException ex) { Logger.error(Level.SEVERE, null, ex); } } } if (!atomatomMapping.isEmpty() && !hasMap(atomatomMapping, getMCSList()) && atomatomMapping.getCount() == vfMappingSize) { getMCSList().add(counter, atomatomMapping); counter++; } } }