From: Egon W. <eg...@us...> - 2005-10-17 19:42:35
|
Update of /cvsroot/cdk/cdk-taverna/src/org/openscience/cdk/applications/taverna/filters In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6121/src/org/openscience/cdk/applications/taverna/filters Added Files: Has3DCoordinates.java Has2DCoordinates.java Log Message: Added two filters that check certain data features. --- NEW FILE: Has3DCoordinates.java --- /* $RCSfile: Has3DCoordinates.java,v $ * $Author: egonw $ * $Date: 2005/10/17 19:42:21 $ * $Revision: 1.1 $ * * Copyright (C) 2005 by Egon Willighagen <eg...@us...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.openscience.cdk.applications.taverna.filters; import org.embl.ebi.escience.scuflworkers.java.LocalWorker; import org.embl.ebi.escience.baclava.DataThing; import uk.ac.soton.itinnovation.taverna.enactor.entities.TaskExecutionException; import java.util.*; import org.openscience.cdk.applications.taverna.CMLChemFile; import org.openscience.cdk.geometry.GeometryTools; import org.openscience.cdk.interfaces.AtomContainer; import org.openscience.cdk.tools.manipulator.ChemFileManipulator; /** * Determines if the structure has a 3D coordinates. * * @author Egon Willighagen */ public class Has3DCoordinates implements LocalWorker { public String[] inputNames() { return new String[] {"inputStructures"}; } public String[] inputTypes() { return new String[] {"l('text/plain')"}; } public String[] outputNames() { return new String[] {"matchingStructures", "otherStructures"}; } public String[] outputTypes() { return new String[] {"l('text/plain')", "l('text/plain')"}; } public Map execute(Map inputs) throws TaskExecutionException { List inputList = (List)((DataThing)(inputs.get("inputStructures"))).getDataObject(); List matchedList = new ArrayList(); List unmatchedList= new ArrayList(); try { for (Iterator iter = inputList.iterator(); iter.hasNext(); ) { String item = (String)iter.next(); CMLChemFile file = new CMLChemFile(item); AtomContainer structure = ChemFileManipulator.getAllInOneContainer(file); if (GeometryTools.has3DCoordinates(structure)) { matchedList.add(item); } else { // not a substructure unmatchedList.add(item); } } } catch (Exception exception) { throw new TaskExecutionException(exception); } Map outputs = new HashMap(); outputs.put("matchingStructures",new DataThing(matchedList)); outputs.put("otherStructures",new DataThing(unmatchedList)); return outputs; } } --- NEW FILE: Has2DCoordinates.java --- /* $RCSfile: Has2DCoordinates.java,v $ * $Author: egonw $ * $Date: 2005/10/17 19:42:21 $ * $Revision: 1.1 $ * * Copyright (C) 2005 by Egon Willighagen <eg...@us...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.openscience.cdk.applications.taverna.filters; import org.embl.ebi.escience.scuflworkers.java.LocalWorker; import org.embl.ebi.escience.baclava.DataThing; import uk.ac.soton.itinnovation.taverna.enactor.entities.TaskExecutionException; import java.util.*; import org.openscience.cdk.applications.taverna.CMLChemFile; import org.openscience.cdk.geometry.GeometryTools; import org.openscience.cdk.interfaces.AtomContainer; import org.openscience.cdk.tools.manipulator.ChemFileManipulator; /** * Determines if the structure has a 2D coordinates. * * @author Egon Willighagen */ public class Has2DCoordinates implements LocalWorker { public String[] inputNames() { return new String[] {"inputStructures"}; } public String[] inputTypes() { return new String[] {"l('text/plain')"}; } public String[] outputNames() { return new String[] {"matchingStructures", "otherStructures"}; } public String[] outputTypes() { return new String[] {"l('text/plain')", "l('text/plain')"}; } public Map execute(Map inputs) throws TaskExecutionException { List inputList = (List)((DataThing)(inputs.get("inputStructures"))).getDataObject(); List matchedList = new ArrayList(); List unmatchedList= new ArrayList(); try { for (Iterator iter = inputList.iterator(); iter.hasNext(); ) { String item = (String)iter.next(); CMLChemFile file = new CMLChemFile(item); AtomContainer structure = ChemFileManipulator.getAllInOneContainer(file); if (GeometryTools.has2DCoordinates(structure)) { matchedList.add(item); } else { // not a substructure unmatchedList.add(item); } } } catch (Exception exception) { throw new TaskExecutionException(exception); } Map outputs = new HashMap(); outputs.put("matchingStructures",new DataThing(matchedList)); outputs.put("otherStructures",new DataThing(unmatchedList)); return outputs; } } |