diff options
Diffstat (limited to 'java/CdkDescriptors.java')
-rw-r--r-- | java/CdkDescriptors.java | 51 |
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(); } } } |