private Map<SmallMoleculeReference, Set<SmallMoleculeReference>> getSelfMatching( Set<SmallMoleculeReference> smrs, Map<SmallMoleculeReference, Set<String>> smrNames, Map<SmallMoleculeReference, Set<String>> smNames, boolean normalizeName) { Map<SmallMoleculeReference, Set<SmallMoleculeReference>> map = new HashMap<SmallMoleculeReference, Set<SmallMoleculeReference>>(); for (SmallMoleculeReference smr : smrs) { Set<SmallMoleculeReference> matching = normalizeName ? getNameNormalizedMatching(smr, smrs) : getMatching(smr, smrs, smrNames, smNames); // it should at least detect itself, if it has a name assert normalizeName || !matching.isEmpty() || smr.getName().isEmpty(); matching.remove(smr); if (!matching.isEmpty()) map.put(smr, matching); } return map; }
@Override public Set<String> fetchID(BioPAXElement ele) { if (ele instanceof SmallMoleculeReference) { SmallMoleculeReference smr = (SmallMoleculeReference) ele; String name = null; if (smr.getDisplayName() != null) name = smr.getDisplayName(); else if (smr.getStandardName() != null) name = smr.getStandardName(); else if (!smr.getName().isEmpty()) name = smr.getName().iterator().next(); if (name != null) { name = name.toLowerCase(); if (nameMap != null && nameMap.containsKey(name)) name = nameMap.get(name); return Collections.singleton(name); } } return super.fetchID(ele); } }
for (String name : smr.getName())
private Set<Set<String>> collectNameSets(Model model) { Set<Set<String>> bag = new HashSet<Set<String>>(); for (SmallMoleculeReference smr : model.getObjects(SmallMoleculeReference.class)) { Set<String> set = new HashSet<String>(); for (String name : smr.getName()) { set.add(name.toLowerCase()); } for (SimplePhysicalEntity sm : smr.getEntityReferenceOf()) { for (String name : sm.getName()) { set.add(name.toLowerCase()); } } doSomeCleaning(set); enrichWithModifications(set); bag.add(set); } return bag; }