Mercurial > repos > iuc > kraken2
changeset 6:e452fed07fbb draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tool_collections/kraken2/kraken2 commit 39ebbc539c35a194c97c93497849b6136bbc7a8c
| author | iuc |
|---|---|
| date | Sun, 07 Dec 2025 11:30:46 +0000 |
| parents | 9c5599b8c9a0 |
| children | |
| files | kraken2.xml macros.xml test-data/cl_test2_output_1.fastq test-data/kraken_test1_cl.fas test-data/kraken_test1_un.fas test-data/kraken_test2_R1.fastq.gz test-data/kraken_test2_R2.fastq.gz test-data/un_test2_output_1.fastq test-data/un_test2_output_2.fastq |
| diffstat | 8 files changed, 108 insertions(+), 101 deletions(-) [+] |
line wrap: on
line diff
--- a/kraken2.xml Mon May 26 08:00:31 2025 +0000 +++ b/kraken2.xml Sun Dec 07 11:30:46 2025 +0000 @@ -1,5 +1,4 @@ -<?xml version="1.0"?> -<tool id="kraken2" name="Kraken2" version="@TOOL_VERSION@+galaxy1"> +<tool id="kraken2" name="Kraken2" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> <description> assign taxonomic labels to sequencing reads </description> @@ -15,35 +14,13 @@ <version_command>kraken2 --version</version_command> <command detect_errors="exit_code"> <![CDATA[ - - #def get_type($data) - #if $data.is_of_type('fastq'): - #return 'fastq' - #elif $data.is_of_type('fasta'): - #return 'fasta' - #elif $data.is_of_type('fastqsanger'): - #return 'fastqsanger' - #elif $data.is_of_type('fasta.gz'): - #return 'fasta.gz' - #elif $data.is_of_type('fasta.bz2'): - #return 'fasta.bz2' - #elif $data.is_of_type('fastq.gz'): - #return 'fastq.gz' - #elif $data.is_of_type('fastq.bz2'): - #return 'fastq.bz2' - #end if - #end def - kraken2 --threads \${GALAXY_SLOTS:-1} --db '${kraken2_database.fields.path}' $quick - #if $single_paired.single_paired_selector == "yes" - --paired - '${single_paired.forward_input}' '${single_paired.reverse_input}' - #elif $single_paired.single_paired_selector == "collection": + #if $single_paired.single_paired_selector == "collection": --paired '${single_paired.input_pair.forward}' '${single_paired.input_pair.reverse}' #else: @@ -52,13 +29,11 @@ #if $split_reads: #if $single_paired.single_paired_selector == "no": - --classified-out '${classified_out_s}' --unclassified-out '${unclassified_out_s}' - #elif $single_paired.single_paired_selector == "yes": - #set $result = $get_type($single_paired.forward_input) - --unclassified-out 'un_out#.${result}' --classified-out 'cl_out#.${result}' + --unclassified-out 'un_out' + --classified-out 'cl_out' #else: - #set $result = $get_type($single_paired.input_pair.forward) - --unclassified-out 'un_out#.${result}' --classified-out 'cl_out#.${result}' + --unclassified-out 'un_out#' + --classified-out 'cl_out#' #end if #end if @@ -68,7 +43,7 @@ $use_names - #if $report.create_report: + #if $report.create_report == "true": --report '${report_output}' $report.use_mpa_style $report.report_zero_counts @@ -76,21 +51,42 @@ #end if > '${output}' + + #if $split_reads: + #if $single_paired.single_paired_selector == "no": + #if $single_paired.input_sequences.ext.endswith(".gz") + #set command = "gzip -c" + #elif $single_paired.input_sequences.ext.endswith(".bz2") + #set command = "bzip2 -c" + #else + #set command = "cat" + #end if + && $command un_out > '$unclassified_out_s' + && $command cl_out > '$classified_out_s' + #else: + #if $single_paired.input_pair.forward.ext.endswith(".gz") + #set command = "gzip -c" + #elif $single_paired.input_pair.forward.ext.endswith(".bz2") + #set command = "bzip2 -c" + #else + #set command = "cat" + #end if + && $command un_out_1 > '$out_unclassified_paired.forward' + && $command un_out_2 > '$out_unclassified_paired.reverse' + && $command cl_out_1 > '$out_classified_paired.forward' + && $command cl_out_1 > '$out_classified_paired.forward' + #end if + #end if ]]></command> <inputs> <conditional name="single_paired"> <param name="single_paired_selector" type="select" label="Single or paired reads" help="--paired"> - <option value="collection">Paired Collection</option> - <option value="yes">Paired</option> + <option value="collection">Paired</option> <option selected="True" value="no">Single</option> </param> <when value="collection"> <param format="@INTYPES@" name="input_pair" type="data_collection" collection_type="paired" label="Collection of paired reads"/> </when> - <when value="yes"> - <param format="@INTYPES@" name="forward_input" type="data" label="Forward strand"/> - <param format="@INTYPES@" name="reverse_input" type="data" label="Reverse strand"/> - </when> <when value="no"> <param format="@INTYPES@" label="Input sequences" name="input_sequences" type="data"/> </when> @@ -101,49 +97,35 @@ <param argument="--minimum-hit-groups" type="integer" label="Minimum hit groups" value="2" help="Number of overlapping k-mers sharing the same minimizer needed to make a call" /> <param argument="--quick" type="boolean" truevalue="--quick" falsevalue="" label="Enable quick operation" help="Quick operation (use first hit)"/> <param name="split_reads" type="boolean" label="Split classified and unclassified outputs?" help="Sets --unclassified-out and --classified-out"/> - - <section name="report" title="Create Report" expanded="false"> - <param name="create_report" type="boolean" label="Print a report with aggregrate counts/clade to file" help="--report" /> - <param argument="--use-mpa-style" type="boolean" truevalue="--use-mpa-style" falsevalue="" label="Format report output like Kraken 1's kraken-mpa-report" /> - <param argument="--report-zero-counts" type="boolean" truevalue="--report-zero-counts" falsevalue="" label="Report counts for ALL taxa, even if counts are zero" /> - <param argument="--report-minimizer-data" type="boolean" truevalue="--report-minimizer-data" falsevalue="" label="Report minimizer data" help="Report minimizer and distinct minimizer count information in addition to normal Kraken report" /> - </section> - + <conditional name="report"> + <param argument="--report" name="create_report" type="select" label="Print a report with aggregrate counts/clade to file" help="Can be used as input for bracken"> + <option value="true">Yes</option> + <option value="false" selected="true">No</option> + </param> + <when value="true"> + <param argument="--use-mpa-style" type="boolean" truevalue="--use-mpa-style" falsevalue="" label="Format report output like Kraken 1's kraken-mpa-report" /> + <param argument="--report-zero-counts" type="boolean" truevalue="--report-zero-counts" falsevalue="" label="Report counts for ALL taxa, even if counts are zero" /> + <param argument="--report-minimizer-data" type="boolean" truevalue="--report-minimizer-data" falsevalue="" label="Report minimizer data" help="Report minimizer and distinct minimizer count information in addition to normal Kraken report" /> + </when> + <when value="false"/> + </conditional> <expand macro="input_database"/> </inputs> <outputs> <data name="classified_out_s" format_source="input_sequences" label="${tool.name} on ${on_string}: Classified reads"> - <filter>(split_reads and ('no' in single_paired['single_paired_selector']))</filter> + <filter>split_reads and single_paired['single_paired_selector'] == "no"</filter> </data> <data name="unclassified_out_s" format_source="input_sequences" label="${tool.name} on ${on_string}: Unclassified reads"> - <filter>(split_reads and ('no' in single_paired['single_paired_selector']))</filter> + <filter>split_reads and single_paired['single_paired_selector'] == "no"</filter> </data> <data name="report_output" format="tabular" label="${tool.name} on ${on_string}: Report"> - <filter>(report['create_report'])</filter> - </data> - - <data name="out1" format_source="forward_input" label="${tool.name} on ${on_string}: Unclassified forward reads" from_work_dir="un_out_1.*"> - <filter>(split_reads and ("yes" in single_paired['single_paired_selector']))</filter> - </data> - <data name="out2" format_source="forward_input" label="${tool.name} on ${on_string}: Unclassified reverse reads" from_work_dir="un_out_2.*"> - <filter>(split_reads and ("yes" in single_paired['single_paired_selector']))</filter> + <filter>report['create_report'] == "true"</filter> </data> - <data name="out3" format_source="forward_input" label="${tool.name} on ${on_string}: Classified forward reads" from_work_dir="cl_out_1.*"> - <filter>(split_reads and ("yes" in single_paired['single_paired_selector']))</filter> - </data> - <data name="out4" format_source="forward_input" label="${tool.name} on ${on_string}: Classified reverse reads" from_work_dir="cl_out_2.*"> - <filter>(split_reads and ("yes" in single_paired['single_paired_selector']))</filter> - </data> - <collection name="out_unclassified_paired" type="paired" format_source="input_pair" label="${tool.name} on ${on_string}: Unclassified read pairs"> - <data name="forward" from_work_dir="un_out_1.*"/> - <data name="reverse" from_work_dir="un_out_2.*"/> - <filter>(split_reads and ("collection" in single_paired['single_paired_selector']))</filter> + <filter>split_reads and single_paired['single_paired_selector'] == "collection"</filter> </collection> <collection name="out_classified_paired" type="paired" format_source="input_pair" label="${tool.name} on ${on_string}: Classified read pairs"> - <data name="forward" from_work_dir="cl_out_1.*"/> - <data name="reverse" from_work_dir="cl_out_2.*"/> - <filter>(split_reads and ("collection" in single_paired['single_paired_selector']))</filter> + <filter>split_reads and "collection" in single_paired['single_paired_selector'] == "collection"</filter> </collection> <data name="output" format="tabular" label="${tool.name} on ${on_string}: Classification"/> @@ -151,60 +133,75 @@ </outputs> <tests> <test expect_num_outputs="1"> - <param name="single_paired_selector" value="no"/> - <param name="input_sequences" value="kraken_test1.fa" ftype="fasta"/> + <conditional name="single_paired"> + <param name="single_paired_selector" value="no"/> + <param name="input_sequences" value="kraken_test1.fa" ftype="fasta"/> + </conditional> <param name="split_reads" value="false"/> <param name="quick" value="no"/> <param name="confidence" value=".2"/> <param name="kraken2_database" value="test_entry"/> <output name="output" file="kraken_test1_output.tab" ftype="tabular"/> </test> - <test expect_num_outputs="5"> - <param name="single_paired_selector" value="yes"/> - <param name="forward_input" value="kraken_test2_R1.fastq" ftype="fastq"/> - <param name="reverse_input" value="kraken_test2_R2.fastq" ftype="fastq"/> + + <test expect_num_outputs="3"> + <conditional name="single_paired"> + <param name="single_paired_selector" value="no"/> + <param name="input_sequences" value="kraken_test1.fa" ftype="fasta"/> + </conditional> <param name="split_reads" value="true"/> <param name="quick" value="no"/> - <param name="confidence" value="0"/> + <param name="confidence" value=".2"/> <param name="kraken2_database" value="test_entry"/> - <output name="out1" file="un_test2_output_1.fastq" ftype="fastq"/> - <output name="out2" file="un_test2_output_2.fastq" ftype="fastq"/> - <output name="out3" file="cl_test2_output_1.fastq" ftype="fastq"/> - <output name="out4" file="cl_test2_output_2.fastq" ftype="fastq"/> - <output name="output" file="kraken_test2_output.tab" ftype="tabular"/> + <output name="output" file="kraken_test1_output.tab" ftype="tabular"/> + <output name="classified_out_s" file="kraken_test1_cl.fas" ftype="fasta"/> + <output name="unclassified_out_s" file="kraken_test1_un.fas" ftype="fasta"/> </test> - <!-- same test but collection in/output --> + <test expect_num_outputs="7"> - <param name="single_paired_selector" value="collection"/> - <param name="input_pair"> - <collection type="paired"> - <element name="forward" value="kraken_test2_R1.fastq" ftype="fastq"/> - <element name="reverse" value="kraken_test2_R2.fastq" ftype="fastq"/> - </collection> - </param> + <conditional name="single_paired"> + <param name="single_paired_selector" value="collection"/> + <param name="input_pair"> + <collection type="paired"> + <element name="forward" value="kraken_test2_R1.fastq.gz" ftype="fastqsanger.gz"/> + <element name="reverse" value="kraken_test2_R2.fastq.gz" ftype="fastqsanger.gz"/> + </collection> + </param> + <param name="single_paired_selector" value="collection"/> + </conditional> <param name="split_reads" value="true"/> <param name="quick" value="no"/> <param name="confidence" value="0"/> <param name="kraken2_database" value="test_entry"/> <output_collection name="out_unclassified_paired" type="paired"> - <element name="forward" file="un_test2_output_1.fastq" ftype="fastq"/> - <element name="reverse" file="un_test2_output_2.fastq" ftype="fastq"/> + <element name="forward" file="un_test2_output_1.fastq" ftype="fastqsanger.gz" decompress="true"/> + <element name="reverse" file="un_test2_output_2.fastq" ftype="fastqsanger.gz" decompress="true"/> </output_collection> <output_collection name="out_classified_paired" type="paired"> - <element name="forward" file="cl_test2_output_1.fastq" ftype="fastq"/> - <element name="reverse" file="cl_test2_output_2.fastq" ftype="fastq"/> + <element name="forward" file="cl_test2_output_1.fastq" ftype="fastqsanger.gz" decompress="true"/> + <element name="reverse" file="cl_test2_output_2.fastq" ftype="fastqsanger.gz" decompress="true"/> </output_collection> <output name="output" file="kraken_test2_output.tab" ftype="tabular"/> + <assert_command> + <has_text text="gzip -c"/> + </assert_command> </test> + <test expect_num_outputs="2"> - <param name="single_paired_selector" value="yes"/> - <param name="forward_input" value="kraken_test2_R1.fastq" ftype="fastq"/> - <param name="reverse_input" value="kraken_test2_R2.fastq" ftype="fastq"/> - <param name="use-names" value="true"/> - <section name="report"> + <conditional name="single_paired"> + <param name="single_paired_selector" value="collection"/> + <param name="input_pair"> + <collection type="paired"> + <element name="forward" value="kraken_test2_R1.fastq" ftype="fastqsanger"/> + <element name="reverse" value="kraken_test2_R2.fastq" ftype="fastqsanger"/> + </collection> + </param> + </conditional> + <param name="use_names" value="true"/> + <conditional name="report"> <param name="create_report" value="true"/> <param name="report_minimizer_data" value="true"/> - </section> + </conditional> <param name="kraken2_database" value="test_entry"/> <output name="report_output" file="kraken_test2_report.tab" ftype="tabular"/> </test>
--- a/macros.xml Mon May 26 08:00:31 2025 +0000 +++ b/macros.xml Sun Dec 07 11:30:46 2025 +0000 @@ -1,7 +1,9 @@ <?xml version="1.0"?> <macros> - <token name="@TOOL_VERSION@">2.1.3</token> - <token name="@INTYPES@">fasta,fastq,fasta.gz,fasta.bz2,fastq.gz,fastq.bz2</token> + <token name="@TOOL_VERSION@">2.17.1</token> + <token name="@VERSION_SUFFIX@">0</token> + <token name="@PROFILE@">24.2</token> + <token name="@INTYPES@">fasta,fasta.gz,fasta.bz2,fastqsanger,fastqsanger.gz,fastqsanger.bz2</token> <xml name="input_database"> <param label="Select a Kraken2 database" name="kraken2_database" type="select"> <options from_data_table="kraken2_databases">
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/kraken_test1_un.fas Sun Dec 07 11:30:46 2025 +0000 @@ -0,0 +1,8 @@ +>gi|145231|gb|M33724.1|ECOALPHOA Escherichia coli K-12 truncated PhoA (phoA) gene, partial cds; and transposon Mu dI, partial sequence +CAAAGCTCCGGGCCTCACCCAGGCGCTAAATACCAAAGATGGCGCAGTGATGGTGATGAGTTACGGGAACTCCGAAGAGGATTCACAAGAACATACCGGCAGTCAGTTGCGTATTGCGGCGTATGGCCCGCATGCCGCCAATGAAGCGGCGCACGAAAAACGCGAAAGCGT +>gi|145232|gb|M33725.1|ECOALPHOB Escherichia coli K12 phoA pseudogene and transposon Mu dl-R, partial sequence +CTGTCATAAAGTTGTCACGGCCGAGACTTATAGTCGCTTTGTTTTTATTTTTTAATGTATTTGTACATGGAGAAAATAAAGTGAAACAAAGCACTATTGCACTGGCACTCTTACCGTTACTGTTTACCCCTGTGACAAAAGCCCGGACACCAGTGAAGCGGCGCACGAAAAACGCGAAAGCGT +>gi|145234|gb|M33727.1|ECOALPHOE Escherichia coli K12 upstream sequence of psiA5::Mu dI. is identical to psiA30 upstream sequence; putative (phoA) pseudogene and transposon Mu dl-R, partial sequence +TTGTTTTTATTTTTTAATGTATTTGTACATGGAGAAAATAAAGTGAAACAAAGCACTATTGCACTGGTGAAGCGGCGCACGAAAAACGCGAAAGCGT +>gi|146195|gb|J01619.1|ECOGLTA Eschericia coli gltA gene, sdhCDAB operon and sucABCD operons, complete sequence +GAATTCGACCGCCATTGCGCAAGGCATCGCCATGACCAGGCAGGATACAAAAGAGAGTCGATAAATATTCACGGTGTCCATACCTGATAAATATTTTATGAAAGGCGGCGATGATGCCGCAAAATAATACTTATTTATAATCCAGCACGTAGGTTGCGTTAGCGGTTACTTCACCTGCCGTGACATCGACTGCATTATCAATTTGTTCCATCCAGGCGAAAAAGTTCAGCGTCTGTTCTGATGAGCTTGCATCCAGGTCAAGATCTGGCGCGGCTGAACCTAATACGATGTTACCGTCATTTTTGTCCATCAGTCGTACACCGACCCCAGTTGCTTCGCCTGCACTGGTGTTGCTCAACAAAGGCGTAGCACCAGTTGTCTTAGCCGTGCTATCGAAGGTTACGCCAAACTTTGGATACCGGCATTCCGCTACCGTTGTCAGAAGCAGGCAGATCACAGTTGATCAAGCGAATGTCGACGGCCACTTTATTGCTATGATGCTCCCGGTTTATATGGGTTGTCGTGACTTGTCCAAGATCTATGTTTTTATCAATATCTTCTGGATGAATTTCACAAGGTGCTTCAATAACCTCCCCCTTAAAGTGAATTTCGCCAGAACCTTCATCAGCAGCATAAACAGGTGCAGTGAACAGCAGAGATACGGCCAGTGCGGCCAATGTTTTTTGTCCTTTAAACATAACAGAGTCCTTTAAGGATATAGAATAGGGGTATAGCTACGCCAGAATATCGTATTTGATTATTGCTAGTTTTTAGTTTTGCTTAAAAAATATTGTTAGTTTTATTAAATTGGAAAACTAAATTATTGGTATCATGAATTGTTGTATGATGATAAATATAGGGGGGATATGATAGACGTCATTTTCATAGGGTTATAAAATGCGACTACCATGAAGTTTTTAATTCAAAGTATTGGGTTGCTGATAATTTGAGCTGTTCTATTCTTTTTAAATATCTATATAGGTCTGTTAATGGATTTTATTTTTACAAGTTTTTTGTGTTTAGGCATATAAAAATCAAGCCCGCCATATGAACGGCGGGTTAAAATATTTACAACTTAGCAATCGAACCATTAACGCTTGATATCGCTTTTAAAGTCGCGTTTTTCATATCCTGTATACAGCTGACGCGGACGGGCAATCTTCATACCGTCACTGTGCATTTCGCTCCAGTGGGCGATCCAGCCAACGGTACGTGCCATTGCGAAAATGACGGTGAACATGGAAGACGGAATACCCATCGCTTTCAGGATGATACCAGAGTAGAAATCGACGTTCGGGTACAGTTTCTTCTCGATAAAGTACGGGTCGTTCAGCGCGATGTTTTCCAGCTCCATAGCCACTTCCAGCAGGTCATCCTTCGTGCCCAGCTCTTTCAGCACTTCATGGCAGGTTTCACGCATTACGGTGGCGCGCGGGTCGTAATTTTTGTACACGCGGTGACCGAAGCCCATCAGGCGGAAAGAATCATTTTTGTCTTTCGCACGACGAAAAAATTCCGGAATGTGTTTAACGGAGCTGATTTCTTCCAGCATTTTCAGCGCCGCTTCGTTAGCACCGCCGTGCGCAGGTCCCCACAGTGAAGCAATACCTGCTGCGATACAGGCAAACGGGTTCGCACCCGAAGAGCCAGCGGTACGCACGGTGGAGGTAGAGGCGTTCTGTTCATGGTCAGCGTGCAGGATCAGAATACGGTCCATAGCACGTTCCAGAATCGGATTAACTTCATACGGTTCGCACGGCGTGGAGAACATCATATTCAGGAAGTTACCGGCGTAGGAGAGATCGTTGCGCGGGTAAACAAATGGCTGACCAATGGAATACTTGTAACACATCGCGGCCATGGTCGGCATTTTCGACAGCAGGCGGAACGCGGCAATTTCACGGTGACGAGGATTGTTAACATCCAGCGAGTCGTGATAGAACGCCGCCAGCGCGCCGGTAATACCACACATGACTGCCATTGGATGCGAGTCGCGACGGAAAGCATGGAACAGACGGGTAATCTGCTCGTGGATCATGGTATGACGGGTCACCGTAGTTTTAAATTCGTCATACTGTTCCTGAGTCGGTTTTTCACCATTCAGCAGGATGTAACAAACTTCCAGGTAGTTAGAATCGGTCGCCAGCTGATCGATCGGGAAACCGCGGTGCAGCAAAATACCTTCATCACCATCAATAAAAGTAATTTTAGATTCGCAGGATGCGGTTGAAGTGAAGCCTGGGTCAAAGGTGAACACACCTTTTGAACCGAGAGTACGGATATCAATAACATCTTGACCCAGCGTGCCTTTCAGCACATCCAGTTCAACAGCTGTATCCCCGTTGAGGGTGAGTTTTGCTTTTGTATCAGCCATTTAAGGTCTCCTTAGCGCCTTATTGCGTAAGACTGCCGGAACTTAAATTTGCCTTCGCACATCAACCTGGCTTTACCCGTTTTTTATTTGGCTCGCCGCTCTGTGAAAGAGGGGAAAACCTGGGTACAGAGCTCTGGGCGCTTGCAGGTAAAGGATCCATTGATGACGAATAAATGGCGAATCAAGTACTTAGCAATCCGAATTATTAAACTTGTCTACCACTAATAACTGTCCCGAATGAATTGGTCAATACTCCACACTGTTACATAAGTTAATCTTAGGTGAAATACCGACTTCATAACTTTTACGCATTATATGCTTTTCCTGGTAATGTTTGTAACAACTTTGTTGAATGATTGTCAAATTAGATGATTAAAAATTAAATAAATGTTGTTATCGTGACCTGGATCACTGTTCAGGATAAAACCCGACAAACTATATGTAGGTTAATTGTAATGATTTTGTGAACAGCCTATACTGCCGCCAGTCTCCGGAACACCCTGCAATCCCGAGCCACCCAGCGTTGTAACGTGTCGTTTTCGCATCTGGAAGCAGTGTTTTGCATGACGCGCAGTTATAGAAAGGACGCTGTCTGACCCGCAAGCAGACCGGAGGAAGGAAATCCCGACGTCTCCAGGTAACAGAAAGTTAACCTCTGTGCCCGTAGTCCCCAGGGAATAATAAGAACAGCATGTGGGCGTTATTCATGATAAGAAATGTGAAAAAACAAAGACCTGTTAATCTGGACCTACAGACCATCCGGTTCCCCATCACGGCGATAGCGTCCATTCTCCATCGCGTTTCCGGTGTGATCACCTTTGTTGCAGTGGGCATCCTGCTGTGGCTTCTGGGTACCAGCCTCTCTTCCCCTGAAGGTTTCGAGCAAGCTTCCGCGATTATGGGCAGCTTCTTCGTCAAATTTATCATGTGGGGCATCCTTACCGCTCTGGCGTATCACGTCGTCGTAGGTATTCGCCACATGATGATGGATTTTGGCTATCTGGAAGAAACATTCGAAGCGGGTAAACGCTCCGCCAAAATCTCCTTTGTTATTACTGTCGTGCTTTCACTTCTCGCAGGAGTCCTCGTATGGTAAGCAACGCCTCCGCATTAGGACGCAATGGCGTACATGATTTCATCCTCGTTCGCGCTACCGCTATCGTCCTGACGCTCTACATCATTTATATGGTCGGTTTTTTCGCTACCAGTGGCGAGCTGACATATGAAGTCTGGATCGGTTTCTTCGCCTCTGCGTTCACCAAAGTGTTCACCCTGCTGGCGCTGTTTTCTATCTTGATCCATGCCTGGATCGGCATGTGGCAGGTGTTGACCGACTACGTTAAACCGCTGGCTTTGCGCCTGATGCTGCAACTGGTGATTGTCGTTGCACTGGTGGTTTACGTGATTTATGGATTCGTTGTGGTGTGGGGTGTGTGATGAAATTGCCAGTCAGAGAATTTGATGCAGTTGTGATTG
