changeset 8:3c1e862e8cd6 draft

Uploaded
author bernhardlutz
date Fri, 02 May 2014 05:40:28 -0400
parents 35b41070c20d
children 80bf0039c0dc
files readfile.py readfile.pyc rest_tool.py rest_tool.xml rest_tool_advanced.py rest_tool_assay_by_activity_or_target.py rest_tool_assays_with_cids_given_target.py rest_tool_macro_advanced.xml rest_tool_macros.xml
diffstat 9 files changed, 566 insertions(+), 149 deletions(-) [+]
line wrap: on
line diff
--- a/readfile.py	Thu Apr 03 06:51:54 2014 -0400
+++ b/readfile.py	Fri May 02 05:40:28 2014 -0400
@@ -17,3 +17,7 @@
     else:
         return connection.read().rstrip()
         
+def store_result(url, outfile):
+    data=getresult(url)
+    outfile.write(data)
+    outfile.close()
Binary file readfile.pyc has changed
--- a/rest_tool.py	Thu Apr 03 06:51:54 2014 -0400
+++ b/rest_tool.py	Fri May 02 05:40:28 2014 -0400
@@ -6,7 +6,7 @@
 import readfile
 
 txt_output=["cids", "aids", "sids", "synonyms" ]
-csv_output=["assaysummary"]
+csv_output=["assaysummary", "property"]
 check_for_id_type=["cids", "aids", "sids"]
 
 def main(args):
@@ -23,6 +23,8 @@
         idlist=readfile.getListFromFile(args.id_file)
         idstring=",".join(idlist)
     url+=idstring+"/"+args.operation+"/"
+    if args.operation == "property":
+        url+=args.property_value+"/"
     if args.operation in csv_output:
         url+="csv"
     elif args.operation in txt_output:
--- a/rest_tool.xml	Thu Apr 03 06:51:54 2014 -0400
+++ b/rest_tool.xml	Fri May 02 05:40:28 2014 -0400
@@ -6,17 +6,15 @@
     </requirements>
     <macros>
         <import>rest_tool_macros.xml</import>
+        <import>rest_tool_macro_advanced.xml</import>
     </macros>
     <command interpreter="python">
-        #if $choose_action.action == 'search':
-        rest_tool_search.py --type $choose_action.input_type_search --name $choose_action.search_name --outfile $output
-        
-        #elif $choose_action.action == 'specific_data':
+       #if $choose_action.action == 'specific_data':
         rest_tool.py
-            #if $choose_action.field_or_file1.field_or_file1 == 'field':
-            --id $choose_action.field_or_file1.id1 
+            #if $choose_action.field_or_file.field_or_file_select == 'field':
+            --id $choose_action.field_or_file.id_value
             #else:
-            --id-file $choose_action.field_or_file1.file_ids_1
+            --id-file $choose_action.field_or_file.id_value
             #end if
             --type $choose_action.choose_acs.input_type
             
@@ -24,43 +22,31 @@
             --operation $choose_action.choose_acs.operation_assay.operation_assay
                 #if $choose_action.choose_acs.operation_assay.operation_assay == 'property':
                     --property-value $choose_action.choose_acs.operation_assay.property_assay
-                #elif $choose_action.choose_acs.operation_assay.operation_assay == 'aids':
-                    --id-type $choose_action.choose_acs.operation_assay.aids_type_assay
-                #elif $choose_action.choose_acs.operation_assay.operation_assay == 'cids':
-                    --id-type $choose_action.choose_acs.operation_assay.cids_type_assay
-                #elif $choose_action.choose_acs.operation_assay.operation_assay == 'sids':
-                    --id-type $choose_action.choose_acs.operation_assay.sids_type_assay
+                #elif $choose_action.choose_acs.operation_assay.operation_assay == 'aids' or $choose_action.choose_acs.operation_assay.operation_assay == 'cids' or $choose_action.choose_acs.operation_assay.operation_assay == 'sids':
+                    --id-type $choose_action.choose_acs.operation_assay.ids_type_assay
                 #end if
             #elif $choose_action.choose_acs.input_type == 'compound':
             --operation $choose_action.choose_acs.operation_compound.operation_compound
                 #if $choose_action.choose_acs.operation_compound.operation_compound == 'property':
                     --property-value $choose_action.choose_acs.operation_compound.property_compound
-                #elif $choose_action.choose_acs.operation_compound.operation_compound == 'aids':
-                    --id-type $choose_action.choose_acs.operation_compound.aids_type_compound
-                #elif $choose_action.choose_acs.operation_compound.operation_compound == 'cids':
-                    --id-type $choose_action.choose_acs.operation_compound.cids_type_compound
-                #elif $choose_action.choose_acs.operation_compound.operation_compound == 'sids':
-                    --id-type $choose_action.choose_acs.operation_compound.sids_type_compound
+                #elif $choose_action.choose_acs.operation_compound.operation_compound == 'aids' or $choose_action.choose_acs.operation_compound.operation_compound == 'cids' or $choose_action.choose_acs.operation_compound.operation_compound == 'sids':
+                    --id-type $choose_action.choose_acs.operation_compound.ids_type_compound
                 #end if
             #else:
             --operation $choose_action.choose_acs.operation_substance.operation_substance
                 #if $choose_action.choose_acs.operation_substance.operation_substance == 'property':
                     --property-value $choose_action.choose_acs.operation_substance.property_substance
