Importing and Exporting molecule properties
Molecule objects can contain general properties (property value - property key pairs). The formats mrv, sdf, rdf are able to store the molecule properties.
Reading properties after import
In case we know the name of the properties we can use the following code to get the values in text format:
String value = molecule.getProperty(LOGP_FIELD);
//LOGP_FIELD is the name of the property
Otherwise we need to go through the property names. An example is below:
for
(
int
i=
0
; i<molecule.getPropertyCount(); i++) {
String key = molecule.getPropertyKey(i);
// name of the property
String value = molecule.getProperty(key);
// the property value
}
For a complete source code, please see ImportProperties.java.
Collecting property keys
MolFileHandler.collectFileInfo() enlists the existing property keys:
MolFileHandler.collectFileInfo(inputStream,
0
, collectedFields);
java.util.Iterator iterator = collectedFields.iterator();
while
(iterator.hasNext()) {
System.out.println(iterator.next());
}
For a complete source code, please see CollectProperties.java.
Adding and exporting properties
The following example shows how to add properties via API:
Molecule mol = MolImporter.importMol(
"ccccc"
);
MHashProp hashProp =
new
MHashProp();
mol.setPropertyObject(
"ROOT"
, hashProp);
hashProp.put(
"CdId"
,
new
MStringProp(
"1"
));
hashProp.put(
"Formula"
,
new
MStringProp(
"C5H10"
));
MMoleculeProp secondaryStruc =
new
MMoleculeProp(MolImporter.importMol(
"cc"
));
hashProp.put(
"secondStruct"
, secondaryStruc);
mol.setProperty(
"$REGNO"
,
"MI24"
);
System.out.println(MolExporter.exportToFormat(mol,
"rdf"
));
For a complete source code, please see ExportProperties.java.
External or internal registry number of a molecule can be added to the molecule or reaction via API. The mrv, mol (sdf, rdf) format exports and imports these registry numbers after specifying them:
int
regno =
218
;
while
((mol=imp.read())!=
null
){
//add the internal registry number (sequence number in the database) of the reaction
mol.setProperty(
"$REGNO"
,
"RI"
+ regno);
regno++;
exp.write(mol);
}
For a complete source code, please see ExportingReactions.java.