Previous changeset 8:af5eccf83605 (2022-11-21) Next changeset 10:95fb5712344f (2024-08-06) |
Commit message:
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/uniprot_rest_interface commit da476148d1c609f5c26e880a3e593f0fa71ff2f6 |
modified:
test-data/test2_map.tab uniprot.py uniprot.xml |
removed:
macros.xml |
b |
diff -r af5eccf83605 -r 468c71dac78a macros.xml --- a/macros.xml Mon Nov 21 22:02:41 2022 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
b |
b'@@ -1,226 +0,0 @@\n-<macros>\n-<token name="@EXECUTABLE@">1.0</token>\n- <macro name="macro-category_FROM">\n- <param name="category_FROM" type="select" label="Choose your database category (FROM):"\n- help="Select a databse from which your ids are coming from">\n- <option value="uniprot">UniProt</option>\n- <option value="oseqdb">Other sequence databases</option>\n- <option value="3Dstrdb">3D structure databases</option>\n- <option value="ppidb">Protein-protein interaction databases</option>\n- <option value="chemistry">Chemistry</option>\n- <option value="protfgdb">Protein family/group databases</option>\n- <option value="polymorphismANDmutation">Polymorphism and mutation databases</option>\n- <option value="2DgelDB">2D gel databases</option>\n- <option value="ProtocolsMaterialsDB">Protocols and materials databases</option>\n- <option value="GenomeAnnotationDB">Genome annotation databases</option>\n- <option value="OrganismSpecificGeneDB">Organism-specific gene databases</option>\n- <option value="phylogenomic">Phylogenomic databases</option>\n- <option value="EnzymePathwayDB">Enzyme and pathway databases</option>\n- <option value="GeneExpression">Gene expression databases</option>\n- <option value="other">Other</option>\n- </param>\n- </macro>\n- <macro name="macro-category_TO">\n- <param name="category_TO" type="select" label="Choose your database category (TO):"\n- help="Select a database which will be used for mapping">\n- <option value="uniprot">UniProt</option>\n- <option value="oseqdb">Other sequence databases</option>\n- <option value="3Dstrdb">3D structure databases</option>\n- <option value="ppidb">Protein-protein interaction databases</option>\n- <option value="chemistry">Chemistry</option>\n- <option value="protfgdb">Protein family/group databases</option>\n- <option value="polymorphismANDmutation">Polymorphism and mutation databases</option>\n- <option value="2DgelDB">2D gel databases</option>\n- <option value="ProtocolsMaterialsDB">Protocols and materials databases</option>\n- <option value="GenomeAnnotationDB">Genome annotation databases</option>\n- <option value="OrganismSpecificGeneDB">Organism-specific gene databases</option>\n- <option value="phylogenomic">Phylogenomic databases</option>\n- <option value="EnzymePathwayDB">Enzyme and pathway databases</option>\n- <option value="GeneExpression">Gene expression databases</option>\n- <option value="other">Other</option>\n- </param>\n- </macro>\n- <macro name="macro-db_uniprot_FROM">\n- <param name="db_uniprot_FROM" type="select" label="Choose a database:"\n- help="">\n- <option value="ACC+ID">UniProtKB AC/ID</option>\n- <option value="ACC">UniProtKB AC</option>\n- <option value="ID">UniProtKB ID</option>\n- <option value="UPARC">UniParc</option>\n- <option value="NF50">UniRef50</option>\n- <option value="NF90">UniRef90</option>\n- <option value="NF100">UniRef100</option>\n- <option value="GENENAME">Gene name</option>\n- </param>\n- </macro>\n- <macro name="macro-db_uniprot_TO">\n- <param name="db_uniprot_TO" type="select" label="Choose a database:"\n- help="">\n- <option value="ACC">UniProtKB'..b'rganismSpecificGeneDB" type="select" label="Choose a database:"\n- help="">\n- <option value="ARACHNOSERVER_ID">ArachnoServer</option>\n- <option value="CGD">CGD</option>\n- <option value="CONOSERVER_ID">ConoServer</option>\n- <option value="DICTYBASE_ID">dictyBase</option>\n- <option value="ECHOBASE_ID">EchoBASE</option>\n- <option value="ECOGENE_ID">EcoGene</option>\n- <option value="EUHCVDB_ID">euHCVdb</option>\n- <option value="EUPATHDB_ID">EuPathDB</option>\n- <option value="FLYBASE_ID">FlyBase</option>\n- <option value="GENECARDS_ID">GeneCards</option>\n- <option value="GENEFARM_ID">GeneFarm</option>\n- <option value="GENOLIST_ID">GenoList</option>\n- <option value="H_INVDB_ID">H-InvDB</option>\n- <option value="HGNC_ID">HGNC</option>\n- <option value="HPA_ID">HPA</option>\n- <option value="LEGIOLIST_ID">LegioList</option>\n- <option value="MAIZEGDB_ID">MaizeGDB</option>\n- <option value="MIM_ID">MIM</option>\n- <option value="MGI_ID">MGI</option>\n- <option value="NEXTPROT_ID">neXtProt</option>\n- <option value="ORPHANET_ID">Orphanet</option>\n- <option value="PHARMGKB_ID">PharmGKB</option>\n- <option value="POMBASE_ID">PomBase</option>\n- <option value="PSEUDOCAP_ID">PseudoCAP</option>\n- <option value="RGD_ID">RGD</option>\n- <option value="SGD_ID">SGD</option>\n- <option value="TAIR_ID">TAIR</option>\n- <option value="TUBERCULIST_ID">TubercuList</option>\n- <option value="WORMBASE_ID">WormBase</option>\n- <option value="WORMBASE_TRS_ID">WormBase Transcript</option>\n- <option value="WORMBASE_PRO_ID">WormBase Protein</option>\n- <option value="XENBASE_ID">Xenbase</option>\n- <option value="ZFIN_ID">ZFIN</option>\n- </param>\n- </macro>\n- <macro name="macro-db_phylogenomic">\n- <param name="db_phylogenomic" type="select" label="Choose a database:"\n- help="">\n- <option value="EGGNOG_ID">eggNOG</option>\n- <option value="GENETREE_ID">GeneTree</option>\n- <option value="HOGENOM_ID">HOGENOM</option>\n- <option value="HOVERGEN_ID">HOVERGEN</option>\n- <option value="KO_ID">KO</option>\n- <option value="OMA_ID">OMA</option>\n- <option value="ORTHODB_ID">OrthoDB</option>\n- <option value="PROTCLUSTDB_ID">ProtClustDB</option>\n- <option value="TREEFAM_ID">TreeFam</option>\n- </param>\n- </macro>\n- <macro name="macro-db_EnzymePathwayDB">\n- <param name="db_EnzymePathwayDB" type="select" label="Choose a database:"\n- help="">\n- <option value="BIOCYC_ID">BioCyc</option>\n- <option value="REACTOME_ID">Reactome</option>\n- <option value="UNIPATHWAY_ID">UniPathWay</option>\n- </param>\n- </macro>\n- <macro name="macro-db_GeneExpression">\n- <param name="db_GeneExpression" type="select" label="Choose a database:"\n- help="">\n- <option value="CLEANEX_ID">CleanEx</option>\n- </param>\n- </macro>\n- <macro name="macro-db_other">\n- <param name="db_other" type="select" label="Choose a database:"\n- help="">\n- <option value="CHITARS_ID">ChiTaRS</option>\n- <option value="GENOMERNAI_ID">GenomeRNAi</option>\n- <option value="GENEWIKI_ID">GeneWiki</option>\n- <option value="NEXTBIO_ID">NextBio</option>\n- </param>\n- </macro>\n-</macros>\n' |
b |
diff -r af5eccf83605 -r 468c71dac78a test-data/test2_map.tab --- a/test-data/test2_map.tab Mon Nov 21 22:02:41 2022 +0000 +++ b/test-data/test2_map.tab Wed May 22 21:18:15 2024 +0000 |
b |
@@ -1,4 +1,4 @@ -From To -NM_001087 AAMP_HUMAN -NM_130786 A1BG_HUMAN -NM_130786 V9HWD8_HUMAN +From Entry Entry Name Reviewed Protein names Gene Names Organism Length +NM_001087 Q13685 AAMP_HUMAN reviewed Angio-associated migratory cell protein AAMP Homo sapiens (Human) 434 +NM_130786 P04217 A1BG_HUMAN reviewed Alpha-1B-glycoprotein (Alpha-1-B glycoprotein) A1BG Homo sapiens (Human) 495 +NM_130786 V9HWD8 V9HWD8_HUMAN unreviewed Epididymis secretory sperm binding protein Li 163pA HEL-S-163pA Homo sapiens (Human) 495 |
b |
diff -r af5eccf83605 -r 468c71dac78a uniprot.py --- a/uniprot.py Mon Nov 21 22:02:41 2022 +0000 +++ b/uniprot.py Wed May 22 21:18:15 2024 +0000 |
[ |
b'@@ -1,92 +1,266 @@\n-#!/usr/bin/env python\n-"""\n-uniprot python interface\n-to access the uniprot database\n-\n-Based on work from Jan Rudolph: https://github.com/jdrudolph/uniprot\n-available services:\n- map\n- retrieve\n-\n-rewitten using inspiration form: https://findwork.dev/blog/advanced-usage-python-requests-timeouts-retries-hooks/\n-"""\n import argparse\n+import json\n+import re\n import sys\n+import time\n+import zlib\n+from urllib.parse import (\n+ parse_qs,\n+ urlencode,\n+ urlparse,\n+)\n+from xml.etree import ElementTree\n \n import requests\n-from requests.adapters import HTTPAdapter\n-from requests.packages.urllib3.util.retry import Retry\n-\n-\n-DEFAULT_TIMEOUT = 5 # seconds\n-URL = \'https://legacy.uniprot.org/\'\n-\n-retry_strategy = Retry(\n- total=5,\n- backoff_factor=2,\n- status_forcelist=[429, 500, 502, 503, 504],\n- allowed_methods=["HEAD", "GET", "OPTIONS", "POST"]\n+from requests.adapters import (\n+ HTTPAdapter,\n+ Retry,\n )\n \n \n-class TimeoutHTTPAdapter(HTTPAdapter):\n- def __init__(self, *args, **kwargs):\n- self.timeout = DEFAULT_TIMEOUT\n- if "timeout" in kwargs:\n- self.timeout = kwargs["timeout"]\n- del kwargs["timeout"]\n- super().__init__(*args, **kwargs)\n+POLLING_INTERVAL = 3\n+API_URL = "https://rest.uniprot.org"\n+\n+\n+retries = Retry(total=5, backoff_factor=0.25, status_forcelist=[500, 502, 503, 504])\n+session = requests.Session()\n+session.mount("https://", HTTPAdapter(max_retries=retries))\n+\n+\n+def check_response(response):\n+ try:\n+ response.raise_for_status()\n+ except requests.HTTPError:\n+ print(response.json())\n+ raise\n+\n+\n+def submit_id_mapping(from_db, to_db, ids):\n+ print(f"{from_db} {to_db}")\n+ request = requests.post(\n+ f"{API_URL}/idmapping/run",\n+ data={"from": from_db, "to": to_db, "ids": ",".join(ids)},\n+ )\n+ check_response(request)\n+ return request.json()["jobId"]\n+\n+\n+def get_next_link(headers):\n+ re_next_link = re.compile(r\'<(.+)>; rel="next"\')\n+ if "Link" in headers:\n+ match = re_next_link.match(headers["Link"])\n+ if match:\n+ return match.group(1)\n+\n+\n+def check_id_mapping_results_ready(job_id):\n+ while True:\n+ request = session.get(f"{API_URL}/idmapping/status/{job_id}")\n+ check_response(request)\n+ j = request.json()\n+ if "jobStatus" in j:\n+ if j["jobStatus"] == "RUNNING":\n+ print(f"Retrying in {POLLING_INTERVAL}s")\n+ time.sleep(POLLING_INTERVAL)\n+ else:\n+ raise Exception(j["jobStatus"])\n+ else:\n+ return bool(j["results"] or j["failedIds"])\n+\n+\n+def get_batch(batch_response, file_format, compressed):\n+ batch_url = get_next_link(batch_response.headers)\n+ while batch_url:\n+ batch_response = session.get(batch_url)\n+ batch_response.raise_for_status()\n+ yield decode_results(batch_response, file_format, compressed)\n+ batch_url = get_next_link(batch_response.headers)\n \n- def send(self, request, **kwargs):\n- timeout = kwargs.get("timeout")\n- if timeout is None:\n- kwargs["timeout"] = self.timeout\n- return super().send(request, **kwargs)\n+\n+def combine_batches(all_results, batch_results, file_format):\n+ if file_format == "json":\n+ for key in ("results", "failedIds"):\n+ if key in batch_results and batch_results[key]:\n+ all_results[key] += batch_results[key]\n+ elif file_format == "tsv":\n+ return all_results + batch_results[1:]\n+ else:\n+ return all_results + batch_results\n+ return all_results\n+\n+\n+def get_id_mapping_results_link(job_id):\n+ url = f"{API_URL}/idmapping/details/{job_id}"\n+ request = session.get(url)\n+ check_response(request)\n+ return request.json()["redirectURL"]\n+\n+\n+def decode_results(response, file_format, compressed):\n+ if compressed:\n+ decompressed = zlib.decompress(response.content, 16 +'..b'args=\'?\', type=argparse.FileType(\'w\'),\n- default=sys.stdout, help=\'output file (default: stdout)\')\n- retrieve.add_argument(\'-f\', \'--format\', help=\'specify output format\', default=\'txt\')\n+ retrieve = subparsers.add_parser("retrieve")\n+ retrieve.add_argument(\n+ "inp",\n+ metavar="in",\n+ nargs="?",\n+ type=argparse.FileType("r"),\n+ default=sys.stdin,\n+ help="input file (default: stdin)",\n+ )\n+ retrieve.add_argument(\n+ "out",\n+ nargs="?",\n+ type=argparse.FileType("w"),\n+ default=sys.stdout,\n+ help="output file (default: stdout)",\n+ )\n+ retrieve.add_argument("-f", "--format", help="specify output format", default="txt")\n+ mapping = subparsers.add_parser("menu")\n \n args = parser.parse_args()\n \n+ # code for auto generating the from - to conditional\n+ if args.tool == "menu":\n+ from lxml import etree\n+\n+ request = session.get("https://rest.uniprot.org/configure/idmapping/fields")\n+ check_response(request)\n+ fields = request.json()\n+\n+ tos = dict()\n+ from_cond = etree.Element("conditional", name="from_cond")\n+ from_select = etree.SubElement(\n+ from_cond, "param", name="from", type="select", label="Source database:"\n+ )\n+\n+ rules = dict()\n+ for rule in fields["rules"]:\n+ rules[rule["ruleId"]] = rule["tos"]\n+\n+ for group in fields["groups"]:\n+ group_name = group["groupName"]\n+ group_name = group_name.replace("databases", "DBs")\n+ for item in group["items"]:\n+ if item["to"]:\n+ tos[item["name"]] = f"{group_name} - {item[\'displayName\']}"\n+\n+ for group in fields["groups"]:\n+ group_name = group["groupName"]\n+ group_name = group_name.replace("databases", "DBs")\n+ for item in group["items"]:\n+ if not item["from"]:\n+ continue\n+ option = etree.SubElement(from_select, "option", value=item["name"])\n+ option.text = f"{group_name} - {item[\'displayName\']}"\n+ when = etree.SubElement(from_cond, "when", value=item["name"])\n+\n+ to_select = etree.SubElement(\n+ when, "param", name="to", type="select", label="Target database:"\n+ )\n+ ruleId = item["ruleId"]\n+ for to in rules[ruleId]:\n+ option = etree.SubElement(to_select, "option", value=to)\n+ option.text = tos[to]\n+ etree.indent(from_cond, space=" ")\n+ print(etree.tostring(from_cond, pretty_print=True, encoding="unicode"))\n+ sys.exit(0)\n+\n # get the IDs from the file as sorted list\n # (sorted is convenient for testing)\n query = set()\n@@ -94,15 +268,19 @@\n query.add(line.strip())\n query = sorted(query)\n \n- if args.tool == \'map\':\n- pload = _map(query, args.f, args.t, chunk_size=100)\n- elif args.tool == \'retrieve\':\n- pload = _map(query, \'ACC+ID\', \'ACC\', args.format, chunk_size=100)\n+ if args.tool == "map":\n+ job_id = submit_id_mapping(from_db=args.f, to_db=args.t, ids=query)\n+ elif args.tool == "retrieve":\n+ job_id = submit_id_mapping(\n+ from_db="UniProtKB_AC-ID", to_db="UniProtKB", ids=query\n+ )\n \n- adapter = TimeoutHTTPAdapter(max_retries=retry_strategy)\n- http = requests.Session()\n- http.mount("https://", adapter)\n- for i, p in enumerate(pload):\n- response = http.post(**p)\n- args.out.write(response.text)\n- http.close()\n+ if check_id_mapping_results_ready(job_id):\n+ link = get_id_mapping_results_link(job_id)\n+ link = f"{link}?format={args.format}"\n+ print(link)\n+ results = get_id_mapping_results_search(link)\n+\n+ if not isinstance(results, str):\n+ results = "\\n".join(results)\n+ args.out.write(f"{results}\\n")\n' |
b |
diff -r af5eccf83605 -r 468c71dac78a uniprot.xml --- a/uniprot.xml Mon Nov 21 22:02:41 2022 +0000 +++ b/uniprot.xml Wed May 22 21:18:15 2024 +0000 |
[ |
b'@@ -1,197 +1,824 @@\n-<tool id="uniprot" name="UniProt" version="0.4">\n+<tool id="uniprot" name="UniProt" version="0.5" profile="23.1">\n <description>ID mapping and retrieval</description>\n- <macros>\n- <import>macros.xml</import>\n- </macros>\n <requirements>\n <requirement type="package" version="2.25.1">requests</requirement>\n </requirements>\n <version_command>echo "UniProt ID mapping for Galaxy in version 0.1"</version_command>\n <command detect_errors="aggressive"><![CDATA[\n-\n cut -f ${id_column} \'$infile\' > id_file.tabular &&\n \n- \'$__tool_directory__/uniprot.py\'\n-\n+ python \'$__tool_directory__/uniprot.py\'\n #if $tool.tool_choice == "retrieve":\n retrieve -f $tool.format id_file.tabular ./output\n #elif $tool.tool_choice == "map":\n map\n-\n- #if $tool.from.category_FROM == "uniprot"\n- \'${tool.from.db_uniprot_FROM}\'\n- #elif $tool.from.category_FROM == "oseqdb"\n- ${tool.from.db_oseqdb}\n- #elif $tool.from.category_FROM == "3Dstrdb"\n- ${tool.from.db_3Dstrdb}\n- #elif $tool.from.category_FROM == "ppidb"\n- ${tool.from.db_ppidb}\n- #elif $tool.from.category_FROM == "chemistry"\n- ${tool.from.db_chemistry}\n- #elif $tool.from.category_FROM == "protfgdb"\n- ${tool.from.db_protfgdb}\n- #elif $tool.from.category_FROM == "polymorphismANDmutation"\n- ${tool.from.db_polymorphismANDmutation}\n- #elif $tool.from.category_FROM == "2DgelDB"\n- ${tool.from.db_2DgelDB}\n- #elif $tool.from.category_FROM == "ProtocolsMaterialsDB"\n- ${tool.from.db_ProtocolsMaterialsDB}\n- #elif $tool.from.category_FROM == "GenomeAnnotationDB"\n- ${tool.from.db_GenomeAnnotationDB}\n- #elif $tool.from.category_FROM == "OrganismSpecificGeneDB"\n- ${tool.from.db_OrganismSpecificGeneDB}\n- #elif $tool.from.category_FROM == "phylogenomic"\n- ${tool.from.db_phylogenomic}\n- #elif $tool.from.category_FROM == "EnzymePathwayDB"\n- ${tool.from.db_EnzymePathwayDB}\n- #elif $tool.from.category_FROM == "GeneExpression"\n- ${tool.from.db_GeneExpression}\n- #elif $tool.from.category_FROM == "other"\n- ${tool.from.db_other}\n- #end if\n-\n- #if $tool.to.category_TO == "uniprot"\n- ${tool.to.db_uniprot_TO}\n- #elif $tool.to.category_TO == "oseqdb"\n- ${tool.to.db_oseqdb}\n- #elif $tool.to.category_TO == "3Dstrdb"\n- ${tool.to.db_3Dstrdb}\n- #elif $tool.to.category_TO == "ppidb"\n- ${tool.to.db_ppidb}\n- #elif $tool.to.category_TO == "chemistry"\n- ${tool.to.db_chemistry}\n- #elif $tool.to.category_TO == "protfgdb"\n- ${tool.to.db_protfgdb}\n- #elif $tool.to.category_TO == "polymorphismANDmutation"\n- ${tool.to.db_polymorphismANDmutation}\n- #elif $tool.to.category_TO == "2DgelDB"\n- ${tool.to.db_2DgelDB}\n- #elif $tool.to.category_TO == "ProtocolsMaterialsDB"\n- ${tool.to.db_ProtocolsMaterialsDB}\n- #elif $tool.to.category_TO == "GenomeAnnotationDB"\n- ${tool.to.db_GenomeAnnotationDB}\n- #elif $tool.to.category_TO == "OrganismSpecificGeneDB"\n- ${tool.to.db_OrganismSpecificGeneDB}\n- #elif $tool.to.category_TO == "phylogenomic"\n- ${tool.to.db_phylogenomic}\n- #elif $tool.to.category_TO == "EnzymePathwayDB"\n- ${tool.to.db_EnzymePathwayDB}\n- #elif $tool.to.category_TO == "GeneExpression"\n- ${tool.to.db_GeneExpression}\n- #elif $tool.to.category_TO == "other"\n- '..b' label="Target database:">\n+ <option value="UniProtKB">UniProt - UniProtKB</option>\n+ <option value="UniProtKB-Swiss-Prot">UniProt - UniProtKB/Swiss-Prot</option>\n+ </param>\n </when>\n </conditional>\n </when>\n@@ -206,58 +833,54 @@\n </inputs>\n <outputs>\n <data name="outfile_retrieve_fasta" format="fasta" from_work_dir="./output"\n- label="${tool.name} on ${on_string} (retrieve output)">\n+ label="${tool.name} on ${on_string}: fasta">\n <filter>tool[\'tool_choice\'] == \'retrieve\'</filter>\n <filter>tool[\'format\'] == \'fasta\'</filter>\n </data>\n <data name="outfile_retrieve_gff" format="gff" from_work_dir="./output"\n- label="${tool.name} on ${on_string} (retrieve output)">\n+ label="${tool.name} on ${on_string}: gff">\n <filter>tool[\'tool_choice\'] == \'retrieve\'</filter>\n <filter>tool[\'format\'] == \'gff\'</filter>\n </data>\n <data name="outfile_retrieve_txt" format="txt" from_work_dir="./output"\n- label="${tool.name} on ${on_string} (retrieve output)">\n+ label="${tool.name} on ${on_string}: txt">\n \t<filter>tool[\'tool_choice\'] == \'retrieve\'</filter>\n <filter>tool[\'format\'] == \'txt\'</filter>\n </data>\n <data name="outfile_map" format="tabular" from_work_dir="./output"\n- label="${tool.name} on ${on_string} (map output)">\n+ label="${tool.name} on ${on_string}: mapping">\n <filter>tool[\'tool_choice\'] == \'map\'</filter>\n </data>\n </outputs>\n <tests>\n- <test>\n+ <test expect_num_outputs="1">\n <param name="infile" value="id_uniprot.tab" ftype="tabular"/>\n <param name="id_column" value="c1"/>\n <param name="format" value="fasta"/>\n <param name="tool_choice" value="retrieve"/>\n <output name="outfile_retrieve_fasta" file="test1_retrieve.fasta" ftype="fasta" compare="sim_size" />\n </test>\n- <test>\n+ <test expect_num_outputs="1">\n <param name="infile" value="id_uniprot.tab" ftype="tabular"/>\n <param name="id_column" value="c1"/>\n <param name="format" value="gff"/>\n <param name="tool_choice" value="retrieve"/>\n <output name="outfile_retrieve_gff" file="test2_retrieve.gff" ftype="gff" compare="sim_size" />\n </test>\n- <test>\n+ <test expect_num_outputs="1">\n <param name="infile" value="id_uniprot.tab" ftype="tabular"/>\n <param name="id_column" value="c1"/>\n <param name="tool_choice" value="map"/>\n- <param name="category_FROM" value="uniprot"/>\n- <param name="db_uniprot_FROM" value="ID"/>\n- <param name="category_TO" value="uniprot"/>\n- <param name="db_uniprot_TO" value="GENENAME"/>\n+ <param name="from" value="UniProtKB_AC-ID"/>\n+ <param name="to" value="Gene_Name"/>\n <output name="outfile_map" file="test1_map.tab" ftype="tabular"/>\n </test>\n- <test>\n+ <test expect_num_outputs="1">\n <param name="infile" value="id_map_refseq.txt" ftype="tabular"/>\n <param name="id_column" value="c1"/>\n <param name="tool_choice" value="map"/>\n- <param name="category_FROM" value="oseqdb"/>\n- <param name="db_oseqdb" value="REFSEQ_NT_ID"/>\n- <param name="category_TO" value="uniprot"/>\n- <param name="db_uniprot_TO" value="ID"/>\n+ <param name="from" value="RefSeq_Nucleotide"/>\n+ <param name="to" value="UniProtKB"/>\n <output name="outfile_map" file="test2_map.tab" ftype="tabular"/>\n </test>\n </tests>\n' |