-                #elif $choose_action.choose_acs.operation_substance.operation_substance == 'aids':
-                    --id-type $choose_action.choose_acs.operation_substance.aids_type_substance
-                #elif $choose_action.choose_acs.operation_substance.operation_substance == 'cids':
-                    --id-type $choose_action.choose_acs.operation_substance.cids_type_substance
-                #elif $choose_action.choose_acs.operation_substance.operation_substance == 'sids':
-                    --id-type $choose_action.choose_acs.operation_substance.sids_type_substance
+                #elif $choose_action.choose_acs.operation_substance.operation_substance == 'aids' or $choose_action.choose_acs.operation_substance.operation_substance == 'cids' or $choose_action.choose_acs.operation_substance.operation_substance == 'sids':
+                    --id-type $choose_action.choose_acs.operation_substance.ids_type_substance
                 #end if
             #end if
             --outfile $output
         #elif $choose_action.action == 'compounds_for_assay':
             rest_tool_comp_for_assay.py
-            #if $choose_action.field_or_file2.field_or_file2 == 'field':
-            --aid $choose_action.field_or_file2.id2 
+            #if $choose_action.field_or_file.field_or_file_select == 'field':
+            --aid $choose_action.field_or_file.id_value
             #else:
-            --aid-file $choose_action.field_or_file2.file_ids_2
+            --aid-file $choose_action.field_or_file.id_value
             #end if
             --outfile $output
         #elif $choose_action.action == 'assays_by_activity_or_target':
@@ -72,23 +58,81 @@
                 --target-type $choose_action.activity_or_target.target_identifier_type
             #end if
             --outfile $output
-
+        #elif $choose_action.action == 'advanced':
+            rest_tool_advanced.py
+                --outfile $output
+                --type $choose_action.input_type.input_type_select
+                --id-type $choose_action.input_type.namespace_id.namespace_id_select
+                #if $choose_action.input_type.input_type_select == 'assay':
+                    #if $choose_action.input_type.namespace_id.namespace_id_select == 'aid':
+                        --id-type-ff $choose_action.input_type.namespace_id.field_or_file.field_or_file_select
+                        --id-value $choose_action.input_type.namespace_id.field_or_file.id_value
+                    #elif $choose_action.input_type.namespace_id.namespace_id_select == 'target':
+                        --id-value $choose_action.input_type.namespace_id.target_select
+                    #elif $choose_action.input_type.namespace_id.namespace_id_select == 'type':
+                        --id-value $choose_action.input_type.namespace_id.type_select
+                    #elif $choose_action.input_type.namespace_id.namespace_id_select == 'activity':
+                        --id-value $choose_action.input_type.namespace_id.activity_select
+                    #end if
+                    
+                    --operation $choose_action.input_type.operation_assay.operation_assay_select
+                    
+                    #if $choose_action.input_type.operation_assay.operation_assay_select == 'property':
+                        --operation-value $choose_action.input_type.operation_assay.operation_assay_select.property_assay
+                    #elif $choose_action.input_type.operation_assay.operation_assay_select == 'target':
+                        --operation-value $choose_action.input_type.operation_assay.operation_assay_select.target_assay
+                    #elif $choose_action.input_type.operation_assay.operation_assay_select == 'aids' or $choose_action.input_type.operation_assay.operation_assay_select == 'cids' or $choose_action.input_type.operation_assay.operation_assay_select == 'sids':
+                        --ids-operation-type $choose_action.input_type.operation_assay.ids_type_assay
+                    #end if
+                #elif $choose_action.input_type.input_type_select == 'compound':
+                    #if $choose_action.input_type.namespace_id.namespace_id_select == 'cid' or $choose_action.input_type.namespace_id.namespace_id_select == 'name' or $choose_action.input_type.namespace_id.namespace_id_select == 'smiles' or $choose_action.input_type.namespace_id.namespace_id_select == 'inchi' or $choose_action.input_type.namespace_id.namespace_id_select == 'inchikey' or $choose_action.input_type.namespace_id.namespace_id_select == 'sdf':
+                        --id-type-ff $choose_action.input_type.namespace_id.field_or_file.field_or_file_select
+                        --id-value $choose_action.input_type.namespace_id.field_or_file.id_value 
+                    #elif $choose_action.input_type.namespace_id.namespace_id_select == 'xref':
+                        --xref $choose_action.input_type.namespace_id.xref_select
+                        --xref-value $choose_action.input_type.namespace_id.xref_value
+                    #end if
+                    
+                    --operation $choose_action.input_type.operation_compound.operation_compound_select
+                    #if $choose_action.input_type.operation_compound.operation_compound_select == 'property':
+                        --operation-value $choose_action.input_type.operation_compound.property_compound
+                    #elif $choose_action.input_type.operation_compound.operation_compound_select == 'xrefs':
+                        --operation-value $choose_action.input_type.operation_compound.xref_compound
+                    #elif $choose_action.input_type.operation_compound.operation_compound_select == 'aids' or $choose_action.input_type.operation_compound.operation_compound_select == 'cids' or $choose_action.input_type.operation_compound.operation_compound_select == 'sids':
+                        --ids-operation-type $choose_action.input_type.operation_compound.ids_type_compound
+                    #end if
+                    
+                #elif $choose_action.input_type.input_type_select == 'substance':
+                    #if $choose_action.input_type.namespace_id.namespace_id_select == 'sid' or $choose_action.input_type.namespace_id.namespace_id_select == 'name':
+                            --id-type-ff $choose_action.input_type.namespace_id.field_or_file.field_or_file_select
+                            --id-value $choose_action.input_type.namespace_id.field_or_file.id_value
+                    #elif $choose_action.input_type.namespace_id.namespace_id_select == 'xrefs':
+                        --xref $choose_action.input_type.namespace_id.xref_select
+                        --xref-value $choose_action.input_type.namespace_id.xref_value
+                    #end if
+                    --operation $choose_action.input_type.operation_substance.operation_substance_select
+                     #if $choose_action.input_type.operation_substance.operation_substance_select == 'property':
+                        --operation-value $choose_action.input_type.operation_substance.operation_substance_select.property_substance
+                    #elif $choose_action.input_type.operation_substance.operation_substance_select == 'xref':
+                        --operation-value $choose_action.input_type.operation_substance.xref_substance
+                    #elif $choose_action.input_type.operation_substance.operation_substance_select == 'aids' or $choose_action.input_type.operation_substance.operation_substance_select == 'cids' or $choose_action.input_type.operation_substance.operation_substance_select == 'sids':
+                        --ids-operation-type $choose_action.input_type.operation_substance.ids_type_substance
+                    #end if
+                #end if
         #end if
     </command>
 
     <inputs>
         <conditional name="choose_action">
             <param name="action" multiple="false" type="select" label="Choose action">
