changeset 1:34135dac85b0 draft default tip

planemo upload for repository https://github.com/brsynth commit d8cc8b87fdb0374745b5420f2da7f08ae905c222-dirty
author tduigou
date Wed, 16 Jul 2025 14:28:21 +0000
parents 1a766d8d3883
children
files json_db_config_generating_boolean.xml output.html output.json test-data/test_json.json
diffstat 4 files changed, 180 insertions(+), 185 deletions(-) [+]
line wrap: on
line diff
--- a/json_db_config_generating_boolean.xml	Fri Jul 11 10:10:16 2025 +0000
+++ b/json_db_config_generating_boolean.xml	Wed Jul 16 14:28:21 2025 +0000
@@ -1,58 +1,76 @@
-<tool id="parameters_maystro" name="Parameters Maystro" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.09">
-    <description>Store parameters of tools in a workflow to be used again</description>
+<tool id="parameters_maystro" name="Workflow-0 Parameters Maystro" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.09">
+    <description>Store parameters of workflow-0 to be used again</description>
     <macros>
-        <token name="@VERSION_SUFFIX@">1</token>
-        <token name="@TOOL_VERSION@">0.1.0</token>
+        <token name="@VERSION_SUFFIX@">3</token>
+        <token name="@TOOL_VERSION@">1.1.0</token>
     </macros>
     <command detect_errors="exit_code"><![CDATA[
-        #set $json_files = ' '.join(['"%s"' % file for file in $json_from_workflow])
-        #set $json_name_mapping = ",".join(["%s:%s" % (file.file_name, file.name) for file in $json_from_workflow])
-        python '$__tool_directory__/maystro.py'
-            --distribute_json '$distribute_json'
-            --json_from_workflow $json_files
-            --json_from_user '$json_from_user'
-            --json_name_mapping $json_name_mapping
-            --output_workflow '$output_workflow'
-            --output_user '$output_user' && echo 'DEBUB' && cat '$output_user'
+    #if $user_json and str($user_json) != 'None':
+        cp '$user_json' '$output_json'
+    #else
+        python3 -c "import json; params = {
+        'avoid_patterns': '$avoid_patterns',
+        'hairpin_constraints': '$hairpin_constraints',
+        'gc_constraints': '$gc_constraints',
+        'kmer_size': '$kmer_size',
+        'execution': '$execution',
+        'db_uri': '$db_uri',
+        'table': '$table_name',
+        'fragment_column': '$fragment_column',
+        'sequence_column': '$sequence_column',
+        'annotation_column': '$annotation_column'
+        }; f = open('$output_json', 'w'); json.dump(params, f, indent=4); f.close()" && echo DEBG && cat '$output_json'
+    #end if
+    && echo DEBG && cat '$output_json'
     ]]></command>
     <inputs>
-        <param name="distribute_json" type="boolean" label="Input Your Parameters As JSON" checked ='false' help="If True user should set workflow parameters as json file" />
-        <param name="json_from_workflow" type="data" format="json" multiple="true" optional="true" help='Only if Input Your Parameters As JSON is FALSE' />
-        <param name="json_from_user" type="data" format="json" optional="true" help='Only if Input Your Parameters As JSON is TRUE' />
+        <param name="avoid_patterns" type="text" area="true" optional="true" label="Avoid Patterns (one per line)" />
+        <param name="hairpin_constraints" type="text" area="true" label="Hairpins Constraints" optional="true" help="e.g. (you can add others Hairpins Constraints on a new line): stem_size=20, hairpin_window=200"/>
+        <param name="gc_constraints" type="text" area="true" label="Enforce GC Content Constraints" optional="true" help="e.g. (you can add others Enforce GC Content Constraints on a new line): mini=0.3, maxi=0.7, window=100"/>
+        <param name="kmer_size" type="integer" label="K-mer Uniqueness Size" value="" optional="true" help="e.g.: 15"/>
+        <param name="execution" type="boolean" label="Save To DB ?" checked ='false' optional="true" help="If True data will be saved in the DB" />
+        <param name="db_uri" type="text" optional="true" help='Only if Input Your Parameters As JSON is FALSE' />
+        <param name="table_name" type="text" optional="true" help='table name in DB' />
+        <param name="fragment_column" type="text" optional="true" help='Fragmnet column in DB' />
+        <param name="sequence_column" type="text" optional="true" help='Sequence column in DB' />
+        <param name="annotation_column" type="text" optional="true" help='Annotation column in DB' />
+        <param name="user_json" type="data" format="json" optional="true" help='Only if Input Your Parameters As JSON is TRUE' />
     </inputs>   
     <outputs>
-        <data name="output_workflow" format="json" label="workflow param"/>
-        <data name="output_user" format="json" label="user_workflow param"/>
+        <data name="output_json" format="json" label="Workflow-0 Parameters"/>
     </outputs>
     <tests>
-        <!--distribute_json is false-->
+        <!--manual parameters set-->
         <test> 
-            <param name="distribute_json" value='false'/>
-            <param name="json_from_workflow" value="seq_from_db_param.json,seq_to_db_param.json"/>
-            <output name="output_user">
+            <param name="avoid_patterns" value="BsaI_site
+            BsmBI_site
+            BbsI_site
+            SapI_site
+            8x1mer
+            5x3mer
+            9x2mer" />
+            <param name="hairpin_constraints" value='stem_size=20, hairpin_window=200'/>
+            <param name="gc_constraints" value="mini=0.3, maxi=0.7, window=100
+            mini=0.1, maxi=0.9, window=100"/>
+            <param name="kmer_size" value="15" />
+            <param name="execution" value="true" />
+            <param name="db_uri" value="postgresql://postgres:RK17@localhost:5432/test_fragments_db" />
+            <param name="table_name" value="sample" />
+            <param name="fragment_column" value="fragment" />
+            <param name="sequence_column" value="sequence" />
+            <param name="annotation_column" value="annotation" />
+            <output name="output_json">
                 <assert_contents>
-                    <has_n_lines n="17" />
-                </assert_contents>
-            </output>
-            <output name="output_workflow">
-                <assert_contents>
-                    <has_n_lines n="0" />
+                    <has_n_lines n="12" />
                 </assert_contents>
             </output>
         </test>
-        <!--distribute_json is true -->
+        <!--JSON parameters set-->
         <test> 
-            <param name="distribute_json" value='true'/>
-            <param name="json_from_workflow" value="seq_from_db_param.json,seq_to_db_param.json"/>
-            <param name="json_from_user" value='merged_test.json'/>
-            <output name="output_workflow">
+            <param name="user_json" value='test_json.json'/>
+            <output name="output_json">
                 <assert_contents>
