Repository 'get_db_info'
hg clone https://eddie.galaxyproject.org/repos/tduigou/get_db_info

Changeset 12:ee28ec28140d (2025-05-23)
Previous changeset 11:6c1e564bb278 (2025-05-23) Next changeset 13:5b16f2911491 (2025-05-23)
Commit message:
planemo upload for repository https://github.com/brsynth commit 6ae809b563b40bcdb6be2e74fe2a84ddad5484ae
modified:
get_DB_data.xml
get_db_info.py
output.html
output.json
test-data/test_input.csv
b
diff -r 6c1e564bb278 -r ee28ec28140d get_DB_data.xml
--- a/get_DB_data.xml Fri May 23 08:42:42 2025 +0000
+++ b/get_DB_data.xml Fri May 23 12:45:20 2025 +0000
b
@@ -77,7 +77,7 @@
 
 **Parameters**:
 ---------------
-* **Input CSV File**: Contains construct IDs in the column 'ID' and their corresponding fragments in the following columns.
+* **Input CSV File**: Contains construct IDs in the first column and their corresponding fragments in the following columns. (Without Header)
 * **DB Table Name**: Name of the target table in the PostgreSQL database.
 * **DB Column Contains Sequence For ganbank File**: Column storing sequence data, expected to start with "ORIGIN". 
 * **DB Column Contains Annotation For Ganbank File**: Column containing annotation data, starting with "FEATURES" and including "LOCUS" information. Other metadata is optional.
b
diff -r 6c1e564bb278 -r ee28ec28140d get_db_info.py
--- a/get_db_info.py Fri May 23 08:42:42 2025 +0000
+++ b/get_db_info.py Fri May 23 12:45:20 2025 +0000
[
@@ -84,7 +84,7 @@
 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=',')
+    df = pd.read_csv(csv_file, sep=',', header=None)
     
     engine = create_engine(db_uri)
     connection = engine.connect()
@@ -106,10 +106,13 @@
 
             # Compare fragments between CSV and DB
             csv_fragments = set()
+            all_ids = set(df[0])
             for _, row in df.iterrows():
                 for col in df.columns:
-                    if col != "ID":
-                        csv_fragments.add(row[col])
+                    if col != 0:  # Skip the first column
+                        fragment = row[col]
+                        if fragment not in all_ids:
+                            csv_fragments.add(fragment)
 
             db_fragments = set(fragment_map.keys())
             missing_fragments = sorted(list(csv_fragments - db_fragments))
@@ -121,9 +124,9 @@
 
             # === CONTINUE WITH GB FILE CREATION ===
             for _, row in df.iterrows():
-                annotated_row = {"Backbone": row["ID"], "Fragments": []}
+                annotated_row = {"Backbone": row[0], "Fragments": []}
                 for col in df.columns:
-                    if col != "ID":
+                    if col != 0:
                         fragment = row[col]
                         db_row = fragment_map.get(fragment)
 
b
diff -r 6c1e564bb278 -r ee28ec28140d output.html
--- a/output.html Fri May 23 08:42:42 2025 +0000
+++ b/output.html Fri May 23 12:45:20 2025 +0000
b
@@ -285,7 +285,7 @@
         var md = window.markdownit({
           html: true,
         });