-                <option value="search">Search for Assay/Compound/Substance</option>
                 <option value="specific_data">Get Data for specific Assay/Compound/Substance</option>
                 <option value="compounds_for_assay">Get all compound IDs given BioAssay IDs</option>
                 <option value="assays_by_activity_or_target">Get BioAssay IDs given activity/target</option>
+                <option value="advanced" selected="True">Advanced</option>
             </param>
             <when value="search">
                     <param name="input_type_search" multiple="false" type="select" label="Search for">
-                        <option value="assay">BioAssay</option>
-                        <option value="compound">Compound</option>
-                        <option value="substance">Substance</option>
+                        <expand macro="acs_options" />
                     </param>
                     <param name="input_type" multiple="false" type="select" label="Search By">
                         <option value="name">Name</option>
@@ -96,128 +140,26 @@
                     <param format="txt" name="search_name" type="text" label="Enter the Name" />
             </when>
             <when value="specific_data">
-                <conditional name="field_or_file1">
-                        <param name="field_or_file1" multiple="false" type="select" label="Specify the ID by">
-                            <option value="field" selected="True">Textfield</option>
-                            <option value="file">File</option>
-                        </param>
-                        <when value="field">
-                            <param format="txt" name="id1" type="text" label="Enter the ID(s)" />
-                        </when>
-                        <when value="file">
-                            <param format="txt,csv" name="file_ids_1" type="data" label="Give the file" />
-                        </when>
-                </conditional>
+                <expand macro="field_or_file" />
                 <conditional name="choose_acs">
                     <param name="input_type" multiple="false" type="select" label="Input Type">
-                        <option value="assay">BioAssay</option>
-                        <option value="compound">Compound</option>
-                        <option value="substance">Substance</option>
+                        <expand macro="acs_options" />
                     </param>
         
                     <when value="assay">
-                        <conditional name="operation_assay">
-                            <param name="operation_assay" type="select" multiple="false" label="Operation">
-                                <expand macro="aid_cid_sid" />
-                                <option value="record">Record</option>
-                                <option value="classification">Classification</option>
-                                <option value="property">Property</option>
-                                <option value="description">Discription</option>
-                                <option value="summary">Summary</option>
-                            </param>
-                            <when value="property">
-                                <param name="property_assay" label="Specify Property" type="text" />
-                            </when>
-                            <when value="aids">
-                                <param name="aids_type_assay" multiple="false" type="select" label="AID Type">
-                                    <expand macro="aids_when_options" />
-                                </param>
-                            </when>
-                            <when value="cids">
-                                <param name="cids_type_assay" multiple="false" type="select" label="CID Type">
-                                    <expand macro="aids_when_options" />
-                                    
-                                </param>
-                            </when>
-                            <when value="sids">
-                                <param name="sids_type_assay" multiple="false" type="select" label="SID Type">
-                                    <expand macro="aids_when_options" />
-                                    <option value="doseresponse">doseresponse</option>
-                                </param>
-                            </when>
-                        </conditional>
+                        <expand macro="conditional_operation_assay" />
                     </when>
                     <when value="compound">
