Previous changeset 5:a52626182172 (2025-04-18) Next changeset 7:8984fabea52c (2025-04-18) |
Commit message:
planemo upload for repository https://github.com/brsynth commit 6ae809b563b40bcdb6be2e74fe2a84ddad5484ae |
modified:
get_DB_data.xml get_db_info.py |
added:
output.html output.json test-data/output/ACP10001AaCbbBS.gb test-data/output/CFP10002AaCbbBS.gb test-data/output/QWE10004AaCbbBS.gb test-data/output/XYZ10003AaCbbBS.gb |
removed:
test-data/output_annotations.txt |
b |
diff -r a52626182172 -r 56a0938d534d get_DB_data.xml --- a/get_DB_data.xml Fri Apr 18 09:57:55 2025 +0000 +++ b/get_DB_data.xml Fri Apr 18 12:52:49 2025 +0000 |
[ |
@@ -20,7 +20,6 @@ --table '$table' --fragment_column '$fragment_column' --output 'outdir' - --output_missing '$output_missing' ]]></command> <inputs> <param name="input" type="data" format="csv" label="Input CSV file" /> @@ -34,11 +33,9 @@ <collection name="output_gb" type="list" label="GenBank Files collection" > <discover_datasets pattern="(?P<name>.*).gb" format="genbank" directory="outdir" /> </collection> - <data name="output_missing" format="txt" label="DB Missing Fragments (txt)"> - </data> </outputs> <tests> - <!--python get_db_info.py -input 'test-data/test_input.csv' -sequence_column 'sequence' -annotation_column 'annotation' -db_uri 'postgresql://postgres:RK17@localhost:5432/test_fragments_db' -table 'sample' -fragment_column 'fragment' -output 'test-data/output' -output_missing 'test-data/output.txt'--> + <!--python get_db_info.py -input 'test-data/test_input.csv' -sequence_column 'sequence' -annotation_column 'annotation' -db_uri 'postgresql://postgres:RK17@localhost:5432/test_fragments_db' -table 'sample' -fragment_column 'fragment' -output 'test-data/output'--> <test> <param name="input" value="test_input.csv" /> <param name="table" value="sample" /> @@ -69,23 +66,13 @@ </element> </output_collection> </test> - <!--python get_db_info.py -input 'test-data/test_missing_input.csv' -sequence_column 'sequence' -annotation_column 'annotation' -db_uri 'postgresql://postgres:RK17@localhost:5432/test_fragments_db' -table 'sample' -fragment_column 'fragment' -output 'test-data/output' -output_missing 'test-data/output.txt'--> - <test> - <param name="input" value="test_missing_input.csv" /> - <param name="table" value="sample" /> - <param name="sequence_column" value="sequence" /> - <param name="annotation_columns" value="annotation" /> - <param name="fragment_column" value="fragment" /> - <param name="db_uri" value="postgresql://postgres:RK17@localhost:5432/test_fragments_db" /> - <output name="output_missing" file="output_annotations.txt" ftype="txt" /> - </test> </tests> <help><![CDATA[ Pick Data From DB =================== -DBget data from SQL DB in docker container. +generate GanDank files from csv file based on SQL DB. ]]></help> <citations> <citation type="bibtex"> |
b |
diff -r a52626182172 -r 56a0938d534d get_db_info.py --- a/get_db_info.py Fri Apr 18 09:57:55 2025 +0000 +++ b/get_db_info.py Fri Apr 18 12:52:49 2025 +0000 |
[ |
@@ -5,14 +5,12 @@ import os import re import pandas as pd -from Bio import SeqIO from Bio.Seq import Seq from Bio.SeqRecord import SeqRecord from sqlalchemy import create_engine, inspect from sqlalchemy.sql import text from sqlalchemy.engine.url import make_url from sqlalchemy.exc import OperationalError -from Bio.SeqFeature import SeqFeature, FeatureLocation def fix_db_uri(uri): """Replace __at__ with @ in the URI if needed.""" @@ -83,7 +81,7 @@ time.sleep(2) raise Exception("Database connection failed after timeout.") -def fetch_annotations(csv_file, sequence_column, annotation_columns, db_uri, table_name, fragment_column_name, output, output_missing): +def fetch_annotations(csv_file, sequence_column, annotation_columns, db_uri, table_name, fragment_column_name, output): """Fetch annotations from the database and save the result as GenBank files.""" db_uri = fix_db_uri(db_uri) df = pd.read_csv(csv_file, sep=',') @@ -101,12 +99,12 @@ # Fetch all fragments from the table once if fragment_column_name not in columns: raise ValueError(f"Fragment column '{fragment_column_name}' not found in table '{table_name}'.") - + fragment_column_index = columns.index(fragment_column_name) all_rows = connection.execute(text(f"SELECT * FROM {table_name}")).fetchall() fragment_map = {row[fragment_column_index]: row for row in all_rows} - - # Check if all fragments from CSV are present in DB + + # Compare fragments between CSV and DB csv_fragments = set() for _, row in df.iterrows(): for col in df.columns: @@ -117,15 +115,13 @@ missing_fragments = sorted(list(csv_fragments - db_fragments)) if missing_fragments: - with open(output_missing, "w") as f: - for fragment in missing_fragments: - f.write(f"{fragment}\n") - print(f"Missing fragments written to {output_missing}") - return output_missing # Exit early if fragments are missing - + raise ValueError( + f" Missing fragments in DB: {', '.join(missing_fragments)}" + ) + + # === CONTINUE WITH GB FILE CREATION === for _, row in df.iterrows(): annotated_row = {"Backbone": row["ID"], "Fragments": []} - for col in df.columns: if col != "ID": fragment = row[col] @@ -144,7 +140,7 @@ except Exception as e: print(f"Error occurred during annotation: {e}") - return + raise # Ensures the error exits the script # GenBank file generation per fragment try: @@ -227,7 +223,6 @@ parser.add_argument("--table", required=True, help="Table name in the database") parser.add_argument("--fragment_column", required=True, help="Fragment column name in the database") parser.add_argument("--output", required=True, help="Output dir for gb files") - parser.add_argument("--output_missing", required=True, help="Output txt file for missing fragment in the DB") args = parser.parse_args() # Start the Docker container (if not already running) @@ -239,7 +234,7 @@ wait_for_db(db_uri) # Fetch annotations from the database and save as JSON - fetch_annotations(args.input, args.sequence_column, args.annotation_columns, db_uri, args.table, args.fragment_column, args.output, args.output_missing) + fetch_annotations(args.input, args.sequence_column, args.annotation_columns, db_uri, args.table, args.fragment_column, args.output) if __name__ == "__main__": main() |
b |
diff -r a52626182172 -r 56a0938d534d output.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/output.html Fri Apr 18 12:52:49 2025 +0000 |
[ |
b'@@ -0,0 +1,291 @@\n+<!DOCTYPE html>\n+<html lang="en">\n+ <head>\n+ <meta charset="utf-8">\n+ <meta http-equiv="X-UA-Compatible" content="IE=edge">\n+ <meta name="viewport" content="width=device-width, initial-scale=1">\n+ <title>Test Results (powered by Planemo)</title>\n+\n+ <!-- Bootstrap -->\n+ <style>/*!\n+ * Bootstrap v3.3.1 (http://getbootstrap.com)\n+ * Copyright 2011-2014 Twitter, Inc.\n+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n+ *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:\'Glyphicons Halflings\';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format(\'embedded-opentype\'),url(../fonts/glyphicons-halflings-regular.woff) format(\'woff\'),url(../fonts/glyphicons-halflings-regular.ttf) format(\'truetype\'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format(\'svg\')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:\'Glyphi'..b'-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/},{}],64:[function(e,r,t){r.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/},{}],65:[function(e,r,t){"use strict";t.Any=e("./properties/Any/regex"),t.Cc=e("./categories/Cc/regex"),t.Cf=e("./categories/Cf/regex"),t.P=e("./categories/P/regex"),t.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":61,"./categories/Cf/regex":62,"./categories/P/regex":63,"./categories/Z/regex":64,"./properties/Any/regex":66}],66:[function(e,r,t){r.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/},{}],67:[function(e,r,t){"use strict";r.exports=e("./lib/")},{"./lib/":9}]},{},[67])(67)}));\n+</script>\n+ <script>\n+ var target = document.getElementById(\'overview-content\');\n+ var md = window.markdownit({\n+ html: true,\n+ });\n+ target.innerHTML = md.render(atob(\'IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDEwMC4wJSIgYXJpYS12YWx1ZW5vdz0iMSIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iMSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSIxIFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjEiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAwLjAlIiBhcmlhLXZhbHVlbm93PSIwIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSIxIiB0aXRsZT0iMCBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDEgfAp8IFBhc3NlZCAgICAgfCAxIHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDAgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyA+PHN1bW1hcnk+UGFzc2VkIFRlc3RzPC9zdW1tYXJ5PgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBnZXRfREJfZGF0YSAoVGVzdCAjIDEpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2dldF9kYl9kYXRhL2dldF9kYl9pbmZvLnB5JyAtLWlucHV0ICcvdG1wL3RtcDQydzcyeXRvL2ZpbGVzLzMvNi8yL2RhdGFzZXRfMzYyMjY0MmItYWVjOS00NjAyLWJiMjctMTcwY2U1ZGFmZjZkLmRhdCcgLS1zZXF1ZW5jZV9jb2x1bW4gJ3NlcXVlbmNlJyAtLWFubm90YXRpb25fY29sdW1ucyAnYW5ub3RhdGlvbicgLS1kYl91cmkgJ3Bvc3RncmVzcWw6Ly9wb3N0Z3JlczpSSzE3X19hdF9fbG9jYWxob3N0OjU0MzIvdGVzdF9mcmFnbWVudHNfZGInIC0tdGFibGUgJ3NhbXBsZScgLS1mcmFnbWVudF9jb2x1bW4gJ2ZyYWdtZW50JyAtLW91dHB1dCAnb3V0ZGlyJwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICBDb250YWluZXIgJ3Rlc3RfZnJhZ21lbnRzX2RiJyBpcyBhbHJlYWR5IHJ1bm5pbmcuCiAgICAgIENvbm5lY3RlZCB0byBkYXRhYmFzZS4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IHRhYmxlIHwgYCAic2FtcGxlIiBgIHwKICAgICAgIHwgc2VxdWVuY2VcX2NvbHVtbiB8IGAgInNlcXVlbmNlIiBgIHwKICAgICAgIHwgYW5ub3RhdGlvblxfY29sdW1ucyB8IGAgImFubm90YXRpb24iIGAgfAogICAgICAgfCBmcmFnbWVudFxfY29sdW1uIHwgYCAiZnJhZ21lbnQiIGAgfAogICAgICAgfCBkYlxfdXJpIHwgYCAicG9zdGdyZXNxbDovL3Bvc3RncmVzOlJLMTdAbG9jYWxob3N0OjU0MzIvdGVzdF9mcmFnbWVudHNfZGIiIGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcDQydzcyeXRvL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKPC9kZXRhaWxzPgo=\'));\n+ </script>\n+ </body>\n+</html>\n\\ No newline at end of file\n' |
b |
diff -r a52626182172 -r 56a0938d534d output.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/output.json Fri Apr 18 12:52:49 2025 +0000 |
[ |
@@ -0,0 +1,106 @@ +{ + "summary": { + "num_errors": 0, + "num_failures": 0, + "num_skips": 0, + "num_tests": 1 + }, + "tests": [ + { + "data": { + "inputs": { + "annotation_columns": "annotation", + "db_uri": "postgresql://postgres:RK17@localhost:5432/test_fragments_db", + "fragment_column": "fragment", + "input": { + "id": "706ba6c84a03098c", + "src": "hda" + }, + "sequence_column": "sequence", + "table": "sample" + }, + "job": { + "command_line": "mkdir 'outdir' && python '/home/rkhaled/galaxytools/tools/get_db_data/get_db_info.py' --input '/tmp/tmp42w72yto/files/3/6/2/dataset_3622642b-aec9-4602-bb27-170ce5daff6d.dat' --sequence_column 'sequence' --annotation_columns 'annotation' --db_uri 'postgresql://postgres:RK17__at__localhost:5432/test_fragments_db' --table 'sample' --fragment_column 'fragment' --output 'outdir'", + "command_version": null, + "copied_from_job_id": null, + "create_time": "2025-04-18T12:52:15.493942", + "dependencies": [], + "exit_code": 0, + "external_id": "157761", + "galaxy_version": "24.2", + "handler": null, + "history_id": "706ba6c84a03098c", + "id": "cc02f40f5df38cc6", + "inputs": { + "input": { + "id": "706ba6c84a03098c", + "src": "hda", + "uuid": "3622642b-aec9-4602-bb27-170ce5daff6d" + } + }, + "job_messages": [], + "job_metrics": [], + "job_runner_name": null, + "job_stderr": "", + "job_stdout": "", + "model_class": "Job", + "output_collections": { + "output_gb": { + "id": "706ba6c84a03098c", + "src": "hdca" + } + }, + "outputs": { + "__new_primary_file_output_gb|ACP10001AaCbbBS__": { + "id": "cc02f40f5df38cc6", + "src": "hda", + "uuid": "808dfb23-fd8a-4bd8-a8b1-c1cb9f569537" + }, + "__new_primary_file_output_gb|CFP10002AaCbbBS__": { + "id": "c817ad70fa00c136", + "src": "hda", + "uuid": "33a35584-db32-4cf5-9f97-29e32956b76a" + }, + "__new_primary_file_output_gb|QWE10004AaCbbBS__": { + "id": "ecde0ca67d20406e", + "src": "hda", + "uuid": "50ef4259-8c5c-48f3-b6d8-77b478bff207" + }, + "__new_primary_file_output_gb|XYZ10003AaCbbBS__": { + "id": "5dd74542a4c0f825", + "src": "hda", + "uuid": "65a4517c-ed95-4894-9846-73d8d8f4b3ec" + } + }, + "params": { + "__input_ext": "\"input\"", + "annotation_columns": "\"annotation\"", + "chromInfo": "\"/tmp/tmp42w72yto/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", + "db_uri": "\"postgresql://postgres:RK17@localhost:5432/test_fragments_db\"", + "dbkey": "\"?\"", + "fragment_column": "\"fragment\"", + "sequence_column": "\"sequence\"", + "table": "\"sample\"" + }, + "state": "ok", + "stderr": "", + "stdout": "Container 'test_fragments_db' is already running.\nConnected to database.\n", + "tool_id": "get_DB_data", + "tool_stderr": "", + "tool_stdout": "Container 'test_fragments_db' is already running.\nConnected to database.\n", + "update_time": "2025-04-18T12:52:21.995313", + "user_email": "planemo@galaxyproject.org", + "user_id": "706ba6c84a03098c" + }, + "status": "success", + "test_index": 0, + "time_seconds": 16.213179349899292, + "tool_id": "get_DB_data", + "tool_version": "0.1.0+galaxy0" + }, + "has_data": true, + "id": "get_DB_data-0" + } + ], + "version": "0.1" +} \ No newline at end of file |
b |
diff -r a52626182172 -r 56a0938d534d test-data/output/ACP10001AaCbbBS.gb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output/ACP10001AaCbbBS.gb Fri Apr 18 12:52:49 2025 +0000 |
b |
@@ -0,0 +1,18 @@ +LOCUS ACP10001AaCbbBS 150 bp ds-DNA circular SYN 14-SEP-2017 +DEFINITION Fragment ACP10001AaCbbBS from Backbone Sample-3 +ACCESSION ACP10001AaCbbBS +VERSION DB +KEYWORDS . +SOURCE . +FEATURES Location/Qualifiers + CDS 5..150 + /vntifkey="1" + /label=mock_gene_A + misc_feature 160..240 + /vntifkey="11" + /label=mock_feature_A +ORIGIN +1 atggccattg taatgggccg ctgaaagggt gcccggatca ctttcgctgt ttcgacgttg +61 gcttggtccc agcggcggca ccgagctggg tagcggtcag gagctgcttc gcgtgagcgg +121 ctgccagggc agctgacgcc gctgcgcgca gctgcgcatg +// |
b |
diff -r a52626182172 -r 56a0938d534d test-data/output/CFP10002AaCbbBS.gb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output/CFP10002AaCbbBS.gb Fri Apr 18 12:52:49 2025 +0000 |
b |
@@ -0,0 +1,18 @@ +LOCUS CFP10002AaCbbBS 130 bp ds-DNA circular SYN 14-SEP-2017 +DEFINITION Fragment CFP10002AaCbbBS from Backbone Sample-4 +ACCESSION CFP10002AaCbbBS +VERSION DB +KEYWORDS . +SOURCE . +FEATURES Location/Qualifiers + CDS 10..130 + /vntifkey="2" + /label=mock_gene_B + misc_feature complement(140..220) + /vntifkey="12" + /label=mock_feature_B +ORIGIN +1 ggatccgtaa atcggtttac ggtgcgttat gatctgtgaa acgccagcag cgcgcggtat +61 ctcgacgtaa agcggttgca cgtgatggtt gccggcatgc ctgtgcgtga atggctgtgg +121 ccggtacgtt gagcggcgtg +// |
b |
diff -r a52626182172 -r 56a0938d534d test-data/output/QWE10004AaCbbBS.gb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output/QWE10004AaCbbBS.gb Fri Apr 18 12:52:49 2025 +0000 |
b |
@@ -0,0 +1,17 @@ +LOCUS QWE10004AaCbbBS 130 bp ds-DNA circular SYN 14-SEP-2017 +DEFINITION Fragment QWE10004AaCbbBS from Backbone Sample-4 +ACCESSION QWE10004AaCbbBS +VERSION DB +KEYWORDS . +SOURCE . +FEATURES Location/Qualifiers + CDS 20..130 + /vntifkey="4" + /label=mock_gene_D + misc_feature complement(145..225) + /vntifkey="14" + /label=mock_feature_D +ORIGIN +1 atgtttgctg gggcgatgct ggggctgctt tgttggcgcc gttttggtgg tgtttggttc +61 tgctggggcc gggcgtgttt cgcgttggcg cgtgcgcgtt +// |
b |
diff -r a52626182172 -r 56a0938d534d test-data/output/XYZ10003AaCbbBS.gb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output/XYZ10003AaCbbBS.gb Fri Apr 18 12:52:49 2025 +0000 |
b |
@@ -0,0 +1,17 @@ +LOCUS XYZ10003AaCbbBS 120 bp ds-DNA circular SYN 14-SEP-2017 +DEFINITION Fragment XYZ10003AaCbbBS from Backbone Sample-4 +ACCESSION XYZ10003AaCbbBS +VERSION DB +KEYWORDS . +SOURCE . +FEATURES Location/Qualifiers + CDS 15..115 + /vntifkey="3" + /label=mock_gene_C + misc_feature 130..210 + /vntifkey="13" + /label=mock_feature_C +ORIGIN +1 tccgtttggg ccgttggttc cgtccggttg gggttttcgc gctgtggccg gatccggttg +61 gcttttggcg ggggcgggtt cgtttttttc cggctttggg ccgggccgtt +// |
b |
diff -r a52626182172 -r 56a0938d534d test-data/output_annotations.txt --- a/test-data/output_annotations.txt Fri Apr 18 09:57:55 2025 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
b |
@@ -1,2 +0,0 @@ -ALT30005CcEddLM -NEW20001BbDccKT |