Mercurial > repos > ieguinoa > ena_upload
diff ena_upload.xml @ 0:5d59238cd3f4 draft
Uploaded
author | ieguinoa |
---|---|
date | Wed, 02 Feb 2022 17:16:15 +0000 |
parents | |
children | 2f7a70c0d3ab |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ena_upload.xml Wed Feb 02 17:16:15 2022 +0000 @@ -0,0 +1,860 @@ +<tool id="ena_upload" name="ENA Upload tool" version="@VERSION@" profile="20.01" license="MIT"> + <macros> + <token name="@VERSION@">0.5.3</token> + <import>samples_macros.xml</import> + </macros> + <requirements> + <requirement type="package" version="@VERSION@">ena-upload-cli</requirement> + </requirements> + <stdio> + <regex match="Oops" source="stderr" level="fatal"/> + <regex match="different file names between command line and RUN table" source="stderr" level="fatal"/> + </stdio> + <command detect_errors="exit_code"><![CDATA[ +mkdir ./submission_files; +#set $studies_table_path = './submission_files/studies.tsv' +#set $samples_table_path = './submission_files/samples.tsv' +#set $experiments_table_path = './submission_files/experiments.tsv' +#set $runs_table_path = './submission_files/runs.tsv' + +#set $studies_table_path_updated = './submission_files/studies_updated.tsv' +#set $samples_table_path_updated = './submission_files/samples_updated.tsv' +#set $experiments_table_path_updated = './submission_files/experiments_updated.tsv' +#set $runs_table_path_updated = './submission_files/runs_updated.tsv' + +#set working_dir = os.getcwd() +#if $action_options.input_format_conditional.input_format == "build_tables": + python '$__tool_directory__/extract_tables.py' --action $action_options.action --out_dir ./submission_files --studies $studies_json; +#end if + + +#if $action_options.input_format_conditional.input_format == "build_tables": + cp $studies_table_path $studies_table_out && + cp $samples_table_path $samples_table_out && + cp $experiments_table_path $experiments_table_out && + cp $runs_table_path $runs_table_out && +#end if +#if $action_options.input_format_conditional.input_format == "user_generated_tables": + ln -s '$action_options.input_format_conditional.experiments_users_table' $experiments_table_path && + ln -s '$action_options.input_format_conditional.studies_users_table' $studies_table_path && + ln -s '$action_options.input_format_conditional.runs_users_table' $runs_table_path && + ln -s '$action_options.input_format_conditional.samples_users_table' $samples_table_path && +#end if +#if $action_options.input_format_conditional.input_format == "excel_tables": + ln -s '$action_options.input_format_conditional.xlsx_file' ./xlsx_input.xlsx && +#end if +#if $action_options.test_submit_parameters.dry_run == "false" and $action_options.test_submit == "False": + webin_id=`grep 'username' $credentials`; + if [ "\$webin_id" = "" ]; then + ## No credentials in user defined preferences + ## Fallback to global defined credentials (if exist) + #import os + #if os.path.isfile(os.environ.get('GALAXY_ENA_SECRETS', '')): + credentials_path=\${GALAXY_ENA_SECRETS}; + webin_id=`grep 'username' \$GALAXY_ENA_SECRETS`; + if [ "\$webin_id" = "" ]; then + echo "No global credentials defined. Check your GALAXY_ENA_SECRETS file or set your credentials via: User -> Preferences -> Manage Information"; + exit 1; + fi; + #else: + echo "No ENA credentials defined. Set your credentials via: User -> Preferences -> Manage Information"; + exit 1; + #end if + else + credentials_path='$credentials'; + fi; +#end if + +#if $action_options.test_submit == "True" or $action_options.test_submit_parameters.dry_run == "true": + credentials_path='test_fake_path'; + #if $action_options.test_submit_parameters.dry_run == "true" and $action_options.input_format_conditional.input_format == "excel_tables": + echo "username: test_user" > \$credentials_path; + echo "password: test_password" >> \$credentials_path; + #end if +#end if + +## create the list of files to upload and make the symlinks +#import re +#set $files_to_upload = list() +#if $action_options.input_format_conditional.input_format == "build_tables": + #for $study in $action_options.input_format_conditional.conditional_viral_metadata.rep_study: + #for $sample in $study.rep_sample: + #for $experiment in $sample.rep_experiment: + #for $run in $experiment.rep_runs: + #for $file in $run.upload_files: + #set $safename_reads_file = re.sub('[^\w\-_\.]', '_', $file.element_identifier) + #if $action_options.input_format_conditional.add_extension == "true": + #set $extension = '.fastq' + #else + #set $extension = '' + #end if + #if $file.is_of_type('fastq', 'fastqsanger'): + ## compression output is defined as safename_reads_file so no need to symlink + #set $safename_reads_file = $safename_reads_file + $extension + '.gz' + gzip -c '$file' > $safename_reads_file && + #else: + #if $action_options.input_format_conditional.add_extension == "true": + #if $file.is_of_type('fastq.gz', 'fastqsanger.gz'): + #set $compression = '.gz' + #elif $file.is_of_type('fastqsanger.bz2', 'fastq.bz2'): + #set $compression = '.bz2' + #end if + #set $safename_reads_file = $safename_reads_file + $extension + $compression + #end if + ln -s '$file' $safename_reads_file && + #end if + $files_to_upload.append(str($safename_reads_file)) + #end for + #end for + #end for + #end for + #end for +#else: + #if $action_options.input_format_conditional.run_input_format_conditional.run_input_format == 'paired_list': + #for $pair in $action_options.input_format_conditional.run_input_format_conditional.paired_end_collection: + #set $safename_reads_file = re.sub('[^\w\-_\.]', '_', $pair.name) + ## Always need to add .fastq + compression suffix because the name is based on the pair name which has no extensions + #if $pair.forward.is_of_type('fastq', 'fastqsanger'): + ## compress the file, no need to create the link then + ## always add the compression suffix (.gz) + #set $safename_fwd_reads_file = $safename_reads_file + '_1' + 'fastq' + '.gz' + gzip -c '$file' > $safename_fwd_reads_file && + #else + #if $pair.forward.is_of_type('fastq.gz', 'fastqsanger.gz'): + #set $compression = '.gz' + #elif $pair.forward.is_of_type('fastqsanger.bz2', 'fastq.bz2'): + #set $compression = '.bz2' + #end if + #set $safename_fwd_reads_file = $safename_reads_file + '_1' + '.fastq' + $compression + ln -s '$pair.forward' $safename_fwd_reads_file && + #end if + + #if $pair.reverse.is_of_type('fastq', 'fastqsanger'): + ## compress the file, no need to create the link then + #set $safename_reverse_reads_file = $safename_reads_file + '_1' + '.fastq' + '.gz' + gzip -c '$file' > $safename_rev_reads_file && + #else + #if $pair.reverse.is_of_type('fastqsanger.bz2', 'fastq.bz2'): + #set $compression = '.bz2' + #elif $pair.reverse.is_of_type('fastqsanger.gz', 'fastq.gz'): + #set $compression = '.gz' + #end if + #set $safename_rev_reads_file = $safename_reads_file + '_2' + '.fastq' + $compression + ln -s '$pair.reverse' $safename_rev_reads_file && + #end if + $files_to_upload.append(str($safename_fwd_reads_file)) + $files_to_upload.append(str($safename_rev_reads_file)) + #end for + #end if + #if $action_options.input_format_conditional.run_input_format_conditional.run_input_format == 'multiple_selection_list': + #for $file in $action_options.input_format_conditional.run_input_format_conditional.data: + #set $safename_reads_file = re.sub('[^\w\-_\.]', '_', $file.element_identifier) + #if $file.is_of_type('fastq', 'fastqsanger'): + ## always compress add the gz extension + #if $action_options.input_format_conditional.run_input_format_conditional.add_extension == "true": + #set $safename_reads_file = $safename_reads_file + '.fastq.gz' + #else + #set $safename_reads_file = $safename_reads_file + '.gz' + #end if + gzip -c '$file' > $safename_reads_file && + #else + #if $action_options.input_format_conditional.run_input_format_conditional.add_extension == "true": + #if $file.is_of_type('fastq.gz', 'fastqsanger.gz'): + #set $extension = '.fastq.gz' + #elif $file.is_of_type('fastqsanger.bz2', 'fastq.bz2'): + #set $extension = '.fastq.bz2' + #end if + #set $safename_reads_file = $safename_reads_file + $extension + #end if + ln -s '$file' $safename_reads_file && + #end if + $files_to_upload.append(str($safename_reads_file)) + #end for + #end if +#end if + + +#if $action_options.test_submit_parameters.dry_run == "false" or $action_options.input_format_conditional.input_format == "excel_tables": +#if $action_options.action == "add": +ena-upload-cli + --tool 'ena-upload-cli v@VERSION@ @ Galaxy' + --action '$action_options.action' + --center '$action_options.center' + --secret \${credentials_path} + --data + #for $dataset in $files_to_upload: + '$dataset' + #end for +#if $action_options.test_submit_parameters.dry_run == "true": + --draft +#end if +#if $action_options.input_format_conditional.input_format != "excel_tables": + --experiment '$experiments_table_path' + --study '$studies_table_path' + --run '$runs_table_path' + --sample '$samples_table_path' +#else + --xlsx ./xlsx_input.xlsx +#end if +--action add +#if $action_options.input_format_conditional.input_format == "user_generated_tables": + --checklist $action_options.input_format_conditional.checklist_id +#else: + #if $action_options.input_format_conditional.input_format == "build_tables": + #if $action_options.input_format_conditional.conditional_viral_metadata.viral_sample == "true": + --checklist ERC000033 + #end if + #else: + --checklist $action_options.input_format_conditional.checklist_id + #end if +#end if + +#if $action_options.test_submit_parameters.submit_dev == "true": + -d +#end if + >> '$output'; +#end if + +#if $action_options.action == "modify": + ena-upload-cli + --tool 'ena-upload-cli v@VERSION@ @ Galaxy' + --action '$action_options.action' + --center '$action_options.center' + --secret \${credentials_path} + --data + #for $dataset in $files_to_upload: + '$dataset' + #end for +#if $action_options.test_submit_parameters.dry_run == "true": + --draft +#end if +#if $action_options.input_format_conditional.input_format != "excel_tables": + --experiment '$experiments_table_path' + --study '$studies_table_path' + --run '$runs_table_path' + --sample '$samples_table_path' +#else + --xlsx ./xlsx_input.xlsx + --auto_action +#end if +--action 'modify' +#if $action_options.input_format_conditional.input_format == "user_generated_tables": + --checklist $action_options.input_format_conditional.checklist_id +#else: + #if $action_options.input_format_conditional.input_format == "build_tables": + #if $action_options.input_format_conditional.conditional_viral_metadata.viral_sample == "true": + --checklist ERC000033 + #end if + #else: + --checklist $action_options.input_format_conditional.checklist_id + #end if +#end if + >> '$output'; +#end if + #if $action_options.test_submit_parameters.dry_run == "false": + echo -e 'center_name\t$action_options.center' >> '$output'; + echo -e 'action_option\t$action_options.action' >> '$output'; + #if $action_options.input_format_conditional.input_format == "build_tables": + cp $studies_table_path_updated $studies_table_out 2>/dev/null; + cp $samples_table_path_updated $samples_table_out 2>/dev/null; + cp $experiments_table_path_updated $experiments_table_out 2>/dev/null; + cp $runs_table_path_updated $runs_table_out 2>/dev/null; + #end if + #else + ## for the excel input case, copy the upload-cli generated tables to the output files + ## this applies for both draft and real submissions + cp './ENA_template_experiment_updated.tsv' $experiments_table_out; + cp './ENA_template_sample_updated.tsv' $samples_table_out; + cp './ENA_template_study_updated.tsv' $studies_table_out; + cp './ENA_template_run_updated.tsv' $runs_table_out; + #end if +#else: + exit 0; +#end if + +]]></command> + <configfiles> + <configfile name="credentials"><![CDATA[ +#set $webin_id = $__user__.extra_preferences.get('ena_webin_account|webin_id', "").strip() +#set $password = $__user__.extra_preferences.get('ena_webin_account|password', "").strip() +#if $webin_id != "": + username: "$webin_id" + password: "$password" +#end if + ]]></configfile> + <configfile name="studies_json"> +#import json +#import re +#if $action_options.input_format_conditional.input_format == "build_tables": + #set $files_to_upload = list() + #set $studies = list() + #for $study in $action_options.input_format_conditional.conditional_viral_metadata.rep_study: + #set samples = list() + #for $sample in $study.rep_sample: + #set experiments = list() + #for $experiment in $sample.rep_experiment: + #set runs = list() + #for $run in $experiment.rep_runs: + #set run_files = list() + #for $file in $run.upload_files: + #set $safename_reads_file = re.sub('[^\w\-_\.]', '_', $file.element_identifier) + $run_files.append(str($safename_reads_file)) + #end for + $runs.append((str($run.run_base_name),$run_files)) + #end for + +$experiments.append({'title':str($experiment.experiment_title),'experiment_design':str($experiment.experiment_design),'library_strategy':str($experiment.library_strategy),'library_source':str($experiment.library_source),'library_selection':str($experiment.library_selection),'library_layout':str($experiment.library_layout),'insert_size':str($experiment.insert_size),'library_construction_protocol':str($experiment.library_construction_protocol),'platform':str($experiment.platform),'instrument_model':str($experiment.instrument_model),'runs':$runs}) + #end for + #if $action_options.input_format_conditional.conditional_viral_metadata.viral_sample == "true": + +$samples.append({'title':str($sample.sample_title),'description':str($sample.sample_description),'tax_name':str($sample.scientific_name),'tax_id':str($sample.tax_id),'collection_date':str($sample.collection_date),'geo_location':str($sample.geo_location_country),'host_common_name':str($sample.host_common_name),'host_subject_id':str($sample.host_subject_id),'host_health_state':str($sample.host_health_state),'host_sex':str($sample.host_sex),'host_scientific_name':str($sample.host_scientific_name),'collector_name':str($sample.collector_name),'collecting_institution':str($sample.collecting_institution),'isolate':str($sample.isolate),'experiments':$experiments}) + #else: + +$samples.append({'title':str($sample.sample_title),'description':str($sample.sample_description),'tax_name':str($sample.scientific_name),'tax_id':str($sample.tax_id),'experiments':$experiments}) + #end if + #end for + $studies.append({'title':str($study.study_title),'type':str($study.study_type),'abstract':str($study.study_abstract),'pubmed_id':str($study.study_pubmed_id),'samples':$samples}) + #end for + #echo $json.dumps($studies) +#end if + </configfile> + </configfiles> + <inputs> + <conditional name="action_options"> + <param name="action" type="select" label="Action to execute"> + <option value="add" selected="True">Add new data</option> + <option value="modify">Modify metadata</option> + </param> + <when value="add"> + <expand macro="test_submit_section"/> + <param name="test_submit" type="hidden" value="False" /> + <expand macro="table_inputs_macro" /> + </when> + <when value="modify"> + <expand macro="test_submit_section"/> + <param name="test_submit" type="hidden" value="False" /> + <expand macro="table_inputs_macro" /> + </when> + </conditional> + </inputs> + <outputs> + <data name="output" format="txt" label="ENA submission receipt"/> + <data name="studies_table_out" format="tabular" label="Studies table"> + <filter> action_options['input_format_conditional']['input_format'] == "build_tables" or action_options['input_format_conditional']['input_format'] == "excel_tables"</filter> + </data> + <data name="samples_table_out" format="tabular" label="Samples table"> + <filter> action_options['input_format_conditional']['input_format'] == "build_tables" or action_options['input_format_conditional']['input_format'] == "excel_tables"</filter> + </data> + <data name="experiments_table_out" format="tabular" label="Experiments table"> + <filter> action_options['input_format_conditional']['input_format'] == "build_tables" or action_options['input_format_conditional']['input_format'] == "excel_tables"</filter> + </data> + <data name="runs_table_out" format="tabular" label="Runs table"> + <filter> action_options['input_format_conditional']['input_format'] == "build_tables" or action_options['input_format_conditional']['input_format'] == "excel_tables"</filter> + </data> + </outputs> + <tests> + <!--Test 1: excel input of VIRAL samples --> + <test> + <conditional name="action_options"> + <param name="action" value="add"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="false" /> + <param name="dry_run" value="true" /> + </section> + <conditional name="input_format_conditional"> + <param name="input_format" value="excel_tables"/> + <param name="checklist_id" value="ERC000033"/> + <param name="xlsx_file" value="metadata_test_viral.xlsx"/> + <conditional name="run_input_format_conditional"> + <param name="add_extension" value="false"/> + <param name="run_input_format" value="multiple_selection_list"/> + <param name="data" value="C030_exp5_clean.fastq,C053_exp5_clean.fastq,C026_exp5_clean.fastq,C067_exp5_clean.fastq"/> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <output name="experiments_table_out"> + <assert_contents> + <has_n_lines n="5"/> + <has_n_columns n="17"/> + <has_line_matching expression="alias\ttitle\tstudy_alias\tsample_alias\tdesign_description\tlibrary_name\tlibrary_strategy\tlibrary_source\tlibrary_selection\tlibrary_layout\tinsert_size\tlibrary_construction_protocol\tplatform\tinstrument_model\taccession\tsubmission_date\tstatus"/> + <has_line_matching expression="e_(.*)_026\tNanopore sequencing\tSARS-CoV-2_genomes_01\ts_(.*)"/> + </assert_contents> + </output> + <output name="studies_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="7"/> + <has_line_matching expression="SARS-CoV-2_genomes_01\tWhole-genome sequencing of SARS-CoV-2 from Covid-19 patients\tWhole Genome Sequencing\tWhole-genome sequences of SARS-CoV-2 from oro-pharyngeal swabs obtained from Covid-19 patients(.*)"/> + </assert_contents> + </output> + <output name="samples_table_out"> + <assert_contents> + <has_n_lines n="5"/> + <has_n_columns n="18"/> + </assert_contents> + </output> + <output name="runs_table_out"> + <assert_contents> + <has_n_lines n="5"/> + <has_n_columns n="8"/> + <has_line_matching expression="alias\texperiment_alias\tfile_name\tfile_format\taccession\tsubmission_date\tstatus\tfile_checksum"/> + <has_line_matching expression="r_20201007_026\te_20201007_026\tC026_exp5_clean.fastq.gz\tFASTQ(.*)"/> + </assert_contents> + </output> + </test> + <!--Test 2: excel input of VIRAL samples with extended columns--> + <test> + <conditional name="action_options"> + <param name="action" value="add"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="false" /> + <param name="dry_run" value="true" /> + </section> + <conditional name="input_format_conditional"> + <param name="input_format" value="excel_tables"/> + <param name="checklist_id" value="ERC000033"/> + <param name="xlsx_file" value="metadata_test_viral_optional_columns.xlsx"/> + <conditional name="run_input_format_conditional"> + <param name="add_extension" value="false"/> + <param name="run_input_format" value="multiple_selection_list"/> + <param name="data" value="C030_exp5_clean.fastq,C053_exp5_clean.fastq,C026_exp5_clean.fastq,C067_exp5_clean.fastq"/> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <output name="experiments_table_out"> + <assert_contents> + <has_n_lines n="5"/> + <has_n_columns n="17"/> + <has_line_matching expression="alias\ttitle\tstudy_alias\tsample_alias\tdesign_description\tlibrary_name\tlibrary_strategy\tlibrary_source\tlibrary_selection\tlibrary_layout\tinsert_size\tlibrary_construction_protocol\tplatform\tinstrument_model\taccession\tsubmission_date\tstatus"/> + <has_line_matching expression="e_(.*)_026\tNanopore sequencing\tSARS-CoV-2_genomes_01\ts_(.*)"/> + </assert_contents> + </output> + <output name="studies_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="7"/> + <has_line_matching expression="alias\ttitle\tstudy_type\tstudy_abstract\taccession\tsubmission_date\tstatus"/> + <has_line_matching expression="SARS-CoV-2_genomes_01\tWhole-genome sequencing of SARS-CoV-2 from Covid-19 patients\tWhole Genome Sequencing\tWhole-genome sequences of SARS-CoV-2 from oro-pharyngeal swabs obtained from Covid-19 patients(.*)"/> + </assert_contents> + </output> + <output name="samples_table_out"> + <assert_contents> + <has_n_lines n="5"/> + <has_n_columns n="43"/> + </assert_contents> + </output> + <output name="runs_table_out"> + <assert_contents> + <has_n_lines n="5"/> + <has_n_columns n="8"/> + <has_line_matching expression="alias\texperiment_alias\tfile_name\tfile_format\taccession\tsubmission_date\tstatus\tfile_checksum"/> + <has_line_matching expression="r_20201007_026\te_20201007_026\tC026_exp5_clean.fastq.gz\tFASTQ(.*)"/> + </assert_contents> + </output> + </test> + <!--Test 3: excel input of NON-VIRAL samples--> + <test> + <conditional name="action_options"> + <param name="action" value="add"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="false" /> + <param name="dry_run" value="true" /> + </section> + <conditional name="input_format_conditional"> + <param name="input_format" value="excel_tables"/> + <param name="checklist_id" value="ERC000011"/> + <param name="xlsx_file" value="metadata_test_nonviral_1_run.xlsx"/> + <conditional name="run_input_format_conditional"> + <param name="add_extension" value="true"/> + <param name="run_input_format" value="multiple_selection_list"/> + <param name="data" value="sample_no_extension"/> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <output name="experiments_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="17"/> + <has_line_matching expression="alias\ttitle\tstudy_alias\tsample_alias\tdesign_description\tlibrary_name\tlibrary_strategy\tlibrary_source\tlibrary_selection\tlibrary_layout\tinsert_size\tlibrary_construction_protocol\tplatform\tinstrument_model\taccession\tsubmission_date\tstatus"/> + </assert_contents> + </output> + <output name="studies_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="7"/> + <has_line_matching expression="alias\ttitle\tstudy_type\tstudy_abstract\taccession\tsubmission_date\tstatus"/> + </assert_contents> + </output> + <output name="samples_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="8"/> + <has_line_matching expression="alias\ttitle\tscientific_name\tsample_description\taccession\tsubmission_date\tstatus\ttaxon_id"/> + </assert_contents> + </output> + <output name="runs_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="8"/> + <has_line_matching expression="alias\texperiment_alias\tfile_name\tfile_format\taccession\tsubmission_date\tstatus\tfile_checksum"/> + <has_line_matching expression="r_20201007_026\te_20201007_026\tsample_no_extension.fastq.gz\tFASTQ(.*)"/> + </assert_contents> + </output> + </test> + <!--Test 4: failure on excel input of NON-VIRAL samples with runs PAIRED collection --> + <test expect_failure="true"> + <conditional name="action_options"> + <param name="action" value="add"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="false" /> + <param name="dry_run" value="false" /> + </section> + <conditional name="input_format_conditional"> + <param name="add_extension" value="true"/> + <param name="input_format" value="excel_tables"/> + <param name="checklist_id" value="ERC000011"/> + <param name="xlsx_file" value="metadata_test_nonviral.xlsx"/> + <conditional name="run_input_format_conditional"> + <param name="run_input_format" value="paired_list"/> + <param name="paired_end_collection"> + <collection type="list:paired"> + <element name="paired_run_name"> + <collection type="paired"> + <element name="forward" value="1.fastqsanger.gz" ftype="fastqsanger.gz" /> + <element name="reverse" value="2.fastqsanger.gz" ftype="fastqsanger.gz" /> + </collection> + </element> + </collection> + </param> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <assert_command> + <has_text_matching expression="ena-upload-cli"/> + <has_text_matching expression="--data 'paired_run_name_1.fastq.gz' 'paired_run_name_2.fastq.gz'"/> + <has_text_matching expression="--action 'add' --center 'Some research center'"/> + </assert_command> + </test> + <!--Test 5: build tables from user input fields NON-VIRAL samples--> + <test> + <conditional name="action_options"> + <param name="action" value="add"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="false" /> + <param name="dry_run" value="true" /> + </section> + <conditional name="input_format_conditional"> + <param name="input_format" value="build_tables"/> + <param name="add_extension" value="true"/> + <conditional name="conditional_viral_metadata"> + <param name="viral_sample" value="False"/> + <repeat name="rep_study"> + <param name="study_title" value="Test study title"/> + <param name="study_abstract" value="Test study abstract"/> + <param name="study_type" value="Epigenetics"/> + <param name="study_pubmed_id" value="Test study pubmedID"/> + <repeat name="rep_sample"> + <param name="sample_title" value="Test Sample title"/> + <param name="sample_description" value="Test Sample description"/> + <param name="scientific_name" value="Test Sample scientific name"/> + <param name="tax_id" value="Test Sample tax_id"/> + <repeat name="rep_experiment"> + <param name="experiment_title" value="Test experiment title"/> + <param name="experiment_design" value="Test experiment design description"/> + <param name="library_strategy" value="CTS"/> + <param name="library_source" value="GENOMIC"/> + <param name="library_selection" value="PCR"/> + <param name="library_layout" value="SINGLE"/> + <param name="insert_size" value="150"/> + <param name="library_construction_protocol" value="Test library construction"/> + <param name="platform" value="ILLUMINA"/> + <param name="instrument_model" value="Illumina HiSeq 4000"/> + <repeat name="rep_runs"> + <param name="upload_files" value="1.fastqsanger.gz,sample.fq" ftype="fastqsanger"/> + </repeat> + </repeat> + </repeat> + </repeat> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <output name="experiments_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="17"/> + </assert_contents> + </output> + <output name="studies_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="8"/> + <has_line_matching expression="alias\tstatus\taccession\ttitle\tstudy_type\tstudy_abstract\tpubmed_id\tsubmission_date"/> + </assert_contents> + </output> + <output name="samples_table_out"> + <assert_contents> + <has_n_lines n="2"/> + <has_n_columns n="8"/> + </assert_contents> + </output> + <output name="runs_table_out"> + <assert_contents> + <has_n_lines n="3"/> + <has_n_columns n="8"/> + <has_line_matching expression="alias\tstatus\taccession\texperiment_alias\tfile_name\tfile_format\tfile_checksum\tsubmission_date"/> + </assert_contents> + </output> + </test> + <!--Test 6: RUN failing build tables from user input fields NON-VIRAL samples--> + <test expect_failure="true"> + <conditional name="action_options"> + <param name="action" value="add"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="true" /> + <param name="dry_run" value="false" /> + </section> + <conditional name="input_format_conditional"> + <param name="input_format" value="build_tables"/> + <param name="add_extension" value="true"/> + <conditional name="conditional_viral_metadata"> + <param name="viral_sample" value="false"/> + <repeat name="rep_study"> + <param name="study_title" value="Test study title"/> + <param name="study_abstract" value="Test study abstract"/> + <param name="study_type" value="Epigenetics"/> + <param name="study_pubmed_id" value="Test study pubmedID"/> + <repeat name="rep_sample"> + <param name="sample_title" value="Test Sample title"/> + <param name="sample_description" value="Test Sample description"/> + <param name="scientific_name" value="Test Sample scientific name"/> + <param name="tax_id" value="Test Sample tax_id"/> + <repeat name="rep_experiment"> + <param name="experiment_title" value="Test experiment title"/> + <param name="experiment_design" value="Test experiment design description"/> + <param name="library_strategy" value="CTS"/> + <param name="library_source" value="GENOMIC"/> + <param name="library_selection" value="PCR"/> + <param name="library_layout" value="SINGLE"/> + <param name="insert_size" value="150"/> + <param name="library_construction_protocol" value="Test library construction"/> + <param name="platform" value="ILLUMINA"/> + <param name="instrument_model" value="Illumina HiSeq 4000"/> + <repeat name="rep_runs"> + <param name="upload_files" value="1.fastqsanger.gz,sample.fq" ftype="fastqsanger"/> + </repeat> + </repeat> + </repeat> + </repeat> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <assert_stdout> + <has_text_matching expression="No ENA credentials defined"/> + </assert_stdout> + </test> + <!--Test 7: with submit_test to skip credentials checksRUN failing build tables from user input fields NON-VIRAL samples + also tests compression of uncompressed inputs and adding the .gz suffix --> + <test expect_failure="true"> + <conditional name="action_options"> + <param name="action" value="add"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="true" /> + <param name="dry_run" value="false" /> + </section> + <param name="test_submit" value="True"/> + <conditional name="input_format_conditional"> + <param name="add_extension" value="true"/> + <param name="input_format" value="build_tables"/> + <conditional name="conditional_viral_metadata"> + <param name="viral_sample" value="false"/> + <repeat name="rep_study"> + <param name="study_title" value="Test study title"/> + <param name="study_abstract" value="Test study abstract"/> + <param name="study_type" value="Epigenetics"/> + <param name="study_pubmed_id" value="Test study pubmedID"/> + <repeat name="rep_sample"> + <param name="sample_title" value="Test Sample title"/> + <param name="sample_description" value="Test Sample description"/> + <param name="scientific_name" value="Test Sample scientific name"/> + <param name="tax_id" value="Test Sample tax_id"/> + <repeat name="rep_experiment"> + <param name="experiment_title" value="Test experiment title"/> + <param name="experiment_design" value="Test experiment design description"/> + <param name="library_strategy" value="CTS"/> + <param name="library_source" value="GENOMIC"/> + <param name="library_selection" value="PCR"/> + <param name="library_layout" value="SINGLE"/> + <param name="insert_size" value="150"/> + <param name="library_construction_protocol" value="Test library construction"/> + <param name="platform" value="ILLUMINA"/> + <param name="instrument_model" value="Illumina HiSeq 4000"/> + <repeat name="rep_runs"> + <param name="run_base_name" value="run_from_hospital_X"/> + <param name="upload_files" value="sample.fq,sample.fq" ftype="fastqsanger"/> + </repeat> + </repeat> + </repeat> + </repeat> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <assert_command> + <has_text_matching expression="ena-upload-cli"/> + <has_text_matching expression="--data 'sample.fq.fastq.gz' 'sample.fq.fastq.gz'"/> + <has_text_matching expression="--action 'add' --center 'Some research center'"/> + <not_has_text text="modify" /> + </assert_command> + <assert_stderr> + <has_text_matching expression="Oops, the file test_fake_path does not exist"/> + </assert_stderr> + </test> + <!--Test 8: viral submission - User input metadata - Add extension = False--> + <test expect_failure="true"> + <conditional name="action_options"> + <param name="action" value="add"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="false" /> + <param name="dry_run" value="false" /> + </section> + <param name="test_submit" value="True"/> + <conditional name="input_format_conditional"> + <param name="add_extension" value="False"/> + <param name="input_format" value="build_tables"/> + <conditional name="conditional_viral_metadata"> + <param name="viral_sample" value="true"/> + <repeat name="rep_study"> + <param name="study_title" value="Test study title"/> + <param name="study_abstract" value="Test study abstract"/> + <param name="study_type" value="Epigenetics"/> + <param name="study_pubmed_id" value="Test study pubmedID"/> + <repeat name="rep_sample"> + <param name="sample_title" value="Test Sample title"/> + <param name="sample_description" value="Test Sample description"/> + <param name="scientific_name" value="Test Sample scientific name"/> + <param name="tax_id" value="Test Sample tax_id"/> + <param name="collection_date" value="2020"/> + <param name="geo_location_country" value="Belgium"/> + <param name="host_common_name" value="Human"/> + <param name="host_subject_id" value="Patient_001"/> + <param name="host_health_state" value="healthy"/> + <param name="host_sex" value="female"/> + <param name="host_scientific_name" value="homo sapiens"/> + <param name="collector_name" value="John The Collector"/> + <param name="collecting_institution" value="Hospital 01"/> + <param name="isolate" value="sample_001"/> + <repeat name="rep_experiment"> + <param name="experiment_title" value="Test experiment title"/> + <param name="experiment_design" value="Test experiment design description"/> + <param name="library_strategy" value="CTS"/> + <param name="library_source" value="GENOMIC"/> + <param name="library_selection" value="PCR"/> + <param name="library_layout" value="SINGLE"/> + <param name="insert_size" value="150"/> + <param name="library_construction_protocol" value="Test library construction"/> + <param name="platform" value="ILLUMINA"/> + <param name="instrument_model" value="Illumina HiSeq 4000"/> + <repeat name="rep_runs"> + <param name="run_base_name" value="run_from_hospital_X"/> + <param name="upload_files" value="1.fastqsanger.gz,2.fastqsanger.gz" ftype="fastqsanger.gz"/> + </repeat> + </repeat> + </repeat> + </repeat> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <assert_command> + <has_text_matching expression="ena-upload-cli"/> + <has_text_matching expression="--data '1.fastqsanger.gz' '2.fastqsanger.gz'"/> + <has_text_matching expression="--action 'add' --center 'Some research center'"/> + <has_text_matching expression="--checklist ERC000033"/> + </assert_command> + <assert_stderr> + <has_text_matching expression="Oops, the file test_fake_path does not exist"/> + </assert_stderr> + </test> + <!--Test 9: modify option and auto compression - viral submission - User input metadata--> + <test expect_failure="true"> + <conditional name="action_options"> + <param name="action" value="modify"/> + <section name="test_submit_parameters"> + <param name="submit_dev" value="false" /> + <param name="dry_run" value="false" /> + </section> + <param name="test_submit" value="True"/> + <conditional name="input_format_conditional"> + <param name="add_extension" value="False"/> + <param name="input_format" value="build_tables"/> + <conditional name="conditional_viral_metadata"> + <param name="viral_sample" value="True"/> + <repeat name="rep_study"> + <param name="study_title" value="Test study title"/> + <param name="study_abstract" value="Test study abstract"/> + <param name="study_type" value="Epigenetics"/> + <param name="study_pubmed_id" value="Test study pubmedID"/> + <repeat name="rep_sample"> + <param name="sample_title" value="Test Sample title"/> + <param name="sample_description" value="Test Sample description"/> + <param name="scientific_name" value="Test Sample scientific name"/> + <param name="tax_id" value="Test Sample tax_id"/> + <param name="collection_date" value="2020"/> + <param name="geo_location_country" value="Belgium"/> + <param name="host_common_name" value="Human"/> + <param name="host_subject_id" value="Patient_001"/> + <param name="host_health_state" value="healthy"/> + <param name="host_sex" value="female"/> + <param name="host_scientific_name" value="homo sapiens"/> + <param name="collector_name" value="John The Collector"/> + <param name="collecting_institution" value="Hospital 01"/> + <param name="isolate" value="sample_001"/> + <repeat name="rep_experiment"> + <param name="experiment_title" value="Test experiment title"/> + <param name="experiment_design" value="Test experiment design description"/> + <param name="library_strategy" value="CTS"/> + <param name="library_source" value="GENOMIC"/> + <param name="library_selection" value="PCR"/> + <param name="library_layout" value="SINGLE"/> + <param name="insert_size" value="150"/> + <param name="library_construction_protocol" value="Test library construction"/> + <param name="platform" value="ILLUMINA"/> + <param name="instrument_model" value="Illumina HiSeq 4000"/> + <repeat name="rep_runs"> + <param name="run_base_name" value="run_from_hospital_X"/> + <param name="upload_files" value="sample.fq" ftype="fastqsanger"/> + </repeat> + </repeat> + </repeat> + </repeat> + </conditional> + </conditional> + </conditional> + <param name="center" value="Some research center"/> + <assert_command> + <has_text_matching expression="ena-upload-cli"/> + <has_text_matching expression="--data 'sample.fq.gz'"/> + <has_text_matching expression="--action 'modify' --center 'Some research center'"/> + <has_text_matching expression="--checklist ERC000033"/> + <not_has_text text="add" /> + </assert_command> + <assert_stderr> + <has_text_matching expression="Oops, the file test_fake_path does not exist"/> + </assert_stderr> + </test> + </tests> + <help><![CDATA[ + This is a wrapper for the ENA upload tool in https://github.com/usegalaxy-eu/ena-upload-cli + The input metadata can be submitted following the tabular format of the templates in https://github.com/usegalaxy-eu/ena-upload-cli/tree/master/example_tables + It is also possible to submit an excel file by following the template in https://drive.google.com/file/d/1ncC22--tW2v-EI-te_r86sAZujIPAjlX/view?usp=sharing + For viral submissions a larger set of metadata is required, you can find the template in https://drive.google.com/file/d/1Gx78GKh58PmRjdmJ05DBbpObAL-3oUFX/view?usp=sharing + ]]></help> + <citations> + </citations> +</tool>