-                        <conditional name="operation_compound">
-                            <param name="operation_compound" type="select" multiple="false" label="Operation">
-                                <expand macro="aid_cid_sid" />
-                                <expand macro="option_compound_substance" />
-                                <option value="property">Property</option>
-                            </param>
-                            <when value="property">
-                                <param name="property_compound" label="Specify Property" type="text" />
-                            </when>
-                            <when value="aids">
-                                <param name="aids_type_compound" multiple="false" type="select" label="AID Type">
-                                    <expand macro="aids_when_options" />
-                                </param>
-                            </when>
-                            <when value="sids">
-                                <param name="sids_type_compound" multiple="false" type="select" label="SID Type">
-
-                                    <expand macro="cid_sid_type_options" />
-                                </param>
-                            </when>
-                            <when value="cids">
-                                <param name="cids_type_compound" multiple="false" type="select" label="CID Type">
-                                    <expand macro="cid_cid_type_options" />
-                                </param>
-                            </when>
-                        </conditional>
+                        <expand macro="conditional_operation_compound" />
                     </when>
                     <when value="substance">
-                        <conditional name="operation_substance">
-                            <param name="operation_substance" type="select" multiple="false" label="Operation">
-                                <expand macro="aid_cid_sid" />
-                                <expand macro="option_compound_substance" />
-                            </param>
-                            <when value="property">
-                                <param name="property_substance" label="Specify Property" type="text" />
-                            </when>
-                            <when value="aids">
-                                <param name="aids_type_substance" multiple="false" type="select" label="AID Type">
-                                    <expand macro="aids_when_options" />
-                                </param>
-                            </when>
-                            <when value="cids">
-                                <param name="cids_type_substance" multiple="false" type="select" label="CID Type">
-                                    <expand macro="sid_cid_type_options" />
-                                </param>
-                            </when>
-                            <when value="sids">
-                                <param name="sids_type_substance" multiple="false" type="select" label="SID Type">
-                                    <expand macro="sid_sid_type_options" />
-                                </param>
-                            </when>
-                            
-                        </conditional>
+                        <expand macro="conditional_operation_substance" />
                     </when>
                 </conditional>
             </when>
             <!-- second option -->
             <when value="compounds_for_assay">
-                <conditional name="field_or_file2">
-                    <param name="field_or_file2" multiple="false" type="select" label="Specify the ID by">
-                        <option value="field">Textfield</option>
-                        <option value="file">File</option>
-                    </param>
-                    <when value="field">
-                        <param format="txt" name="id2" type="text" label="Enter the ID(s)" />
-                    </when>
-                    <when value="file">
-                        <param format="txt,csv" name="file_ids_2" type="data" label="Give the file" />
-                    </when>
-                </conditional>
+                <expand macro="field_or_file" />
             </when>
             <!-- third option -->
             <when value="assays_by_activity_or_target">
@@ -240,7 +182,9 @@
                     </when>
                 </conditional>
             </when>
-            
+            <when value="advanced">
+                <expand macro="advanced2" />
+            </when>
         </conditional>
     </inputs>
     <outputs>
@@ -251,6 +195,6 @@
     <help>
 **What it does**
 