-        target.innerHTML = md.render(atob('IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDEwMC4wJSIgYXJpYS12YWx1ZW5vdz0iMSIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iMSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSIxIFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjEiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAwLjAlIiBhcmlhLXZhbHVlbm93PSIwIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSIxIiB0aXRsZT0iMCBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDEgfAp8IFBhc3NlZCAgICAgfCAxIHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDAgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyA+PHN1bW1hcnk+UGFzc2VkIFRlc3RzPC9zdW1tYXJ5PgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBnZXRfREJfZGF0YSAoVGVzdCAjIDEpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2dldF9kYl9kYXRhL2dldF9kYl9pbmZvLnB5JyAtLWlucHV0ICcvdG1wL3RtcDZtdm1kM2lfL2ZpbGVzLzMvZi9hL2RhdGFzZXRfM2ZhYWE5MGEtMjEwZS00ZWFjLTliYWYtMzY1ZDQ3ZTMwOGY3LmRhdCcgLS1zZXF1ZW5jZV9jb2x1bW4gJ3NlcXVlbmNlJyAtLWFubm90YXRpb25fY29sdW1ucyAnYW5ub3RhdGlvbicgLS1kYl91cmkgJ3Bvc3RncmVzcWw6Ly9wb3N0Z3JlczpSSzE3X19hdF9fbG9jYWxob3N0OjU0MzIvdGVzdF9mcmFnbWVudHNfZGInIC0tdGFibGUgJ3NhbXBsZScgLS1mcmFnbWVudF9jb2x1bW4gJ2ZyYWdtZW50JyAtLW91dHB1dCAnb3V0ZGlyJwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICB0ZXN0X2ZyYWdtZW50c19kYgogICAgICBTdGFydGluZyBleGlzdGluZyBjb250YWluZXIgJ3Rlc3RfZnJhZ21lbnRzX2RiJy4uLgogICAgICBQb3N0Z3JlU1FMIERvY2tlciBjb250YWluZXIgJ3Rlc3RfZnJhZ21lbnRzX2RiJyBhY3RpdmF0ZWQuCiAgICAgIERhdGFiYXNlIG5vdCByZWFkeSwgcmV0cnlpbmcuLi4KICAgICAgQ29ubmVjdGVkIHRvIGRhdGFiYXNlLgoKICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgdGFibGUgfCBgICJzYW1wbGUiIGAgfAogICAgICAgfCBzZXF1ZW5jZVxfY29sdW1uIHwgYCAic2VxdWVuY2UiIGAgfAogICAgICAgfCBhbm5vdGF0aW9uXF9jb2x1bW5zIHwgYCAiYW5ub3RhdGlvbiIgYCB8CiAgICAgICB8IGZyYWdtZW50XF9jb2x1bW4gfCBgICJmcmFnbWVudCIgYCB8CiAgICAgICB8IGRiXF91cmkgfCBgICJwb3N0Z3Jlc3FsOi8vcG9zdGdyZXM6UksxN0Bsb2NhbGhvc3Q6NTQzMi90ZXN0X2ZyYWdtZW50c19kYiIgYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1wNm12bWQzaV8vZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgo8L2RldGFpbHM+Cg=='));
+        target.innerHTML = md.render(atob('IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDEwMC4wJSIgYXJpYS12YWx1ZW5vdz0iMSIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iMSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSIxIFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjEiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAwLjAlIiBhcmlhLXZhbHVlbm93PSIwIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSIxIiB0aXRsZT0iMCBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDEgfAp8IFBhc3NlZCAgICAgfCAxIHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDAgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyA+PHN1bW1hcnk+UGFzc2VkIFRlc3RzPC9zdW1tYXJ5PgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBnZXRfREJfZGF0YSAoVGVzdCAjIDEpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2dldF9kYl9kYXRhL2dldF9kYl9pbmZvLnB5JyAtLWlucHV0ICcvdG1wL3RtcDIwYWJtaW84L2ZpbGVzLzAvMC81L2RhdGFzZXRfMDA1NjdiMmYtNTAzMi00M2I4LWE2MTItYzE2ZThhYzA5N2NhLmRhdCcgLS1zZXF1ZW5jZV9jb2x1bW4gJ3NlcXVlbmNlJyAtLWFubm90YXRpb25fY29sdW1ucyAnYW5ub3RhdGlvbicgLS1kYl91cmkgJ3Bvc3RncmVzcWw6Ly9wb3N0Z3JlczpSSzE3X19hdF9fbG9jYWxob3N0OjU0MzIvdGVzdF9mcmFnbWVudHNfZGInIC0tdGFibGUgJ3NhbXBsZScgLS1mcmFnbWVudF9jb2x1bW4gJ2ZyYWdtZW50JyAtLW91dHB1dCAnb3V0ZGlyJwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICBDb250YWluZXIgJ3Rlc3RfZnJhZ21lbnRzX2RiJyBpcyBhbHJlYWR5IHJ1bm5pbmcuCiAgICAgIENvbm5lY3RlZCB0byBkYXRhYmFzZS4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IHRhYmxlIHwgYCAic2FtcGxlIiBgIHwKICAgICAgIHwgc2VxdWVuY2VcX2NvbHVtbiB8IGAgInNlcXVlbmNlIiBgIHwKICAgICAgIHwgYW5ub3RhdGlvblxfY29sdW1ucyB8IGAgImFubm90YXRpb24iIGAgfAogICAgICAgfCBmcmFnbWVudFxfY29sdW1uIHwgYCAiZnJhZ21lbnQiIGAgfAogICAgICAgfCBkYlxfdXJpIHwgYCAicG9zdGdyZXNxbDovL3Bvc3RncmVzOlJLMTdAbG9jYWxob3N0OjU0MzIvdGVzdF9mcmFnbWVudHNfZGIiIGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcDIwYWJtaW84L2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKPC9kZXRhaWxzPgo='));
     </script>
   </body>
 </html>
