changeset 0:34ae5f2ae450 draft

Uploaded
author bgruening
date Thu, 15 Aug 2013 03:30:25 -0400
parents
children 0916781bc971
files osra.py osra.xml readme repository_dependencies.xml test_data/2008001635_153_chem.png test_data/2008001635_153_chem.smi test_data/CID_2244.png test_data/CID_2244.sdf tool_dependencies.xml
diffstat 9 files changed, 355 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/osra.py	Thu Aug 15 03:30:25 2013 -0400
@@ -0,0 +1,27 @@
+#!usr/bin/env python
+
+import os, sys
+import subprocess
+
+"""
+    OSRA_DATA_FILES is set during the toolshed Installation
+    If it is not set, use the standard configuration of OSRA. 
+    That means we need to delete argument 4-7.
+    That script is a hack, because we do not know the content of OSRA_DATA_FILES at xml evaluation time.
+
+    osra -f $oformat $infile 
+        -l \$OSRA_DATA_FILES/spelling.txt -a \$OSRA_DATA_FILES/superatom.txt
+        > $outfile
+"""
+
+if not os.path.exists(sys.argv[7]):
+    # OSRA_DATA_FILES path is not set or the spelling file is not existent
+    sys.argv.pop(7) # superatom.txt path
+    sys.argv.pop(6) # -a
+    sys.argv.pop(5) # speling.txt path
+    sys.argv.pop(4) # -l
+
+sys.argv[0] = 'osra'
+subprocess.call(sys.argv, stdout=sys.stdout)
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/osra.xml	Thu Aug 15 03:30:25 2013 -0400
@@ -0,0 +1,74 @@
+<tool id="ctb_osra" name="Molecule recognition" version="0.3">
+    <description>in Images or PDF documents (OSRA)</description>
+    <requirements>
+        <requirement type="package" version="2.0.0">osra</requirement>
+        <requirement type="package" version="2.3.2">openbabel</requirement>
+        <requirement type="package" version="1.3.18">graphicsmagick</requirement>
+    </requirements>
+    <command interpreter='python'>
+        ## OSRA_DATA_FILES is set during the toolshed Installation
+        ## if it is not set, use the standard configuration and hope the best
+        osra.py -f $oformat $infile 
+        -l \$OSRA_DATA_FILES/spelling.txt -a \$OSRA_DATA_FILES/superatom.txt
+        
+        ## further additions of OSRA parameter should go after -l and -a
+        ## because -l and -a can be removed by the python wrapper
+        
+        $confidence
+        $adaptive
+        $thinning
+        
+        > $outfile
+    </command>
+    <inputs>
+        <param name="infile" type="data" format="png,pdf" label="Image or PDF with molecules"/>
+        <param name="oformat" type="select" label="Output molecule format">
+            <option value="can">SMILES</option>
+            <option value="sdf">SDF</option>
+        </param>
+        <param name="confidence" type="boolean" label="Print out confidence estimate (-p)" truevalue="-p" falsevalue="" checked="true" />
+        <param name="adaptive" type="boolean" label="Adaptive thresholding pre-processing, useful for low light/low contrast images (-i)" truevalue="-i" falsevalue="" checked="false" />
+        <param name="thinning" type="boolean" label="Additional thinning/scaling down of low quality documents (-j)" truevalue="-j" falsevalue="" checked="false" />
+
+    </inputs>
+    <outputs>
+        <data name="outfile" type="data" format="sdf">
+            <change_format>
+                <when input="oformat" value="can" format="smi"/>
+            </change_format>
+        </data>
+    </outputs>
+    <tests>
+        <test>
+            <param name="infile" ftype="png" value="CID_2244.png"/>
+            <param name="oformat" value="sdf"/>
+            <output name="outfile" ftype="sdf" file="osra_on_CID2244.sdf"/>
+        </test>
+        <test>
+            <param name="infile" ftype="png" value="2008001635_153_chem.png"/>
+            <param name="oformat" value="can"/>
+            <output name="outfile" ftype="sdf" file="2008001635_153_chem.smi"/>
+        </test>
+        
+    </tests>
+    <help>
+
+.. class:: infomark
+
+**What this tool does**
+
+OSRA_ (Optical Structure Recognition Application) is a utility designed to convert graphical representations of chemical structures into SMILES or SDF. It generates the SMILES or SDF representation of any molecular structure image within a document which is parseable by GraphicMagick.
+
+.. _OSRA: http://cactus.nci.nih.gov/osra/
+
+-----
+
+.. class:: infomark
+
+**Cite**
+
+Igor V Filippov and Marc C Nicklaus - `Optical Structure Recognition Software To Recover Chemical Information: OSRA, An Open Source Solution`_
+
+.. _`Optical Structure Recognition Software To Recover Chemical Information: OSRA, An Open Source Solution`: http://pubs.acs.org/doi/abs/10.1021/ci800067r
+    </help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/readme	Thu Aug 15 03:30:25 2013 -0400
@@ -0,0 +1,20 @@
+OSRA: Optical Structure Recognition Application
+
+OSRA is a utility designed to convert graphical representations of chemical 
+structures, as they appear in journal articles, patent documents, textbooks, 
+trade magazines etc., into SMILES (Simplified Molecular Input Line Entry 
+Specification - see http://en.wikipedia.org/wiki/SMILES) or 
+SD files - a computer recognizable molecular structure format. 
+OSRA can read a document in any of the over 90 graphical formats parseable by 
+ImageMagick - including GIF, JPEG, PNG, TIFF, PDF, PS etc., and generate 
+the SMILES or SDF representation of the molecular structure images encountered 
+within that document.
+
+Note that any software designed for optical recognition is unlikely to be 
+perfect, and the output produced might, and probably will, contain errors, 
+so curation by a human knowledgeable in chemical structures is highly recommended.
+
+http://cactus.nci.nih.gov/osra/
+
+The wrapper comes with an automatic installation of all dependencies through the
+galaxy toolshed.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/repository_dependencies.xml	Thu Aug 15 03:30:25 2013 -0400
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<repositories description="This requires the Molecule datatype definitions (e.g. SMILES, InChI, SD-format).">
+    <repository changeset_revision="85eca06eefc6" name="molecule_datatypes" owner="iuc" toolshed="http://toolshed.g2.bx.psu.edu" />
+</repositories>
Binary file test_data/2008001635_153_chem.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_data/2008001635_153_chem.smi	Thu Aug 15 03:30:25 2013 -0400
@@ -0,0 +1,1 @@
+CCC(c1ccc(cc1)Br)OCCCO
Binary file test_data/CID_2244.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_data/CID_2244.sdf	Thu Aug 15 03:30:25 2013 -0400
@@ -0,0 +1,155 @@
+2244
+  -OEChem-05151212332D
+
+ 21 21  0     0  0  0  0  0  0999 V2000
+    3.7320   -0.0600    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
+    6.3301    1.4400    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
+    4.5981    1.4400    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
+    2.8660   -1.5600    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
+    4.5981   -0.5600    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    5.4641   -0.0600    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    4.5981   -1.5600    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    6.3301   -0.5600    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    5.4641   -2.0600    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    6.3301   -1.5600    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    5.4641    0.9400    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    2.8660   -0.5600    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    2.0000   -0.0600    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
+    4.0611   -1.8700    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
+    6.8671   -0.2500    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
+    5.4641   -2.6800    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
+    6.8671   -1.8700    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
+    2.3100    0.4769    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
+    1.4631    0.2500    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
+    1.6900   -0.5969    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
+    6.3301    2.0600    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
+  1  5  1  0  0  0  0
+  1 12  1  0  0  0  0
+  2 11  1  0  0  0  0
+  2 21  1  0  0  0  0
+  3 11  2  0  0  0  0
+  4 12  2  0  0  0  0
+  5  6  1  0  0  0  0
+  5  7  2  0  0  0  0
+  6  8  2  0  0  0  0
+  6 11  1  0  0  0  0
+  7  9  1  0  0  0  0
+  7 14  1  0  0  0  0
+  8 10  1  0  0  0  0
+  8 15  1  0  0  0  0
+  9 10  2  0  0  0  0
+  9 16  1  0  0  0  0
+ 10 17  1  0  0  0  0
+ 12 13  1  0  0  0  0
+ 13 18  1  0  0  0  0
+ 13 19  1  0  0  0  0
+ 13 20  1  0  0  0  0
+M  END
+> <PUBCHEM_COMPOUND_CID>
+2244
+
+> <PUBCHEM_COMPOUND_CANONICALIZED>
+1
+
+> <PUBCHEM_CACTVS_COMPLEXITY>
+212
+
+> <PUBCHEM_CACTVS_HBOND_ACCEPTOR>
+4
+
+> <PUBCHEM_CACTVS_HBOND_DONOR>
+1
+
+> <PUBCHEM_CACTVS_ROTATABLE_BOND>
+3
+
+> <PUBCHEM_CACTVS_SUBSKEYS>
+AAADccBwOAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAABAAAAGgAACAAADASAmAAyDoAABgCIAiDSCAACCAAkIAAIiAEGCMgMJzaENRqCe2Cl4BEIuYeIyCCOAAAAAAAIAAAAAAAAABAAAAAAAAAAAA==
+
+> <PUBCHEM_IUPAC_OPENEYE_NAME>
+2-acetoxybenzoic acid
+
+> <PUBCHEM_IUPAC_CAS_NAME>
+2-acetyloxybenzoic acid
+
+> <PUBCHEM_IUPAC_NAME>
+2-acetyloxybenzoic acid
+
+> <PUBCHEM_IUPAC_SYSTEMATIC_NAME>
+2-acetyloxybenzoic acid
+
+> <PUBCHEM_IUPAC_TRADITIONAL_NAME>
+2-acetoxybenzoic acid
+
+> <PUBCHEM_IUPAC_INCHI>
+InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)12/h2-5H,1H3,(H,11,12)
+
+> <PUBCHEM_IUPAC_INCHIKEY>
+BSYNRYMUTXBXSQ-UHFFFAOYSA-N
+
+> <PUBCHEM_XLOGP3>
+1.2
+
+> <PUBCHEM_EXACT_MASS>
+180.042259
+
+> <PUBCHEM_MOLECULAR_FORMULA>
+C9H8O4
+
+> <PUBCHEM_MOLECULAR_WEIGHT>
+180.15742
+
+> <PUBCHEM_OPENEYE_CAN_SMILES>
+CC(=O)OC1=CC=CC=C1C(=O)O
+
+> <PUBCHEM_OPENEYE_ISO_SMILES>
+CC(=O)OC1=CC=CC=C1C(=O)O
+
+> <PUBCHEM_CACTVS_TPSA>
+63.6
+
+> <PUBCHEM_MONOISOTOPIC_WEIGHT>
+180.042259
+
+> <PUBCHEM_TOTAL_CHARGE>
+0
+
+> <PUBCHEM_HEAVY_ATOM_COUNT>
+13
+
+> <PUBCHEM_ATOM_DEF_STEREO_COUNT>
+0
+
+> <PUBCHEM_ATOM_UDEF_STEREO_COUNT>
+0
+
+> <PUBCHEM_BOND_DEF_STEREO_COUNT>
+0
+
+> <PUBCHEM_BOND_UDEF_STEREO_COUNT>
+0
+
+> <PUBCHEM_ISOTOPIC_ATOM_COUNT>
+0
+
+> <PUBCHEM_COMPONENT_COUNT>
+1
+
+> <PUBCHEM_CACTVS_TAUTO_COUNT>
+1
+
+> <PUBCHEM_COORDINATE_TYPE>
+1
+5
+255
+
+> <PUBCHEM_BONDANNOTATIONS>
+5  6  8
+5  7  8
+6  8  8
+7  9  8
+8  10  8
+9  10  8
+
+$$$$
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_dependencies.xml	Thu Aug 15 03:30:25 2013 -0400
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<tool_dependency>
+    <package name="openbabel" version="2.3.2">
+        <repository changeset_revision="99a10425de93" name="package_openbabel_2_3" owner="iuc" prior_installation_required="True" toolshed="http://toolshed.g2.bx.psu.edu" />
+    </package>
+    <package name="graphicsmagick" version="1.3.18">
+        <repository changeset_revision="4ce7b22bf603" name="package_graphicsmagick_1_3" owner="iuc" prior_installation_required="True" toolshed="http://toolshed.g2.bx.psu.edu" />
+    </package>
+    <package name="osra" version="2.0.0">
+        <install version="1.0">
+            <actions>
+                <!-- first action is always downloading -->
+                <action type="download_by_url">http://downloads.sourceforge.net/project/osra/osra/2.0.0/osra-2.0.0.tgz</action>
+
+                <!-- populate the environment variables from the dependend repos -->
+                <action type="set_environment_for_install">
+                    <repository changeset_revision="99a10425de93" name="package_openbabel_2_3" owner="iuc" toolshed="http://toolshed.g2.bx.psu.edu">
+                        <package name="openbabel" version="2.3.2" />
+                    </repository>
+                    <repository changeset_revision="4ce7b22bf603" name="package_graphicsmagick_1_3" owner="iuc" toolshed="http://toolshed.g2.bx.psu.edu">
+                        <package name="graphicsmagick" version="1.3.18" />
+                    </repository>
+                </action>
+
+                <!--compiling potrace-1.11 -->
+                <action type="shell_command">wget http://potrace.sourceforge.net/download/potrace-1.11.tar.gz</action>
+                <action type="shell_command">tar xfvz potrace-1.11.tar.gz &amp;&amp; cd potrace-1.11 &amp;&amp; ./configure --with-libpotrace --prefix=$INSTALL_DIR/potrace/build &amp;&amp; make &amp;&amp; make install</action>
+
+                <!--compiling gocr 0.50patched -->
+                <!-- not yet possible 
+                <action type="shell_command">wget http://www-e.uni-magdeburg.de/jschulen/ocr/gocr-0.50.tar.gz</action>
+                <action type="shell_command">tar xfvz gocr-0.50.tar.gz &amp;&amp; cd gocr-0.50 &amp;&amp; ./configure -|-prefix=$INSTALL_DIR/gocr/build &amp;&amp; make libs &amp;&amp; make all install</action>
+                -->
+                <action type="shell_command">wget http://downloads.sourceforge.net/project/osra/gocr-patched/gocr-0.50pre-patched.tgz</action>
+                <action type="shell_command">tar xfvz gocr-0.50pre-patched.tgz &amp;&amp; cd gocr-0.50pre-patched &amp;&amp; ./configure --prefix=$INSTALL_DIR/gocr/build &amp;&amp; make libs &amp;&amp; make all install</action>
+
+
+                <!--compiling tclap 1.2.1 -->
+                <action type="shell_command">wget http://downloads.sourceforge.net/project/tclap/tclap-1.2.1.tar.gz</action>
+                <action type="shell_command">tar xfvz tclap-1.2.1.tar.gz &amp;&amp; cd tclap-1.2.1 &amp;&amp; ./configure --prefix=$INSTALL_DIR/tclap/build &amp;&amp; make &amp;&amp; make install</action>
+
+                <!--compiling ocrad 0.21 -->
+                <action type="shell_command">wget http://mirror.checkdomain.de/gnu/ocrad/ocrad-0.21.tar.gz</action>
+                <action type="shell_command">tar xfvz ocrad-0.21.tar.gz &amp;&amp; cd ocrad-0.21 &amp;&amp; ./configure --prefix=$INSTALL_DIR/ocrad/build &amp;&amp; make &amp;&amp; make install</action>
+
+                <!--compiling cuneiform 1.1.0 -->
+                <action type="shell_command">wget https://launchpad.net/cuneiform-linux/1.1/1.1/+download/cuneiform-linux-1.1.0.tar.bz2</action>
+                <action type="shell_command">tar xfvj cuneiform-linux-1.1.0.tar.bz2 &amp;&amp; cd cuneiform-linux-1.1.0 &amp;&amp; mkdir build &amp;&amp; cd build &amp;&amp; cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR/cuneiform/build/ &amp;&amp; make &amp;&amp; make install</action>
+
+                <!--And finally OSRA 1.4.0-->
+                <!-- Extending the PATH is needed for OSRA -->
+                <action type="shell_command">export PATH=$PATH:$GRAPHICSMAGICK_ROOT_DIR/bin/ &amp;&amp; 
+                    ./configure --with-tclap-include=$INSTALL_DIR/tclap/build/include/ --with-potrace-include=$INSTALL_DIR/potrace/build/include/ --with-potrace-lib=$INSTALL_DIR/potrace/build/lib/ --with-gocr-include=$INSTALL_DIR/gocr/build/include/gocr/ --with-gocr-lib=$INSTALL_DIR/gocr/build/lib/ --with-ocrad-include=$INSTALL_DIR/ocrad/build/include/ --with-ocrad-lib=$INSTALL_DIR/ocrad/build/lib/ --with-cuneiform-include=$INSTALL_DIR/cuneiform/build/install/include/ --with-cuneiform --with-cuneiform-lib=$INSTALL_DIR/cuneiform/build/install/lib/ --with-openbabel-include=$OPENBABEL_INCLUDE_DIR/openbabel-2.0/ --with-openbabel-lib=$OPENBABEL_LIB_DIR --with-graphicsmagick-lib=$GRAPHICSMAGICK_ROOT_DIR/lib/ --with-graphicsmagick-include=$GRAPHICSMAGICK_ROOT_DIR/include/GraphicsMagick/ --prefix=$INSTALL_DIR </action>
+                <action type="shell_command">make</action>
+                <action type="shell_command">make install</action>
+
+                <action type="shell_command">rm $INSTALL_DIR/tclap/ -r</action>
+                <!--<action type="shell_command">rm $INSTALL_DIR/openbabel/ -r</action>-->
+                <action type="shell_command">rm $INSTALL_DIR/gocr/ -r</action>
+                <action type="shell_command">rm $INSTALL_DIR/ocrad/ -r</action>
+                <action type="shell_command">rm $INSTALL_DIR/cuneiform/ -r</action>
+
+                <action type="set_environment">
+                    <environment_variable action="prepend_to" name="LD_LIBRARY_PATH">$ENV[GRAPHICSMAGICK_ROOT_DIR]/lib/</environment_variable>
+                    <environment_variable action="prepend_to" name="LD_LIBRARY_PATH">$INSTALL_DIR/potrace/build/lib/</environment_variable>
+                    <environment_variable action="prepend_to" name="PATH">$INSTALL_DIR/bin</environment_variable>
+                    <!-- OSRA_DATA_FILES is only used by the galaxy wrapper and is not part of OSRA -->
+                    <environment_variable action="set_to" name="OSRA_DATA_FILES">$INSTALL_DIR/share</environment_variable>
+                </action>
+            </actions>
+        </install>
+        <readme>We still have a handfull of requirements</readme>
+    </package>
+</tool_dependency>