-This tool fetches data from pubchem
+This tool fetches data from pubchem. The outputformat will be if possible csv > txt > xml
     </help>
 </tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rest_tool_advanced.py	Fri May 02 05:40:28 2014 -0400
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+
+import sys, os
+import argparse
+
+import readfile
+
+#dicitionary for the output format
+
+dict_output={"cids" :"txt", "aids" : "txt", "sids" : "txt", "description": "xml", "summary" : "xml", "record" : "csv", "classification": "xml", "targets" : "txt", "xrefs" : "txt", "synonyms" : "txt", "property": "csv" }
+
+#alles andere ist xml
+check_for_id_type=["cids", "aids", "sids"]
+
+id_dict={"compound": "cid", "assay": "aid", "substance" : "sid" }
+
+def getListString(args):
+    if args.id_type_ff == "file":
+        #build comma list
+        list_string=",".join(getListFromFile(open(args.id_value,"r")))
+    else:
+        list_string=args.id_value
+    return list_string
+
+
+def main(args):
+
+    url="http://pubchem.ncbi.nlm.nih.gov/rest/pug/"+args.type+"/"
+    url+=args.id_type+"/"
+    if args.id_type ==id_dict[args.type]:
+        url+=getListString(args)+"/"
+    else:
+        url+=args.id_value+"/"
+    url+=args.operation+"/"
+    if args.operation == "target" or args.operation == "property" or args.operation == "xrefs":
+        url+=args.operation_value+"/"
+    
+    url+=dict_output[args.operation]
+    if args.operation in check_for_id_type:
+            url+="?"+args.operation+"_type="+args.ids_operation_type
+    print(url)
+    readfile.store_result(url, args.outfile)
+    
+    
+    
+    
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument('--type', type=str, required=True,
+        help="That you want BioAssay Compund ...")
+    parser.add_argument('--id-type', type=str,
+        help="Specify the ID type")
+    parser.add_argument('--operation', type=str, required=True,
+        help="Specify the operation")
+    parser.add_argument('--operation-value', dest="operation_value", type=str, required=False,
+        help="Specify the additional operation value")
+    parser.add_argument('--xref-operation-value', dest="xref_operation_value", type=str, required=False,
+        help="Specify the xref operation ")
+    parser.add_argument('--ids-operation-type', dest="ids_operation_type", type=str, required=False,
+        help="all inactive ...")
+    parser.add_argument('--xref', dest="xref", type=str,
+        help="use xref to identify the searched thing")
+    parser.add_argument('--xref-value', dest="xref_value", type=str,
+        help="Specify the xref")
+    parser.add_argument('--property-value', dest="property_value", type=str,
+        help="Specify the property value")
+    parser.add_argument('--id-type-ff', dest="id_type_ff", type=str,
+        help="file or field")
+    parser.add_argument('--id-value', dest="id_value", type=str, required=True,
+        help="Specify the id")
+    parser.add_argument('--outfile', type=argparse.FileType('w'), required=True,
+        help="Specify the output file")
+
+
+    if len(sys.argv) < 8:
+        print "Too few arguments..."
+        parser.print_help()
+        exit(1)
+    args = parser.parse_args()
+    main( args )
--- a/rest_tool_assay_by_activity_or_target.py	Thu Apr 03 06:51:54 2014 -0400
+++ b/rest_tool_assay_by_activity_or_target.py	Fri May 02 05:40:28 2014 -0400
@@ -9,7 +9,7 @@
     url="http://pubchem.ncbi.nlm.nih.gov/rest/pug/assay/"
     if args.activity is None:
         #target