\ No newline at end of file
b
diff -r 6c1e564bb278 -r ee28ec28140d output.json
--- a/output.json Fri May 23 08:42:42 2025 +0000
+++ b/output.json Fri May 23 12:45:20 2025 +0000
[
@@ -13,29 +13,29 @@
                     "db_uri": "postgresql://postgres:RK17@localhost:5432/test_fragments_db",
                     "fragment_column": "fragment",
                     "input": {
-                        "id": "90b6134c741d62e0",
+                        "id": "21ac64467e79a23d",
                         "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/tmp6mvmd3i_/files/3/f/a/dataset_3faaa90a-210e-4eac-9baf-365d47e308f7.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_line": "mkdir 'outdir' && python '/home/rkhaled/galaxytools/tools/get_db_data/get_db_info.py' --input '/tmp/tmp20abmio8/files/0/0/5/dataset_00567b2f-5032-43b8-a612-c16e8ac097ca.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-05-23T08:38:59.358545",
+                    "create_time": "2025-05-23T12:44:22.666476",
                     "dependencies": [],
                     "exit_code": 0,
-                    "external_id": "48209",
+                    "external_id": "196443",
                     "galaxy_version": "24.2",
                     "handler": null,
-                    "history_id": "90b6134c741d62e0",
-                    "id": "b9f952b979e68c98",
+                    "history_id": "21ac64467e79a23d",
+                    "id": "16392a867bb52b96",
                     "inputs": {
                         "input": {
-                            "id": "90b6134c741d62e0",
+                            "id": "21ac64467e79a23d",
                             "src": "hda",
-                            "uuid": "3faaa90a-210e-4eac-9baf-365d47e308f7"
+                            "uuid": "00567b2f-5032-43b8-a612-c16e8ac097ca"
                         }
                     },
                     "job_messages": [],
@@ -46,36 +46,36 @@
                     "model_class": "Job",
                     "output_collections": {
                         "output_gb": {
-                            "id": "90b6134c741d62e0",
+                            "id": "21ac64467e79a23d",
                             "src": "hdca"
                         }
                     },
                     "outputs": {
                         "__new_primary_file_output_gb|ACP10001AaCbbBS__": {
-                            "id": "b9f952b979e68c98",
+                            "id": "16392a867bb52b96",
                             "src": "hda",
-                            "uuid": "82bc78d2-10ad-456b-ae64-d9d1e5353fb3"
+                            "uuid": "f6166465-8329-42d3-8b8d-634164cb00d1"
                         },
                         "__new_primary_file_output_gb|CFP10002AaCbbBS__": {
-                            "id": "4f0ddeb41bc45379",
+                            "id": "f19b79cec441f6c0",
                             "src": "hda",
-                            "uuid": "01046314-2bc0-4f3d-afc7-78fb95d1dc1e"
+                            "uuid": "27c7fa5e-029c-4c52-bfb8-281bc4fd581b"
                         },
                         "__new_primary_file_output_gb|QWE10004AaCbbBS__": {
-                            "id": "e74e23abb5f774f5",
+                            "id": "c5caf62a8c51ce22",
                             "src": "hda",
-                            "uuid": "1fd729c7-47c7-4f8c-9a84-59a3999f8f59"
+                            "uuid": "79161280-74b3-4786-9d94-d5e616a85047"
                         },
                         "__new_primary_file_output_gb|XYZ10003AaCbbBS__": {
-                            "id": "19527258361fac16",
+                            "id": "33cdc5f5dcf09503",
                             "src": "hda",
-                            "uuid": "5362e373-68d2-4dd9-88c0-5d37e0a2841a"
+                            "uuid": "3cc67d62-a001-42bf-9628-c508daf0934c"
                         }
                     },
                     "params": {
                         "__input_ext": "\"input\"",
                         "annotation_columns": "\"annotation\"",
-                        "chromInfo": "\"/tmp/tmp6mvmd3i_/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"",
+                        "chromInfo": "\"/tmp/tmp20abmio8/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"",
                         "db_uri": "\"postgresql://postgres:RK17@localhost:5432/test_fragments_db\"",
                         "dbkey": "\"?\"",
                         "fragment_column": "\"fragment\"",
@@ -84,17 +84,17 @@
                     },
                     "state": "ok",
                     "stderr": "",
-                    "stdout": "test_fragments_db\nStarting existing container 'test_fragments_db'...\nPostgreSQL Docker container 'test_fragments_db' activated.\nDatabase not ready, retrying...\nConnected to database.\n",
+                    "stdout": "Container 'test_fragments_db' is already running.\nConnected to database.\n",
                     "tool_id": "get_DB_data",
                     "tool_stderr": "",
-                    "tool_stdout": "test_fragments_db\nStarting existing container 'test_fragments_db'...\nPostgreSQL Docker container 'test_fragments_db' activated.\nDatabase not ready, retrying...\nConnected to database.\n",
-                    "update_time": "2025-05-23T08:39:08.925010",
+                    "tool_stdout": "Container 'test_fragments_db' is already running.\nConnected to database.\n",
+                    "update_time": "2025-05-23T12:44:29.552502",
                     "user_email": "planemo@galaxyproject.org",
-                    "user_id": "90b6134c741d62e0"
+                    "user_id": "21ac64467e79a23d"
                 },
                 "status": "success",
                 "test_index": 0,
-                "time_seconds": 19.857088088989258,
+                "time_seconds": 17.09453797340393,
                 "tool_id": "get_DB_data",
                 "tool_version": "0.1.0+galaxy0"
             },
b
diff -r 6c1e564bb278 -r ee28ec28140d test-data/test_input.csv
--- a/test-data/test_input.csv Fri May 23 08:42:42 2025 +0000
+++ b/test-data/test_input.csv Fri May 23 12:45:20 2025 +0000
b
@@ -1,4 +1,3 @@
-ID,Frag1,Frag2,Frag3
 Sample-1,ACP10001AaCbbBS,CFP10002AaCbbBS,XYZ10003AaCbbBS
 Sample-2,CFP10002AaCbbBS,ACP10001AaCbbBS,QWE10004AaCbbBS
 Sample-3,XYZ10003AaCbbBS,QWE10004AaCbbBS,ACP10001AaCbbBS