Previous changeset 61:e7a6f7a7148d (2024-03-26) Next changeset 63:ac00dcfb5d1d (2024-03-28) |
Commit message:
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 2b6d4a24585beb1ba5055e5d34aacb3b299b1943-dirty |
modified:
autogenJB2.py jbrowse2.py jbrowse2.xml macros.xml |
added:
Galaxy-Workflow-_jb2testWF_mar26.ga test-data/blastxml/blast-gene1.xml test-data/blastxml/blast.xml test-data/blastxml/blastn-gene1.xml test-data/blastxml/merlin.gff test-data/bw/data.bw test-data/cram/merlin-sample.cram test-data/gff3/merlin.gff test-data/vcf/test.vcf test-data/xmfa.gff tool_data_table_conf.xml.test |
removed:
__pycache__/jbrowse2.cpython-310.pyc jbrowse2broken.py jbrowse2broken.xml macrosbroken.xml |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f Galaxy-Workflow-_jb2testWF_mar26.ga --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Galaxy-Workflow-_jb2testWF_mar26.ga Thu Mar 28 04:51:06 2024 +0000 |
[ |
b'@@ -0,0 +1,331 @@\n+{\n+ "a_galaxy_workflow": "true",\n+ "annotation": "",\n+ "comments": [],\n+ "format-version": "0.1",\n+ "name": "\'jb2testWF_mar26",\n+ "steps": {\n+ "0": {\n+ "annotation": "",\n+ "content_id": null,\n+ "errors": null,\n+ "id": 0,\n+ "input_connections": {},\n+ "inputs": [\n+ {\n+ "description": "",\n+ "name": "Merlin"\n+ }\n+ ],\n+ "label": "Merlin",\n+ "name": "Input dataset",\n+ "outputs": [],\n+ "position": {\n+ "left": 0,\n+ "top": 0\n+ },\n+ "tool_id": null,\n+ "tool_state": "{\\"optional\\": false, \\"tag\\": null}",\n+ "tool_version": null,\n+ "type": "data_input",\n+ "uuid": "60c939a2-b9c9-47cd-9ef4-6415e87a1680",\n+ "when": null,\n+ "workflow_outputs": []\n+ },\n+ "1": {\n+ "annotation": "",\n+ "content_id": null,\n+ "errors": null,\n+ "id": 1,\n+ "input_connections": {},\n+ "inputs": [\n+ {\n+ "description": "",\n+ "name": "merlin.bw"\n+ }\n+ ],\n+ "label": "merlin.bw",\n+ "name": "Input dataset",\n+ "outputs": [],\n+ "position": {\n+ "left": 0,\n+ "top": 102\n+ },\n+ "tool_id": null,\n+ "tool_state": "{\\"optional\\": false, \\"tag\\": null}",\n+ "tool_version": null,\n+ "type": "data_input",\n+ "uuid": "97251b21-c6c4-4ef9-b985-0cf90f1d2f75",\n+ "when": null,\n+ "workflow_outputs": []\n+ },\n+ "2": {\n+ "annotation": "",\n+ "content_id": null,\n+ "errors": null,\n+ "id": 2,\n+ "input_connections": {},\n+ "inputs": [\n+ {\n+ "description": "",\n+ "name": "merlinlastz.maf"\n+ }\n+ ],\n+ "label": "merlinlastz.maf",\n+ "name": "Input dataset",\n+ "outputs": [],\n+ "position": {\n+ "left": 0,\n+ "top": 204\n+ },\n+ "tool_id": null,\n+ "tool_state": "{\\"optional\\": false, \\"tag\\": null}",\n+ "tool_version": null,\n+ "type": "data_input",\n+ "uuid": "41961b03-3ea3-4fe4-a45e-85e2f74b8a48",\n+ "when": null,\n+ "workflow_outputs": []\n+ },\n+ "3": {\n+ "annotation": "",\n+ "content_id": null,\n+ "errors": null,\n+ "id": 3,\n+ "input_connections": {},\n+ "inputs": [\n+ {\n+ "description": "",\n+ "name": "merlinblast.xml"\n+ }\n+ ],\n+ "label": "merlinblast.xml",\n+ "name": "Input dataset",\n+ "outputs": [],\n+ "position": {\n+ "left": 0,\n+ "top": 327\n+ },\n+ "tool_id": null,\n+ "tool_state": "{\\"optional\\": false, \\"tag\\": null}",\n+ "tool_version": null,\n+ "type": "data_input",\n+ "uuid": "544106a0-44ea-40c9-8c55-ff5100110ae2",\n+ "when": null,\n+ "workflow_outputs": []\n+ },\n+ "4": {\n+ "annotation": "",\n+ "content_id": null,\n+ "errors": null,\n+ "id": 4,\n+ "input_connections": {},\n+ "inputs": [\n+ {\n+ "description": "",\n+ "name": "merlin-sample.bam"\n+ }\n+ ],\n+ "label": "merlin-sample.bam",\n+ "name": "Input dataset",\n+ "outputs": [],\n+ "position": {\n+ '..b'f\\", \\"__current_case__\\": 6, \\"useuri\\": {\\"insource\\": \\"history\\", \\"__current_case__\\": 0, \\"annotation\\": {\\"__class__\\": \\"ConnectedValue\\"}}, \\"jbstyle\\": {\\"track_style\\": {\\"display\\": \\"LinearBasicDisplay\\", \\"__current_case__\\": 1, \\"show_labels\\": false, \\"show_descriptions\\": false, \\"display_mode\\": \\"normal\\", \\"max_height\\": \\"600\\", \\"label\\": \\"jexl:get(feature,\'name\') || get(feature,\'id\')\\", \\"description\\": \\"jexl:get(feature,\'note\') || get(feature,\'description\')\\"}}, \\"track_visibility\\": \\"default_on\\"}}, {\\"__index__\\": 2, \\"data_format\\": {\\"data_format_select\\": \\"blastxml\\", \\"__current_case__\\": 0, \\"useuri\\": {\\"insource\\": \\"history\\", \\"__current_case__\\": 0, \\"annotation\\": {\\"__class__\\": \\"ConnectedValue\\"}}, \\"blast_parent\\": null, \\"min_gap\\": \\"10\\", \\"is_protein\\": false, \\"jbstyle\\": {\\"track_style\\": {\\"display\\": \\"LinearBasicDisplay\\", \\"__current_case__\\": 1, \\"show_labels\\": false, \\"show_descriptions\\": false, \\"display_mode\\": \\"normal\\", \\"max_height\\": \\"600\\", \\"label\\": \\"jexl:get(feature,\'name\') || get(feature,\'id\')\\", \\"description\\": \\"jexl:get(feature,\'note\') || get(feature,\'description\')\\"}}, \\"track_visibility\\": \\"default_on\\"}}]}, {\\"__index__\\": 1, \\"category\\": \\"two\\", \\"data_tracks\\": [{\\"__index__\\": 0, \\"data_format\\": {\\"data_format_select\\": \\"bam\\", \\"__current_case__\\": 3, \\"useuri\\": {\\"insource\\": \\"history\\", \\"__current_case__\\": 0, \\"annotation\\": {\\"__class__\\": \\"ConnectedValue\\"}}, \\"track_visibility\\": \\"default_on\\"}}, {\\"__index__\\": 1, \\"data_format\\": {\\"data_format_select\\": \\"cram\\", \\"__current_case__\\": 5, \\"useuri\\": {\\"insource\\": \\"history\\", \\"__current_case__\\": 0, \\"annotation\\": {\\"__class__\\": \\"ConnectedValue\\"}}, \\"track_visibility\\": \\"default_on\\"}}]}, {\\"__index__\\": 2, \\"category\\": \\"three\\", \\"data_tracks\\": [{\\"__index__\\": 0, \\"data_format\\": {\\"data_format_select\\": \\"gff\\", \\"__current_case__\\": 2, \\"useuri\\": {\\"insource\\": \\"history\\", \\"__current_case__\\": 0, \\"annotation\\": {\\"__class__\\": \\"ConnectedValue\\"}}, \\"match_part\\": {\\"match_part_select\\": \\"false\\", \\"__current_case__\\": 1}, \\"jbstyle\\": {\\"track_style\\": {\\"display\\": \\"LinearBasicDisplay\\", \\"__current_case__\\": 1, \\"show_labels\\": false, \\"show_descriptions\\": false, \\"display_mode\\": \\"normal\\", \\"max_height\\": \\"600\\", \\"label\\": \\"jexl:get(feature,\'name\') || get(feature,\'id\')\\", \\"description\\": \\"jexl:get(feature,\'note\') || get(feature,\'description\')\\"}}, \\"track_visibility\\": \\"default_on\\"}}, {\\"__index__\\": 1, \\"data_format\\": {\\"data_format_select\\": \\"bed\\", \\"__current_case__\\": 4, \\"useuri\\": {\\"insource\\": \\"history\\", \\"__current_case__\\": 0, \\"annotation\\": {\\"__class__\\": \\"ConnectedValue\\"}}, \\"jbstyle\\": {\\"track_style\\": {\\"display\\": \\"LinearBasicDisplay\\", \\"__current_case__\\": 1, \\"show_labels\\": false, \\"show_descriptions\\": false, \\"display_mode\\": \\"normal\\", \\"max_height\\": \\"600\\", \\"label\\": \\"jexl:get(feature,\'name\') || get(feature,\'id\')\\", \\"description\\": \\"jexl:get(feature,\'note\') || get(feature,\'description\')\\"}}, \\"track_visibility\\": \\"default_on\\"}}, {\\"__index__\\": 2, \\"data_format\\": {\\"data_format_select\\": \\"vcf\\", \\"__current_case__\\": 1, \\"useuri\\": {\\"insource\\": \\"history\\", \\"__current_case__\\": 0, \\"annotation\\": {\\"__class__\\": \\"ConnectedValue\\"}}, \\"jbstyle\\": {\\"track_style\\": {\\"display\\": \\"LinearVariantDisplay\\", \\"__current_case__\\": 0, \\"show_labels\\": false, \\"show_descriptions\\": false, \\"display_mode\\": \\"normal\\", \\"max_height\\": \\"600\\"}}, \\"track_visibility\\": \\"default_on\\"}}]}], \\"uglyTestingHack\\": \\"\\", \\"__page__\\": null, \\"__rerun_remap_job_id__\\": null}",\n+ "tool_version": "2.10.1+galaxy2_7",\n+ "type": "tool",\n+ "uuid": "ab05b81c-a0a2-4dcc-b76a-e47b15ebcdb9",\n+ "when": null,\n+ "workflow_outputs": []\n+ }\n+ },\n+ "tags": [],\n+ "uuid": "ea921c36-b1bb-4d82-9d35-5965daa3d3b2",\n+ "version": 1\n+}\n\\ No newline at end of file\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f __pycache__/jbrowse2.cpython-310.pyc |
b |
Binary file __pycache__/jbrowse2.cpython-310.pyc has changed |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f autogenJB2.py --- a/autogenJB2.py Tue Mar 26 00:52:34 2024 +0000 +++ b/autogenJB2.py Thu Mar 28 04:51:06 2024 +0000 |
[ |
@@ -68,7 +68,8 @@ jc = jbC( outdir=args.outdir, jbrowse2path=args.jbrowse2path, - genomes=[ + ) + genomes=[ { "path": x, "label": genome_names[i], @@ -80,9 +81,8 @@ } for i, x in enumerate(genome_paths) ], - ) - - jc.process_genomes() + logging.warn("#!!! paths=%s, genomes=%s" % (genome_paths, genomes)) + assref_name = jc.process_genomes(genomes[0]) default_session_data = { "visibility": { "default_on": [], @@ -96,7 +96,7 @@ tnames = [x[2] for x in listtracks] texts = [x[1] for x in listtracks] for i, track in enumerate(listtracks): - track_conf = {"trackfiles": [], "category": "autogenerated"} + track_conf = {"trackfiles": [], "category": "autogenerated", "assemblyNames": assref_name} tpath, trext, trackname = track[:3] track_conf["dataset_id"] = trackname useuri = "no" |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f jbrowse2.py --- a/jbrowse2.py Tue Mar 26 00:52:34 2024 +0000 +++ b/jbrowse2.py Thu Mar 28 04:51:06 2024 +0000 |
[ |
b'@@ -1,4 +1,4 @@\n- #!/usr/bin/env python\n+#!/usr/bin/env python\n \n import argparse\n import binascii\n@@ -15,15 +15,15 @@\n import xml.etree.ElementTree as ET\n from collections import defaultdict\n \n-logging.basicConfig(level=logging.INFO)\n+logging.basicConfig(level=logging.DEBUG)\n log = logging.getLogger("jbrowse")\n \n JB2VER = "v2.10.3"\n # version pinned for cloning\n \n TODAY = datetime.datetime.now().strftime("%Y-%m-%d")\n+SELF_LOCATION = os.path.dirname(os.path.realpath(__file__))\n GALAXY_INFRASTRUCTURE_URL = None\n-\n mapped_chars = {\n ">": "__gt__",\n "<": "__lt__",\n@@ -341,23 +341,23 @@\n if node.findall("metadata"):\n for (key, value) in node.findall("metadata")[0].attrib.items():\n metadata["metadata_%s" % key] = value\n- # Additional Mappings applied:\n- metadata[\n- "dataset_edam_format"\n- ] = \'<a target="_blank" href="http://edamontology.org/{0}">{1}</a>\'.format(\n- metadata["dataset_edam_format"], metadata["dataset_file_ext"]\n- )\n- metadata["history_user_email"] = \'<a href="mailto:{0}">{0}</a>\'.format(\n- metadata["history_user_email"]\n- )\n- metadata["hist_name"] = metadata["history_display_name"]\n- metadata[\n- "history_display_name"\n- ] = \'<a target="_blank" href="{galaxy}/history/view/{encoded_hist_id}">{hist_name}</a>\'.format(\n- galaxy=GALAXY_INFRASTRUCTURE_URL,\n- encoded_hist_id=metadata["history_id"],\n- hist_name=metadata["history_display_name"],\n- )\n+ # Additional Mappings applied:\n+ metadata[\n+ "dataset_edam_format"\n+ ] = \'<a target="_blank" href="http://edamontology.org/{0}">{1}</a>\'.format(\n+ metadata["dataset_edam_format"], metadata["dataset_file_ext"]\n+ )\n+ metadata["history_user_email"] = \'<a href="mailto:{0}">{0}</a>\'.format(\n+ metadata["history_user_email"]\n+ )\n+ metadata["hist_name"] = metadata["history_display_name"]\n+ metadata[\n+ "history_display_name"\n+ ] = \'<a target="_blank" href="{galaxy}/history/view/{encoded_hist_id}">{hist_name}</a>\'.format(\n+ galaxy=GALAXY_INFRASTRUCTURE_URL,\n+ encoded_hist_id=metadata.get("history_id", "not available"),\n+ hist_name=metadata.get("history_display_name", "not available"),\n+ )\n if node.findall("tool"):\n for (key, value) in node.findall("tool")[0].attrib.items():\n metadata["tool_%s" % key] = value\n@@ -373,33 +373,41 @@\n \n \n class JbrowseConnector(object):\n- def __init__(self, outdir, jbrowse2path, genomes):\n+ def __init__(self, outdir, jbrowse2path):\n+ self.assemblies = [] # these require more than a few line diff.\n+ self.assmeta = {}\n self.giURL = GALAXY_INFRASTRUCTURE_URL\n self.outdir = outdir\n+ self.genome_firstcontig = None\n self.jbrowse2path = jbrowse2path\n os.makedirs(self.outdir, exist_ok=True)\n- self.genome_paths = genomes\n- self.genome_name = None\n self.genome_names = []\n self.trackIdlist = []\n- self.tracksToAdd = []\n+ self.tracksToAdd = {}\n self.config_json = {}\n self.config_json_file = os.path.join(outdir, "config.json")\n self.clone_jbrowse()\n \n- def subprocess_check_call(self, command, output=None):\n- if output:\n- log.debug("cd %s && %s > %s", self.outdir, " ".join(command), output)\n- subprocess.check_call(command, cwd=self.outdir, stdout=output)\n+ def get_cwd(self, cwd):\n+ if cwd:\n+ return self.outdir\n else:\n- log.debug("cd %s && %s", self.outdir, " ".join(command))\n- subprocess.check_call(command, cwd=self.outdir)\n+ return subprocess.check_output(["pwd"]).decode("utf-8").strip()\n+ # return None\n \n- def subprocess_popen(se'..b'"]),\n- x.attrib["ext"],\n- x.attrib["useuri"],\n- x.attrib["label"],\n- metadata,\n- )\n- track_conf["trackfiles"].append(tfa)\n \n- if is_multi_bigwig:\n- metadata = metadata_from_node(x.find("metadata"))\n+ track_conf["category"] = track.attrib["cat"]\n+ track_conf["format"] = track.attrib["format"]\n+ track_conf["conf"] = etree_to_dict(track.find("options"))\n+ track_conf["category"] = track.attrib["cat"]\n+ track_conf["format"] = track.attrib["format"]\n+ keys = jc.process_annotations(track_conf)\n \n- track_conf["trackfiles"].append(\n- (\n- multi_bigwig_paths, # Passing an array of paths to represent as one track\n- "bigwig_multiple",\n- "MultiBigWig", # Giving an hardcoded name for now\n- {}, # No metadata for multiple bigwig\n- )\n- )\n- track_conf["category"] = track.attrib["cat"]\n- track_conf["format"] = track.attrib["format"]\n- track_conf["conf"] = etree_to_dict(track.find("options"))\n- track_conf["category"] = track.attrib["cat"]\n- track_conf["format"] = track.attrib["format"]\n- keys = jc.process_annotations(track_conf)\n+ if keys:\n+ for key in keys:\n+ vis = track.attrib.get("visibility", "default_off")\n+ if not vis:\n+ vis = "default_off"\n+ default_session_data["visibility"][vis].append(key)\n+ if track.find("options/style"):\n+ default_session_data["style"][key] = {\n+ item.tag: parse_style_conf(item)\n+ for item in track.find("options/style")\n+ }\n+ else:\n+ default_session_data["style"][key] = {}\n+ logging.warn("@@@@ no options/style found for %s" % (key))\n \n- if keys:\n- for key in keys:\n- default_session_data["visibility"][\n- track.attrib.get("visibility", "default_off")\n- ].append(key)\n- if track.find("options/style"):\n- default_session_data["style"][key] = {\n- item.tag: parse_style_conf(item) for item in track.find("options/style")\n- }\n- else:\n- default_session_data["style"][key] = {}\n- logging.warn("@@@@ no options/style found for %s" % (key))\n-\n- if track.find("options/style_labels"):\n- default_session_data["style_labels"][key] = {\n- item.tag: parse_style_conf(item)\n- for item in track.find("options/style_labels")\n- }\n+ if track.find("options/style_labels"):\n+ default_session_data["style_labels"][key] = {\n+ item.tag: parse_style_conf(item)\n+ for item in track.find("options/style_labels")\n+ }\n default_session_data["defaultLocation"] = root.find(\n "metadata/general/defaultLocation"\n ).text\n@@ -1571,11 +1599,10 @@\n "font_size": root.find("metadata/general/font_size").text,\n }\n jc.add_general_configuration(general_data)\n- trackconf = jc.config_json.get("tracks", None)\n- if trackconf:\n- jc.config_json["tracks"].update(jc.tracksToAdd)\n- else:\n- jc.config_json["tracks"] = jc.tracksToAdd\n+ trackconf = jc.config_json.get("tracks", [])\n+ for gnome in jc.genome_names:\n+ trackconf += jc.tracksToAdd[gnome]\n+ jc.config_json["tracks"] = trackconf\n jc.write_config()\n jc.add_default_session(default_session_data)\n # jc.text_index() not sure what broke here.\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f jbrowse2.xml --- a/jbrowse2.xml Tue Mar 26 00:52:34 2024 +0000 +++ b/jbrowse2.xml Thu Mar 28 04:51:06 2024 +0000 |
[ |
b'@@ -1,4 +1,4 @@\n- <tool id="jbrowse2" name="jbrowse2" version="@TOOL_VERSION@+@WRAPPER_VERSION@_7" profile="22.05">\n+ <tool id="jbrowse2auto" name="JBrowse2auto" version="@TOOL_VERSION@+@WRAPPER_VERSION@_8" profile="22.05">\n <description>genome browser</description>\n <macros>\n <import>macros.xml</import>\n@@ -62,62 +62,8 @@\n ]]></command>\n <configfiles>\n <configfile name="trackxml"><![CDATA[<?xml version="1.0"?>\n-#if $jbgen.ucol.formcoll=="form":\n <root>\n <metadata>\n- <genomes>\n- #if str($reference_genome.genome_type_select) == "uri":\n- <genome path="${reference_genome.uri}" label="${reference_genome.refname}" useuri="yes">\n- <metadata>\n- <dataset\n- dname = "${reference_genome.refname}" />\n- </metadata>\n- </genome>\n- #else if str($reference_genome.genome_type_select) == "indexed":\n- <genome path="${reference_genome.genome.fields.path}" label="${reference_genome.genome.fields.name}" useuri="no">\n- <metadata>\n- <dataset\n- dname = "${reference_genome.genome.fields.name}" />\n- </metadata>\n- </genome>\n- #else\n- <genome path="$reference_genome.genome" label="${reference_genome.genome.name}" useuri="no">\n- <metadata>\n- <dataset id="${__app__.security.encode_id($reference_genome.genome.id)}" hid="${reference_genome.genome.hid}"\n- size="${reference_genome.genome.get_size(nice_size=True)}"\n- edam_format="${reference_genome.genome.datatype.edam_format}"\n- file_ext="${reference_genome.genome.ext}"\n- dname = "${reference_genome.genome.name}" />\n- <history id="${__app__.security.encode_id($reference_genome.genome.history_id)}"\n- #if $reference_genome.genome.history.user:\n- user_email="${reference_genome.genome.history.user.email}"\n- user_id="${reference_genome.genome.history.user_id}"\n- display_name="${reference_genome.genome.history.get_display_name()}"/>\n- #else\n- user_email="anonymous"\n- user_id="-1"\n- display_name="Unnamed History"/>\n- #end if\n- <metadata\n- #for (key, value) in $reference_genome.genome.get_metadata().items():\n- #if "_types" not in $key:\n- #if isinstance($value, list):\n- #set value_str = "[%s]" % \',\'.join([str(val) for val in value])\n- ${key}="$value_str"\n- #else\n- ${key}="${value}"\n- #end if\n- #end if\n- #end for\n- />\n- <tool\n- tool_id="${reference_genome.genome.creating_job.tool_id}"\n- tool_version="${reference_genome.genome.creating_job.tool_version}"\n- />\n- </metadata>\n- </genome>\n- #end if\n- </genomes>\n <general>\n <defaultLocation>${jbgen.defaultLocation}</defaultLocation>\n <zipOut>${jbgen.zipOut}</zipOut>\n@@ -131,8 +77,73 @@\n </general>\n <galaxyUrl>${__app__.config.galaxy_infrastructure_url}</galaxyUrl>\n </metadata>\n+#if $jbgen.ucol.formcoll=="form":\n+ #for $assembly in $assemblies:\n+ <assembly>\n+ <metadata>\n+ <genomes>\n+ #if str($assembly.reference_genome.genome_type_select) == "uri":\n+ <genome path="${assembly.reference_genome.uri}" label="${assembly.reference_genome.refname}" useuri="yes">\n+ <metadata>\n+ '..b'itional name="color">\n+ <param name="color_select" value="automatic"/>\n+ </conditional>\n+ </section>\n+ <section name="jbmenu">\n+ <repeat name="track_menu">\n+ <param name="menu_action" value="iframeDialog"/>\n+ <param name="menu_label" value="Some menu item"/>\n+ <param name="menu_title" value="Frame title"/>\n+ <param name="menu_url" value="https://example.com/#!/?id={name}&q={type}&z="{end}""/>\n+ <param name="menu_icon" value="dijitIconNewTask"/>\n+ </repeat>\n+ <repeat name="track_menu">\n+ <param name="menu_action" value="newWindow"/>\n+ <param name="menu_label" value="Another menu item"/>\n+ <param name="menu_title" value="Frame title 2"/>\n+ <param name="menu_url" value="https://example.com/#!/?id={name}&q={type}&z="{end}""/>\n+ </repeat>\n+ </section>\n+ </conditional>\n+ </repeat>\n+ <repeat name="data_tracks">\n+ <conditional name="data_format">\n <param name="data_format_select" value="gff"/>\n- <conditional name="useuri">\n- <param name="annotation" value="gff3/1.gff"/>\n- <param name="insource" value= "history"/>\n- </conditional>\n- <param name="insource" value= "history"/>\n- <conditional name="match_part">\n- <param name="match_part_select" value="false"/>\n+ <conditional name="useuri">\n+ <param name="annotation" value="gff3/1.gff"/>\n+ <param name="insource" value= "history"/>\n+ </conditional>\n+ <conditional name="match_part">\n+ <param name="match_part_select" value="false"/>\n+ </conditional>\n+ <section name="jbcolor_scale">\n+ <conditional name="color_score">\n+ <param name="color_score_select" value="none"/>\n+ </conditional>\n+ <conditional name="color">\n+ <param name="color_select" value="automatic"/>\n+ </conditional>\n+ </section>\n </conditional>\n- <section name="jbcolor_scale">\n- <conditional name="color_score">\n- <param name="color_score_select" value="none"/>\n- </conditional>\n- <conditional name="color">\n- <param name="color_select" value="automatic"/>\n- </conditional>\n- </section>\n- </conditional>\n- </repeat>\n+ </repeat>\n </repeat>\n-\n+ </repeat>\n <param name="uglyTestingHack" value="enabled" />\n <output name="output">\n <assert_contents>\n@@ -841,6 +890,7 @@\n </assert_contents>\n </output>\n </test>\n+\n <!-- TODO add a synteny test -->\n <!-- TODO add a bam and a cram test -->\n <!-- TODO add an hic test -->\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f jbrowse2broken.py --- a/jbrowse2broken.py Tue Mar 26 00:52:34 2024 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
b'@@ -1,1656 +0,0 @@\n-#!/usr/bin/env python\n-# change to accumulating all configuration for config.json based on the default from the clone\n-import argparse\n-import binascii\n-import datetime\n-import json\n-import logging\n-import os\n-import re\n-import shutil\n-import struct\n-import subprocess\n-import tempfile\n-import urllib.request\n-import xml.etree.ElementTree as ET\n-from collections import defaultdict\n-\n-logging.basicConfig(level=logging.INFO)\n-log = logging.getLogger("jbrowse")\n-\n-JB2VER = "v2.10.3"\n-# version pinned for cloning\n-\n-TODAY = datetime.datetime.now().strftime("%Y-%m-%d")\n-GALAXY_INFRASTRUCTURE_URL = None\n-\n-# version pinned for cloning\n-\n-mapped_chars = {\n- ">": "__gt__",\n- "<": "__lt__",\n- "\'": "__sq__",\n- \'"\': "__dq__",\n- "[": "__ob__",\n- "]": "__cb__",\n- "{": "__oc__",\n- "}": "__cc__",\n- "@": "__at__",\n- "#": "__pd__",\n- "": "__cn__",\n-}\n-\n-\n-class ColorScaling(object):\n-\n- COLOR_FUNCTION_TEMPLATE = """\n- function(feature, variableName, glyphObject, track) {{\n- var score = {score};\n- {opacity}\n- return \'rgba({red}, {green}, {blue}, \' + opacity + \')\';\n- }}\n- """\n-\n- COLOR_FUNCTION_TEMPLATE_QUAL = r"""\n- function(feature, variableName, glyphObject, track) {{\n- var search_up = function self(sf, attr){{\n- if(sf.get(attr) !== undefined){{\n- return sf.get(attr);\n- }}\n- if(sf.parent() === undefined) {{\n- return;\n- }}else{{\n- return self(sf.parent(), attr);\n- }}\n- }};\n-\n- var search_down = function self(sf, attr){{\n- if(sf.get(attr) !== undefined){{\n- return sf.get(attr);\n- }}\n- if(sf.children() === undefined) {{\n- return;\n- }}else{{\n- var kids = sf.children();\n- for(var child_idx in kids){{\n- var x = self(kids[child_idx], attr);\n- if(x !== undefined){{\n- return x;\n- }}\n- }}\n- return;\n- }}\n- }};\n-\n- var color = ({user_spec_color} || search_up(feature, \'color\') || search_down(feature, \'color\') || {auto_gen_color});\n- var score = (search_up(feature, \'score\') || search_down(feature, \'score\'));\n- {opacity}\n- if(score === undefined){{ opacity = 1; }}\n- var result = /^#?([a-f\\d]{{2}})([a-f\\d]{{2}})([a-f\\d]{{2}})$/i.exec(color);\n- var red = parseInt(result[1], 16);\n- var green = parseInt(result[2], 16);\n- var blue = parseInt(result[3], 16);\n- if(isNaN(opacity) || opacity < 0){{ opacity = 0; }}\n- return \'rgba(\' + red + \',\' + green + \',\' + blue + \',\' + opacity + \')\';\n- }}\n- """\n-\n- OPACITY_MATH = {\n- "linear": """\n- var opacity = (score - ({min})) / (({max}) - ({min}));\n- """,\n- "logarithmic": """\n- var opacity = Math.log10(score - ({min})) / Math.log10(({max}) - ({min}));\n- """,\n- "blast": """\n- var opacity = 0;\n- if(score == 0.0) {{\n- opacity = 1;\n- }} else {{\n- opacity = (20 - Math.log10(score)) / 180;\n- }}\n- """,\n- }\n-\n- BREWER_COLOUR_IDX = 0\n- BREWER_COLOUR_SCHEMES = [\n- (166, 206, 227),\n- (31, 120, 180),\n- (178, 223, 138),\n- (51, 160, 44),\n- (251, 154, 153),\n- (227, 26, 28),\n- (253, 191, 111),\n- (255, 127, 0),\n- (202, 178, 214),\n- (106, 61, 154),\n- (255, 255, 153),\n- (177, 89, 40),\n- (228, 26, 28),\n- (55, 126, 184),\n- (77, 175, 74),\n- (152, 78, 163),\n- (255, 127, 0),\n- ]\n-\n- BREWER_DIVERGING_PALLETES = {\n- "BrBg": ("#543005", "#003c30"),\n- "PiYg": ("#8e0152", "#276419"),\n- "PRGn": ("#40004b", "#00441b"),\n- "PuOr": ("#7f3b08", "#2d004b'..b'"],\n- x.attrib["useuri"],\n- x.attrib["label"],\n- metadata,\n- )\n- else:\n- tfa = (\n- os.path.realpath(x.attrib["path"]),\n- x.attrib["ext"],\n- x.attrib["useuri"],\n- x.attrib["label"],\n- metadata,\n- )\n- track_conf["trackfiles"].append(tfa)\n-\n- if is_multi_bigwig:\n- metadata = metadata_from_node(x.find("metadata"))\n-\n- track_conf["trackfiles"].append(\n- (\n- multi_bigwig_paths, # Passing an array of paths to represent as one track\n- "bigwig_multiple",\n- "MultiBigWig", # Giving an hardcoded name for now\n- {}, # No metadata for multiple bigwig\n- )\n- )\n- track_conf["category"] = track.attrib["cat"]\n- track_conf["format"] = track.attrib["format"]\n- if track.find("options/style"):\n- track_conf["style"] = {\n- item.tag: parse_style_conf(item) for item in track.find("options/style")\n- }\n- else:\n- track_conf["style"] = {}\n- tst = track_conf["style"].get("type", None)\n- if tst:\n- track_conf["style"]["configuration"] = "%s-%s" % (track_conf["label"], tst)\n- logging.warn("### got %s for track style" % track_conf["style"])\n- if track.find("options/style_labels"):\n- track_conf["style_labels"] = {\n- item.tag: parse_style_conf(item)\n- for item in track.find("options/style_labels")\n- }\n- track_conf["conf"] = etree_to_dict(track.find("options"))\n- track_conf["category"] = track.attrib["cat"]\n- track_conf["format"] = track.attrib["format"]\n- keys = jc.process_annotations(track_conf)\n-\n- if keys:\n- for key in keys:\n- default_session_data["visibility"][\n- track.attrib.get("visibility", "default_off")\n- ].append(key)\n- if track_conf.get("style", None):\n- default_session_data["style"][key] = track_conf["style"]\n- if track_conf.get("style_labels", None):\n- default_session_data["style_labels"][key] = track_conf.get(\n- "style_labels", None\n- )\n- logging.warn(\n- "# after process, key=%s def session style = %s"\n- % (key, default_session_data["style"][key])\n- )\n- default_session_data["defaultLocation"] = root.find(\n- "metadata/general/defaultLocation"\n- ).text\n- default_session_data["session_name"] = root.find(\n- "metadata/general/session_name"\n- ).text\n- jc.zipOut = root.find("metadata/general/zipOut").text == "true"\n- general_data = {\n- "analytics": root.find("metadata/general/analytics").text,\n- "primary_color": root.find("metadata/general/primary_color").text,\n- "secondary_color": root.find("metadata/general/secondary_color").text,\n- "tertiary_color": root.find("metadata/general/tertiary_color").text,\n- "quaternary_color": root.find("metadata/general/quaternary_color").text,\n- "font_size": root.find("metadata/general/font_size").text,\n- }\n- jc.add_general_configuration(general_data)\n- trackconf = jc.config_json.get("tracks", None)\n- if trackconf:\n- jc.config_json["tracks"].update(jc.tracksToAdd)\n- else:\n- jc.config_json["tracks"] = jc.tracksToAdd\n- jc.write_config()\n- jc.add_default_session(default_session_data)\n- logging.warn("### got default_session_data=%s" % default_session_data)\n- # jc.text_index() not sure what broke here.\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f jbrowse2broken.xml --- a/jbrowse2broken.xml Tue Mar 26 00:52:34 2024 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
b'@@ -1,961 +0,0 @@\n- <tool id="jbrowse2" name="jbrowse2" version="@TOOL_VERSION@+@WRAPPER_VERSION@_7" profile="22.05">\n- <description>genome browser</description>\n- <macros>\n- <import>macros.xml</import>\n- </macros>\n- <expand macro="edamInc"/>\n- <xrefs>\n- <xref type="bio.tools">jbrowse2</xref>\n- </xrefs>\n- <expand macro="requirements"/>\n- <version_command>python \'${__tool_directory__}/jbrowse2.py\' --version</version_command>\n- <command detect_errors="aggressive"><![CDATA[\n-mkdir -p \'$output.files_path\' &&\n-## Copy the XML file into the directory, mostly for debugging\n-## but nice if users want to reproduce locally\n-cp \'$trackxml\' \'$output.files_path/galaxy.xml\' &&\n-\n-export JBROWSE2_PATH=\\$(dirname \\$(which jbrowse))/../opt/jbrowse2 &&\n-\n-#if $jbgen.ucol.formcoll=="collect":\n- python \'$__tool_directory__/autogenJB2.py\'\n- #for $key in $autoCollection.keys():\n- #if $autoCollection[$key].is_collection:\n- #set subCol=$autoCollection[$key]\n- #set pafs=[($subCol[x],$subcol[x].ext,x) for x in $subCol.keys() if $subCol[x].ext == \'paf\']\n- #if len($pafs) > 0:\n- --pafmeta \'$pafs[0]\'\n- #set refs = [($pafs[0][2],$subCol[x],x) for x in $subCol.keys() if $subCol[x].ext == \'fasta\']\n- #for $ref in $refs:\n- --pafreferencemeta \'$ref\'\n- #end for\n- #end if\n- #else if $autoCollection[$key].ext == \'fasta\':\n- --referencemeta \'$autoCollection[$key],$autoCollection[$key].ext,$key\'\n- #else if $autoCollection[$key].ext in [\'bed\', \'bigwig\', \'cool\', \'gff\', \'gff3\', \'hic\', \'maf\', \'mcool\', \'scool\', \'vcf\']\n- --trackmeta \'$autoCollection[$key],$autoCollection[$key].ext,$key\'\n- #else if $autoCollection[$key].ext in [\'bam\',]\n- --trackmeta \'$autoCollection[$key],$autoCollection[$key].ext,$key,$autoCollection[$key].metadata.bam_index\'\n- #else if $autoCollection[$key].ext in [\'cram\',]\n- --trackmeta \'$autoCollection[$key],$autoCollection[$key].ext,$key,$autoCollection[$key].metadata.cram_index\'\n- #end if\n- #end for\n- --outdir \'$output.files_path\'\n- --jbrowse2path \\${JBROWSE2_PATH}\n- --sessName "Autogen JBrowse" &&\n- #if $jbgen.zipOut == "true":\n- (cd \'$output.files_path\' && zip -r - . ) > \'$output\'\n- #else\n- cp \'$output.files_path/index.html\' \'$output\'\n- #end if\n-#else:\n- python \'$__tool_directory__/jbrowse2.py\'\n- --jbrowse2path \\${JBROWSE2_PATH}\n- --outdir \'$output.files_path\'\n- --xml \'$trackxml\' &&\n- #if $jbgen.zipOut == "true":\n- (cd \'$output.files_path\' && zip -r - . ) > \'$output\'\n- #else\n- cp \'$output.files_path/index.html\' \'$output\'\n- #end if\n- ## Ugly testing hack since I cannot get <extra_files> to test the files I want to test. Hmph.\n- #if str($uglyTestingHack) == "enabled":\n- && cp \'$trackxml\' \'$output\'\n- #end if\n-#end if\n- ]]></command>\n-<configfiles>\n- <configfile name="trackxml"><![CDATA[<?xml version="1.0"?>\n-#if $jbgen.ucol.formcoll=="form":\n-<root>\n- <metadata>\n- <genomes>\n- #if str($reference_genome.genome_type_select) == "uri":\n- <genome path="${reference_genome.uri}" label="${reference_genome.refname}" useuri="yes">\n- <metadata>\n- <dataset\n- dname = "${reference_genome.refname}" />\n- </metadata>\n- </genome>\n- #else if str($reference_genome.genome_type_select) == "indexed":\n- <genome path="${reference_genome.genome.fields.path}" label="${reference_genome.genome.fields.name}" useuri="no">\n- <metadata>\n- <dataset\n- dname = "${reference_genome.genome.fields.name}" />\n- </metadata>\n- </genome>\n- #else\n- <genome path="$reference_genome.genome" label="${reference_genome.gen'..b'ternative codons for unusual genomes,\n-and detailed track styling is not yet implemented. Send code.\n-JBrowse1 development has now ceased in favour of JBrowse2.\n-\n-Use and local viewing\n-=====================\n-\n-\n-A JBrowse2 history item can be opened by viewing it (the "eye" icon).\n-\n-The same browser data and setup can also be downloaded as a compressed zip archive by clicking the download ("floppy disk") icon in the history.\n-This can be shared and viewed without Galaxy.\n-\n-A replacement application to serve the browser is required without Galaxy. A local python web server can be started using a script included in each archive,\n-assuming that Python3 is already working on your desktop - if not you will have to install it first. Unzip the archive (*unzip [filename].zip*) and change\n-directory to the first level in that zip archive. It contains a file named *jb2_webserver.py*\n-\n-With python3 installed,\n-\n-*python3 jb2_webserver.py*\n-\n-will serve the unarchived JBrowse2 configuration from the same directory as the python script automatically. If a new browser window does not open,\n-but the script appears to be running, try pointing your web browser to the default of *localhost:8080*\n-\n-Overview\n---------\n-\n-JBrowse is a fast, embeddable genome browser built completely with\n-JavaScript and HTML5.\n-\n-The JBrowse-in-Galaxy (JiG) tool was written to help build complex\n-JBrowse installations straight from Galaxy. It allows you to build up a JBrowse instance without worrying\n-about how to run the command line tools to format your data, and which\n-options need to be supplied and where.\n-\n-Options\n--------\n-\n-**Reference or Assembly**\n-\n-Choose either a built-in or select one from your history.\n-\n-Track coordinates and contig names *must* match this reference precisely\n-or they will not display.\n-\n-**Track Groups** represent a set of tracks in a single category.\n-\n-Annotation Tracks\n------------------\n-\n-GFF3/BED\n-~~~~~~~~\n-\n-Standard feature tracks. They usually highlight genes, mRNAs and other features of interest along a genomic region.\n-\n-When these contain tens of millions of features, such as repeat regions from a VGP assembly, displaying one at a time leads\n-to extremely slow loading times when a large region is in view, unless the "LinearPileupDisplay" display option is\n-selected for that track in the styling options section. The default is LinearBasicDisplay, which shows all details and works\n-well for relatively sparse bed files. A better option is to make a bigwig track using a set of windows based on the\n-lengths of each assembly or reference contig.\n-\n-BAM Pileups\n-~~~~~~~~~~~\n-\n-We support BAM files and can automatically generate SNP tracks based on\n-that bam data.\n-\n-\n-BlastXML\n-~~~~~~~~\n-\n-JiG now supports both blastn and blastp datasets. JiG internally uses a\n-blastXML to gapped GFF3 tool to convert your blastxml datasets into a\n-format amenable to visualization in JBrowse. This tool is also\n-available separately from the IUC on the toolshed.\n-\n-**Minimum Gap Size** reflects how long a gap must be before it becomes a\n-real gap in the processed gff3 file. In the picture above, various sizes\n-of gaps can be seen. If the minimum gap size was set much higher, say\n-100nt, many of the smaller gaps would disappear, and the features on\n-both sides would be merged into one, longer feature. This setting is\n-inversely proportional to runtime and output file size. *Do not set this\n-to a low value for large datasets*. By setting this number lower, you\n-will have extremely large outputs and extremely long runtimes. The\n-default was configured based off of the author\'s experience, but the\n-author only works on small viruses. It is *strongly* recommended that\n-you filter your blast results before display, e.g. picking out the top\n-10 hits or so.\n-\n-**Protein blast search** option merely informs underlying tools that\n-they should adjust feature locations by 3x.\n-\n-\n-@ATTRIBUTION@\n-]]></help>\n- <expand macro="citations"/>\n-</tool>\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f macros.xml --- a/macros.xml Tue Mar 26 00:52:34 2024 +0000 +++ b/macros.xml Thu Mar 28 04:51:06 2024 +0000 |
[ |
@@ -138,6 +138,7 @@ </param> </xml> + <xml name="general_options"> <section name="jbgen" title="General JBrowse Options [Advanced]" expanded="false"> <conditional name="ucol"> @@ -372,7 +373,10 @@ <option value="LinearAlignmentsDisplay" selected="true">LinearAlignmentsDisplay</option> <option value="LinearPileupDisplay">LinearPileupDisplay</option> <option value="LinearSNPCoverageDisplay">LinearSNPCoverageDisplay</option> + <option value="LinearReadArcsDisplay">LinearReadArcsDisplay</option> + <option value="LinearReadCloudDisplay">LinearReadCloudDisplay</option> </param> + <!-- TODO check if possible to handle more options than just the display style--> <when value="LinearAlignmentsDisplay"/> <when value="LinearPileupDisplay"/> <when value="LinearSNPCoverageDisplay"> @@ -380,6 +384,8 @@ <param name="minScore" label="Min score" type="integer" value="" optional="true"/> <param name="maxScore" label="Max score" type="integer" value="" optional="true"/> </when> + <when value="LinearReadArcsDisplay"/> + <when value="LinearReadCloudDisplay"/> </conditional> </section> </xml> @@ -389,10 +395,12 @@ <conditional name="track_style"> <param name="display" type="select" label="Display style" help="How the track will be displayed by default"> <option value="LinearVariantDisplay" selected="true">LinearVariantDisplay</option> + <option value="LinearPairedArcDisplay">LinearPairedArcDisplay</option> </param> <when value="LinearVariantDisplay"> <expand macro="track_styling_linear"/> </when> + <when value="LinearPairedArcDisplay"/> </conditional> </section> </xml> @@ -430,6 +438,7 @@ </section> </xml> + <!-- TODO use this --> <xml name="track_menu"> <section name="jbmenu" title="JBrowse Contextual Menu options [Advanced]" expanded="false"> <repeat name="track_menu" title="Track Menu"> |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f macrosbroken.xml --- a/macrosbroken.xml Tue Mar 26 00:52:34 2024 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
b'@@ -1,548 +0,0 @@\n-<?xml version="1.0"?>\n-<macros>\n- <token name="@TOOL_VERSION@">2.10.1</token>\n- <xml name = "edamInc">\n- <edam_topics>\n- <edam_topic>topic_3307</edam_topic>\n- <edam_topic>topic_0092</edam_topic>\n- </edam_topics>\n- <edam_operations>\n- <edam_operation>operation_0573</edam_operation>\n- <edam_operation>operation_0564</edam_operation>\n- </edam_operations>\n- </xml>\n- <xml name="requirements">\n- <requirements>\n- <requirement type="package" version="@TOOL_VERSION@">jbrowse2</requirement>\n- <requirement type="package" version="1.81">biopython</requirement>\n- <requirement type="package" version="0.7.1">bcbio-gff</requirement>\n- <requirement type="package" version="1.19">samtools</requirement>\n- <requirement type="package" version="6.0.1">pyyaml</requirement>\n- <requirement type="package" version="1.11">tabix</requirement>\n- <requirement type="package" version="4.6.0">findutils</requirement>\n- <requirement type="package" version="0.0.8">hictk</requirement>\n- <yield/>\n- </requirements>\n- </xml>\n- <token name="@DATA_DIR@">\\$GALAXY_JBROWSE_SHARED_DIR</token>\n- <token name="@WRAPPER_VERSION@">galaxy2</token>\n- <token name="@ATTRIBUTION@"><![CDATA[\n-**Attribution**\n-This Galaxy tool relies on the JBrowse2, maintained by the GMOD Community. The Galaxy wrapper is maintained by Ross Lazarus\n-until the IUC complete their own.\n-]]>\n- </token>\n- <xml name="genome_selector"\n- token_help=""\n- token_label="Fasta sequences"\n- token_optional="False" >\n- <conditional name="reference_genome">\n- <param help="Built-in references" label="Reference genome to display" name="genome_type_select" type="select">\n- <option selected="True" value="indexed">Use a built-in genome</option>\n- <option value="history">Use a genome from history</option>\n- </param>\n- <when value="indexed">\n- <param\n- help="@HELP@"\n- label="@LABEL@"\n- name="genomes"\n- type="select"\n- optional="@OPTIONAL@"\n- >\n- <options from_data_table="all_fasta">\n- <filter column="2" type="sort_by" />\n- <validator message="No genomes are available for the selected input dataset" type="no_options" />\n- </options>\n- </param>\n- </when>\n- <when value="history">\n- <param\n- format="fasta"\n- label="@LABEL@"\n- help="@HELP@"\n- name="genomes"\n- type="data"\n- optional="@OPTIONAL@"\n- multiple="True" />\n- </when>\n- </conditional>\n- </xml>\n-\n- <xml name="auto_manual_tk"\n- token_cond_label="Color"\n- token_cond_name="color"\n- token_select_label="Color Specification"\n- token_select_name="color_select"\n- token_automatic_label="Automatically selected"\n- token_manual_label="Manual Color Selection">\n- <conditional name="@COND_NAME@" label="@COND_LABEL@">\n- <param type="select" label="@SELECT_LABEL@" name="@SELECT_NAME@">\n- <option value="automatic" selected="true">@AUTOMATIC_LABEL@</option>\n- <option value="manual">@MANUAL_LABEL@</option>\n- </param>\n- <when value="automatic">\n- </when>\n- <when value="manual">\n- <yield />\n- </when>\n- </conditional>\n- </xml>\n-\n- <xml name="jb_color"\n- token_label="JBrowse style.color"\n- token_name="style_color"\n- token_value="goldenrod"\n- token_help="Basic color of features. Most glyphs interpret this as the fill col'..b'>\n- <option value="dijitIconUndo">Undo</option>\n- <option value="dijitIconEdit">Edit</option>\n- <option value="dijitIconNewTask">New Task</option>\n- <option value="dijitIconEditTask">Edit Task</option>\n- <option value="dijitIconEditProperty">Edit Property</option>\n- <option value="dijitIconTask">Task</option>\n- <option value="dijitIconFilter">Filter</option>\n- <option value="dijitIconConfigure">Configure</option>\n- <option value="dijitIconSearch">Search</option>\n- <option value="dijitIconApplication">Application</option>\n- <option value="dijitIconChart">Chart</option>\n- <option value="dijitIconConnector">Connector</option>\n- <option value="dijitIconDatabase">Database</option>\n- <option value="dijitIconDocuments">Documents</option>\n- <option value="dijitIconMail">Mail</option>\n- <option value="dijitLeaf">Leaf</option>\n- <option value="dijitIconFile">File</option>\n- <option value="dijitIconFunction">Function</option>\n- <option value="dijitIconKey">Key</option>\n- <option value="dijitIconPackage">Package</option>\n- <option value="dijitIconSample">Sample</option>\n- <option value="dijitIconTable">Table</option>\n- <option value="dijitIconUsers">Users</option>\n- <option value="dijitIconFolderClosed">Folder Closed</option>\n- <option value="dijitIconFolderOpen">Folder Open</option>\n- <option value="dijitIconError">Error</option>\n- </param>\n- </repeat>\n- </section>\n- </xml>\n-\n- <xml name="menu_sanitize">\n- <sanitizer>\n- <valid>\n- <add value="{"/>\n- <add value="}"/>\n- <add value="!"/>\n- <add value="?"/>\n- <add value="&"/>\n- <add value="+"/>\n- <add value="="/>\n- <add value="\'"/>\n- <add value=\'"\'/>\n- </valid>\n- </sanitizer>\n- </xml>\n-\n- <xml name="input_conditional" token_label="Track Data" token_format="data">\n- <conditional name="useuri">\n- <param name="insource" type="select" label="Define track data as a history file or an internet URI"\n- help="A public URI implies that all the associated tabix files are also in place. They are created for history files">\n- <option value="history" selected="true">Track data from a history file</option>\n- <option value="uri" selected="true">Tabix data URI - index files must be available at corresponding URI</option>\n- </param>\n- <when value="history">\n- <param label="@LABEL@" format="@FORMAT@" name="annotation" multiple="True" optional="true" type="data" />\n- </when>\n- <when value="uri">\n- <param label="@LABEL@" name="annouri" type="text" />\n- <param label="Short name for track display" name="annoname" type="text" >\n- <sanitizer invalid_char="_">\n- <valid initial="string.printable" >\n- <remove value="\'" />\n- </valid>\n- </sanitizer>\n- </param>\n- </when>\n- </conditional>\n- </xml>\n- <xml name="citations">\n- <citations>\n- <citation type="doi">10.1186/s13059-016-0924-1</citation>\n- <citation type="doi">10.1101/gr.094607.109</citation>\n- </citations>\n- </xml>\n-</macros>\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/blastxml/blast-gene1.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/blastxml/blast-gene1.xml Thu Mar 28 04:51:06 2024 +0000 |
[ |
@@ -0,0 +1,126 @@ +<?xml version="1.0"?> +<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_BlastOutput.dtd"> +<BlastOutput> + <BlastOutput_program>blastp</BlastOutput_program> + <BlastOutput_version>BLASTP 2.2.28+</BlastOutput_version> + <BlastOutput_reference>Stephen F. Altschul, Thomas L. Madden, Alejandro A. Sch&auml;ffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402.</BlastOutput_reference> + <BlastOutput_db>/usr/local/syncdb/community/nr/nr</BlastOutput_db> + <BlastOutput_query-ID>Query_1</BlastOutput_query-ID> + <BlastOutput_query-def>Merlin_1</BlastOutput_query-def> + <BlastOutput_query-len>229</BlastOutput_query-len> + <BlastOutput_param> + <Parameters> + <Parameters_matrix>BLOSUM62</Parameters_matrix> + <Parameters_expect>0.001</Parameters_expect> + <Parameters_gap-open>11</Parameters_gap-open> + <Parameters_gap-extend>1</Parameters_gap-extend> + <Parameters_filter>F</Parameters_filter> + </Parameters> + </BlastOutput_param> +<BlastOutput_iterations> +<Iteration> + <Iteration_iter-num>1</Iteration_iter-num> + <Iteration_query-ID>Query_1</Iteration_query-ID> + <Iteration_query-def>Merlin_1</Iteration_query-def> + <Iteration_query-len>229</Iteration_query-len> +<Iteration_hits> +<Hit> + <Hit_num>1</Hit_num> + <Hit_id>gi|422934611|ref|YP_007004572.1|</Hit_id> + <Hit_def>hypothetical protein [Enterobacteria phage ime09] >gi|339791394|gb|AEK12451.1| hypothetical protein [Enterobacteria phage ime09]</Hit_def> + <Hit_accession>YP_007004572</Hit_accession> + <Hit_len>685</Hit_len> + <Hit_hsps> + <Hsp> + <Hsp_num>1</Hsp_num> + <Hsp_bit-score>197.593</Hsp_bit-score> + <Hsp_score>501</Hsp_score> + <Hsp_evalue>3.74548e-55</Hsp_evalue> + <Hsp_query-from>2</Hsp_query-from> + <Hsp_query-to>229</Hsp_query-to> + <Hsp_hit-from>474</Hsp_hit-from> + <Hsp_hit-to>684</Hsp_hit-to> + <Hsp_query-frame>0</Hsp_query-frame> + <Hsp_hit-frame>0</Hsp_hit-frame> + <Hsp_identity>106</Hsp_identity> + <Hsp_positive>154</Hsp_positive> + <Hsp_gaps>21</Hsp_gaps> + <Hsp_align-len>230</Hsp_align-len> + <Hsp_qseq>LDKGTLLYRGQKLDLPTFEHNAENKLFYFRNYVSTSLKPLIFGEFGRMFMALDDDTTIYTAETPDDYNRFANPEDIIDIGATQKDSFDDNNNDGTSINIGKQVNLGFVISGAENVRVIVPGSLTEYPEEAEVILPRGTLLKINKITTQVDKRS--NKFMVEGSIVPPSEQIDESVEIYDGDLFMETGEVVKLSGFMQFVNESAYDEEQNQMAAEILSGFLDIDDMPRKFR</Hsp_qseq> + <Hsp_hseq>LPPGTTLYRGQEVTFKTLRHNIENKMFYFKNFVSTSLKPNIFGEHGKNYMALDDSGAVFSGEGEGS----VDAEDLMHMGSHSAYANED-----------AETSVGMVIKGAERIKVIVPGHLSGFPSEAEVILPRGILLKINKVSTYMMKETAYNKYLIEGTIVPPSEQLEESV--YDGDHLMETGEVRPMAGFNQFLVEES--KEEENEVSQILASLVNINGMSKKFK</Hsp_hseq> + <Hsp_midline>L GT LYRGQ++ T HN ENK+FYF+N+VSTSLKP IFGE G+ +MALDD +++ E + ED++ +G+ + +D + ++G VI GAE ++VIVPG L+ +P EAEVILPRG LLKINK++T + K + NK+++EG+IVPPSEQ++ESV YDGD METGEV ++GF QF+ E + +E+ ++IL+ ++I+ M +KF+</Hsp_midline> + </Hsp> + </Hit_hsps> +</Hit> +<Hit> + <Hit_num>2</Hit_num> + <Hit_id>gi|330858714|ref|YP_004415089.1|</Hit_id> + <Hit_def>hypothetical protein Shfl2p198 [Shigella phage Shfl2] >gi|327397648|gb|AEA73150.1| hypothetical protein Shfl2p198 [Shigella phage Shfl2]</Hit_def> + <Hit_accession>YP_004415089</Hit_accession> + <Hit_len>685</Hit_len> + <Hit_hsps> + <Hsp> + <Hsp_num>1</Hsp_num> + <Hsp_bit-score>197.593</Hsp_bit-score> + <Hsp_score>501</Hsp_score> + <Hsp_evalue>4.31042e-55</Hsp_evalue> + <Hsp_query-from>2</Hsp_query-from> + <Hsp_query-to>229</Hsp_query-to> + <Hsp_hit-from>474</Hsp_hit-from> + <Hsp_hit-to>684</Hsp_hit-to> + <Hsp_query-frame>0</Hsp_query-frame> + <Hsp_hit-frame>0</Hsp_hit-frame> + <Hsp_identity>106</Hsp_identity> + <Hsp_positive>154</Hsp_positive> + <Hsp_gaps>21</Hsp_gaps> + <Hsp_align-len>230</Hsp_align-len> + <Hsp_qseq>LDKGTLLYRGQKLDLPTFEHNAENKLFYFRNYVSTSLKPLIFGEFGRMFMALDDDTTIYTAETPDDYNRFANPEDIIDIGATQKDSFDDNNNDGTSINIGKQVNLGFVISGAENVRVIVPGSLTEYPEEAEVILPRGTLLKINKITTQVDKRS--NKFMVEGSIVPPSEQIDESVEIYDGDLFMETGEVVKLSGFMQFVNESAYDEEQNQMAAEILSGFLDIDDMPRKFR</Hsp_qseq> + <Hsp_hseq>LPPGTTLYRGQEVTFKTLRHNIENKMFYFKNFVSTSLKPNIFGEHGKNYMALDDSGAVFSGEGEGS----VDAEDLMHMGSHSAYANED-----------AETSVGMVIKGAERIKVIVPGHLSGFPSEAEVILPRGILLKINKVSTYMMKETAYNKYLIEGTIVPPSEQLEESV--YDGDHLMETGEVRPMAGFNQFLVEES--KEEENEVSQILASLVNINGMSKKFK</Hsp_hseq> + <Hsp_midline>L GT LYRGQ++ T HN ENK+FYF+N+VSTSLKP IFGE G+ +MALDD +++ E + ED++ +G+ + +D + ++G VI GAE ++VIVPG L+ +P EAEVILPRG LLKINK++T + K + NK+++EG+IVPPSEQ++ESV YDGD METGEV ++GF QF+ E + +E+ ++IL+ ++I+ M +KF+</Hsp_midline> + </Hsp> + </Hit_hsps> +</Hit> +<Hit> + <Hit_num>3</Hit_num> + <Hit_id>gi|228861509|ref|YP_002854530.1|</Hit_id> + <Hit_def>alt.-2 hypothetical protein [Enterobacteria phage RB14] >gi|227438525|gb|ACP30838.1| alt.-2 hypothetical protein [Enterobacteria phage RB14]</Hit_def> + <Hit_accession>YP_002854530</Hit_accession> + <Hit_len>685</Hit_len> + <Hit_hsps> + <Hsp> + <Hsp_num>1</Hsp_num> + <Hsp_bit-score>197.593</Hsp_bit-score> + <Hsp_score>501</Hsp_score> + <Hsp_evalue>4.35388e-55</Hsp_evalue> + <Hsp_query-from>2</Hsp_query-from> + <Hsp_query-to>229</Hsp_query-to> + <Hsp_hit-from>474</Hsp_hit-from> + <Hsp_hit-to>684</Hsp_hit-to> + <Hsp_query-frame>0</Hsp_query-frame> + <Hsp_hit-frame>0</Hsp_hit-frame> + <Hsp_identity>108</Hsp_identity> + <Hsp_positive>152</Hsp_positive> + <Hsp_gaps>21</Hsp_gaps> + <Hsp_align-len>230</Hsp_align-len> + <Hsp_qseq>LDKGTLLYRGQKLDLPTFEHNAENKLFYFRNYVSTSLKPLIFGEFGRMFMALDDDTTIYTAETPDDYNRFANPEDIIDIGATQKDSFDDNNNDGTSINIGKQVNLGFVISGAENVRVIVPGSLTEYPEEAEVILPRGTLLKINKITTQVDKRS--NKFMVEGSIVPPSEQIDESVEIYDGDLFMETGEVVKLSGFMQFVNESAYDEEQNQMAAEILSGFLDIDDMPRKFR</Hsp_qseq> + <Hsp_hseq>LPPGTTLYRGQEVTFKTLRHNIENKMFYFKNFVSTSLKPNIFGEHGKNYMALDDSGAVFSGEGEGS----VDAEDLMHMGS-----------HSTYANEDAETSVGMVIKGAERVKVIVPGHLSGFPSEAEVILPRGILLKINKVSTYFMKETAYNKYLIEGTIVPPSEQLEESV--YDGDHLMETGEVRPMAGFNQFLVEES--KEEENEVSQILASLVNINGMSKKFK</Hsp_hseq> + <Hsp_midline>L GT LYRGQ++ T HN ENK+FYF+N+VSTSLKP IFGE G+ +MALDD +++ E + ED++ +G+ T N + ++G VI GAE V+VIVPG L+ +P EAEVILPRG LLKINK++T K + NK+++EG+IVPPSEQ++ESV YDGD METGEV ++GF QF+ E + +E+ ++IL+ ++I+ M +KF+</Hsp_midline> + </Hsp> + </Hit_hsps> +</Hit> +</Iteration_hits> + <Iteration_stat> + <Statistics> + <Statistics_db-num>48094830</Statistics_db-num> + <Statistics_db-len>17186091396</Statistics_db-len> + <Statistics_hsp-len>143</Statistics_hsp-len> + <Statistics_eff-space>886533640716</Statistics_eff-space> + <Statistics_kappa>0.041</Statistics_kappa> + <Statistics_lambda>0.267</Statistics_lambda> + <Statistics_entropy>0.14</Statistics_entropy> + </Statistics> + </Iteration_stat> +</Iteration> +</BlastOutput_iterations> +</BlastOutput> + |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/blastxml/blast.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/blastxml/blast.xml Thu Mar 28 04:51:06 2024 +0000 |
[ |
b'@@ -0,0 +1,2862 @@\n+<?xml version="1.0"?>\n+<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_BlastOutput.dtd">\n+<BlastOutput>\n+ <BlastOutput_program>blastp</BlastOutput_program>\n+ <BlastOutput_version>BLASTP 2.2.28+</BlastOutput_version>\n+ <BlastOutput_reference>Stephen F. Altschul, Thomas L. Madden, Alejandro A. Sch&auml;ffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402.</BlastOutput_reference>\n+ <BlastOutput_db>/usr/local/syncdb/community/nr/nr</BlastOutput_db>\n+ <BlastOutput_query-ID>Query_1</BlastOutput_query-ID>\n+ <BlastOutput_query-def>Merlin_1</BlastOutput_query-def>\n+ <BlastOutput_query-len>229</BlastOutput_query-len>\n+ <BlastOutput_param>\n+ <Parameters>\n+ <Parameters_matrix>BLOSUM62</Parameters_matrix>\n+ <Parameters_expect>0.001</Parameters_expect>\n+ <Parameters_gap-open>11</Parameters_gap-open>\n+ <Parameters_gap-extend>1</Parameters_gap-extend>\n+ <Parameters_filter>F</Parameters_filter>\n+ </Parameters>\n+ </BlastOutput_param>\n+<BlastOutput_iterations>\n+<Iteration>\n+ <Iteration_iter-num>1</Iteration_iter-num>\n+ <Iteration_query-ID>Query_1</Iteration_query-ID>\n+ <Iteration_query-def>Merlin_1</Iteration_query-def>\n+ <Iteration_query-len>229</Iteration_query-len>\n+<Iteration_hits>\n+<Hit>\n+ <Hit_num>1</Hit_num>\n+ <Hit_id>gi|422934611|ref|YP_007004572.1|</Hit_id>\n+ <Hit_def>hypothetical protein [Enterobacteria phage ime09] >gi|339791394|gb|AEK12451.1| hypothetical protein [Enterobacteria phage ime09]</Hit_def>\n+ <Hit_accession>YP_007004572</Hit_accession>\n+ <Hit_len>685</Hit_len>\n+ <Hit_hsps>\n+ <Hsp>\n+ <Hsp_num>1</Hsp_num>\n+ <Hsp_bit-score>197.593</Hsp_bit-score>\n+ <Hsp_score>501</Hsp_score>\n+ <Hsp_evalue>3.74548e-55</Hsp_evalue>\n+ <Hsp_query-from>2</Hsp_query-from>\n+ <Hsp_query-to>229</Hsp_query-to>\n+ <Hsp_hit-from>474</Hsp_hit-from>\n+ <Hsp_hit-to>684</Hsp_hit-to>\n+ <Hsp_query-frame>0</Hsp_query-frame>\n+ <Hsp_hit-frame>0</Hsp_hit-frame>\n+ <Hsp_identity>106</Hsp_identity>\n+ <Hsp_positive>154</Hsp_positive>\n+ <Hsp_gaps>21</Hsp_gaps>\n+ <Hsp_align-len>230</Hsp_align-len>\n+ <Hsp_qseq>LDKGTLLYRGQKLDLPTFEHNAENKLFYFRNYVSTSLKPLIFGEFGRMFMALDDDTTIYTAETPDDYNRFANPEDIIDIGATQKDSFDDNNNDGTSINIGKQVNLGFVISGAENVRVIVPGSLTEYPEEAEVILPRGTLLKINKITTQVDKRS--NKFMVEGSIVPPSEQIDESVEIYDGDLFMETGEVVKLSGFMQFVNESAYDEEQNQMAAEILSGFLDIDDMPRKFR</Hsp_qseq>\n+ <Hsp_hseq>LPPGTTLYRGQEVTFKTLRHNIENKMFYFKNFVSTSLKPNIFGEHGKNYMALDDSGAVFSGEGEGS----VDAEDLMHMGSHSAYANED-----------AETSVGMVIKGAERIKVIVPGHLSGFPSEAEVILPRGILLKINKVSTYMMKETAYNKYLIEGTIVPPSEQLEESV--YDGDHLMETGEVRPMAGFNQFLVEES--KEEENEVSQILASLVNINGMSKKFK</Hsp_hseq>\n+ <Hsp_midline>L GT LYRGQ++ T HN ENK+FYF+N+VSTSLKP IFGE G+ +MALDD +++ E + ED++ +G+ + +D + ++G VI GAE ++VIVPG L+ +P EAEVILPRG LLKINK++T + K + NK+++EG+IVPPSEQ++ESV YDGD METGEV ++GF QF+ E + +E+ ++IL+ ++I+ M +KF+</Hsp_midline>\n+ </Hsp>\n+ </Hit_hsps>\n+</Hit>\n+<Hit>\n+ <Hit_num>2</Hit_num>\n+ <Hit_id>gi|330858714|ref|YP_004415089.1|</Hit_id>\n+ <Hit_def>hypothetical protein Shfl2p198 [Shigella phage Shfl2] >gi|327397648|gb|AEA73150.1| hypothetical protein Shfl2p198 [Shigella phage Shfl2]</Hit_def>\n+ <Hit_accession>YP_004415089</Hit_accession>\n+ <Hit_len>685</Hit_len>\n+ <Hit_hsps>\n+ <Hsp>\n+ <Hsp_num>1</Hsp_num>\n+ <Hsp_bit-score>197.593</Hsp_bit-score>\n+ <Hsp_score>501</Hsp_score>\n+ <Hsp_evalue>4.31042e-55</Hsp_evalue>\n+ <Hsp_query-from>2</Hsp_query-from>\n+ <Hsp_query-to>229</Hsp_query-to>\n+ <Hsp_hit-from>474</Hsp_hit-from>\n+ <Hsp_hit-to>684</Hsp_hit-to>\n+ <Hsp_query-frame>0</Hsp_query-frame>\n+ <Hsp_hit-frame>0</Hsp_hit-frame>\n+ <Hsp_identity>106</Hsp_identity>\n+ <Hsp_positive>154</Hsp_positive>\n+ <Hsp_gaps>21</Hsp_gap'..b'e>0</Hsp_hit-frame>\n+ <Hsp_identity>150</Hsp_identity>\n+ <Hsp_positive>268</Hsp_positive>\n+ <Hsp_gaps>53</Hsp_gaps>\n+ <Hsp_align-len>553</Hsp_align-len>\n+ <Hsp_qseq>DVQSANELVAEVIEEKGNNL------IDSVDNVAEGTELAAEASERTTESIKTLTGVASTISDKLSKLASMLESKVQA--VEQKVQESGASASTGLSVIEDKLPDPDEPESPGLPERILPPLDDNNNLPDEDFFPPVPQEPENNKKDQKKDDKKPTDMLGD-LLKTTKGGFKATISITDKISSMLFKYTVTALAEAAKMAAMLFALVLGIDLLRIHFKYWTDKFMSNFDEFSAEAGEWGGLLQSIFGMLGDIKKFWEAGDWSGLAVAIVKGLADVIYNLSEIMSLGISKISASILDALGFENAATTIRGSALEGFQERTGNSLSEDDQKALAKYQSKRIEEGPGIIDKAGEFKTRAFDWVLGRENKIDSTQASDRDQETQNLKAMAPEKR---EETLIKQNEARAAVQRLEKYIGDVDPENPTNMQSLEKAYNSAKKSISDSAISDQPA---------TKKELDKRFQRVESKYQKLKEDNTPKPAA---PATSEDNQRVQNIQKAENAKE--QSKKSTGDMNVANTQVNNV-NNSKTIHQVQTVTATPAPGV</Hsp_qseq>\n+ <Hsp_hseq>DSLAAQELIAETVEQGNNELRQIKANTASLHDTAAATELGAESTEMSNTILREISETGKQTFSKLSEFAERLKGSFSADDVEQTPIRAASSSDQAIQIINEENPEPENPLVG-----YLRTISEDIKFLRENKNEPSDPKDPDVVPDDKDDLKTMIDRIGDQIVKSVDSGFKRTVNIADSISSTLFKYTITAALNFAKMAALVLSLIIAFDVLSRHFSHWTQMFQEQYAEFKETLGSFGTPFENLTGIVTDLVNYFKSDEYLKMFVRLAEGAADQMIYIVNMMMVGLAKLGAAILRALGADDKADTLEASAISVATKTVGYTPSEEEEATIGRVRKRQAQE---------EAEQSEASWWEKKKREWDG-----KPIETDEEKAVRERKKSIAENTTAEQFGKHDALSQKIQHVGVTAEKNETSNELLGKHRELLEKRASDVEQAKQSGEITTESYKQLKVEIEKQREFLDAHEQKL-----LKPKASIKPAPEPEIGVVGSIAKEEKRVEASQTAKQEAASNY-NTNANIVKNNNQTLVQAPR-TSSPGPGI</Hsp_hseq>\n+ <Hsp_midline>D +A EL+AE +E+ N L S+ + A TEL AE++E + ++ ++ KLS+ A L+ A VEQ + +S+ + +I ++ P+P+ P L + ++ E+ P + + D K D K D +GD ++K+ GFK T++I D ISS LFKYT+TA AKMAA++ +L++ D+L HF +WT F + EF G +G +++ G++ D+ ++++ ++ + V + +G AD + + +M +G++K+ A+IL ALG ++ A T+ SA+ + G + SE+++ + + + ++ +E E + W ++ + D + ET KA+ K+ E T +Q A+ + +++G +N T+ + L K +K SD + Q K E++K+ + +++ QKL KP A PA + V +I K E E Q+ K N NT N V NN++T+ Q T++P PG+</Hsp_midline>\n+ </Hsp>\n+ </Hit_hsps>\n+</Hit>\n+<Hit>\n+ <Hit_num>43</Hit_num>\n+ <Hit_id>gi|398313739|emb|CCI89086.1|</Hit_id>\n+ <Hit_def>phage baseplate hub [Yersinia phage phiD1]</Hit_def>\n+ <Hit_accession>CCI89086</Hit_accession>\n+ <Hit_len>191</Hit_len>\n+ <Hit_hsps>\n+ <Hsp>\n+ <Hsp_num>1</Hsp_num>\n+ <Hsp_bit-score>79.7221</Hsp_bit-score>\n+ <Hsp_score>195</Hsp_score>\n+ <Hsp_evalue>1.49556e-13</Hsp_evalue>\n+ <Hsp_query-from>2</Hsp_query-from>\n+ <Hsp_query-to>189</Hsp_query-to>\n+ <Hsp_hit-from>3</Hsp_hit-from>\n+ <Hsp_hit-to>187</Hsp_hit-to>\n+ <Hsp_query-frame>0</Hsp_query-frame>\n+ <Hsp_hit-frame>0</Hsp_hit-frame>\n+ <Hsp_identity>69</Hsp_identity>\n+ <Hsp_positive>102</Hsp_positive>\n+ <Hsp_gaps>17</Hsp_gaps>\n+ <Hsp_align-len>195</Hsp_align-len>\n+ <Hsp_qseq>KSENMSTMRRRKVIADSKGERDAASTASDQVDSLELIGLKLDDVQSANELVAEVIEEKGNNLIDSVDNV-------AEGTELAAEASERTTESIKTLTGVASTISDKLSKLASMLESKVQAVEQKVQESGASASTGLSVIEDKLPDPDEPESPGLPERILPPLDDNNNLPDEDFFPPVPQEPENNKKDQKKDDKK</Hsp_qseq>\n+ <Hsp_hseq>KPQEMQTMRR-KVISDNKPTQEAAKSASNTLSGLNDISTKLDDTQAASELIAQTVEEKSNEIVGAIGNVESAVSDTTAGSELIAETVEIGNNINKE---IGESLGSKLDKLTSLLEQKIQTA--GIQQTGTXLATVESAIPVKVVEDDTDRXXVLXYRXLKQLIMILTLI---FSLPLSQLSQ-SKNHQKKNRKK</Hsp_hseq>\n+ <Hsp_midline>K + M TMRR KVI+D+K ++AA +AS+ + L I KLDD Q+A+EL+A+ +EEK N ++ ++ NV G+EL AE E K + ++ KL KL S+LE K+Q +Q++G +T S I K+ + D L R L L L F P+ Q + +K QKK+ KK</Hsp_midline>\n+ </Hsp>\n+ </Hit_hsps>\n+</Hit>\n+</Iteration_hits>\n+ <Iteration_stat>\n+ <Statistics>\n+ <Statistics_db-num>48094830</Statistics_db-num>\n+ <Statistics_db-len>17186091396</Statistics_db-len>\n+ <Statistics_hsp-len>153</Statistics_hsp-len>\n+ <Statistics_eff-space>4157067357738</Statistics_eff-space>\n+ <Statistics_kappa>0.041</Statistics_kappa>\n+ <Statistics_lambda>0.267</Statistics_lambda>\n+ <Statistics_entropy>0.14</Statistics_entropy>\n+ </Statistics>\n+ </Iteration_stat>\n+</Iteration>\n+</BlastOutput_iterations>\n+</BlastOutput>\n+\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/blastxml/blastn-gene1.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/blastxml/blastn-gene1.xml Thu Mar 28 04:51:06 2024 +0000 |
b |
b'@@ -0,0 +1,128 @@\n+<?xml version="1.0"?>\n+<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_BlastOutput.dtd">\n+<BlastOutput>\n+ <BlastOutput_program>blastn</BlastOutput_program>\n+ <BlastOutput_version>BLASTN 2.2.28+</BlastOutput_version>\n+ <BlastOutput_reference>Stephen F. Altschul, Thomas L. Madden, Alejandro A. Sch&auml;ffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402.</BlastOutput_reference>\n+ <BlastOutput_db>/opt/db/nt_aug2015/nt</BlastOutput_db>\n+ <BlastOutput_query-ID>Query_1</BlastOutput_query-ID>\n+ <BlastOutput_query-def>Merlin</BlastOutput_query-def>\n+ <BlastOutput_query-len>58313</BlastOutput_query-len>\n+ <BlastOutput_param>\n+ <Parameters>\n+ <Parameters_expect>0.001</Parameters_expect>\n+ <Parameters_sc-match>2</Parameters_sc-match>\n+ <Parameters_sc-mismatch>-3</Parameters_sc-mismatch>\n+ <Parameters_gap-open>5</Parameters_gap-open>\n+ <Parameters_gap-extend>2</Parameters_gap-extend>\n+ <Parameters_filter>L;m;</Parameters_filter>\n+ </Parameters>\n+ </BlastOutput_param>\n+<BlastOutput_iterations>\n+<Iteration>\n+ <Iteration_iter-num>1</Iteration_iter-num>\n+ <Iteration_query-ID>Query_1</Iteration_query-ID>\n+ <Iteration_query-def>Merlin</Iteration_query-def>\n+ <Iteration_query-len>58313</Iteration_query-len>\n+<Iteration_hits>\n+<Hit>\n+ <Hit_num>1</Hit_num>\n+ <Hit_id>gi|451937967|gb|KC139519.1|</Hit_id>\n+ <Hit_def>Salmonella phage FSL SP-030, complete genome</Hit_def>\n+ <Hit_accession>KC139519</Hit_accession>\n+ <Hit_len>59746</Hit_len>\n+ <Hit_hsps>\n+ <Hsp>\n+ <Hsp_num>1</Hsp_num>\n+ <Hsp_bit-score>9779.15</Hsp_bit-score>\n+ <Hsp_score>10844</Hsp_score>\n+ <Hsp_evalue>0</Hsp_evalue>\n+ <Hsp_query-from>35381</Hsp_query-from>\n+ <Hsp_query-to>53427</Hsp_query-to>\n+ <Hsp_hit-from>22789</Hsp_hit-from>\n+ <Hsp_hit-to>4832</Hsp_hit-to>\n+ <Hsp_query-frame>1</Hsp_query-frame>\n+ <Hsp_hit-frame>-1</Hsp_hit-frame>\n+ <Hsp_identity>13209</Hsp_identity>\n+ <Hsp_positive>13209</Hsp_positive>\n+ <Hsp_gaps>547</Hsp_gaps>\n+ <Hsp_align-len>18276</Hsp_align-len>\n+ <Hsp_qseq>GCCACCTGCTGACGGTACTGGTCGATTTGCTGCGCCAGTCCGGCAGCCGCACGGTTCGCCTCGTTCAGCAT-CTTCGTCTTCTGCGCCAGGTCCTTGATGGCGTTGCCGCTGGTCGACACTTCGGATGCGAGGGTGTGGACTTGCTGCTGCAGGCCAGATAGCGTCCGGCGCGCAGCGTCTGACGGACTTATGATTTGCTGGATTTTCGACGCCAGTGGCCCCATCTGCGACGTGGTGGTCTGCACGACCCGGCCCAGGGTTGAATACCCTTTTACCGCCGCCAGTGCCTGCTGCGCTTGCTGCTGCAGACCCTGTATGACTTTATTTTGGGCGGCCGCCGCAGGCGCGGTGGCGATGATGTTTTCCTGCTGCTGCAGTACCTTGTTAACGCTCGCCACGCTGTTAACGATACTGGACTGCGCGGCACCGAGCGTTTTTGTCTCAATGCCATATCGTTGCAGCTCTTTCGTTGTACGGCTCACCTGCGCCGCCCGCGACGCCTCGGTGCGCTCTGCACGCTCTACCTGCCGGTTAACACGGGCGAGTTCGGCTTCCTGTTTTTTCGTTACCTTCGCGGCAGAGTCATACGCTTGCTGCAGCTGGGCTTGCTTGGCCCGTAAGTCTTCCGTCTTTTGCGCCGCTTCAACCATCGTGGCGT---TCTGACGTTTATACAGCTCCACAAGGGCATTCAGCTTTAACAGCTGCTGCCCGGCCTGCTCAAGTTTTTTGTACGAGGCTTCCAGCTGACGCGTCGAGACTTCGCCCCGTTCTGCCGCTTTACGCTGGTCGTCCTGCGCCTTCGCCAT-TGCTTCAATCGCGGAGGCCACGGCTTTAAGGGGTTTCTGGCTGAAATCCCTCGCCCGGATCCTTAGTTCGACGTCTTTGCTGTTAGCCATCGCTCAAGCCCTTAATCAGTTTTTTGTAGTGCGGGCCACCTTTCTTCCCGTTCATGACGGAGGC----CAGTAGCGCCTGCAGTAACGTGCTTTCCGTCACCATGTGCATATTCACGCGGCGCCGGGCAATCTTGATTTCAGACCACAGGTACCCCAGCGGGTACCGGCGTGCGTCTGGGTGTCCCTGAGACATCAGGAAGGACACGCCTTCCCGCAGCTCATTGTGAAACCGTATTACTTTTTCCCTTTTGCTGTAGACTCGGGTGTCAGGCCGGCCTTTGTGTCCCTCATCAGG---------TCCATGGCCTTCCGTAGCATCTTTTTTATATCTTCAACGTCCGAGAAGGTCAGGCGGCCAATGGCTTTCAGCGCGTCAATCTGGGCGGTCAGCGGGAGGCG-CTGGGCTTTCTCCAGGTTGGCTTCGTCGTCCGCTGCCAGCGCGATGATATGGGCTACCAGGCCGGGCGCATCGTTAATAAGGCCCATGGCGAATTTGCCCATGGCCACGTAGGAAAGGTCGCTGCCGCCGTGGGTTTC--GTAAATATCAAACAGCCCTTCCAGGTCGTCATAGTGAACGCGGACGATCTTCGAAATGTCCTGGAATGACAGGCCGCGGACCTCGAATGCAACGTCGCCTTTTTTA-GCG-CG---CTTAATGATGATCTCTTCGGTATCCGGGGTGAAATCTGACAGTGACATGGG--GTTTATCCTCTTCGTTGGTTGACGTCGTTAATGTAGCACGTCG--GCAGAAAAGCATAAAAGAAAAGCGC'..b'sp_query-from>\n+ <Hsp_query-to>8129</Hsp_query-to>\n+ <Hsp_hit-from>52248</Hsp_hit-from>\n+ <Hsp_hit-to>51278</Hsp_hit-to>\n+ <Hsp_query-frame>1</Hsp_query-frame>\n+ <Hsp_hit-frame>-1</Hsp_hit-frame>\n+ <Hsp_identity>719</Hsp_identity>\n+ <Hsp_positive>719</Hsp_positive>\n+ <Hsp_gaps>24</Hsp_gaps>\n+ <Hsp_align-len>983</Hsp_align-len>\n+ <Hsp_qseq>ATGAAAGTTAAAGGTTTTGAGAAAGTCATCATACTGCATCTCGGCGCGCTCTTTGGCGCCGCAAACGCTGG---CGAGAAGTCTGTAAAGAGTTTCCACCGCACGCTGCTGAACACGCCGAACATGGACGAAATGAGCGTCCATGAATTCGCCGCCGGC-CGTGTGAGCGACCGACTGGCGAAGCACGAAGTGAAAGACCCGATCG--GC----TATAAGACGATTGGCTTTGCGCCTTACGCGGACTACGTGGGCGGCAAGTTCGCCATGGGCATCCCGGGTACTAACGCCATCGTGCTGCAGGCCGAAAAGCGTGAACGCGTGCTGCCCGGGGTCAGCGTGCGCAACGAAGTGACGAAGCGCATGGACGCCTGGCGCGAGAAAGAGATCGAAGGCTGGGAGCCGACCCGGAAAGACTGGGCGCAGCTGAAAGACGATGTCGAAGCCGAAATGCTGAAAACCGCGCCTATCCGCCCGACCCGCTACAATGTGATCATCGCCGTCCCGTACGTCTACGTGTTCACCACCAGCGCCAAGACCGCCGAAGAGGTTAACGCCCTGCTGCGTGCCGCGTTCGGTACCTGGCCAGTGGAACACCTGCTGATCAATGACTTCGTGCTGCGTCAGTCAATGGAGAAGGTCGTACGCGG-CAGCATCGAGGGTATCACTGGCGACGACTTCATCCACATCAAGCACGATGACGGCGATGACGTGAAGTTCAAGGACATTGACATCCATAAGGACGAAGTGGTCCTCGACTACCTGGCGCGGCATTACACGGTTCGGGCGCTGAACATGCGAA-TCGACGAACGCGAGATGCGACCTGGCGTGGGCAACGTGTTCTTCCGCCTGACCGACAAGGCGATCATCTCCGGGATCCACATCGGCGAGGCGGACGTTGACGCCAACTATGAAGCCACCCTGGAGCGCTACAACAATGACAGCGGTACGTTCCTGACCTACATGGCCAACCTGTTCCA</Hsp_qseq>\n+ <Hsp_hseq>ATGAAAATCAAGAGTTATGAGAAAGCCATTATCTTGCACCTCGGCGCGCTGTATGACGCGGCCAACGACGGTAACGAGAAG---GTCAAGCCGCTGCACCGCCTGATCCTGAACCTGCCGAACGTTGACGAAGAGGCCGTAACGGCTTTCGCGAAAGGAGCGTTT-AGCGATGCACTCGAAAAGCATGAAGTGTCAGATCCGCCGGAGGCGTCTTACAAGACAATGGGCTTTGCAGCGTACGGCGAAGAGGTTGACAGCAAGTTTGCGCTCGCCATCCCCGGAACAAACGCCATCGTCTTCCAGATCGAAAAGCGCGAGCGAGTGCTGCCCGGCGTTAGCGTACGAAACGAAGTCGTGAAGCGCATGGCCGCGTTGCGCGAGAAAGAGATCGAGGGTTGGGAGCCGAACCGCAAGGATTGGGCGCAGATGAAGGACGACGTGGAAGCGGAAATGCTGAAACACGCGCCTATCCGCCCGTCCCGCGTCAACGTCATCCTGTCCGCCCCGTTCGTGTACGTGTTCACGTCGAGCGCGAAGACGGCAGAAGAGTGCAGCGCGCTGATCCGTACCGCGCTCGGCACATGGCCCGTTGAACACCTCCTGCCGAGCGAGTATGAGCTGCGCCAGTTAATGCAGCGCGCGGTTCTCGGCCAGCA-GGACGGCATCAAGGGCGATGCATTTATCCACCTGAAACACGATGACGGCGACGACGTCAAGATGAAGGACACGGACATCTTCAAAGACGAGGCGGTGGTTGACCTGCTGTCCCGCCACTGGACTGTCCGCGCACTGGATCT-CGAAGTCGA--TACGC--AATGC--CCGGGCATCGACACCGTGTACTTCCGCCTGTCCGACAAAGCCATCCTGTCCGGTATCCACATCGGCGAGGCCGACGTTGATGCGAACTACGACGCCACGCTCGAACGCTACGGCACCGACGGCGGCCAGTTCCTGACCATGATGGCGAACCTGTTCCA</Hsp_hseq>\n+ <Hsp_midline>|||||| | || ||| |||||||| ||| || |||| ||||||||||| | || ||| || |||| || ||||||| || ||| | |||||| | | |||||| ||||||| | |||||| | ||| | ||||| || ||| | ||||| ||| | ||||| |||||| ||| ||| | || || ||||| || |||||||| | |||| || | || | | ||||||| || | | |||||| || || ||||||||||| | ||| ||||||||| || || ||||||||||| || ||||| || |||||||| ||||||||||| ||| | |||||||||||||||||| || |||||||||| ||| || || ||||||||| |||| ||||| || ||||| |||||||||||| |||||||||||||||| ||||| ||| || ||| | ||| ||||| ||| ||||||||||| | ||||| ||||| || |||||| | ||| ||| | ||| ||||| |||| || ||||| || |||||||| ||| | || | | |||||| |||| |||| || | || | ||| ||||| || || |||| ||||| | || |||||| | || |||||||||||||| ||||| ||| | ||||||| |||||| || ||||| | ||| | ||| ||| | || || | || || || || ||| | | |||| |||| |||| |||| || ||| | | || ||||| |||||||||| ||||||| || ||| | ||||| ||||||||||||||||| |||||||| || ||||| || ||||| || || |||||| || ||| |||| |||||||||| ||||| |||||||||||</Hsp_midline>\n+ </Hsp>\n+ </Hit_hsps>\n+</Hit>\n+</Iteration_hits>\n+ <Iteration_stat>\n+ <Statistics>\n+ <Statistics_db-num>31902778</Statistics_db-num>\n+ <Statistics_db-len>102365819095</Statistics_db-len>\n+ <Statistics_hsp-len>43</Statistics_hsp-len>\n+ <Statistics_eff-space>5.88492035908107e+15</Statistics_eff-space>\n+ <Statistics_kappa>0.41</Statistics_kappa>\n+ <Statistics_lambda>0.625</Statistics_lambda>\n+ <Statistics_entropy>0.78</Statistics_entropy>\n+ </Statistics>\n+ </Iteration_stat>\n+</Iteration>\n+</BlastOutput_iterations>\n+</BlastOutput>\n+\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/blastxml/merlin.gff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/blastxml/merlin.gff Thu Mar 28 04:51:06 2024 +0000 |
b |
b'@@ -0,0 +1,1230 @@\n+##gff-version 3\n+##sequence-region Merlin 1 172788\n+Merlin\tGeneMark.hmm\tgene\t2\t691\t-856.563659\t+\t.\tID=Merlin_1;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t2\t691\t.\t+\t.\tID=Merlin_1_mRNA;Parent=Merlin_1;seqid=Merlin;color=#00ff00\n+Merlin\tGeneMark.hmm\texon\t2\t691\t.\t+\t.\tID=Merlin_1_exon;Parent=Merlin_1_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t2\t691\t.\t+\t0\tID=Merlin_1_CDS;Parent=Merlin_1_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t752\t1039\t-339.046618\t+\t.\tID=Merlin_2;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t752\t1039\t.\t+\t.\tID=Merlin_2_mRNA;Parent=Merlin_2;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t752\t1039\t.\t+\t.\tID=Merlin_2_exon;Parent=Merlin_2_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t752\t1039\t.\t+\t0\tID=Merlin_2_CDS;Parent=Merlin_2_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t1067\t2011\t-1229.683915\t-\t.\tID=Merlin_3;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t1067\t2011\t.\t-\t.\tID=Merlin_3_mRNA;Parent=Merlin_3;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t1067\t2011\t.\t-\t.\tID=Merlin_3_exon;Parent=Merlin_3_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t1067\t2011\t.\t-\t0\tID=Merlin_3_CDS;Parent=Merlin_3_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t2011\t3066\t-1335.034872\t-\t.\tID=Merlin_4;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t2011\t3066\t.\t-\t.\tID=Merlin_4_mRNA;Parent=Merlin_4;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t2011\t3066\t.\t-\t.\tID=Merlin_4_exon;Parent=Merlin_4_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t2011\t3066\t.\t-\t0\tID=Merlin_4_CDS;Parent=Merlin_4_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t3066\t4796\t-2177.374893\t-\t.\tID=Merlin_5;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t3066\t4796\t.\t-\t.\tID=Merlin_5_mRNA;Parent=Merlin_5;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t3066\t4796\t.\t-\t.\tID=Merlin_5_exon;Parent=Merlin_5_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t3066\t4796\t.\t-\t0\tID=Merlin_5_CDS;Parent=Merlin_5_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t4793\t5317\t-682.565030\t-\t.\tID=Merlin_6;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t4793\t5317\t.\t-\t.\tID=Merlin_6_mRNA;Parent=Merlin_6;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t4793\t5317\t.\t-\t.\tID=Merlin_6_exon;Parent=Merlin_6_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t4793\t5317\t.\t-\t0\tID=Merlin_6_CDS;Parent=Merlin_6_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t5289\t6431\t-1457.525863\t-\t.\tID=Merlin_7;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t5289\t6431\t.\t-\t.\tID=Merlin_7_mRNA;Parent=Merlin_7;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t5289\t6431\t.\t-\t.\tID=Merlin_7_exon;Parent=Merlin_7_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t5289\t6431\t.\t-\t0\tID=Merlin_7_CDS;Parent=Merlin_7_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t6428\t7180\t-968.015933\t-\t.\tID=Merlin_8;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t6428\t7180\t.\t-\t.\tID=Merlin_8_mRNA;Parent=Merlin_8;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t6428\t7180\t.\t-\t.\tID=Merlin_8_exon;Parent=Merlin_8_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t6428\t7180\t.\t-\t0\tID=Merlin_8_CDS;Parent=Merlin_8_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t7228\t7857\t-809.330137\t+\t.\tID=Merlin_9;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t7228\t7857\t.\t+\t.\tID=Merlin_9_mRNA;Parent=Merlin_9;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t7228\t7857\t.\t+\t.\tID=Merlin_9_exon;Parent=Merlin_9_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t7228\t7857\t.\t+\t0\tID=Merlin_9_CDS;Parent=Merlin_9_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t7857\t8252\t-515.006678\t+\t.\tID=Merlin_10;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t7857\t8252\t.\t+\t.\tID=Merlin_10_mRNA;Parent=Merlin_10;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t7857\t8252\t.\t+\t.\tID=Merlin_10_exon;Parent=Merlin_10_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t7857\t8252\t.\t+\t0\tID=Merlin_10_CDS;Parent=Merlin_10_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t8340\t8753\t-522.529341\t+\t.\tID=Merlin_11;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t8340\t8753\t.\t+\t.\tID=Merlin_11_mRNA;Parent=Merlin_11;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t8340\t8753\t.\t+\t.\tID=Merlin_11_exon;Parent=Merlin_11_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t8340\t8753\t.\t+\t0\tID=Merlin_11_CDS;Parent=Merlin_11_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t8787\t8951\t-212.019038\t+\t.\tID=Merlin_12;seqid=Merlin'..b'rlin\n+Merlin\tGeneMark.hmm\texon\t164715\t165071\t.\t+\t.\tID=Merlin_297_exon;Parent=Merlin_297_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t164715\t165071\t.\t+\t0\tID=Merlin_297_CDS;Parent=Merlin_297_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t165107\t165601\t-618.360781\t+\t.\tID=Merlin_298;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t165107\t165601\t.\t+\t.\tID=Merlin_298_mRNA;Parent=Merlin_298;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t165107\t165601\t.\t+\t.\tID=Merlin_298_exon;Parent=Merlin_298_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t165107\t165601\t.\t+\t0\tID=Merlin_298_CDS;Parent=Merlin_298_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t165612\t165773\t-191.091430\t+\t.\tID=Merlin_299;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t165612\t165773\t.\t+\t.\tID=Merlin_299_mRNA;Parent=Merlin_299;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t165612\t165773\t.\t+\t.\tID=Merlin_299_exon;Parent=Merlin_299_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t165612\t165773\t.\t+\t0\tID=Merlin_299_CDS;Parent=Merlin_299_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t165770\t166000\t-285.030914\t+\t.\tID=Merlin_300;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t165770\t166000\t.\t+\t.\tID=Merlin_300_mRNA;Parent=Merlin_300;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t165770\t166000\t.\t+\t.\tID=Merlin_300_exon;Parent=Merlin_300_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t165770\t166000\t.\t+\t0\tID=Merlin_300_CDS;Parent=Merlin_300_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t165997\t166191\t-241.609251\t+\t.\tID=Merlin_301;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t165997\t166191\t.\t+\t.\tID=Merlin_301_mRNA;Parent=Merlin_301;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t165997\t166191\t.\t+\t.\tID=Merlin_301_exon;Parent=Merlin_301_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t165997\t166191\t.\t+\t0\tID=Merlin_301_CDS;Parent=Merlin_301_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t166352\t167200\t-1091.167753\t+\t.\tID=Merlin_302;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t166352\t167200\t.\t+\t.\tID=Merlin_302_mRNA;Parent=Merlin_302;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t166352\t167200\t.\t+\t.\tID=Merlin_302_exon;Parent=Merlin_302_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t166352\t167200\t.\t+\t0\tID=Merlin_302_CDS;Parent=Merlin_302_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t167197\t167433\t-294.645060\t+\t.\tID=Merlin_303;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t167197\t167433\t.\t+\t.\tID=Merlin_303_mRNA;Parent=Merlin_303;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t167197\t167433\t.\t+\t.\tID=Merlin_303_exon;Parent=Merlin_303_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t167197\t167433\t.\t+\t0\tID=Merlin_303_CDS;Parent=Merlin_303_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t167487\t168944\t-1811.170385\t+\t.\tID=Merlin_304;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t167487\t168944\t.\t+\t.\tID=Merlin_304_mRNA;Parent=Merlin_304;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t167487\t168944\t.\t+\t.\tID=Merlin_304_exon;Parent=Merlin_304_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t167487\t168944\t.\t+\t0\tID=Merlin_304_CDS;Parent=Merlin_304_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t168941\t169120\t-220.159549\t+\t.\tID=Merlin_305;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t168941\t169120\t.\t+\t.\tID=Merlin_305_mRNA;Parent=Merlin_305;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t168941\t169120\t.\t+\t.\tID=Merlin_305_exon;Parent=Merlin_305_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t168941\t169120\t.\t+\t0\tID=Merlin_305_CDS;Parent=Merlin_305_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t169175\t171265\t-2617.092758\t+\t.\tID=Merlin_306;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t169175\t171265\t.\t+\t.\tID=Merlin_306_mRNA;Parent=Merlin_306;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t169175\t171265\t.\t+\t.\tID=Merlin_306_exon;Parent=Merlin_306_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t169175\t171265\t.\t+\t0\tID=Merlin_306_CDS;Parent=Merlin_306_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t171301\t172788\t-1876.322043\t+\t.\tID=Merlin_307;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t171301\t172788\t.\t+\t.\tID=Merlin_307_mRNA;Parent=Merlin_307;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t171301\t172788\t.\t+\t.\tID=Merlin_307_exon;Parent=Merlin_307_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t171301\t172788\t.\t+\t0\tID=Merlin_307_CDS;Parent=Merlin_307_exon;seqid=Merlin\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/bw/data.bw |
b |
Binary file test-data/bw/data.bw has changed |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/cram/merlin-sample.cram |
b |
Binary file test-data/cram/merlin-sample.cram has changed |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/gff3/merlin.gff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/gff3/merlin.gff Thu Mar 28 04:51:06 2024 +0000 |
b |
b'@@ -0,0 +1,1230 @@\n+##gff-version 3\n+##sequence-region Merlin 1 172788\n+Merlin\tGeneMark.hmm\tgene\t2\t691\t-856.563659\t+\t.\tID=Merlin_1;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t2\t691\t.\t+\t.\tID=Merlin_1_mRNA;Parent=Merlin_1;seqid=Merlin;color=#00ff00\n+Merlin\tGeneMark.hmm\texon\t2\t691\t.\t+\t.\tID=Merlin_1_exon;Parent=Merlin_1_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t2\t691\t.\t+\t0\tID=Merlin_1_CDS;Parent=Merlin_1_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t752\t1039\t-339.046618\t+\t.\tID=Merlin_2;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t752\t1039\t.\t+\t.\tID=Merlin_2_mRNA;Parent=Merlin_2;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t752\t1039\t.\t+\t.\tID=Merlin_2_exon;Parent=Merlin_2_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t752\t1039\t.\t+\t0\tID=Merlin_2_CDS;Parent=Merlin_2_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t1067\t2011\t-1229.683915\t-\t.\tID=Merlin_3;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t1067\t2011\t.\t-\t.\tID=Merlin_3_mRNA;Parent=Merlin_3;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t1067\t2011\t.\t-\t.\tID=Merlin_3_exon;Parent=Merlin_3_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t1067\t2011\t.\t-\t0\tID=Merlin_3_CDS;Parent=Merlin_3_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t2011\t3066\t-1335.034872\t-\t.\tID=Merlin_4;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t2011\t3066\t.\t-\t.\tID=Merlin_4_mRNA;Parent=Merlin_4;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t2011\t3066\t.\t-\t.\tID=Merlin_4_exon;Parent=Merlin_4_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t2011\t3066\t.\t-\t0\tID=Merlin_4_CDS;Parent=Merlin_4_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t3066\t4796\t-2177.374893\t-\t.\tID=Merlin_5;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t3066\t4796\t.\t-\t.\tID=Merlin_5_mRNA;Parent=Merlin_5;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t3066\t4796\t.\t-\t.\tID=Merlin_5_exon;Parent=Merlin_5_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t3066\t4796\t.\t-\t0\tID=Merlin_5_CDS;Parent=Merlin_5_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t4793\t5317\t-682.565030\t-\t.\tID=Merlin_6;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t4793\t5317\t.\t-\t.\tID=Merlin_6_mRNA;Parent=Merlin_6;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t4793\t5317\t.\t-\t.\tID=Merlin_6_exon;Parent=Merlin_6_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t4793\t5317\t.\t-\t0\tID=Merlin_6_CDS;Parent=Merlin_6_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t5289\t6431\t-1457.525863\t-\t.\tID=Merlin_7;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t5289\t6431\t.\t-\t.\tID=Merlin_7_mRNA;Parent=Merlin_7;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t5289\t6431\t.\t-\t.\tID=Merlin_7_exon;Parent=Merlin_7_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t5289\t6431\t.\t-\t0\tID=Merlin_7_CDS;Parent=Merlin_7_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t6428\t7180\t-968.015933\t-\t.\tID=Merlin_8;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t6428\t7180\t.\t-\t.\tID=Merlin_8_mRNA;Parent=Merlin_8;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t6428\t7180\t.\t-\t.\tID=Merlin_8_exon;Parent=Merlin_8_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t6428\t7180\t.\t-\t0\tID=Merlin_8_CDS;Parent=Merlin_8_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t7228\t7857\t-809.330137\t+\t.\tID=Merlin_9;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t7228\t7857\t.\t+\t.\tID=Merlin_9_mRNA;Parent=Merlin_9;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t7228\t7857\t.\t+\t.\tID=Merlin_9_exon;Parent=Merlin_9_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t7228\t7857\t.\t+\t0\tID=Merlin_9_CDS;Parent=Merlin_9_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t7857\t8252\t-515.006678\t+\t.\tID=Merlin_10;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t7857\t8252\t.\t+\t.\tID=Merlin_10_mRNA;Parent=Merlin_10;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t7857\t8252\t.\t+\t.\tID=Merlin_10_exon;Parent=Merlin_10_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t7857\t8252\t.\t+\t0\tID=Merlin_10_CDS;Parent=Merlin_10_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t8340\t8753\t-522.529341\t+\t.\tID=Merlin_11;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t8340\t8753\t.\t+\t.\tID=Merlin_11_mRNA;Parent=Merlin_11;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t8340\t8753\t.\t+\t.\tID=Merlin_11_exon;Parent=Merlin_11_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t8340\t8753\t.\t+\t0\tID=Merlin_11_CDS;Parent=Merlin_11_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t8787\t8951\t-212.019038\t+\t.\tID=Merlin_12;seqid=Merlin'..b'rlin\n+Merlin\tGeneMark.hmm\texon\t164715\t165071\t.\t+\t.\tID=Merlin_297_exon;Parent=Merlin_297_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t164715\t165071\t.\t+\t0\tID=Merlin_297_CDS;Parent=Merlin_297_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t165107\t165601\t-618.360781\t+\t.\tID=Merlin_298;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t165107\t165601\t.\t+\t.\tID=Merlin_298_mRNA;Parent=Merlin_298;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t165107\t165601\t.\t+\t.\tID=Merlin_298_exon;Parent=Merlin_298_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t165107\t165601\t.\t+\t0\tID=Merlin_298_CDS;Parent=Merlin_298_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t165612\t165773\t-191.091430\t+\t.\tID=Merlin_299;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t165612\t165773\t.\t+\t.\tID=Merlin_299_mRNA;Parent=Merlin_299;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t165612\t165773\t.\t+\t.\tID=Merlin_299_exon;Parent=Merlin_299_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t165612\t165773\t.\t+\t0\tID=Merlin_299_CDS;Parent=Merlin_299_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t165770\t166000\t-285.030914\t+\t.\tID=Merlin_300;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t165770\t166000\t.\t+\t.\tID=Merlin_300_mRNA;Parent=Merlin_300;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t165770\t166000\t.\t+\t.\tID=Merlin_300_exon;Parent=Merlin_300_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t165770\t166000\t.\t+\t0\tID=Merlin_300_CDS;Parent=Merlin_300_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t165997\t166191\t-241.609251\t+\t.\tID=Merlin_301;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t165997\t166191\t.\t+\t.\tID=Merlin_301_mRNA;Parent=Merlin_301;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t165997\t166191\t.\t+\t.\tID=Merlin_301_exon;Parent=Merlin_301_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t165997\t166191\t.\t+\t0\tID=Merlin_301_CDS;Parent=Merlin_301_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t166352\t167200\t-1091.167753\t+\t.\tID=Merlin_302;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t166352\t167200\t.\t+\t.\tID=Merlin_302_mRNA;Parent=Merlin_302;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t166352\t167200\t.\t+\t.\tID=Merlin_302_exon;Parent=Merlin_302_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t166352\t167200\t.\t+\t0\tID=Merlin_302_CDS;Parent=Merlin_302_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t167197\t167433\t-294.645060\t+\t.\tID=Merlin_303;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t167197\t167433\t.\t+\t.\tID=Merlin_303_mRNA;Parent=Merlin_303;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t167197\t167433\t.\t+\t.\tID=Merlin_303_exon;Parent=Merlin_303_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t167197\t167433\t.\t+\t0\tID=Merlin_303_CDS;Parent=Merlin_303_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t167487\t168944\t-1811.170385\t+\t.\tID=Merlin_304;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t167487\t168944\t.\t+\t.\tID=Merlin_304_mRNA;Parent=Merlin_304;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t167487\t168944\t.\t+\t.\tID=Merlin_304_exon;Parent=Merlin_304_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t167487\t168944\t.\t+\t0\tID=Merlin_304_CDS;Parent=Merlin_304_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t168941\t169120\t-220.159549\t+\t.\tID=Merlin_305;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t168941\t169120\t.\t+\t.\tID=Merlin_305_mRNA;Parent=Merlin_305;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t168941\t169120\t.\t+\t.\tID=Merlin_305_exon;Parent=Merlin_305_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t168941\t169120\t.\t+\t0\tID=Merlin_305_CDS;Parent=Merlin_305_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t169175\t171265\t-2617.092758\t+\t.\tID=Merlin_306;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t169175\t171265\t.\t+\t.\tID=Merlin_306_mRNA;Parent=Merlin_306;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t169175\t171265\t.\t+\t.\tID=Merlin_306_exon;Parent=Merlin_306_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t169175\t171265\t.\t+\t0\tID=Merlin_306_CDS;Parent=Merlin_306_exon;seqid=Merlin\n+Merlin\tGeneMark.hmm\tgene\t171301\t172788\t-1876.322043\t+\t.\tID=Merlin_307;seqid=Merlin\n+Merlin\tGeneMark.hmm\tmRNA\t171301\t172788\t.\t+\t.\tID=Merlin_307_mRNA;Parent=Merlin_307;seqid=Merlin\n+Merlin\tGeneMark.hmm\texon\t171301\t172788\t.\t+\t.\tID=Merlin_307_exon;Parent=Merlin_307_mRNA;seqid=Merlin\n+Merlin\tGeneMark.hmm\tCDS\t171301\t172788\t.\t+\t0\tID=Merlin_307_CDS;Parent=Merlin_307_exon;seqid=Merlin\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/vcf/test.vcf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/vcf/test.vcf Thu Mar 28 04:51:06 2024 +0000 |
b |
@@ -0,0 +1,23 @@ +##fileformat=VCFv4.0 +##fileDate=20090805 +##source=myImputationProgramV3.1 +##reference=1000GenomesPilot-NCBI36 +##phasing=partial +##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data"> +##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth"> +##INFO=<ID=AF,Number=.,Type=Float,Description="Allele Frequency"> +##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele"> +##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129"> +##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership"> +##FILTER=<ID=q10,Description="Quality below 10"> +##FILTER=<ID=s50,Description="Less than 50% of samples have data"> +##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype"> +##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality"> +##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth"> +##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality"> +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00003 +Merlin 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,. +Merlin 17330 . T A 3 q10 NS=3;DP=11;AF=0.017 GT:GQ:DP:HQ 0|0:49:3:58,50 0|1:3:5:65,3 0/0:41:3 +Merlin 1110696 rs6040355 A G,T 67 PASS NS=2;DP=10;AF=0.333,0.667;AA=T;DB GT:GQ:DP:HQ 1|2:21:6:23,27 2|1:2:0:18,2 2/2:35:4 +Merlin 1230237 . T . 47 PASS NS=3;DP=13;AA=T GT:GQ:DP:HQ 0|0:54:7:56,60 0|0:48:4:51,51 0/0:61:2 +Merlin 1234567 microsat1 GTCT G,GTACT 50 PASS NS=3;DP=9;AA=G GT:GQ:DP 0/1:35:4 0/2:17:2 1/1:40:3 |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f test-data/xmfa.gff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/xmfa.gff Thu Mar 28 04:51:06 2024 +0000 |
b |
b'@@ -0,0 +1,5918 @@\n+##gff-version 3\n+##sequence-region Merlin 1 172788\n+Merlin\tprogressiveMauve\tmatch\t123963\t171642\t.\t-\t.\tID=HM137666;Target=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t123963\t123982\t80\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t123983\t124032\t62\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124033\t124082\t86\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124083\t124132\t72\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124133\t124182\t78\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124183\t124232\t70\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124233\t124282\t48\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124283\t124329\t42.5531914894\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124469\t124494\t73.0769230769\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124495\t124544\t56\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124601\t124650\t56\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124651\t124700\t54\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124701\t124750\t56\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124751\t124796\t56.5217391304\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124797\t124846\t14\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124847\t124868\t27.2727272727\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124869\t124918\t68\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124919\t124964\t45.652173913\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t124965\t125009\t55.5555555556\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125010\t125059\t58\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125060\t125077\t33.3333333333\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125078\t125127\t64\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125128\t125177\t26\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125744\t125793\t66\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125794\t125843\t70\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125844\t125893\t64\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125894\t125943\t50\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125944\t125993\t54\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t125994\t126043\t52\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126044\t126093\t74\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126094\t126143\t48\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126144\t126193\t56\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126194\t126240\t57.4468085106\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126241\t126290\t64\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126291\t126333\t58.1395348837\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126334\t126378\t71.1111111111\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126379\t126425\t63.829787234\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126426\t126468\t67.4418604651\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126469\t126515\t74.4680851064\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126516\t126565\t60\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126566\t126603\t60.5263157895\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126604\t126653\t50\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126654\t126703\t66\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126704\t126753\t74\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126754\t126803\t70\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126804\t126853\t78\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126854\t126903\t78\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126904\t126953\t66\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t126954\t127003\t78\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t127004\t127053\t72\t+\t.\tParent=HM137666\n+Merlin\tprogressiveMauve\tmatch_part\t127054\t1271'..b'ogressiveMauve\tmatch_part\t168325\t168374\t84\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t168375\t168424\t84\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t168425\t168474\t78\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t168475\t168524\t82\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t168525\t168574\t68\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t168575\t168624\t70\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t168625\t168674\t66\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t168675\t168724\t40\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169065\t169092\t60.7142857143\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169093\t169142\t74\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169143\t169192\t58\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169193\t169242\t60\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169243\t169292\t62\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169293\t169342\t68\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169343\t169374\t59.375\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169375\t169423\t63.2653061224\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169424\t169473\t70\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169474\t169523\t70\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169524\t169573\t54\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169574\t169623\t54\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t169624\t169673\t40\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170000\t170040\t68.2926829268\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170041\t170082\t76.1904761905\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170083\t170132\t70\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170133\t170182\t56\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170183\t170232\t68\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170233\t170282\t72\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170283\t170332\t68\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170333\t170382\t72\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170383\t170431\t61.2244897959\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170432\t170473\t52.380952381\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170474\t170523\t58\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170524\t170573\t64\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170574\t170623\t42\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170824\t170849\t38.4615384615\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170850\t170898\t63.2653061224\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170899\t170948\t56\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170949\t170991\t67.4418604651\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t170992\t171040\t46.9387755102\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171041\t171090\t52\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171091\t171123\t69.696969697\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171124\t171167\t79.5454545455\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171168\t171217\t78\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171218\t171264\t57.4468085106\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171265\t171314\t68\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171315\t171364\t68\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171365\t171414\t64\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171415\t171464\t76\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171465\t171514\t76\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171515\t171564\t80\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171565\t171614\t66\t+\t.\tParent=NC_000866\n+Merlin\tprogressiveMauve\tmatch_part\t171615\t171642\t53.5714285714\t+\t.\tParent=NC_000866\n+###\n' |
b |
diff -r e7a6f7a7148d -r ab0d6782a95f tool_data_table_conf.xml.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_data_table_conf.xml.test Thu Mar 28 04:51:06 2024 +0000 |
b |
@@ -0,0 +1,7 @@ +<tables> + <!-- Locations of all fasta files under genome directory --> + <table name="all_fasta" comment_char="#"> + <columns>value, dbkey, name, path</columns> + <file path="${__HERE__}/test-data/all_fasta.loc" /> + </table> +</tables> |