-        url+="target/"+args.targettype+"/"+args.targetid
+        url+= "target/%s/%s" % ( args.targettype, args.targetid )
     else:
         url+="activity/"+args.activity
     url+="/aids/txt"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rest_tool_assays_with_cids_given_target.py	Fri May 02 05:40:28 2014 -0400
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+
+
+import sys, os
+import argparse
+import readfile
+
+#get every aid as a list
+#returns a dictionary with aid as key and as value the list of cids
+def getAllAssayIDs():
+    url="http://pubchem.ncbi.nlm.nih.gov/rest/pug/assay/type/all/aids/TXT"
+    data=readfile.getresult(url)
+    aidlist=readfile.getListFromString(data)
+    return aidlist
+
+
+def getIDofLine(line):
+    arr=line.split(">")
+    if len(arr) > 1:
+        aid=arr[1].split("<")[0]
+        return aid
+    else:
+        return "-1"
+        
+#get xml of all aids with cids for an activity
+def getAllCidsForAssayActivity(activity):
+    url="http://pubchem.ncbi.nlm.nih.gov/rest/pug/assay/activity/"+activity+"/aids/txt?list_return=listkey"
+    listkey=readfile.getresult(url)
+#    url="http://pubchem.ncbi.nlm.nih.gov/rest/pug/assay/listkey/"+listkey+"/cids/xml"
+    url="http://pubchem.ncbi.nlm.nih.gov/rest/pug/assay/aid/25425,12345/cids/xml"
+    print("url: "+url)
+    xml=readfile.getresult(url)
+    
+    #init parser
+    handler = DictHandler() 
+    parser = sax.make_parser() 
+    parser.setContentHandler(handler) 
+
+    tempfile=open("tempfile","w")
+    #handle the last line, there is sometimes some random output
+    lastline_arr=xml.split("\n")
+    #print(lastline_arr)
+    
+    print("l: ")
+    print(len(lastline_arr))
+    lastline=lastline_arr[len(lastline_arr)-1]
+    print("lastline: "+lastline)
+    print("lastline-2: "+lastline_arr[len(lastline_arr)-2])
+    cidlastline=getIDofLine(lastline)
+    aidkey="-1"
+    if cidlastline != "-1":
+        i=len(lastline_arr)-2
+        #search for nex aid entry
+        while i >= 0 and "AID" not in lastline_arr[i]:
+            i-=1
+        if i >= 0:
+            aid=getIDofLine(lastline_arr[i])
+            if aid != "-1":
+                aidkey=aid
+    #remove the last line and put the array back together
+    
+    lastline_arr_list=list(lastline_arr)
+    #lastline_arr_list.remove(lastline)
+    xml2="\n".join(lastline_arr_list)
+    tempfile.write(xml2)
+    #add the last tags
+    #tempfile.write("</Information></InformationList>")
+    tempfile.close()
+    parser.parse(open("tempfile","r"))
+    dic=handler.ergebnis
+    
+    #add the last line
+    #if cidlastline != "-1":
+    #    dic[aidkey].append(cidlastline)
+    return dic
+
+
+def main(args):
+    aid_cid_dict=getAllCidsForAssayActivity(args.target)
+    write_to_csv(aid_cid_dict, args.outfile)
+    
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument('--outfile', type=argparse.FileType('w'),
+        help="Specify output file")
+    parser.add_argument('--target', type=str,
+        help="Specify output file")
+    if len(sys.argv) < 2:
+        print "Too few arguments..."
+        parser.print_help()
+        exit(1)
+    args = parser.parse_args()
+    main( args )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rest_tool_macro_advanced.xml	Fri May 02 05:40:28 2014 -0400
@@ -0,0 +1,109 @@
+<macros>
+    <xml name="advanced2">
+        <conditional name="input_type">
+            <param name="input_type_select" multiple="false" type="select" label="What are you looking for?">
+                <expand macro="acs_options" />
+            </param>
+            <when value="assay">
+                <conditional name="namespace_id">
+                <param name="namespace_id_select" multiple="false" type="select" label="Choose data by">
+                    <option value="aid">aid</option>
+                    <option value="type">type</option>
+                    <option value="target">target</option>
+                    <option value="activity">activity</option>
+                </param>
+                    <when value="aid">
+                        <expand macro="field_or_file" />
+                    </when>
+                    <when value="type">
+                        <param name="type_select" multiple="false" type="select" label="Choose type">
+                            <option value="all">all</option>
+                            <option value="confirmatory">confirmatory</option>
+                            <option value="doseresponse">doseresponse</option>
+                            <option value="onhold">onhold</option>
+                            <option value="panel">panel</option>
+                            <option value="rnai">rnai</option>
+                            <option value="screening">screening</option>
+                            <option value="summary">summary</option>
+                        </param>
+                    </when>
+                    <when value="target">
+                        <param name="target_select" multiple="false" type="select" label="Choose target">
+                            <option value="gi">gi</option>
+                            <option value="geneid">geneid</option>
+                            <option value="genesymbol">genesymbol</option>
+                        </param>
+                    </when>
+                    <when value="activity">
+                    <!-- known activity: ic50, ec50, ac50, gi50 -->
+                        <param name="activity_select" multiple="false" type="select" label="Choose activity">
+                            <option value="ic50">IC50</option>
+                            <option value="ec50">EC50</option>
+                            <option value="ac50">AC50</option>
+                            <option value="gi50">GI50</option>
+                        </param>
+                    </when>
+                
+                </conditional>
+                
+                <expand macro="conditional_operation_assay" />
+            </when>
+            <when value="substance">
+                <conditional name="namespace_id">
+                <param name="namespace_id_select" multiple="false" type="select" label="Choose data by">
+                    <option value="sid">sid</option>
+                    <option value="name">name</option>
+                    <option value="xref">xref</option>
+                </param>
+                <when value="xref">
+                    <expand macro="xref_select" />
+                    <param name="xref_value" type="text" label="Enter xref" />
+                </when>
+                <when value="sid">
+                    <expand macro="field_or_file" />
+                </when>
+                <when value="name">
+                    <expand macro="field_or_file" />
+                </when>
+                </conditional>
+                <expand macro="conditional_operation_substance" />
+            </when>
+            <when value="compound">
+                <conditional name="namespace_id">
+                <param name="namespace_id_select" multiple="false" type="select" label="Choose data by">
+                    <option value="cid">cid</option>
+                    <option value="name">name</option>
+                    <option value="smiles">smiles</option>
+                    <option value="inchi">inchi</option>
+                    <option value="sdf">sdf</option>
+                    <option value="inchikey">inchikey</option>
+                    <option value="xref">xref</option>
+                </param>
+                <when value="xref">
+                    <expand macro="xref_select" />
+                    <param name="xref_value" type="text" label="Enter xref" />
+                </when>
+                <when value="cid">
+                    <expand macro="field_or_file" />
+                </when>
+                <when value="name">
+                    <expand macro="field_or_file" />
+                </when>
+                <when value="smiles">
+                    <expand macro="field_or_file" />
+                </when>
+                <when value="inchi">
+                    <expand macro="field_or_file" />
+                </when>
+                <when value="inchikey">
+                    <expand macro="field_or_file" />
+                </when>
+                <when value="sdf">
+                    <expand macro="field_or_file" />
+                </when>
+                </conditional>
+                <expand macro="conditional_operation_compound" />
+            </when>
+        </conditional>
+    </xml>
+</macros>
--- a/rest_tool_macros.xml	Thu Apr 03 06:51:54 2014 -0400
+++ b/rest_tool_macros.xml	Fri May 02 05:40:28 2014 -0400
@@ -4,7 +4,11 @@
         <option value="cids">CIDs</option>
         <option value="sids">SIDs</option>
     </xml>
