summaryrefslogtreecommitdiff
path: root/java/CdkDescriptors.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/CdkDescriptors.java')
-rw-r--r--java/CdkDescriptors.java51
1 files changed, 29 insertions, 22 deletions
diff --git a/java/CdkDescriptors.java b/java/CdkDescriptors.java
index 5635507..69c27a8 100644
--- a/java/CdkDescriptors.java
+++ b/java/CdkDescriptors.java
@@ -9,13 +9,13 @@ import org.openscience.cdk.qsar.DescriptorValue;
class CdkDescriptors {
public static void main(String[] args) {
- // parse command line arguments (descriptors)
+ // parse command line arguments > 1 (descriptors)
DescriptorEngine engine;
- if (args.length > 0) {
- for (int i =0; i < args.length; i++) {
- args[i] = "org.openscience.cdk.qsar.descriptors.molecular." + args[i] + "Descriptor";
+ if (args.length > 1) {
+ List<String> classNames = new ArrayList<String>();
+ for (int i =1; i < args.length; i++) {
+ classNames.add("org.openscience.cdk.qsar.descriptors.molecular." + args[i] + "Descriptor");
}
- List<String> classNames = Arrays.asList(args);
engine = new DescriptorEngine(classNames);
List<IDescriptor> instances = engine.instantiateDescriptors(classNames);
List<DescriptorSpecification> specs = engine.initializeSpecifications(instances);
@@ -25,13 +25,21 @@ class CdkDescriptors {
engine = new DescriptorEngine(DescriptorEngine.MOLECULAR);
}
- // parse 3d sdf from stdin and calculate descriptors
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- IteratingMDLReader reader = new IteratingMDLReader( br, DefaultChemObjectBuilder.getInstance());
- while (reader.hasNext()) {
- IMolecule molecule = (IMolecule)reader.next();
- try {
- engine.process(molecule);
+ try {
+ BufferedReader br = new BufferedReader(new FileReader(args[0]));
+ PrintWriter yaml = new PrintWriter(new FileWriter(args[0]+"cdk.yaml"));
+ // parse 3d sdf from file and calculate descriptors
+ IteratingMDLReader reader = new IteratingMDLReader( br, DefaultChemObjectBuilder.getInstance());
+ while (reader.hasNext()) {
+ try {
+ IMolecule molecule = (IMolecule)reader.next();
+ engine.process(molecule);
+ }
+ catch (Exception e) {
+ yaml.println("- {}");
+ e.printStackTrace();
+ continue;
+ }
Iterator it = molecule.getProperties().values().iterator();
Boolean first = true;
while (it.hasNext()) {
@@ -39,28 +47,27 @@ class CdkDescriptors {
DescriptorValue value = (DescriptorValue)it.next();
int size = value.getValue().length();
if (size == 1) {
- if (first) { System.out.print("- "); }
- else { System.out.print(" "); }
- System.out.println(":"+value.getNames()[0].toString() + ": " + value.getValue());
+ if (first) { yaml.print("- "); }
+ else { yaml.print(" "); }
+ yaml.println(":"+value.getNames()[0].toString() + ": " + value.getValue());
first = false;
}
else {
String[] values = value.getValue().toString().split(",");
for (int i = 0; i < size; i++) {
- if (first) { System.out.print("- "); }
- else { System.out.print(" "); }
- System.out.println(":"+value.getNames()[i].toString() + ": " + values[i]);
+ if (first) { yaml.print("- "); }
+ else { yaml.print(" "); }
+ yaml.println(":"+value.getNames()[i].toString() + ": " + values[i]);
first = false;
}
}
}
catch (ClassCastException e) { } // sdf properties are stored as molecules properties (strings), ignore them
+ catch (Exception e) { e.printStackTrace(); } // output nothing to yaml
}
}
- catch (Exception e) {
- System.out.println("- {}");
- System.err.println(e.toString());
- }
+ yaml.close();
}
+ catch (Exception e) { e.printStackTrace(); }
}
}