-
Notifications
You must be signed in to change notification settings - Fork 441
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FastK: adding new tool #5550
FastK: adding new tool #5550
Changes from all commits
81b4e81
acbf696
c0ca84c
73911c5
7b9270f
40db534
1530579
59ef44c
a553432
371c28f
1f2cfc5
74d75a4
0cceb90
3628496
905b1e2
b682572
ad04760
e0663ab
08d8320
82dfa9c
97887e8
ba42b65
e5b0606
30912b3
f6bafef
2977741
cada3fa
e25160e
af3c940
d6f1382
6a717f2
ea44af0
a2eb1a5
5dc3e37
5ede1b7
8ea1904
6cfbf27
83f1327
94d876c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
categories: | ||
- Assembly | ||
description: "FastK: A K-mer counter (for HQ assembly data sets)" | ||
homepage_url: https://github.com/thegenemyers/FASTK | ||
long_description: | | ||
FastK is a k‑mer counter that is optimized for processing high-quality DNA assembly data sets such as those produced with an Illumina instrument or a PacBio run in HiFi mode. | ||
name: fastk | ||
owner: iuc | ||
remote_repository_url: https://github.com/galaxyproject/tools-iuc/tree/master/tools/fastk | ||
type: unrestricted |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,172 @@ | ||||||||||||||||||||||||||||||||||||||||||
<tool id="fastk" name="FastK" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.01"> | ||||||||||||||||||||||||||||||||||||||||||
<description>A k-mer counter for high-quality assembly datasets</description> | ||||||||||||||||||||||||||||||||||||||||||
<macros> | ||||||||||||||||||||||||||||||||||||||||||
<import>macros.xml</import> | ||||||||||||||||||||||||||||||||||||||||||
</macros> | ||||||||||||||||||||||||||||||||||||||||||
<expand macro="requirements" /> | ||||||||||||||||||||||||||||||||||||||||||
<command detect_errors="exit_code"><![CDATA[ | ||||||||||||||||||||||||||||||||||||||||||
mkdir -p outfiles/tmpfiles && | ||||||||||||||||||||||||||||||||||||||||||
#if $infile.ext == "fasta": | ||||||||||||||||||||||||||||||||||||||||||
ln -s '$infile' ./input.fasta && | ||||||||||||||||||||||||||||||||||||||||||
#set INPUTFILE="input.fasta" | ||||||||||||||||||||||||||||||||||||||||||
#elif $infile.ext == "fasta.gz": | ||||||||||||||||||||||||||||||||||||||||||
ln -s '$infile' ./input.fasta.gz && | ||||||||||||||||||||||||||||||||||||||||||
#set INPUTFILE="input.fasta.gz" | ||||||||||||||||||||||||||||||||||||||||||
#elif $infile.is_of_type("fastq"): | ||||||||||||||||||||||||||||||||||||||||||
ln -s '$infile' ./input.fastq && | ||||||||||||||||||||||||||||||||||||||||||
#set INPUTFILE="input.fastq" | ||||||||||||||||||||||||||||||||||||||||||
#elif $infile.is_of_type("fastq.gz"): | ||||||||||||||||||||||||||||||||||||||||||
ln -s '$infile' ./input.fastq.gz && | ||||||||||||||||||||||||||||||||||||||||||
#set INPUTFILE="input.fastq.gz" | ||||||||||||||||||||||||||||||||||||||||||
#elif $infile.ext == "cram": | ||||||||||||||||||||||||||||||||||||||||||
ln -s '$infile' ./input.cram && | ||||||||||||||||||||||||||||||||||||||||||
#set INPUTFILE="input.cram" | ||||||||||||||||||||||||||||||||||||||||||
#elif $infile.is_of_type("unsorted.bam"): | ||||||||||||||||||||||||||||||||||||||||||
ln -s '$infile' ./input.bam && | ||||||||||||||||||||||||||||||||||||||||||
#set INPUTFILE="input.bam" | ||||||||||||||||||||||||||||||||||||||||||
#elif $infile.ext == "sam": | ||||||||||||||||||||||||||||||||||||||||||
ln -s '$infile' ./input.sam && | ||||||||||||||||||||||||||||||||||||||||||
#set INPUTFILE="input.sam" | ||||||||||||||||||||||||||||||||||||||||||
#end if | ||||||||||||||||||||||||||||||||||||||||||
#if $operation_type.command_type == 'FastK': | ||||||||||||||||||||||||||||||||||||||||||
FastK $INPUTFILE | ||||||||||||||||||||||||||||||||||||||||||
#set kmer_size=$operation_type.kmer_size | ||||||||||||||||||||||||||||||||||||||||||
-k$kmer_size | ||||||||||||||||||||||||||||||||||||||||||
#if $operation_type.sorted_table.sorted_table_presence == 'yes': | ||||||||||||||||||||||||||||||||||||||||||
#if $operation_type.sorted_table.type_sorted_table.sorted_table_options == 'default_sorted_table': | ||||||||||||||||||||||||||||||||||||||||||
-t | ||||||||||||||||||||||||||||||||||||||||||
#elif $operation_type.sorted_table.type_sorted_table.sorted_table_options == 'cutoff_sorted_table': | ||||||||||||||||||||||||||||||||||||||||||
#set sorted_table_cutoff=$operation_type.sorted_table.type_sorted_table.sorted_table_cutoff | ||||||||||||||||||||||||||||||||||||||||||
-t$sorted_table_cutoff | ||||||||||||||||||||||||||||||||||||||||||
#end if | ||||||||||||||||||||||||||||||||||||||||||
#end if | ||||||||||||||||||||||||||||||||||||||||||
-T\${GALAXY_SLOTS:-1} -Noutfiles/output -Poutfiles/tmpfiles | ||||||||||||||||||||||||||||||||||||||||||
#if $operation_type.sorted_table.sorted_table_presence == 'yes': | ||||||||||||||||||||||||||||||||||||||||||
&& Tabex outfiles/output.ktab -t${operation_type.sorted_table.advanced.tabex_threshold} LIST > tabex.txt | ||||||||||||||||||||||||||||||||||||||||||
#end if | ||||||||||||||||||||||||||||||||||||||||||
&& tar -c -f fastk.tar ./outfiles/ | ||||||||||||||||||||||||||||||||||||||||||
#elif $operation_type.command_type == 'Histex': | ||||||||||||||||||||||||||||||||||||||||||
Histex | ||||||||||||||||||||||||||||||||||||||||||
#elif $operation_type.command_type == 'Tabex': | ||||||||||||||||||||||||||||||||||||||||||
Tabex | ||||||||||||||||||||||||||||||||||||||||||
#elif $operation_type.command_type == 'Profex': | ||||||||||||||||||||||||||||||||||||||||||
Profex | ||||||||||||||||||||||||||||||||||||||||||
#elif $operation_type.command_type == 'Logex': | ||||||||||||||||||||||||||||||||||||||||||
Logex | ||||||||||||||||||||||||||||||||||||||||||
#elif $operation_type.command_type == 'Symmex': | ||||||||||||||||||||||||||||||||||||||||||
Symmex | ||||||||||||||||||||||||||||||||||||||||||
#end if | ||||||||||||||||||||||||||||||||||||||||||
]]></command> | ||||||||||||||||||||||||||||||||||||||||||
<inputs> | ||||||||||||||||||||||||||||||||||||||||||
<param name="infile" type="data" format="fasta,fasta.gz,fastq,fastq.gz,cram,unsorted.bam,sam" label="Input file" /> | ||||||||||||||||||||||||||||||||||||||||||
<conditional name="operation_type"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="command_type" type="select" label="Operation type selector" help="Select a type of operation"> | ||||||||||||||||||||||||||||||||||||||||||
<option value="FastK">FastK: count k-mers</option> | ||||||||||||||||||||||||||||||||||||||||||
<option value="Histex">Histex: display a FastK histogram</option> | ||||||||||||||||||||||||||||||||||||||||||
<option value="Tabex">Tabex: list, check, or find a k-mer in a FastK table</option> | ||||||||||||||||||||||||||||||||||||||||||
<option value="Profex">Profex: display a FastK profile</option> | ||||||||||||||||||||||||||||||||||||||||||
<option value="Logex">Logex: combine k-mer,count tables with logical expressions and filter with count cutoffs</option> | ||||||||||||||||||||||||||||||||||||||||||
<option value="Symmex">Symmex: produce a symmetric k-mer table from a canonical one</option> | ||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+65
to
+69
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
</param> | ||||||||||||||||||||||||||||||||||||||||||
<when value="FastK"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="kmer_size" type="integer" min="5" max="50" value="40" label="K-mer size" help="Default k-mer size is 40." /> | ||||||||||||||||||||||||||||||||||||||||||
<conditional name="sorted_table"> | ||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you think it would be a good idea to flatten the nested conditionals and just have one with 3 options:
? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like that idea. @abueg does this make sense? |
||||||||||||||||||||||||||||||||||||||||||
<param name="sorted_table_presence" type="select" label="Sorted table selection" help="Do you want a sorted table of all canonical k-mers and their counts? The sorted table is sorted lexicographically on the k-mer where a < c < g < t."> | ||||||||||||||||||||||||||||||||||||||||||
<option value="no">No</option> | ||||||||||||||||||||||||||||||||||||||||||
<option value="yes">Yes</option> | ||||||||||||||||||||||||||||||||||||||||||
</param> | ||||||||||||||||||||||||||||||||||||||||||
<when value="no"/> | ||||||||||||||||||||||||||||||||||||||||||
<when value="yes"> | ||||||||||||||||||||||||||||||||||||||||||
<conditional name="type_sorted_table"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="sorted_table_options" type="select" label="Sorted table presence" help="Do you want to specify a cut-off? If you do, then only k-mers occuring above that cut-off will occur."> | ||||||||||||||||||||||||||||||||||||||||||
<option value="default_sorted_table">default (1)</option> | ||||||||||||||||||||||||||||||||||||||||||
<option value="cutoff_sorted_table">specify cutoff</option> | ||||||||||||||||||||||||||||||||||||||||||
</param> | ||||||||||||||||||||||||||||||||||||||||||
<when value="default_sorted_table"/> | ||||||||||||||||||||||||||||||||||||||||||
<when value="cutoff_sorted_table"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="sorted_table_cutoff" type="integer" min="2" value="10" label="Sorted table cutoff value"/> | ||||||||||||||||||||||||||||||||||||||||||
</when> | ||||||||||||||||||||||||||||||||||||||||||
</conditional> | ||||||||||||||||||||||||||||||||||||||||||
<section title="Advanced" name="advanced"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="tabex_threshold" label="Tabex count threshold" type="integer" value="5" min="1"/> | ||||||||||||||||||||||||||||||||||||||||||
</section> | ||||||||||||||||||||||||||||||||||||||||||
</when> | ||||||||||||||||||||||||||||||||||||||||||
</conditional> | ||||||||||||||||||||||||||||||||||||||||||
</when> | ||||||||||||||||||||||||||||||||||||||||||
<when value="Histex"> | ||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you plan to implement this as a single tool? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sorry, do you mean implement There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I was just wondering. Both would be fine. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can maybe help with splitting the tools later. Lets go with what is here for now. |
||||||||||||||||||||||||||||||||||||||||||
</when> | ||||||||||||||||||||||||||||||||||||||||||
<when value="Tabex"> | ||||||||||||||||||||||||||||||||||||||||||
</when> | ||||||||||||||||||||||||||||||||||||||||||
<when value="Profex"> | ||||||||||||||||||||||||||||||||||||||||||
</when> | ||||||||||||||||||||||||||||||||||||||||||
<when value="Logex"> | ||||||||||||||||||||||||||||||||||||||||||
</when> | ||||||||||||||||||||||||||||||||||||||||||
<when value="Symmex"> | ||||||||||||||||||||||||||||||||||||||||||
</when> | ||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+96
to
+105
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
</conditional> | ||||||||||||||||||||||||||||||||||||||||||
</inputs> | ||||||||||||||||||||||||||||||||||||||||||
<outputs> | ||||||||||||||||||||||||||||||||||||||||||
<data name="fastk_out" format="tar" from_work_dir="fastk.tar" label="${tool.name} on ${on_string}: FastK files"/> | ||||||||||||||||||||||||||||||||||||||||||
<data name="fastk_hist" format="binary" from_work_dir="outfiles/output.hist" label="${tool.name} on ${on_string}: FastK hist" /> | ||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+109
to
+110
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Those two outputs will also need a filter, or? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ah you mean a filter for if |
||||||||||||||||||||||||||||||||||||||||||
<data name="tabex_hist" format="txt" from_work_dir="tabex.txt" label="${tool.name} on ${on_string}: Tabex output"> | ||||||||||||||||||||||||||||||||||||||||||
<filter>operation_type['command_type'] == 'FastK' and operation_type['sorted_table'] == 'yes' and operation_type['sorted_table_presence'] == 'yes'</filter> | ||||||||||||||||||||||||||||||||||||||||||
</data> | ||||||||||||||||||||||||||||||||||||||||||
</outputs> | ||||||||||||||||||||||||||||||||||||||||||
<tests> | ||||||||||||||||||||||||||||||||||||||||||
<!-- TEST 1 --> | ||||||||||||||||||||||||||||||||||||||||||
<test expect_num_outputs="2"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="infile" value="input01.fasta.gz" /> | ||||||||||||||||||||||||||||||||||||||||||
<param name="command_type" value="FastK" /> | ||||||||||||||||||||||||||||||||||||||||||
<output name="fastk_out" ftype="tar"> | ||||||||||||||||||||||||||||||||||||||||||
<assert_contents> | ||||||||||||||||||||||||||||||||||||||||||
<has_archive_member path="./outfiles/output.hist" /> | ||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. With Additionally you could also make assumptions on the content by including more assumptions, like so:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i considered adding # of files, but for the test involving sorted tables, the number of files generated can change because the number of hidden files made is dependent on how many threads is given to the program -- so it's dependent on for content assumption, the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I would suggest to avoid this
Indeed. Then maybe There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. added |
||||||||||||||||||||||||||||||||||||||||||
<has_size value="1314816" delta="1000" /> | ||||||||||||||||||||||||||||||||||||||||||
</assert_contents> | ||||||||||||||||||||||||||||||||||||||||||
</output> | ||||||||||||||||||||||||||||||||||||||||||
</test> | ||||||||||||||||||||||||||||||||||||||||||
<!-- TEST 2 --> | ||||||||||||||||||||||||||||||||||||||||||
<test expect_num_outputs="2"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="infile" value="input01.fasta.gz" /> | ||||||||||||||||||||||||||||||||||||||||||
<param name="command_type" value="FastK" /> | ||||||||||||||||||||||||||||||||||||||||||
<conditional name="sorted_table"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="sorted_table_presence" value="yes"/> | ||||||||||||||||||||||||||||||||||||||||||
<conditional name="type_sorted_table"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="sorted_table_options" value="default_sorted_table"/> | ||||||||||||||||||||||||||||||||||||||||||
</conditional> | ||||||||||||||||||||||||||||||||||||||||||
</conditional> | ||||||||||||||||||||||||||||||||||||||||||
<output name="fastk_out" ftype="tar"> | ||||||||||||||||||||||||||||||||||||||||||
<assert_contents> | ||||||||||||||||||||||||||||||||||||||||||
<has_archive_member path="./outfiles/output.hist" /> | ||||||||||||||||||||||||||||||||||||||||||
<has_archive_member path="./outfiles/output.ktab" /> | ||||||||||||||||||||||||||||||||||||||||||
<has_size value="6868992" delta="1000" /> | ||||||||||||||||||||||||||||||||||||||||||
</assert_contents> | ||||||||||||||||||||||||||||||||||||||||||
</output> | ||||||||||||||||||||||||||||||||||||||||||
<output name="tabex_hist" value="test02.tabex.txt"/> | ||||||||||||||||||||||||||||||||||||||||||
</test> | ||||||||||||||||||||||||||||||||||||||||||
<!-- TEST 3 --> | ||||||||||||||||||||||||||||||||||||||||||
<test expect_num_outputs="2"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="infile" value="input01.fasta.gz" /> | ||||||||||||||||||||||||||||||||||||||||||
<param name="command_type" value="FastK" /> | ||||||||||||||||||||||||||||||||||||||||||
<conditional name="sorted_table"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="sorted_table_presence" value="yes"/> | ||||||||||||||||||||||||||||||||||||||||||
<conditional name="type_sorted_table"> | ||||||||||||||||||||||||||||||||||||||||||
<param name="sorted_table_options" value="cutoff_sorted_table"/> | ||||||||||||||||||||||||||||||||||||||||||
<param name="sorted_table_cutoff" value="5"/> | ||||||||||||||||||||||||||||||||||||||||||
</conditional> | ||||||||||||||||||||||||||||||||||||||||||
</conditional> | ||||||||||||||||||||||||||||||||||||||||||
<output name="fastk_out" ftype="tar"> | ||||||||||||||||||||||||||||||||||||||||||
<assert_contents> | ||||||||||||||||||||||||||||||||||||||||||
<has_archive_member path="./outfiles/output.hist" /> | ||||||||||||||||||||||||||||||||||||||||||
<has_archive_member path="./outfiles/output.ktab" /> | ||||||||||||||||||||||||||||||||||||||||||
<has_size value="1324032" delta="1000" /> | ||||||||||||||||||||||||||||||||||||||||||
</assert_contents> | ||||||||||||||||||||||||||||||||||||||||||
</output> | ||||||||||||||||||||||||||||||||||||||||||
<output name="tabex_hist" value="test03.tabex.txt"/> | ||||||||||||||||||||||||||||||||||||||||||
</test> | ||||||||||||||||||||||||||||||||||||||||||
</tests> | ||||||||||||||||||||||||||||||||||||||||||
<help><![CDATA[ | ||||||||||||||||||||||||||||||||||||||||||
FastK is a k‑mer counter that is optimized for processing high quality DNA assembly data sets such as those produced with an Illumina instrument or a PacBio run in HiFi mode. | ||||||||||||||||||||||||||||||||||||||||||
]]></help> | ||||||||||||||||||||||||||||||||||||||||||
<expand macro="citations" /> | ||||||||||||||||||||||||||||||||||||||||||
</tool> | ||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<macros> | ||
<token name="@TOOL_VERSION@">1.0.0</token> | ||
<token name="@VERSION_SUFFIX@">0</token> | ||
<xml name="requirements"> | ||
<requirements> | ||
<requirement type="package" version="@TOOL_VERSION@">fastk</requirement> | ||
</requirements> | ||
</xml> | ||
<xml name="citations"> | ||
<citations> | ||
<citation type="bibtex"> | ||
@misc{github, | ||
author = {Gene Meyers}, | ||
year = {2020}, | ||
title = {FastK}, | ||
publisher = {GitHub}, | ||
journal = {GitHub repository}, | ||
url = {https://github.com/thegenemyers/FASTK}, | ||
} | ||
</citation> | ||
</citations> | ||
</xml> | ||
</macros> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess you can also run without creating
outfiles
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i think the
outfiles
dir makes tar'ing the files down the line easier, because i justtar -c -f fastk.tar ./outfiles/
?