-    
+    <xml name="acs_options">
+        <option value="assay">BioAssay</option>
+        <option value="compound">Compound</option>
+        <option value="substance">Substance</option>
+    </xml>
     <xml name="cid_sid_type_options">
         <option value="all">all</option>
         <option value="standardized">standardized</option>
@@ -57,10 +61,191 @@
         <option value="synonyms">Synonyms</option>
         <option value="record">Record</option>
         <option value="classification">Classification</option>
-        <option value="property">Property</option>
         <option value="description">Discription</option>
+        <option value="xrefs">Xrefs</option>
+    </xml>
+    <xml name="compound_properties">
+    <param name="property_compound" type="select" multiple="true" label="Specify Property">
+        <option value="MolecularFormula">MolecularFormula</option>
+        <option value="MolecularWeight">MolecularWeight</option>
+        <option value="CanonicalSMILES">CanonicalSMILES</option>
+        <option value="IsomericSMILES">IsomericSMILES</option>
+        <option value="InChI">InChI</option>
+        <option value="InChIKey">InChIKey</option>
+        <option value="IUPACName">IUPACName</option>
+        <option value="XLogP">XLogP</option>
+        <option value="ExactMass">ExactMass</option>
+        <option value="MonoisotopicMass">MonoisotopicMass</option>
+        <option value="TPSA">TPSA</option>
+        <option value="Complexity">Complexity</option>
+        <option value="Charge">Charge</option>
+        <option value="HBondDonorCount">HBondDonorCount</option>
+        <option value="HBondAcceptorCount">HBondAcceptorCount</option>
+        <option value="RotatableBondCount">RotatableBondCount</option>
+        <option value="HeavyAtomCount">HeavyAtomCount</option>
+        <option value="IsotopeAtomCount">IsotopeAtomCount</option>
+        <option value="AtomStereoCount">AomStereoCount</option>
+        <option value="DefinedAtomStereoCount">DefinedAtomStereoCount</option>
+        <option value="UndefinedAtomStereoCount">UndefinedAtomStereoCount</option>
+        <option value="BondStereoCount">BondStereoCount</option>
+        <option value="DefinedBondStereoCount">DefinedBondStereoCount</option>
+        <option value="UndefinedBondStereoCount">UndefinedBondStereoCount</option>
+        <option value="CovalentUnitCount">CovalentUnitCount</option>
+        <option value="Volume3D">lume3D</option>
+        <option value="XStericQuadrupole3D">XStericQuadrupole3D</option>
+        <option value="YStericQuadrupole3D">YStericQuadrupole3D</option>
+        <option value="ZStericQuadrupole3D">ZStericQuadrupole3D</option>
+        <option value="FeatureCount3D">FeatureCount3D</option>
+        <option value="FeatureAcceptorCount3D">FeatureAcceptorCount3D</option>
+        <option value="FeatureDonorCount3D">FeatureDonorCount3D</option>
+        <option value="FeatureAnionCount3D">FeatureAnionCount3D</option>
+        <option value="FeatureCationCount3D">FeatureCationCount3D</option>
+        <option value="FeatureRingCount3D">FeatureRingCount3D</option>
+        <option value="FeatureHydrophobeCount3D">FeatureHydrophobeCount3D</option>
+        <option value="ConformerModelRMSD3D">ConformerModelRMSD3D</option>
+        <option value="EffectiveRotorCount3D">EffectiveRotorCount3D</option>
+        <option value="ConformerCount3D">ConformerCount3D</option>
+    </param>
+    </xml>
+    <xml name="xref_select">
+        <param name="xref_compound_select" label="Choose Xrefs" multiple="true" type="select">
+            <expand macro="xref_options" />
+        </param>
+    </xml>
+
+    <xml name="xref_options">
+        <option value="RegistryID">external registry identifier</option>
+        <option value="RN">registry number</option>
+        <option value="PubMedID">NCBI PubMed identifier</option>
+        <option value="MMDBID">NCBI MMDB identifier</option>
+        <option value="DBURL">external database home page URL</option>
+        <option value="SBURL">external database substance URL</option>
+        <option value="ProteinGI">NCBI protein GI</option>
+        <option value="NucleotideGI">NCBI nucleotide GI</option>
+        <option value="TaxonomyID">NCBI taxonomy identifier</option>
+        <option value="MIMID NCBI">MIM identifier</option>
+        <option value="GeneID NCBI">gene identifier</option>
+        <option value="ProbeID NCBI">probe identifier</option>
+        <option value="PatentID">patent identifier</option>
+        <option value="SourceName">external depositor name</option>
+        <option value="SourceCategory">depositor category(ies)</option>
+    </xml>
+    <xml name="field_or_file">
+        <conditional name="field_or_file">
+            <param name="field_or_file_select" multiple="false" type="select" label="Specify Identifiers by">
+                <option value="field">Textfield</option>
+                <option value="file">File</option>
+            </param>
+            <when value="field">
+                <param format="txt" name="id_value" type="text" area="true" size="10x40" label="Enter the Identifiers (one per line)" />
+            </when>
+            <when value="file">
+                <param format="txt,csv" name="id_value" type="data" label="Select file" />
+            </when>
+        </conditional>
     </xml>
