# HG changeset patch # User tduigou # Date 1767699510 0 # Node ID c6708a220f23f62edd3e0514fedd15a871361f84 # Parent f80ed73f9f9aa4ee84e79b48a5b7d5d0cb552fef planemo upload for repository https://github.com/brsynth/galaxytools/tree/main/tools/parameters_maystro commit e8c8f102cab10531ed588be4ecb8a0d01e797f09 diff -r f80ed73f9f9a -r c6708a220f23 maystro.py --- a/maystro.py Wed Jul 23 09:40:00 2025 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -import argparse -import tempfile -import os -import json -import shutil - - -def parse_command_line_args(): - parser = argparse.ArgumentParser(description="Maystro JSON Handler") - - parser.add_argument("--distribute_json", required=True, help="true or false") - parser.add_argument("--json_from_workflow", required=False, nargs='+', help="JSON files from tools", default=[]) - parser.add_argument("--json_from_user", required=False, help="User-provided JSON") - parser.add_argument("--json_name_mapping", required=True, help="map the real json name") - parser.add_argument("--output_workflow", required=True, help="JSON output for next workflow steps") - parser.add_argument("--output_user", required=True, help="Final JSON output to user") - - return parser.parse_args() - - -def parse_file_name_mapping(mapping_str): - mapping = {} - if mapping_str: - for pair in mapping_str.split(','): - stored, original = pair.strip().split(':', 1) - # Strip .json from original - real_name = os.path.splitext(original)[0] - mapping[os.path.basename(stored)] = real_name - return mapping - - -def handle_distribute_json_false(args): - temp_dir = tempfile.mkdtemp(prefix="maystro_merge_") - print(f"[INFO] Watching temp dir for new JSONs: {temp_dir}") - - try: - # Collect JSONs from json_from_workflow - initial_jsons = list(filter(os.path.isfile, args.json_from_workflow)) - print(f"[INFO] Initial JSONs from workflow: {initial_jsons}") - - # Parse filename mapping if provided - filename_mapping = parse_file_name_mapping(getattr(args, 'json_name_mapping', '')) - - # Merge all together - merged = {} - for file_path in initial_jsons: - try: - with open(file_path, 'r') as f: - data = json.load(f) - basename = os.path.basename(file_path) - real_name = filename_mapping.get(basename, basename) # fallback if not in mapping - merged[real_name] = data - print(f"[INFO] Added data under key: {real_name}") - except json.JSONDecodeError as e: - print(f"[WARN] Skipping invalid JSON file {file_path}: {e}") - - with open(args.output_user, "w") as f: - json.dump(merged, f, indent=2) - print(f"[INFO] Merged JSON written to: {args.output_user}") - - finally: - print(f"[INFO] Cleaning up: {temp_dir}") - shutil.rmtree(temp_dir) - - -def merge_json_files(paths): - merged = {} - for path in paths: - try: - with open(path, "r") as f: - data = json.load(f) - merged.update(data) - except Exception as e: - print(f"[WARN] Skipping {path}: {e}") - return merged - - -def handle_distribute_json_true(args): - if not args.json_from_user: - raise ValueError("json_from_user is required when distribute_json is true") - - with open(args.json_from_user, 'r') as in_f: - user_data = json.load(in_f) - - with open(args.output_workflow, 'w') as out_f: - json.dump(user_data, out_f, indent=2) - - -def main(): - args = parse_command_line_args() - - if args.distribute_json.lower() == 'false': - handle_distribute_json_false(args) - else: - handle_distribute_json_true(args) - -if __name__ == "__main__": - main() diff -r f80ed73f9f9a -r c6708a220f23 maystro_workflow_2.xml --- a/maystro_workflow_2.xml Wed Jul 23 09:40:00 2025 +0000 +++ b/maystro_workflow_2.xml Tue Jan 06 11:38:30 2026 +0000 @@ -85,12 +85,12 @@ - - - - - - + + + + + + @@ -99,7 +99,7 @@ - + diff -r f80ed73f9f9a -r c6708a220f23 output.html --- a/output.html Wed Jul 23 09:40:00 2025 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,291 +0,0 @@ - - - - - - - Test Results (powered by Planemo) - - - - - - - - - - -
-
-
-
- - - - - - - \ No newline at end of file diff -r f80ed73f9f9a -r c6708a220f23 output.json --- a/output.json Wed Jul 23 09:40:00 2025 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,168 +0,0 @@ -{ - "summary": { - "num_errors": 0, - "num_failures": 0, - "num_skips": 0, - "num_tests": 2 - }, - "tests": [ - { - "data": { - "inputs": { - "DB|annotation_column": "annotation", - "DB|db_uri": "postgresql://postgres:RK17@localhost:5432/test_fragments_db", - "DB|execution": true, - "DB|fragment_column": "fragment", - "DB|sequence_column": "sequence", - "DB|table_name": "sample", - "DnaOptimizationProblemClass": "DnaOptimizationProblem", - "assembly_plan_name": "Type2sRestrictionAssembly", - "avoid_patterns": "BsaI_site nNotI_site nXbaI_site nClaI_site n8x1mer", - "enzyme": "auto", - "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", - "methylation_protection": true, - "topology": "circular" - }, - "job": { - "command_line": "python3 -c \"import json; params = { 'DnaOptimizationProblemClass': 'DnaOptimizationProblem', 'methylation_protection': 'true', 'allow_edits': 'true', 'avoid_patterns': 'BsaI_site nNotI_site nXbaI_site nClaI_site n8x1mer', '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', 'assembly_plan_name': 'Type2sRestrictionAssembly', 'topology': 'circular', 'enzyme': 'auto', '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/tmpnxavcgf5/job_working_directory/000/1/outputs/dataset_53ffa695-5fab-48b3-b5f5-ff93f77bfc10.dat', 'w'); json.dump(params, f, indent=4); f.close()\" && echo DEBG && cat '/tmp/tmpnxavcgf5/job_working_directory/000/1/outputs/dataset_53ffa695-5fab-48b3-b5f5-ff93f77bfc10.dat' && echo DEBG && cat '/tmp/tmpnxavcgf5/job_working_directory/000/1/outputs/dataset_53ffa695-5fab-48b3-b5f5-ff93f77bfc10.dat'", - "command_version": "", - "copied_from_job_id": null, - "create_time": "2025-07-17T12:08:28.832103", - "dependencies": [], - "exit_code": 0, - "external_id": "135810", - "galaxy_version": "25.0", - "handler": null, - "history_id": "d952758136b0c83c", - "id": "d952758136b0c83c", - "inputs": {}, - "job_messages": [], - "job_metrics": [], - "job_runner_name": null, - "job_stderr": "", - "job_stdout": "", - "model_class": "Job", - "output_collections": {}, - "outputs": { - "output_json": { - "id": "d952758136b0c83c", - "src": "hda", - "uuid": "53ffa695-5fab-48b3-b5f5-ff93f77bfc10" - } - }, - "params": { - "DB": "{\"annotation_column\": \"annotation\", \"db_uri\": \"postgresql://postgres:RK17@localhost:5432/test_fragments_db\", \"execution\": true, \"fragment_column\": \"fragment\", \"sequence_column\": \"sequence\", \"table_name\": \"sample\", \"user_json\": null}", - "DnaOptimizationProblemClass": "\"DnaOptimizationProblem\"", - "__input_ext": "\"input\"", - "allow_edits": "true", - "assembly_plan_name": "\"Type2sRestrictionAssembly\"", - "avoid_patterns": "\"BsaI_site nNotI_site nXbaI_site nClaI_site n8x1mer\"", - "chromInfo": "\"/tmp/tmpnxavcgf5/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", - "dbkey": "\"?\"", - "enzyme": "\"auto\"", - "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\"", - "methylation_protection": "true", - "topology": "\"circular\"" - }, - "state": "ok", - "stderr": "", - "stdout": "DEBG\n{\n \"DnaOptimizationProblemClass\": \"DnaOptimizationProblem\",\n \"methylation_protection\": \"true\",\n \"allow_edits\": \"true\",\n \"avoid_patterns\": \"BsaI_site nNotI_site nXbaI_site nClaI_site n8x1mer\",\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 \"assembly_plan_name\": \"Type2sRestrictionAssembly\",\n \"topology\": \"circular\",\n \"enzyme\": \"auto\",\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 \"DnaOptimizationProblemClass\": \"DnaOptimizationProblem\",\n \"methylation_protection\": \"true\",\n \"allow_edits\": \"true\",\n \"avoid_patterns\": \"BsaI_site nNotI_site nXbaI_site nClaI_site n8x1mer\",\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 \"assembly_plan_name\": \"Type2sRestrictionAssembly\",\n \"topology\": \"circular\",\n \"enzyme\": \"auto\",\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_workflow_2", - "tool_stderr": "", - "tool_stdout": "DEBG\n{\n \"DnaOptimizationProblemClass\": \"DnaOptimizationProblem\",\n \"methylation_protection\": \"true\",\n \"allow_edits\": \"true\",\n \"avoid_patterns\": \"BsaI_site nNotI_site nXbaI_site nClaI_site n8x1mer\",\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 \"assembly_plan_name\": \"Type2sRestrictionAssembly\",\n \"topology\": \"circular\",\n \"enzyme\": \"auto\",\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 \"DnaOptimizationProblemClass\": \"DnaOptimizationProblem\",\n \"methylation_protection\": \"true\",\n \"allow_edits\": \"true\",\n \"avoid_patterns\": \"BsaI_site nNotI_site nXbaI_site nClaI_site n8x1mer\",\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 \"assembly_plan_name\": \"Type2sRestrictionAssembly\",\n \"topology\": \"circular\",\n \"enzyme\": \"auto\",\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-17T12:08:33.771569", - "user_email": "planemo@galaxyproject.org", - "user_id": "d952758136b0c83c" - }, - "status": "success", - "test_index": 0, - "time_seconds": 5.093859434127808, - "tool_id": "parameters_maystro_workflow_2", - "tool_version": "0.1.0" - }, - "has_data": true, - "id": "parameters_maystro_workflow_2-0" - }, - { - "data": { - "inputs": { - "DB|user_json": { - "id": "b08444d846605ee4", - "src": "hda" - } - }, - "job": { - "command_line": "cp '/tmp/tmpnxavcgf5/files/b/b/d/dataset_bbd9a440-a787-439e-9b36-2c1c45dae0a3.dat' '/tmp/tmpnxavcgf5/job_working_directory/000/3/outputs/dataset_6eed7c7c-77ce-4d77-b2ef-0a367df7e250.dat' && echo DEBG && cat '/tmp/tmpnxavcgf5/job_working_directory/000/3/outputs/dataset_6eed7c7c-77ce-4d77-b2ef-0a367df7e250.dat'", - "command_version": "", - "copied_from_job_id": null, - "create_time": "2025-07-17T12:08:43.857384", - "dependencies": [], - "exit_code": 0, - "external_id": "135995", - "galaxy_version": "25.0", - "handler": null, - "history_id": "b08444d846605ee4", - "id": "e67c2cbedbcb0da1", - "inputs": { - "DB|user_json": { - "id": "b08444d846605ee4", - "src": "hda", - "uuid": "bbd9a440-a787-439e-9b36-2c1c45dae0a3" - } - }, - "job_messages": [], - "job_metrics": [], - "job_runner_name": null, - "job_stderr": "", - "job_stdout": "", - "model_class": "Job", - "output_collections": {}, - "outputs": { - "output_json": { - "id": "e67c2cbedbcb0da1", - "src": "hda", - "uuid": "6eed7c7c-77ce-4d77-b2ef-0a367df7e250" - } - }, - "params": { - "DB": "{\"annotation_column\": null, \"db_uri\": null, \"execution\": false, \"fragment_column\": null, \"sequence_column\": null, \"table_name\": null, \"user_json\": {\"values\": [{\"id\": 2, \"src\": \"hda\"}]}}", - "DnaOptimizationProblemClass": "\"DnaOptimizationProblem\"", - "__input_ext": "\"input\"", - "allow_edits": "true", - "assembly_plan_name": "\"Type2sRestrictionAssembly\"", - "avoid_patterns": null, - "chromInfo": "\"/tmp/tmpnxavcgf5/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", - "dbkey": "\"?\"", - "enzyme": "\"auto\"", - "gc_constraints": null, - "hairpin_constraints": null, - "kmer_size": "\"\"", - "methylation_protection": "false", - "topology": "\"circular\"" - }, - "state": "ok", - "stderr": "", - "stdout": "DEBG\n{\n \"DnaOptimizationProblemClass\":\"DnaOptimizationProblem\",\n \"avoid_patterns\": \"BsaI_site\\nNotI_site\\nXbaI_site\\nClaI_site\\n8x1mer\",\n \"hairpin_constraints\": \"stem_size=20, hairpin_window=200\\nstem_size=10, hairpin_window=100\",\n \"gc_constraints\": \"mini=0.1, maxi=0.9\\nmini-0.3, maxi=0.7, window=50\",\n \"kmer_size\": \"15\",\n \"methylation_protection\":\"methylation_protection\",\n \"allow_edits\":\"True\",\n \"assembly_plan_name\": \"Type2sRestrictionAssembly\",\n \"topology\": \"circular\",\n \"enzyme\": \"auto\",\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_workflow_2", - "tool_stderr": "", - "tool_stdout": "DEBG\n{\n \"DnaOptimizationProblemClass\":\"DnaOptimizationProblem\",\n \"avoid_patterns\": \"BsaI_site\\nNotI_site\\nXbaI_site\\nClaI_site\\n8x1mer\",\n \"hairpin_constraints\": \"stem_size=20, hairpin_window=200\\nstem_size=10, hairpin_window=100\",\n \"gc_constraints\": \"mini=0.1, maxi=0.9\\nmini-0.3, maxi=0.7, window=50\",\n \"kmer_size\": \"15\",\n \"methylation_protection\":\"methylation_protection\",\n \"allow_edits\":\"True\",\n \"assembly_plan_name\": \"Type2sRestrictionAssembly\",\n \"topology\": \"circular\",\n \"enzyme\": \"auto\",\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-17T12:08:49.096516", - "user_email": "planemo@galaxyproject.org", - "user_id": "d952758136b0c83c" - }, - "status": "success", - "test_index": 1, - "time_seconds": 15.298557996749878, - "tool_id": "parameters_maystro_workflow_2", - "tool_version": "0.1.0" - }, - "has_data": true, - "id": "parameters_maystro_workflow_2-1" - } - ], - "version": "0.1" -} \ No newline at end of file