-                    <has_n_lines n="17" />
-                </assert_contents>
-            </output>
-            <output name="output_user">
-                <assert_contents>
-                    <has_n_lines n="0" />
+                    <has_n_lines n="12" />
                 </assert_contents>
             </output>
         </test>
@@ -61,8 +79,8 @@
 Parameters Maystro
 ===================
 
-Store and Generate a JSON file to be used as a workflow configuration. This JSON file can later be used to pass workflow parameters
-This tool is recieve parameters from tools in workflow and return them as a JSON file that can be used later to pass thos parameters again.
+Store and Generate a JSON file to be used as workflow-0 configuration. This JSON file can later be used as input to pass workflow-0 parameters
+
     ]]></help>
     <citations>
         <citation type="bibtex">
--- a/output.html	Fri Jul 11 10:10:16 2025 +0000
+++ b/output.html	Wed Jul 16 14:28:21 2025 +0000
@@ -285,7 +285,7 @@
         var md = window.markdownit({
           html: true,
         });
-        target.innerHTML = md.render(atob('IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDEwMC4wJSIgYXJpYS12YWx1ZW5vdz0iMiIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iMiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSIyIFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjIiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAwLjAlIiBhcmlhLXZhbHVlbm93PSIwIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSIyIiB0aXRsZT0iMCBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDIgfAp8IFBhc3NlZCAgICAgfCAyIHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDAgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyA+PHN1bW1hcnk+UGFzc2VkIFRlc3RzPC9zdW1tYXJ5PgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBwYXJhbWV0ZXJzX21heXN0cm8gKFRlc3QgIyAxKTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9wYXJhbWV0ZXJzX21heXN0cm8vbWF5c3Ryby5weScgLS1kaXN0cmlidXRlX2pzb24gJ2ZhbHNlJyAtLWpzb25fZnJvbV93b3JrZmxvdyAiL3RtcC90bXBmcGQ2dGVpMS9maWxlcy8yL2YvNC9kYXRhc2V0XzJmNGNhNmFlLTc3ZDYtNGJmZS04ZTM5LTAwNTFjMjk0ZTRmNi5kYXQiICIvdG1wL3RtcGZwZDZ0ZWkxL2ZpbGVzLzkvNi8wL2RhdGFzZXRfOTYwZWFjOGUtZmI2Ni00OTgyLTgwMDktNDg5NmM5ZTU3YjM4LmRhdCIgLS1qc29uX2Zyb21fdXNlciAnTm9uZScgLS1qc29uX25hbWVfbWFwcGluZyAvdG1wL3RtcGZwZDZ0ZWkxL2ZpbGVzLzIvZi80L2RhdGFzZXRfMmY0Y2E2YWUtNzdkNi00YmZlLThlMzktMDA1MWMyOTRlNGY2LmRhdDpzZXFfZnJvbV9kYl9wYXJhbS5qc29uLC90bXAvdG1wZnBkNnRlaTEvZmlsZXMvOS82LzAvZGF0YXNldF85NjBlYWM4ZS1mYjY2LTQ5ODItODAwOS00ODk2YzllNTdiMzguZGF0OnNlcV90b19kYl9wYXJhbS5qc29uIC0tb3V0cHV0X3dvcmtmbG93ICcvdG1wL3RtcGZwZDZ0ZWkxL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMy9vdXRwdXRzL2RhdGFzZXRfZDEwMGY0ZWUtZjg0NS00YTY4LWJlNjgtMDA0YzdhZjk2NzlkLmRhdCcgLS1vdXRwdXRfdXNlciAnL3RtcC90bXBmcGQ2dGVpMS9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzMvb3V0cHV0cy9kYXRhc2V0XzFlMmE5MDI0LWFkMjktNGQxOC1iOTVkLTY0NTgxNzM5MzM4My5kYXQnICYmIGVjaG8gJ0RFQlVCJyAmJiBjYXQgJy90bXAvdG1wZnBkNnRlaTEvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8zL291dHB1dHMvZGF0YXNldF8xZTJhOTAyNC1hZDI5LTRkMTgtYjk1ZC02NDU4MTczOTMzODMuZGF0JwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICBbSU5GT10gV2F0Y2hpbmcgdGVtcCBkaXIgZm9yIG5ldyBKU09OczogL3RtcC90bXBmcGQ2dGVpMS90bXAvbWF5c3Ryb19tZXJnZV94ZDA2czFldAogICAgICBbSU5GT10gSW5pdGlhbCBKU09OcyBmcm9tIHdvcmtmbG93OiBbJy90bXAvdG1wZnBkNnRlaTEvZmlsZXMvMi9mLzQvZGF0YXNldF8yZjRjYTZhZS03N2Q2LTRiZmUtOGUzOS0wMDUxYzI5NGU0ZjYuZGF0JywgJy90bXAvdG1wZnBkNnRlaTEvZmlsZXMvOS82LzAvZGF0YXNldF85NjBlYWM4ZS1mYjY2LTQ5ODItODAwOS00ODk2YzllNTdiMzguZGF0J10KICAgICAgW0lORk9dIEFkZGVkIGRhdGEgdW5kZXIga2V5OiBzZXFfZnJvbV9kYl9wYXJhbQogICAgICBbSU5GT10gQWRkZWQgZGF0YSB1bmRlciBrZXk6IHNlcV90b19kYl9wYXJhbQogICAgICBbSU5GT10gTWVyZ2VkIEpTT04gd3JpdHRlbiB0bzogL3RtcC90bXBmcGQ2dGVpMS9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzMvb3V0cHV0cy9kYXRhc2V0XzFlMmE5MDI0LWFkMjktNGQxOC1iOTVkLTY0NTgxNzM5MzM4My5kYXQKICAgICAgW0lORk9dIENsZWFuaW5nIHVwOiAvdG1wL3RtcGZwZDZ0ZWkxL3RtcC9tYXlzdHJvX21lcmdlX3hkMDZzMWV0CiAgICAgIERFQlVCCiAgICAgIHsKICAgICAgICAic2VxX2Zyb21fZGJfcGFyYW0iOiB7CiAgICAgICAgICAiZGJfdXJpIjogInBvc3RncmVzcWw6Ly9wb3N0Z3JlczpSSzE3QGxvY2FsaG9zdDo1NDMyL3Rlc3RfZnJhZ21lbnRzX2RiIiwKICAgICAgICAgICJ0YWJsZSI6ICJzYW1wbGUiLAogICAgICAgICAgImZyYWdtZW50X2NvbHVtbiI6ICJmcmFnbWVudCIsCiAgICAgICAgICAic2VxdWVuY2VfY29sdW1uIjogInNlcXVlbmNlIiwKICAgICAgICAgICJhbm5vdGF0aW9uX2NvbHVtbiI6ICJhbm5vdGF0aW9uIgogICAgICAgIH0sCiAgICAgICAgInNlcV90b19kYl9wYXJhbSI6IHsKICAgICAgICAgICJleGVjdXRpb24iOiB0cnVlLAogICAgICAgICAgImRiX3VyaSI6ICJwb3N0Z3Jlc3FsOi8vcG9zdGdyZXM6UksxN0Bsb2NhbGhvc3Q6NTQzMi90ZXN0X2ZyYWdtZW50c19kYiIsCiAgICAgICAgICAidGFibGUiOiAic2FtcGxlIiwKICAgICAgICAgICJmcmFnbWVudF9jb2x1bW4iOiAiZnJhZ21lbnQiLAogICAgICAgICAgInNlcXVlbmNlX2NvbHVtbiI6ICJzZXF1ZW5jZSIsCiAgICAgICAgICAiYW5ub3RhdGlvbl9jb2x1bW4iOiAiYW5ub3RhdGlvbiIKICAgICAgICB9CiAgICAgIH0KICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgZGlzdHJpYnV0ZVxfanNvbiB8IGAgZmFsc2UgYCB8CiAgICAgICB8IGpzb25cX2Zyb21cX3VzZXIgfCBgIE5vbmUgYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1wZnBkNnRlaTEvZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IHBhcmFtZXRlcnNfbWF5c3RybyAoVGVzdCAjIDIpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL3BhcmFtZXRlcnNfbWF5c3Ryby9tYXlzdHJvLnB5JyAtLWRpc3RyaWJ1dGVfanNvbiAndHJ1ZScgLS1qc29uX2Zyb21fd29ya2Zsb3cgIi90bXAvdG1wZnBkNnRlaTEvZmlsZXMvYy8xL2UvZGF0YXNldF9jMWU5OGIzMi05NjVjLTRhMGQtOWM3Zi0yNjk3M2E3ZTBmZTYuZGF0IiAiL3RtcC90bXBmcGQ2dGVpMS9maWxlcy8zL2EvNS9kYXRhc2V0XzNhNTYwYzIwLTBkM2YtNGFhZS1hYmQ0LTRhNDYwNjk4ZjI4Zi5kYXQiIC0tanNvbl9mcm9tX3VzZXIgJy90bXAvdG1wZnBkNnRlaTEvZmlsZXMvMC9hL2IvZGF0YXNldF8wYWJmNjVhNi1iZDViLTQ3ZmMtOTRiYS1hNmE5N2ZhNmQ4OGIuZGF0JyAtLWpzb25fbmFtZV9tYXBwaW5nIC90bXAvdG1wZnBkNnRlaTEvZmlsZXMvYy8xL2UvZGF0YXNldF9jMWU5OGIzMi05NjVjLTRhMGQtOWM3Zi0yNjk3M2E3ZTBmZTYuZGF0OnNlcV9mcm9tX2RiX3BhcmFtLmpzb24sL3RtcC90bXBmcGQ2dGVpMS9maWxlcy8zL2EvNS9kYXRhc2V0XzNhNTYwYzIwLTBkM2YtNGFhZS1hYmQ0LTRhNDYwNjk4ZjI4Zi5kYXQ6c2VxX3RvX2RiX3BhcmFtLmpzb24gLS1vdXRwdXRfd29ya2Zsb3cgJy90bXAvdG1wZnBkNnRlaTEvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC83L291dHB1dHMvZGF0YXNldF81MjU0MDg0Yi00ZDcxLTQwOTgtYjkzMy1mNzNhOWU3ZDVhMjguZGF0JyAtLW91dHB1dF91c2VyICcvdG1wL3RtcGZwZDZ0ZWkxL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvNy9vdXRwdXRzL2RhdGFzZXRfMDRjNjA0NDUtMmZmNC00YjU5LWJjYmMtNzVmMDhiNjg2MjVhLmRhdCcgJiYgZWNobyAnREVCVUInICYmIGNhdCAnL3RtcC90bXBmcGQ2dGVpMS9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzcvb3V0cHV0cy9kYXRhc2V0XzA0YzYwNDQ1LTJmZjQtNGI1OS1iY2JjLTc1ZjA4YjY4NjI1YS5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgT3V0cHV0OioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIERFQlVCCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBkaXN0cmlidXRlXF9qc29uIHwgYCB0cnVlIGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcGZwZDZ0ZWkxL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKPC9kZXRhaWxzPgo='));
+        target.innerHTML = md.render(atob('IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDEwMC4wJSIgYXJpYS12YWx1ZW5vdz0iMiIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iMiIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSIyIFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjIiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAwLjAlIiBhcmlhLXZhbHVlbm93PSIwIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSIyIiB0aXRsZT0iMCBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDIgfAp8IFBhc3NlZCAgICAgfCAyIHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDAgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyA+PHN1bW1hcnk+UGFzc2VkIFRlc3RzPC9zdW1tYXJ5PgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBwYXJhbWV0ZXJzX21heXN0cm8gKFRlc3QgIyAxKTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIHB5dGhvbjMgLWMgImltcG9ydCBqc29uOyBwYXJhbXMgPSB7ICdhdm9pZF9wYXR0ZXJucyc6ICdCc2FJX3NpdGUgICAgICAgICAgICAgQnNtQklfc2l0ZSAgICAgICAgICAgICBCYnNJX3NpdGUgICAgICAgICAgICAgU2FwSV9zaXRlICAgICAgICAgICAgIDh4MW1lciAgICAgICAgICAgICA1eDNtZXIgICAgICAgICAgICAgOXgybWVyJywgJ2hhaXJwaW5fY29uc3RyYWludHMnOiAnc3RlbV9zaXplPTIwLCBoYWlycGluX3dpbmRvdz0yMDAnLCAnZ2NfY29uc3RyYWludHMnOiAnbWluaT0wLjMsIG1heGk9MC43LCB3aW5kb3c9MTAwICAgICAgICAgICAgIG1pbmk9MC4xLCBtYXhpPTAuOSwgd2luZG93PTEwMCcsICdrbWVyX3NpemUnOiAnMTUnLCAnZXhlY3V0aW9uJzogJ3RydWUnLCAnZGJfdXJpJzogJ3Bvc3RncmVzcWw6Ly9wb3N0Z3JlczpSSzE3X19hdF9fbG9jYWxob3N0OjU0MzIvdGVzdF9mcmFnbWVudHNfZGInLCAndGFibGUnOiAnc2FtcGxlJywgJ2ZyYWdtZW50X2NvbHVtbic6ICdmcmFnbWVudCcsICdzZXF1ZW5jZV9jb2x1bW4nOiAnc2VxdWVuY2UnLCAnYW5ub3RhdGlvbl9jb2x1bW4nOiAnYW5ub3RhdGlvbicgfTsgZiA9IG9wZW4oJy90bXAvdG1wb2pyczY0anMvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8xL291dHB1dHMvZGF0YXNldF9iYTU0YjhlNi01OGRhLTRmNDYtYWIxNy04ZjBjNGQ0NmJiM2MuZGF0JywgJ3cnKTsganNvbi5kdW1wKHBhcmFtcywgZiwgaW5kZW50PTQpOyBmLmNsb3NlKCkiICYmIGVjaG8gREVCRyAmJiBjYXQgJy90bXAvdG1wb2pyczY0anMvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8xL291dHB1dHMvZGF0YXNldF9iYTU0YjhlNi01OGRhLTRmNDYtYWIxNy04ZjBjNGQ0NmJiM2MuZGF0JyAmJiBlY2hvIERFQkcgJiYgY2F0ICcvdG1wL3RtcG9qcnM2NGpzL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMS9vdXRwdXRzL2RhdGFzZXRfYmE1NGI4ZTYtNThkYS00ZjQ2LWFiMTctOGYwYzRkNDZiYjNjLmRhdCcKICAgICAgYGBgCiAgICAqKkV4aXQgQ29kZToqKgoKICAgICogYGBgY29uc29sZQogICAgICAwCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgREVCRwogICAgICB7CiAgICAgICAgICAiYXZvaWRfcGF0dGVybnMiOiAiQnNhSV9zaXRlICAgICAgICAgICAgIEJzbUJJX3NpdGUgICAgICAgICAgICAgQmJzSV9zaXRlICAgICAgICAgICAgIFNhcElfc2l0ZSAgICAgICAgICAgICA4eDFtZXIgICAgICAgICAgICAgNXgzbWVyICAgICAgICAgICAgIDl4Mm1lciIsCiAgICAgICAgICAiaGFpcnBpbl9jb25zdHJhaW50cyI6ICJzdGVtX3NpemU9MjAsIGhhaXJwaW5fd2luZG93PTIwMCIsCiAgICAgICAgICAiZ2NfY29uc3RyYWludHMiOiAibWluaT0wLjMsIG1heGk9MC43LCB3aW5kb3c9MTAwICAgICAgICAgICAgIG1pbmk9MC4xLCBtYXhpPTAuOSwgd2luZG93PTEwMCIsCiAgICAgICAgICAia21lcl9zaXplIjogIjE1IiwKICAgICAgICAgICJleGVjdXRpb24iOiAidHJ1ZSIsCiAgICAgICAgICAiZGJfdXJpIjogInBvc3RncmVzcWw6Ly9wb3N0Z3JlczpSSzE3X19hdF9fbG9jYWxob3N0OjU0MzIvdGVzdF9mcmFnbWVudHNfZGIiLAogICAgICAgICAgInRhYmxlIjogInNhbXBsZSIsCiAgICAgICAgICAiZnJhZ21lbnRfY29sdW1uIjogImZyYWdtZW50IiwKICAgICAgICAgICJzZXF1ZW5jZV9jb2x1bW4iOiAic2VxdWVuY2UiLAogICAgICAgICAgImFubm90YXRpb25fY29sdW1uIjogImFubm90YXRpb24iCiAgICAgIH1ERUJHCiAgICAgIHsKICAgICAgICAgICJhdm9pZF9wYXR0ZXJucyI6ICJCc2FJX3NpdGUgICAgICAgICAgICAgQnNtQklfc2l0ZSAgICAgICAgICAgICBCYnNJX3NpdGUgICAgICAgICAgICAgU2FwSV9zaXRlICAgICAgICAgICAgIDh4MW1lciAgICAgICAgICAgICA1eDNtZXIgICAgICAgICAgICAgOXgybWVyIiwKICAgICAgICAgICJoYWlycGluX2NvbnN0cmFpbnRzIjogInN0ZW1fc2l6ZT0yMCwgaGFpcnBpbl93aW5kb3c9MjAwIiwKICAgICAgICAgICJnY19jb25zdHJhaW50cyI6ICJtaW5pPTAuMywgbWF4aT0wLjcsIHdpbmRvdz0xMDAgICAgICAgICAgICAgbWluaT0wLjEsIG1heGk9MC45LCB3aW5kb3c9MTAwIiwKICAgICAgICAgICJrbWVyX3NpemUiOiAiMTUiLAogICAgICAgICAgImV4ZWN1dGlvbiI6ICJ0cnVlIiwKICAgICAgICAgICJkYl91cmkiOiAicG9zdGdyZXNxbDovL3Bvc3RncmVzOlJLMTdfX2F0X19sb2NhbGhvc3Q6NTQzMi90ZXN0X2ZyYWdtZW50c19kYiIsCiAgICAgICAgICAidGFibGUiOiAic2FtcGxlIiwKICAgICAgICAgICJmcmFnbWVudF9jb2x1bW4iOiAiZnJhZ21lbnQiLAogICAgICAgICAgInNlcXVlbmNlX2NvbHVtbiI6ICJzZXF1ZW5jZSIsCiAgICAgICAgICAiYW5ub3RhdGlvbl9jb2x1bW4iOiAiYW5ub3RhdGlvbiIKICAgICAgfQogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBhdm9pZFxfcGF0dGVybnMgfCBgICJCc2FJX3NpdGUgICAgICAgICAgICAgQnNtQklfc2l0ZSAgICAgICAgICAgICBCYnNJX3NpdGUgICAgICAgICAgICAgU2FwSV9zaXRlICAgICAgICAgICAgIDh4MW1lciAgICAgICAgICAgICA1eDNtZXIgICAgICAgICAgICAgOXgybWVyIiBgIHwKICAgICAgIHwgaGFpcnBpblxfY29uc3RyYWludHMgfCBgICJzdGVtX3NpemU9MjAsIGhhaXJwaW5fd2luZG93PTIwMCIgYCB8CiAgICAgICB8IGdjXF9jb25zdHJhaW50cyB8IGAgIm1pbmk9MC4zLCBtYXhpPTAuNywgd2luZG93PTEwMCAgICAgICAgICAgICBtaW5pPTAuMSwgbWF4aT0wLjksIHdpbmRvdz0xMDAiIGAgfAogICAgICAgfCBrbWVyXF9zaXplIHwgYCAiMTUiIGAgfAogICAgICAgfCBleGVjdXRpb24gfCBgIHRydWUgYCB8CiAgICAgICB8IGRiXF91cmkgfCBgICJwb3N0Z3Jlc3FsOi8vcG9zdGdyZXM6UksxN0Bsb2NhbGhvc3Q6NTQzMi90ZXN0X2ZyYWdtZW50c19kYiIgYCB8CiAgICAgICB8IHRhYmxlXF9uYW1lIHwgYCAic2FtcGxlIiBgIHwKICAgICAgIHwgZnJhZ21lbnRcX2NvbHVtbiB8IGAgImZyYWdtZW50IiBgIHwKICAgICAgIHwgc2VxdWVuY2VcX2NvbHVtbiB8IGAgInNlcXVlbmNlIiBgIHwKICAgICAgIHwgYW5ub3RhdGlvblxfY29sdW1uIHwgYCAiYW5ub3RhdGlvbiIgYCB8CiAgICAgICB8IHVzZXJcX2pzb24gfCBgIE5vbmUgYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1wb2pyczY0anMvZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IHBhcmFtZXRlcnNfbWF5c3RybyAoVGVzdCAjIDIpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgY3AgJy90bXAvdG1wb2pyczY0anMvZmlsZXMvYS82LzQvZGF0YXNldF9hNjRiOGI0Yi0yOTBiLTRiMmUtYmY3Ny1kMGQ0ZWJjMzUxMzcuZGF0JyAnL3RtcC90bXBvanJzNjRqcy9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzMvb3V0cHV0cy9kYXRhc2V0XzBkZWRlYjdjLTc5NjktNDUyZi1hMTYyLTI1ZTcwNjYyYjc3NS5kYXQnICYmIGVjaG8gREVCRyAmJiBjYXQgJy90bXAvdG1wb2pyczY0anMvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8zL291dHB1dHMvZGF0YXNldF8wZGVkZWI3Yy03OTY5LTQ1MmYtYTE2Mi0yNWU3MDY2MmI3NzUuZGF0JwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICBERUJHCiAgICAgIHsKICAgICAgICAgICJhdm9pZF9wYXR0ZXJucyI6ICJCc2FJX3NpdGVcbkJzbUJJX3NpdGVcbkJic0lfc2l0ZVxuU2FwSV9zaXRlXG44eDFtZXJcbjV4M21lclxuOXgybWVyIiwKICAgICAgICAgICJoYWlycGluX2NvbnN0cmFpbnRzIjogInN0ZW1fc2l6ZT0yMCwgaGFpcnBpbl93aW5kb3c9MjAwIiwKICAgICAgICAgICJnY19jb25zdHJhaW50cyI6ICJtaW5pPTAuMywgbWF4aT0wLjcsIHdpbmRvdz0xMDBcbm1pbmk9MC4xLCBtYXhpPTAuOSwgd2luZG93PTEwMCIsCiAgICAgICAgICAia21lcl9zaXplIjogIjE1IiwKICAgICAgICAgICJleGVjdXRpb24iOiAidHJ1ZSIsCiAgICAgICAgICAiZGJfdXJpIjogInBvc3RncmVzcWw6Ly9wb3N0Z3JlczpSSzE3QGxvY2FsaG9zdDo1NDMyL3Rlc3RfZnJhZ21lbnRzX2RiIiwKICAgICAgICAgICJ0YWJsZSI6ICJzYW1wbGUiLAogICAgICAgICAgImZyYWdtZW50X2NvbHVtbiI6ICJmcmFnbWVudCIsCiAgICAgICAgICAic2VxdWVuY2VfY29sdW1uIjogInNlcXVlbmNlIiwKICAgICAgICAgICJhbm5vdGF0aW9uX2NvbHVtbiI6ICJhbm5vdGF0aW9uIgogICAgICB9CgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBhdm9pZFxfcGF0dGVybnMgfCBgIE5vbmUgYCB8CiAgICAgICB8IGhhaXJwaW5cX2NvbnN0cmFpbnRzIHwgYCBOb25lIGAgfAogICAgICAgfCBnY1xfY29uc3RyYWludHMgfCBgIE5vbmUgYCB8CiAgICAgICB8IGttZXJcX3NpemUgfCBgICIiIGAgfAogICAgICAgfCBleGVjdXRpb24gfCBgIGZhbHNlIGAgfAogICAgICAgfCBkYlxfdXJpIHwgYCBOb25lIGAgfAogICAgICAgfCB0YWJsZVxfbmFtZSB8IGAgTm9uZSBgIHwKICAgICAgIHwgZnJhZ21lbnRcX2NvbHVtbiB8IGAgTm9uZSBgIHwKICAgICAgIHwgc2VxdWVuY2VcX2NvbHVtbiB8IGAgTm9uZSBgIHwKICAgICAgIHwgYW5ub3RhdGlvblxfY29sdW1uIHwgYCBOb25lIGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcG9qcnM2NGpzL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKPC9kZXRhaWxzPgo='));
     </script>
   </body>
 </html>