-    
+    <xml name="conditional_operation_compound">
+        <conditional name="operation_compound">
+                            <param name="operation_compound_select" type="select" multiple="false" label="Operation">
+                                <expand macro="aid_cid_sid" />
+                                <expand macro="option_compound_substance" />
+                                <option value="property">Property</option>
+                            </param>
+                            <when value="property">
+                                <expand macro="compound_properties" />
+                            </when>
+                            <when value="xrefs">
+                                <param name="xref_compound" label="Choose Xrefs" multiple="true" type="select">
+                                    <expand macro="xref_options" />
+                                </param>
+                            </when>
+                            <when value="aids">
+                                <param name="ids_type_compound" multiple="false" type="select" label="AID Type">
+                                    <expand macro="aids_when_options" />
+                                </param>
+                            </when>
+                            <when value="sids">
+                                <param name="ids_type_compound" multiple="false" type="select" label="SID Type">
+                                    <expand macro="cid_sid_type_options" />
+                                </param>
+                            </when>
+                            <when value="cids">
+                                <param name="ids_type_compound" multiple="false" type="select" label="CID Type">
+                                    <expand macro="cid_cid_type_options" />
+                                </param>
+                            </when>
+        </conditional>
+    </xml>
+    <xml name="conditional_operation_assay">
+    <conditional name="operation_assay">
+                            <param name="operation_assay_select" type="select" multiple="false" label="Operation">
+                                <expand macro="aid_cid_sid" />
+                                <option value="record">Record</option>
+                                <option value="classification">Classification</option>
+                                <option value="xrefs">Xrefs</option>
+                                <option value="description">Discription</option>
+                                <option value="summary">Summary</option>
+                                <option value="targets">Targets</option>
+                            </param>
+                            <when value="xrefs">
+                                <param name="property_assay" label="Specify Property" type="text" />
+                            </when>
 
- 
+                            <when value="targets">
+                                <param name="target_assay" label="Specify Target" type="select" multiple="true">
+                                    <option value="ProteinGI">NCBI GI of a protein sequence</option>
+                                    <option value="ProteinName">Protein Name</option>
+                                    <option value="GeneID">NCBI Gene database identifier</option>
+                                    <option value="GeneSymbol">Gene Symbol</option>
+                                </param>
+                            </when>
+                            <when value="aids">
+                                <param name="ids_type_assay" multiple="false" type="select" label="AID Type">
+                                    <expand macro="aids_when_options" />
+                                </param>
+                            </when>
+                            <when value="cids">
+                                <param name="ids_type_assay" multiple="false" type="select" label="CID Type">
+                                    <expand macro="aids_when_options" />
+                                    
+                                </param>
+                            </when>
+                            <when value="sids">
+                                <param name="ids_type_assay" multiple="false" type="select" label="SID Type">
+                                    <expand macro="aids_when_options" />
+                                    <option value="doseresponse">doseresponse</option>
+                                </param>
+                            </when>
+                        </conditional>
+    </xml>
+    <xml name="conditional_operation_substance">
+    <conditional name="operation_substance">
+                            <param name="operation_substance_select" type="select" multiple="false" label="Operation">
+                                <expand macro="aid_cid_sid" />
+                                <expand macro="option_compound_substance" />
+                            </param>
+
+                            <when value="xrefs">
+                                <param name="xref_substance" label="Choose Xrefs" multiple="true" type="select">
+                                    <expand macro="xref_options" />
+                                </param>
+                            </when>
+                            <when value="aids">
+                                <param name="ids_type_substance" multiple="false" type="select" label="AID Type">
+                                    <expand macro="aids_when_options" />
+                                </param>
+                            </when>
+                            <when value="cids">
+                                <param name="ids_type_substance" multiple="false" type="select" label="CID Type">
+                                    <expand macro="sid_cid_type_options" />
+                                </param>
+                            </when>
+                            <when value="sids">
+                                <param name="ids_type_substance" multiple="false" type="select" label="SID Type">
+                                    <expand macro="sid_sid_type_options" />
+                                </param>
+                            </when>
+                            
+                        </conditional>
+    </xml>
 </macros>