\ No newline at end of file
--- a/output.json	Fri Jul 11 10:10:16 2025 +0000
+++ b/output.json	Wed Jul 16 14:28:21 2025 +0000
@@ -9,45 +9,104 @@
         {
             "data": {
                 "inputs": {
-                    "distribute_json": false,
-                    "json_from_workflow": [
-                        {
-                            "id": "051ed7ff50845d8c",
-                            "src": "hda"
-                        },
-                        {
-                            "id": "25656ddfec77a3b3",
-                            "src": "hda"
-                        }
-                    ]
+                    "annotation_column": "annotation",
+                    "avoid_patterns": "BsaI_site             BsmBI_site             BbsI_site             SapI_site             8x1mer             5x3mer             9x2mer",
+                    "db_uri": "postgresql://postgres:RK17@localhost:5432/test_fragments_db",
+                    "execution": true,
+                    "fragment_column": "fragment",
+                    "gc_constraints": "mini=0.3, maxi=0.7, window=100             mini=0.1, maxi=0.9, window=100",
+                    "hairpin_constraints": "stem_size=20, hairpin_window=200",
+                    "kmer_size": "15",
+                    "sequence_column": "sequence",
+                    "table_name": "sample"
                 },
                 "job": {
-                    "command_line": "python '/home/rkhaled/galaxytools/tools/parameters_maystro/maystro.py' --distribute_json 'false' --json_from_workflow \"/tmp/tmpfpd6tei1/files/2/f/4/dataset_2f4ca6ae-77d6-4bfe-8e39-0051c294e4f6.dat\" \"/tmp/tmpfpd6tei1/files/9/6/0/dataset_960eac8e-fb66-4982-8009-4896c9e57b38.dat\" --json_from_user 'None' --json_name_mapping /tmp/tmpfpd6tei1/files/2/f/4/dataset_2f4ca6ae-77d6-4bfe-8e39-0051c294e4f6.dat:seq_from_db_param.json,/tmp/tmpfpd6tei1/files/9/6/0/dataset_960eac8e-fb66-4982-8009-4896c9e57b38.dat:seq_to_db_param.json --output_workflow '/tmp/tmpfpd6tei1/job_working_directory/000/3/outputs/dataset_d100f4ee-f845-4a68-be68-004c7af9679d.dat' --output_user '/tmp/tmpfpd6tei1/job_working_directory/000/3/outputs/dataset_1e2a9024-ad29-4d18-b95d-645817393383.dat' && echo 'DEBUB' && cat '/tmp/tmpfpd6tei1/job_working_directory/000/3/outputs/dataset_1e2a9024-ad29-4d18-b95d-645817393383.dat'",
+                    "command_line": "python3 -c \"import json; params = { 'avoid_patterns': 'BsaI_site             BsmBI_site             BbsI_site             SapI_site             8x1mer             5x3mer             9x2mer', 'hairpin_constraints': 'stem_size=20, hairpin_window=200', 'gc_constraints': 'mini=0.3, maxi=0.7, window=100             mini=0.1, maxi=0.9, window=100', 'kmer_size': '15', 'execution': 'true', 'db_uri': 'postgresql://postgres:RK17__at__localhost:5432/test_fragments_db', 'table': 'sample', 'fragment_column': 'fragment', 'sequence_column': 'sequence', 'annotation_column': 'annotation' }; f = open('/tmp/tmpojrs64js/job_working_directory/000/1/outputs/dataset_ba54b8e6-58da-4f46-ab17-8f0c4d46bb3c.dat', 'w'); json.dump(params, f, indent=4); f.close()\" && echo DEBG && cat '/tmp/tmpojrs64js/job_working_directory/000/1/outputs/dataset_ba54b8e6-58da-4f46-ab17-8f0c4d46bb3c.dat' && echo DEBG && cat '/tmp/tmpojrs64js/job_working_directory/000/1/outputs/dataset_ba54b8e6-58da-4f46-ab17-8f0c4d46bb3c.dat'",
                     "command_version": "",
                     "copied_from_job_id": null,
-                    "create_time": "2025-07-11T09:42:39.854743",
+                    "create_time": "2025-07-16T14:25:13.835798",
                     "dependencies": [],
                     "exit_code": 0,
-                    "external_id": "79277",
+                    "external_id": "153937",
                     "galaxy_version": "25.0",
                     "handler": null,
-                    "history_id": "051ed7ff50845d8c",
-                    "id": "d66447d427a79ce4",
-                    "inputs": {
-                        "json_from_workflow": {
-                            "id": "051ed7ff50845d8c",
+                    "history_id": "479ca6463d0132e0",
+                    "id": "479ca6463d0132e0",
+                    "inputs": {},
+                    "job_messages": [],
+                    "job_metrics": [],
+                    "job_runner_name": null,
+                    "job_stderr": "",
+                    "job_stdout": "",
+                    "model_class": "Job",
+                    "output_collections": {},
+                    "outputs": {
+                        "output_json": {
+                            "id": "479ca6463d0132e0",
                             "src": "hda",
-                            "uuid": "2f4ca6ae-77d6-4bfe-8e39-0051c294e4f6"
-                        },
-                        "json_from_workflow1": {
-                            "id": "051ed7ff50845d8c",
+                            "uuid": "ba54b8e6-58da-4f46-ab17-8f0c4d46bb3c"
+                        }
+                    },
+                    "params": {
+                        "__input_ext": "\"input\"",
+                        "annotation_column": "\"annotation\"",
+                        "avoid_patterns": "\"BsaI_site             BsmBI_site             BbsI_site             SapI_site             8x1mer             5x3mer             9x2mer\"",
+                        "chromInfo": "\"/tmp/tmpojrs64js/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"",
+                        "db_uri": "\"postgresql://postgres:RK17@localhost:5432/test_fragments_db\"",
+                        "dbkey": "\"?\"",
+                        "execution": "true",
+                        "fragment_column": "\"fragment\"",
+                        "gc_constraints": "\"mini=0.3, maxi=0.7, window=100             mini=0.1, maxi=0.9, window=100\"",
+                        "hairpin_constraints": "\"stem_size=20, hairpin_window=200\"",
+                        "kmer_size": "\"15\"",
+                        "sequence_column": "\"sequence\"",
+                        "table_name": "\"sample\"",
+                        "user_json": null
+                    },
+                    "state": "ok",
+                    "stderr": "",
+                    "stdout": "DEBG\n{\n    \"avoid_patterns\": \"BsaI_site             BsmBI_site             BbsI_site             SapI_site             8x1mer             5x3mer             9x2mer\",\n    \"hairpin_constraints\": \"stem_size=20, hairpin_window=200\",\n    \"gc_constraints\": \"mini=0.3, maxi=0.7, window=100             mini=0.1, maxi=0.9, window=100\",\n    \"kmer_size\": \"15\",\n    \"execution\": \"true\",\n    \"db_uri\": \"postgresql://postgres:RK17__at__localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n}DEBG\n{\n    \"avoid_patterns\": \"BsaI_site             BsmBI_site             BbsI_site             SapI_site             8x1mer             5x3mer             9x2mer\",\n    \"hairpin_constraints\": \"stem_size=20, hairpin_window=200\",\n    \"gc_constraints\": \"mini=0.3, maxi=0.7, window=100             mini=0.1, maxi=0.9, window=100\",\n    \"kmer_size\": \"15\",\n    \"execution\": \"true\",\n    \"db_uri\": \"postgresql://postgres:RK17__at__localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n}",
+                    "tool_id": "parameters_maystro",
+                    "tool_stderr": "",
+                    "tool_stdout": "DEBG\n{\n    \"avoid_patterns\": \"BsaI_site             BsmBI_site             BbsI_site             SapI_site             8x1mer             5x3mer             9x2mer\",\n    \"hairpin_constraints\": \"stem_size=20, hairpin_window=200\",\n    \"gc_constraints\": \"mini=0.3, maxi=0.7, window=100             mini=0.1, maxi=0.9, window=100\",\n    \"kmer_size\": \"15\",\n    \"execution\": \"true\",\n    \"db_uri\": \"postgresql://postgres:RK17__at__localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n}DEBG\n{\n    \"avoid_patterns\": \"BsaI_site             BsmBI_site             BbsI_site             SapI_site             8x1mer             5x3mer             9x2mer\",\n    \"hairpin_constraints\": \"stem_size=20, hairpin_window=200\",\n    \"gc_constraints\": \"mini=0.3, maxi=0.7, window=100             mini=0.1, maxi=0.9, window=100\",\n    \"kmer_size\": \"15\",\n    \"execution\": \"true\",\n    \"db_uri\": \"postgresql://postgres:RK17__at__localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n}",
+                    "update_time": "2025-07-16T14:25:27.820187",
+                    "user_email": "planemo@galaxyproject.org",
+                    "user_id": "479ca6463d0132e0"
+                },
+                "status": "success",
+                "test_index": 0,
+                "time_seconds": 14.118565320968628,
+                "tool_id": "parameters_maystro",
+                "tool_version": "1.1.0+galaxy3"
+            },
+            "has_data": true,
+            "id": "parameters_maystro-0"
+        },
+        {
+            "data": {
+                "inputs": {
+                    "user_json": {
+                        "id": "0311cb8bec9eec65",
+                        "src": "hda"
+                    }
+                },
+                "job": {
+                    "command_line": "cp '/tmp/tmpojrs64js/files/a/6/4/dataset_a64b8b4b-290b-4b2e-bf77-d0d4ebc35137.dat' '/tmp/tmpojrs64js/job_working_directory/000/3/outputs/dataset_0dedeb7c-7969-452f-a162-25e70662b775.dat' && echo DEBG && cat '/tmp/tmpojrs64js/job_working_directory/000/3/outputs/dataset_0dedeb7c-7969-452f-a162-25e70662b775.dat'",
+                    "command_version": "",
+                    "copied_from_job_id": null,
+                    "create_time": "2025-07-16T14:25:36.982208",
+                    "dependencies": [],
+                    "exit_code": 0,
+                    "external_id": "154115",
+                    "galaxy_version": "25.0",
+                    "handler": null,
+                    "history_id": "0311cb8bec9eec65",
+                    "id": "da029efde06939a6",
+                    "inputs": {
+                        "user_json": {
+                            "id": "0311cb8bec9eec65",
                             "src": "hda",
-                            "uuid": "2f4ca6ae-77d6-4bfe-8e39-0051c294e4f6"
-                        },
-                        "json_from_workflow2": {
-                            "id": "25656ddfec77a3b3",
-                            "src": "hda",
-                            "uuid": "960eac8e-fb66-4982-8009-4896c9e57b38"
+                            "uuid": "a64b8b4b-290b-4b2e-bf77-d0d4ebc35137"
                         }
                     },
                     "job_messages": [],
@@ -58,136 +117,42 @@
                     "model_class": "Job",
                     "output_collections": {},
                     "outputs": {
-                        "output_user": {
-                            "id": "39496c7f8d685f43",
+                        "output_json": {
+                            "id": "da029efde06939a6",
                             "src": "hda",
-                            "uuid": "1e2a9024-ad29-4d18-b95d-645817393383"
-                        },
-                        "output_workflow": {
-                            "id": "d66447d427a79ce4",
-                            "src": "hda",
-                            "uuid": "d100f4ee-f845-4a68-be68-004c7af9679d"
+                            "uuid": "0dedeb7c-7969-452f-a162-25e70662b775"
                         }
                     },
                     "params": {
                         "__input_ext": "\"input\"",
-                        "chromInfo": "\"/tmp/tmpfpd6tei1/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"",
+                        "annotation_column": null,
+                        "avoid_patterns": null,
+                        "chromInfo": "\"/tmp/tmpojrs64js/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"",
+                        "db_uri": null,
                         "dbkey": "\"?\"",
-                        "distribute_json": "false",
-                        "json_from_user": null
+                        "execution": "false",
+                        "fragment_column": null,
+                        "gc_constraints": null,
+                        "hairpin_constraints": null,
+                        "kmer_size": "\"\"",
+                        "sequence_column": null,
+                        "table_name": null
                     },
                     "state": "ok",
                     "stderr": "",
-                    "stdout": "[INFO] Watching temp dir for new JSONs: /tmp/tmpfpd6tei1/tmp/maystro_merge_xd06s1et\n[INFO] Initial JSONs from workflow: ['/tmp/tmpfpd6tei1/files/2/f/4/dataset_2f4ca6ae-77d6-4bfe-8e39-0051c294e4f6.dat', '/tmp/tmpfpd6tei1/files/9/6/0/dataset_960eac8e-fb66-4982-8009-4896c9e57b38.dat']\n[INFO] Added data under key: seq_from_db_param\n[INFO] Added data under key: seq_to_db_param\n[INFO] Merged JSON written to: /tmp/tmpfpd6tei1/job_working_directory/000/3/outputs/dataset_1e2a9024-ad29-4d18-b95d-645817393383.dat\n[INFO] Cleaning up: /tmp/tmpfpd6tei1/tmp/maystro_merge_xd06s1et\nDEBUB\n{\n  \"seq_from_db_param\": {\n    \"db_uri\": \"postgresql://postgres:RK17@localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n  },\n  \"seq_to_db_param\": {\n    \"execution\": true,\n    \"db_uri\": \"postgresql://postgres:RK17@localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n  }\n}",
+                    "stdout": "DEBG\n{\n    \"avoid_patterns\": \"BsaI_site\\nBsmBI_site\\nBbsI_site\\nSapI_site\\n8x1mer\\n5x3mer\\n9x2mer\",\n    \"hairpin_constraints\": \"stem_size=20, hairpin_window=200\",\n    \"gc_constraints\": \"mini=0.3, maxi=0.7, window=100\\nmini=0.1, maxi=0.9, window=100\",\n    \"kmer_size\": \"15\",\n    \"execution\": \"true\",\n    \"db_uri\": \"postgresql://postgres:RK17@localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n}\n",
                     "tool_id": "parameters_maystro",
                     "tool_stderr": "",
-                    "tool_stdout": "[INFO] Watching temp dir for new JSONs: /tmp/tmpfpd6tei1/tmp/maystro_merge_xd06s1et\n[INFO] Initial JSONs from workflow: ['/tmp/tmpfpd6tei1/files/2/f/4/dataset_2f4ca6ae-77d6-4bfe-8e39-0051c294e4f6.dat', '/tmp/tmpfpd6tei1/files/9/6/0/dataset_960eac8e-fb66-4982-8009-4896c9e57b38.dat']\n[INFO] Added data under key: seq_from_db_param\n[INFO] Added data under key: seq_to_db_param\n[INFO] Merged JSON written to: /tmp/tmpfpd6tei1/job_working_directory/000/3/outputs/dataset_1e2a9024-ad29-4d18-b95d-645817393383.dat\n[INFO] Cleaning up: /tmp/tmpfpd6tei1/tmp/maystro_merge_xd06s1et\nDEBUB\n{\n  \"seq_from_db_param\": {\n    \"db_uri\": \"postgresql://postgres:RK17@localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n  },\n  \"seq_to_db_param\": {\n    \"execution\": true,\n    \"db_uri\": \"postgresql://postgres:RK17@localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n  }\n}",
-                    "update_time": "2025-07-11T09:42:45.494563",
+                    "tool_stdout": "DEBG\n{\n    \"avoid_patterns\": \"BsaI_site\\nBsmBI_site\\nBbsI_site\\nSapI_site\\n8x1mer\\n5x3mer\\n9x2mer\",\n    \"hairpin_constraints\": \"stem_size=20, hairpin_window=200\",\n    \"gc_constraints\": \"mini=0.3, maxi=0.7, window=100\\nmini=0.1, maxi=0.9, window=100\",\n    \"kmer_size\": \"15\",\n    \"execution\": \"true\",\n    \"db_uri\": \"postgresql://postgres:RK17@localhost:5432/test_fragments_db\",\n    \"table\": \"sample\",\n    \"fragment_column\": \"fragment\",\n    \"sequence_column\": \"sequence\",\n    \"annotation_column\": \"annotation\"\n}\n",
+                    "update_time": "2025-07-16T14:25:42.101497",
                     "user_email": "planemo@galaxyproject.org",
-                    "user_id": "051ed7ff50845d8c"
-                },
-                "status": "success",
-                "test_index": 0,
-                "time_seconds": 16.301273107528687,
-                "tool_id": "parameters_maystro",
-                "tool_version": "0.1.0+galaxy1"
-            },
-            "has_data": true,
-            "id": "parameters_maystro-0"
-        },
-        {
-            "data": {
-                "inputs": {
-                    "distribute_json": true,
-                    "json_from_user": {
-                        "id": "10ea9be91661a5fd",
-                        "src": "hda"
-                    },
-                    "json_from_workflow": [
-                        {
-                            "id": "b7e19a053756efb9",
-                            "src": "hda"
-                        },
-                        {
-                            "id": "45e8a4dfb17d83f9",
-                            "src": "hda"
-                        }
-                    ]
-                },
-                "job": {
-                    "command_line": "python '/home/rkhaled/galaxytools/tools/parameters_maystro/maystro.py' --distribute_json 'true' --json_from_workflow \"/tmp/tmpfpd6tei1/files/c/1/e/dataset_c1e98b32-965c-4a0d-9c7f-26973a7e0fe6.dat\" \"/tmp/tmpfpd6tei1/files/3/a/5/dataset_3a560c20-0d3f-4aae-abd4-4a460698f28f.dat\" --json_from_user '/tmp/tmpfpd6tei1/files/0/a/b/dataset_0abf65a6-bd5b-47fc-94ba-a6a97fa6d88b.dat' --json_name_mapping /tmp/tmpfpd6tei1/files/c/1/e/dataset_c1e98b32-965c-4a0d-9c7f-26973a7e0fe6.dat:seq_from_db_param.json,/tmp/tmpfpd6tei1/files/3/a/5/dataset_3a560c20-0d3f-4aae-abd4-4a460698f28f.dat:seq_to_db_param.json --output_workflow '/tmp/tmpfpd6tei1/job_working_directory/000/7/outputs/dataset_5254084b-4d71-4098-b933-f73a9e7d5a28.dat' --output_user '/tmp/tmpfpd6tei1/job_working_directory/000/7/outputs/dataset_04c60445-2ff4-4b59-bcbc-75f08b68625a.dat' && echo 'DEBUB' && cat '/tmp/tmpfpd6tei1/job_working_directory/000/7/outputs/dataset_04c60445-2ff4-4b59-bcbc-75f08b68625a.dat'",
-                    "command_version": "",
-                    "copied_from_job_id": null,
-                    "create_time": "2025-07-11T09:42:56.883885",
-                    "dependencies": [],
-                    "exit_code": 0,
-                    "external_id": "79598",
-                    "galaxy_version": "25.0",
-                    "handler": null,
-                    "history_id": "25656ddfec77a3b3",
-                    "id": "10ea9be91661a5fd",
-                    "inputs": {
-                        "json_from_user": {
-                            "id": "10ea9be91661a5fd",
-                            "src": "hda",
-                            "uuid": "0abf65a6-bd5b-47fc-94ba-a6a97fa6d88b"
-                        },
-                        "json_from_workflow": {
-                            "id": "b7e19a053756efb9",
-                            "src": "hda",
-                            "uuid": "c1e98b32-965c-4a0d-9c7f-26973a7e0fe6"
-                        },
-                        "json_from_workflow1": {
-                            "id": "b7e19a053756efb9",
-                            "src": "hda",
-                            "uuid": "c1e98b32-965c-4a0d-9c7f-26973a7e0fe6"
-                        },
-                        "json_from_workflow2": {
-                            "id": "45e8a4dfb17d83f9",
-                            "src": "hda",
-                            "uuid": "3a560c20-0d3f-4aae-abd4-4a460698f28f"
-                        }
-                    },
-                    "job_messages": [],
-                    "job_metrics": [],
-                    "job_runner_name": null,
-                    "job_stderr": "",
-                    "job_stdout": "",
-                    "model_class": "Job",
-                    "output_collections": {},
-                    "outputs": {
-                        "output_user": {
-                            "id": "295d652904818249",
-                            "src": "hda",
-                            "uuid": "04c60445-2ff4-4b59-bcbc-75f08b68625a"
-                        },
-                        "output_workflow": {
-                            "id": "8c61ed432685cfe0",
-                            "src": "hda",
-                            "uuid": "5254084b-4d71-4098-b933-f73a9e7d5a28"
-                        }
-                    },
-                    "params": {
-                        "__input_ext": "\"input\"",
-                        "chromInfo": "\"/tmp/tmpfpd6tei1/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"",
-                        "dbkey": "\"?\"",
-                        "distribute_json": "true"
-                    },
-                    "state": "ok",
-                    "stderr": "",
-                    "stdout": "DEBUB\n",
-                    "tool_id": "parameters_maystro",
-                    "tool_stderr": "",
-                    "tool_stdout": "DEBUB\n",
-                    "update_time": "2025-07-11T09:43:02.149865",
-                    "user_email": "planemo@galaxyproject.org",
-                    "user_id": "051ed7ff50845d8c"
+                    "user_id": "479ca6463d0132e0"
                 },
                 "status": "success",
                 "test_index": 1,
-                "time_seconds": 16.54760479927063,
+                "time_seconds": 14.252628803253174,
                 "tool_id": "parameters_maystro",
-                "tool_version": "0.1.0+galaxy1"
+                "tool_version": "1.1.0+galaxy3"
             },
             "has_data": true,
             "id": "parameters_maystro-1"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test_json.json	Wed Jul 16 14:28:21 2025 +0000
@@ -0,0 +1,12 @@
+{
+    "avoid_patterns": "BsaI_site\nBsmBI_site\nBbsI_site\nSapI_site\n8x1mer\n5x3mer\n9x2mer",
+    "hairpin_constraints": "stem_size=20, hairpin_window=200",
+    "gc_constraints": "mini=0.3, maxi=0.7, window=100\nmini=0.1, maxi=0.9, window=100",
+    "kmer_size": "15",
+    "execution": "true",
+    "db_uri": "postgresql://postgres:RK17@localhost:5432/test_fragments_db",
+    "table": "sample",
+    "fragment_column": "fragment",
+    "sequence_column": "sequence",
+    "annotation_column": "annotation"
+}
\ No newline at end of file