Mercurial > repos > iuc > semibin_train
changeset 3:be96c5251f2d draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/semibin commit 2c08a2e49a2844efe92340c5a9e9c8323e4a33d6
line wrap: on
line diff
--- a/macros.xml Tue Mar 25 15:50:55 2025 +0000 +++ b/macros.xml Tue Oct 28 08:17:27 2025 +0000 @@ -1,6 +1,6 @@ <?xml version="1.0"?> <macros> - <token name="@TOOL_VERSION@">2.0.2</token> + <token name="@TOOL_VERSION@">2.1.0</token> <token name="@VERSION_SUFFIX@">1</token> <token name="@PROFILE@">21.01</token> <xml name="biotools"> @@ -48,6 +48,23 @@ </when> </conditional> </xml> + <xml name="mode_fasta_strobealign"> + <conditional name="mode"> + <expand macro="mode_select"/> + <when value="single"> + <expand macro="input-fasta-single"/> + <expand macro="input-txt"/> + </when> + <when value="co"> + <expand macro="input-fasta-single"/> + <expand macro="input-txt"/> + </when> + <when value="multi"> + <expand macro="input-fasta-multi"/> + <expand macro="input-txt"/> + </when> + </conditional> + </xml> <xml name="mode_select"> <param name="select" type="select" label="Binning mode"> <option value="single" selected="true">Single sample binning (each sample is assembled and binned independently)</option> @@ -55,8 +72,14 @@ <option value="multi">Multi-sample binning (multiple samples are assembled and binned individually, but information from multiple samples is used together)</option> </param> </xml> + <xml name="bam_or_strobealign"> + <param name="align_select" type="select" label="Use bam or strobealign abundance files?" help="Strobealign abundance files can only be used when samples used in binning above or equal 5"> + <option value="bam">BAM</option> + <option value="txt">Strobealign-aemb file(s)</option> + </param> + </xml> <xml name="input-fasta-single"> - <param argument="--input-fasta" type="data" format="fasta,fasta.gz" label="Contig sequences"/> + <param argument="--input-fasta" type="data" format="fasta,fasta.gz,fasta.bz2" label="Contig sequences"/> </xml> <xml name="input-fasta-multi"> <conditional name="multi_fasta"> @@ -65,11 +88,11 @@ <option value="multi">1 contig file per sample</option> </param> <when value="concatenated"> - <param argument="--input-fasta" type="data" format="fasta,fasta.gz" label="Combined contig sequences"/> + <param argument="--input-fasta" type="data" format="fasta,fasta.gz,fasta.bz2" label="Combined contig sequences"/> <expand macro="separator"/> </when> <when value="multi"> - <param argument="--input-fasta" type="data" multiple="true" format="fasta,fasta.gz" label="Contig sequences"/> + <param argument="--input-fasta" type="data" multiple="true" format="fasta,fasta.gz,fasta.bz2" label="Contig sequences"/> <expand macro="concat_min_len"/> </when> </conditional> @@ -78,39 +101,27 @@ <param name="min_len" type="integer" min="0" value="0" label="Minimal length for contigs to be kept"/> </xml> <token name="@SINGLE_FASTA_FILES@"><![CDATA[ -#if $input_fasta.ext.endswith(".gz") -gunzip -c '$input_fasta' > 'contigs.fasta' && -#else -ln -s '$input_fasta' 'contigs.fasta' && -#end if +ln -s '$input_fasta' 'contigs.$input_fasta.ext' && ]]></token> <token name="@FASTA_FILES@"><![CDATA[ #if $mode.select == 'single' or $mode.select == 'co' - #if $mode.input_fasta.ext.endswith(".gz") -gunzip -c '$mode.input_fasta' > 'contigs.fasta' && - #else -ln -s '$mode.input_fasta' 'contigs.fasta' && - #end if +ln -s '$input_fasta' 'contigs.$input_fasta.ext' && #else #if $mode.multi_fasta.select == 'concatenated' - #if $mode.multi_fasta.input_fasta.ext.endswith(".gz") -gunzip -c '$mode.multi_fasta.input_fasta' > 'contigs.fasta' && - #else -ln -s '$mode.multi_fasta.input_fasta' 'contigs.fasta' && - #end if +ln -s '$input_fasta' 'contigs.$input_fasta.ext' && #set $separator = $mode.multi_fasta.separator #else #for $e in $mode.multi_fasta.input_fasta - #set $identifier = re.sub('[^\s\w\-\\.]', '_', str($e.element_identifier)) - #if $e.ext.endswith(".gz") -gunzip -c '$e' > '${identifier}.fasta' && - #else -ln -s '$e' '${identifier}.fasta' && - #end if + #set $identifier = re.sub('[^\s\w\-]', '_', str($e.element_identifier)) +ln -s '$e' '${identifier}.$e.ext' && #end for #set $separator = ':' SemiBin2 concatenate_fasta - --input-fasta *.fasta + --input-fasta + #for $e in $mode.multi_fasta.input_fasta + #set $identifier = re.sub('[^\s\w\-]', '_', str($e.element_identifier)) + '${identifier}.$e.ext' + #end for --output 'output' --separator '$separator' --compression none @@ -129,17 +140,27 @@ <xml name="input-bam-multi"> <param argument="--input-bam" type="data" format="bam" multiple="true" label="Read mapping to the contigs" help="One file per sample, sorted BAM files"/> </xml> + <!-- Strobealign files --> + <xml name="input-txt"> + <param argument="--abundance" type="data" format="txt" label="Read mapping to the contigs" multiple="true" help="Strobealign abundance files"/> + </xml> <token name="@BAM_FILES@"><![CDATA[ #if $mode.select == 'single' -#set $identifier = re.sub('[^\s\w\-\\.]', '_', str($input_bam.element_identifier)) -ln -s '$input_bam' '${identifier}.bam' && +#set $identifier = re.sub('[^\s\w\-]', '_', str($mode.input_bam.element_identifier)) +ln -s '$mode.input_bam' '${identifier}.bam' && #else - #for $e in $input_bam - #set $identifier = re.sub('[^\s\w\-\\.]', '_', str($e.element_identifier)) + #for $e in $mode.input_bam + #set $identifier = re.sub('[^\s\w\-]', '_', str($e.element_identifier)) ln -s '$e' '${identifier}.bam' && #end for #end if ]]></token> + <token name="@STROBEALIGN_FILES@"><![CDATA[ +#for $e in $mode.align_select.abundance + #set $identifier = re.sub('[^\s\w\-]', '_', str($e.element_identifier)) + ln -s '$e' '${identifier}.txt' && +#end for + ]]></token> <xml name="ref_select_cannot"> <param name="select" type="select" label="Reference database"> <option value="cached">Cached database</option> @@ -257,7 +278,6 @@ <param argument="--orf-finder" type="select" label="ORF finder used to estimate the number of bins"> <option value="fast-naive" selected="true">Fast-Naive</option> <option value="prodigal">Prodigal</option> - <option value="fraggenescan">Fraggenescan</option> </param> </xml> <xml name="max-node"> @@ -293,58 +313,153 @@ </xml> <xml name="data_output_single"> <data name="single_data" format="csv" from_work_dir="output/data.csv" label="${tool.name} on ${on_string}: Training data"> - <filter>mode["select"]=="single" or mode["select"]=="co"</filter> + <filter>input_type_select['mode']['select']=="single" or input_type_select['mode']['select']=="co"</filter> </data> <data name="single_data_split" format="csv" from_work_dir="output/data_split.csv" label="${tool.name} on ${on_string}: Split training data"> - <filter>mode["select"]=="single" or mode["select"]=="co"</filter> + <filter>input_type_select['mode']['select']=="single" or input_type_select['mode']['select']=="co"</filter> </data> </xml> - <xml name="data_output_multi"> + <xml name="data_output_multi"> <collection name="multi_data" type="list" label="${tool.name} on ${on_string}: Training data per sample"> - <filter>mode["select"]=="multi"</filter> + <filter>input_type_select['mode']['select']=="multi"</filter> <discover_datasets pattern="(?P<designation>.*)\/data.csv" format="csv" directory="output/samples/" recurse="true" match_relative_path="true"/> </collection> <collection name="multi_data_split" type="list" label="${tool.name} on ${on_string}: Split training data per sample"> - <filter>mode["select"]=="multi"</filter> + <filter>input_type_select['mode']['select']=="multi"</filter> <discover_datasets pattern="(?P<designation>.*)\/data_split.csv" format="csv" directory="output/samples/" recurse="true" match_relative_path="true"/> </collection> </xml> <xml name="generate_sequence_features_extra_outputs"> <data name="single_cov" format="csv" from_work_dir="output/*_data_cov.csv" label="${tool.name} on ${on_string}: Coverage"> - <filter>mode["select"]=="single" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['mode']['select']=="single" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="bam"</filter> </data> <data name="single_split_cov" format="csv" from_work_dir="output/*_data_split_cov.csv" label="${tool.name} on ${on_string}: Coverage (split data)"> - <filter>mode["select"]=="single" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['mode']['select']=="single" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="bam"</filter> </data> <collection name="co_cov" type="list" label="${tool.name} on ${on_string}: Coverage (co_cov)"> - <filter>mode["select"]=="co" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['mode']['select']=="co" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="bam"</filter> <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_cov\.csv" format="csv" directory="output/" /> </collection> <collection name="co_split_cov" type="list" label="${tool.name} on ${on_string}: Coverage (split data) per sample"> - <filter>mode["select"]=="co" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['mode']['select']=="co" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="bam"</filter> <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_split_cov\.csv" format="csv" directory="output/" /> </collection> + <data name="cov_txt" label="${tool.name} on ${on_string}: Coverage (split data) per sample (aemb)" from_work_dir="output/cov_split.csv" format="csv"> + <filter>input_type_select['mode']['select']=="single" or input_type_select['mode']['select']=="co" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="txt"</filter> + </data> + <data name="co_cov_txt" label="${tool.name} on ${on_string}: Coverage (aemb)" format="csv" from_work_dir="output/cov.csv"> + <filter>input_type_select['mode']['select']=="single" or input_type_select['mode']['select']=="co" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="txt"</filter> + </data> + <collection name="multi_split_cov_txt" type="list" label="${tool.name} on ${on_string}: Coverage (split data) per sample (multi_split_cov) (aemb)"> + <filter>input_type_select['mode']['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="txt"</filter> + <discover_datasets pattern="(?P<designation>.*)\/data_split_cov.csv" format="csv" directory="output/samples/" recurse="true" match_relative_path="true"/> + </collection> <collection name="multi_cov" type="list" label="${tool.name} on ${on_string}: Coverage (multi_cov)"> - <filter>mode["select"]=="multi" and extra_output and "coverage" in extra_output</filter> - <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_cov.csv" format="csv" directory="output/samples/" /> + <filter>input_type_select['mode']['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="bam"</filter> + <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_cov.csv" format="csv" directory="output/samples/" recurse="true"/> </collection> <collection name="multi_cov_sample" type="list" label="${tool.name} on ${on_string}: Coverage per sample"> - <filter>mode["select"]=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['mode']['select']=="multi" and extra_output and "coverage" in extra_output</filter> <discover_datasets pattern="(?P<designation>.*)\/data_cov.csv" format="csv" directory="output/samples/" recurse="true" match_relative_path="true"/> </collection> <collection name="multi_split_cov" type="list" label="${tool.name} on ${on_string}: Coverage (split data) per sample (multi_split_cov)"> - <filter>mode["select"]=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['mode']['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="bam"</filter> <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_split_cov.csv" format="csv" directory="output/samples/" /> </collection> <collection name="multi_split_cov_sample" type="list" label="${tool.name} on ${on_string}: Coverage (split data) per sample (multi_split_cov_sample)"> - <filter>mode["select"]=="multi" and extra_output and "coverage" in extra_output</filter> - <discover_datasets pattern="(?P<designation>.*)\/data_split_cov.csv" format="csv" directory="output/samples/" recurse="true" match_relative_path="true"/> + <filter>input_type_select['mode']['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>input_type_select['input_type']=="bam"</filter> + <discover_datasets pattern="(?P<designation>.*)\/data_split_cov.csv" format="csv" directory="output/samples/" match_relative_path="true" recurse="true"/> </collection> <collection name="multi_contigs" type="list" label="${tool.name} on ${on_string}: Contigs"> - <filter>mode["select"]=="multi" and extra_output and "contigs" in extra_output</filter> + <filter>input_type_select['mode']['select']=="multi" and extra_output and "contigs" in extra_output</filter> <discover_datasets pattern="(?P<designation>.*).fa" format="fasta" directory="output/samples/" /> </collection> - + </xml> + <xml name="generate_sequence_features_extra_outputs_main"> + <!-- Single --> + <data name="single_cov" format="csv" from_work_dir="output/*_data_cov.csv" label="${tool.name} on ${on_string}: Coverage"> + <filter>mode['select']=="single" and extra_output and "coverage" in extra_output</filter> + </data> + <data name="single_split_cov" format="csv" from_work_dir="output/*_data_split_cov.csv" label="${tool.name} on ${on_string}: Coverage (split data)"> + <filter>mode['select']=="single" and extra_output and "coverage" in extra_output</filter> + </data> + <!-- Bam co aligned --> + <collection name="co_cov_bam" type="list" label="${tool.name} on ${on_string}: Coverage (co_cov)"> + <filter>mode['select']=="co" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="bam"</filter> + <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_cov\.csv" format="csv" directory="output/" /> + </collection> + <collection name="co_split_cov_bam" type="list" label="${tool.name} on ${on_string}: Coverage (split data) per sample"> + <filter>mode['select']=="co" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="bam"</filter> + <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_split_cov\.csv" format="csv" directory="output/" /> + </collection> + + <!-- Bam Multi aligned --> + <collection name="multi_cov_bam" type="list" label="${tool.name} on ${on_string}: Coverage (multi_cov)"> + <filter>mode['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="bam"</filter> + <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_cov.csv" format="csv" directory="output/samples/" /> + </collection> + <collection name="multi_cov_sample_bam" type="list" label="${tool.name} on ${on_string}: Coverage per sample"> + <filter>mode['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="bam"</filter> + <discover_datasets pattern="(?P<designation>.*)\/data_cov.csv" format="csv" directory="output/samples/" recurse="true" match_relative_path="true"/> + </collection> + <collection name="multi_split_cov_bam" type="list" label="${tool.name} on ${on_string}: Coverage (split data) per sample (multi_split_cov)"> + <filter>mode['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="bam"</filter> + <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_split_cov.csv" format="csv" directory="output/samples/" /> + </collection> + <collection name="multi_split_cov_sample_bam" type="list" label="${tool.name} on ${on_string}: Coverage (split data) per sample (multi_split_cov_sample)"> + <filter>mode['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="bam"</filter> + <discover_datasets pattern=".*\.bam_(?P<designation>.*)_data_split_cov.csv" format="csv" directory="output/samples/" /> + </collection> + <collection name="multi_contigs" type="list" label="${tool.name} on ${on_string}: Contigs"> + <filter>mode['select']=="multi" and extra_output and "contigs" in extra_output</filter> + <discover_datasets pattern="(?P<designation>.*).fa" format="fasta" directory="output/samples/" /> + </collection> + <!-- Txt co aligned --> + <data name="co_split_cov_txt" label="${tool.name} on ${on_string}: Coverage (split data) per sample (aemb)" from_work_dir="output/cov_split.csv" format="csv"> + <filter>mode['select']=="co" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="txt"</filter> + </data> + <data name="co_cov_txt" label="${tool.name} on ${on_string}: Coverage (aemb)" format="csv" from_work_dir="output/cov.csv"> + <filter>mode['select']=="co" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="txt"</filter> + </data> + <!-- Txt multi aligned --> + <collection name="multi_cov_txt" type="list" label="${tool.name} on ${on_string}: Coverage per sample (aemb)"> + <filter>mode['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select'] =="txt"</filter> + <discover_datasets pattern="(?P<designation>.*)\/data_cov.csv" format="csv" directory="output/samples/" recurse="true" match_relative_path="true"/> + </collection> + <collection name="multi_split_cov_txt" type="list" label="${tool.name} on ${on_string}: Coverage (split data) per sample (multi_split_cov) (aemb)"> + <filter>mode['select']=="multi" and extra_output and "coverage" in extra_output</filter> + <filter>mode['align_select']</filter> + <filter>mode['align_select']['align_select']=="txt"</filter> + <discover_datasets pattern="(?P<designation>.*)\/data_split_cov.csv" format="csv" directory="output/samples/" recurse="true" match_relative_path="true"/> + </collection> </xml> <xml name="train_output"> <data name="model" format="h5" from_work_dir="output/model.h5" label="${tool.name} on ${on_string}: Semi-supervised deep learning model" /> @@ -353,34 +468,37 @@ <data name="cannot" format="txt" from_work_dir="output/cannot/cannot.txt" label="${tool.name} on ${on_string}: Cannot-link constraints" /> </xml> <token name="@HELP_HEADER@"><![CDATA[ + What it does ============ SemiBin is a Semi-supervised siamese neural network for metagenomic binning - -]]></token> + ]]></token> <token name="@HELP_INPUT_FASTA@"><![CDATA[ - Contigs in fasta for 1 or several samples from single or co-assembly -]]></token> + ]]></token> <token name="@HELP_INPUT_BAM@"><![CDATA[ - BAM with reads mapping to the contigs -]]></token> + ]]></token> + <token name="@HELP_INPUT_STROBEALIGN@"><![CDATA[ +- TXT alignment files that are the output of strobealign-aemb + ]]></token> <token name="@HELP_CANNOT@"><![CDATA[ - Cannot-link constraints -]]></token> + ]]></token> <token name="@HELP_DATA@"><![CDATA[ - Training data and split training data for the model -]]></token> + ]]></token> <token name="@HELP_MODEL@"><![CDATA[ - Semi-supervised deep learning model -]]></token> + ]]></token> <token name="@HELP_BINS@"><![CDATA[ - Reconstructed bins after reclustering - Reconstructed bins before reclustering -]]></token> + ]]></token> <xml name="citations"> <citations> <citation type="doi">10.1038/s41467-022-29843-y</citation> </citations> </xml> -</macros> +</macros> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/strobealign_1.txt Tue Oct 28 08:17:27 2025 +0000 @@ -0,0 +1,400 @@ +S1:g1k_0_1 0.000000 +S1:g1k_0_2 0.000000 +S1:g1k_1_1 0.000000 +S1:g1k_1_2 0.000000 +S1:g1k_2_1 0.000000 +S1:g1k_2_2 0.000000 +S1:g1k_3_1 0.000000 +S1:g1k_3_2 0.000000 +S1:g1k_4_1 0.000000 +S1:g1k_4_2 0.000000 +S1:g1k_5_1 0.000000 +S1:g1k_5_2 0.000000 +S1:g1k_6_1 0.000000 +S1:g1k_6_2 0.000000 +S1:g1k_7_1 0.000000 +S1:g1k_7_2 0.000000 +S1:g1k_8_1 0.000000 +S1:g1k_8_2 0.000000 +S1:g1k_9_1 0.000000 +S1:g1k_9_2 0.000000 +S1:g2k_0_1 0.000000 +S1:g2k_0_2 0.000000 +S1:g2k_1_1 0.000000 +S1:g2k_1_2 0.000000 +S1:g2k_2_1 0.000000 +S1:g2k_2_2 0.000000 +S1:g2k_3_1 0.000000 +S1:g2k_3_2 0.000000 +S1:g2k_4_1 0.000000 +S1:g2k_4_2 0.000000 +S1:g2k_5_1 0.000000 +S1:g2k_5_2 0.000000 +S1:g2k_6_1 0.000000 +S1:g2k_6_2 0.000000 +S1:g2k_7_1 0.000000 +S1:g2k_7_2 0.000000 +S1:g2k_8_1 0.000000 +S1:g2k_8_2 0.000000 +S1:g2k_9_1 0.000000 +S1:g2k_9_2 0.000000 +S2:g1k_0_1 0.000000 +S2:g1k_0_2 0.000000 +S2:g1k_1_1 0.000000 +S2:g1k_1_2 0.000000 +S2:g1k_2_1 0.000000 +S2:g1k_2_2 0.000000 +S2:g1k_3_1 0.000000 +S2:g1k_3_2 0.000000 +S2:g1k_4_1 0.000000 +S2:g1k_4_2 0.000000 +S2:g1k_5_1 0.000000 +S2:g1k_5_2 0.000000 +S2:g1k_6_1 0.000000 +S2:g1k_6_2 0.000000 +S2:g1k_7_1 0.000000 +S2:g1k_7_2 0.000000 +S2:g1k_8_1 0.000000 +S2:g1k_8_2 0.000000 +S2:g1k_9_1 0.000000 +S2:g1k_9_2 0.000000 +S2:g2k_0_1 0.000000 +S2:g2k_0_2 0.000000 +S2:g2k_1_1 0.000000 +S2:g2k_1_2 0.000000 +S2:g2k_2_1 0.000000 +S2:g2k_2_2 0.000000 +S2:g2k_3_1 0.000000 +S2:g2k_3_2 0.000000 +S2:g2k_4_1 0.000000 +S2:g2k_4_2 0.000000 +S2:g2k_5_1 0.000000 +S2:g2k_5_2 0.000000 +S2:g2k_6_1 0.000000 +S2:g2k_6_2 0.000000 +S2:g2k_7_1 0.000000 +S2:g2k_7_2 0.000000 +S2:g2k_8_1 0.000000 +S2:g2k_8_2 0.000000 +S2:g2k_9_1 0.000000 +S2:g2k_9_2 0.000000 +S3:g1k_0_1 0.000000 +S3:g1k_0_2 0.000000 +S3:g1k_1_1 0.000000 +S3:g1k_1_2 0.000000 +S3:g1k_2_1 0.000000 +S3:g1k_2_2 0.000000 +S3:g1k_3_1 0.000000 +S3:g1k_3_2 0.000000 +S3:g1k_4_1 0.000000 +S3:g1k_4_2 0.000000 +S3:g1k_5_1 0.000000 +S3:g1k_5_2 0.000000 +S3:g1k_6_1 0.000000 +S3:g1k_6_2 0.000000 +S3:g1k_7_1 0.000000 +S3:g1k_7_2 0.000000 +S3:g1k_8_1 0.000000 +S3:g1k_8_2 0.000000 +S3:g1k_9_1 0.000000 +S3:g1k_9_2 0.000000 +S3:g2k_0_1 0.000000 +S3:g2k_0_2 0.000000 +S3:g2k_1_1 0.000000 +S3:g2k_1_2 0.000000 +S3:g2k_2_1 0.000000 +S3:g2k_2_2 0.000000 +S3:g2k_3_1 0.000000 +S3:g2k_3_2 0.000000 +S3:g2k_4_1 0.000000 +S3:g2k_4_2 0.000000 +S3:g2k_5_1 0.000000 +S3:g2k_5_2 0.000000 +S3:g2k_6_1 0.000000 +S3:g2k_6_2 0.000000 +S3:g2k_7_1 0.000000 +S3:g2k_7_2 0.000000 +S3:g2k_8_1 0.000000 +S3:g2k_8_2 0.000000 +S3:g2k_9_1 0.000000 +S3:g2k_9_2 0.000000 +S4:g1k_0_1 0.000000 +S4:g1k_0_2 0.000000 +S4:g1k_1_1 0.000000 +S4:g1k_1_2 0.000000 +S4:g1k_2_1 0.000000 +S4:g1k_2_2 0.000000 +S4:g1k_3_1 0.000000 +S4:g1k_3_2 0.000000 +S4:g1k_4_1 0.000000 +S4:g1k_4_2 0.000000 +S4:g1k_5_1 0.000000 +S4:g1k_5_2 0.000000 +S4:g1k_6_1 0.000000 +S4:g1k_6_2 0.000000 +S4:g1k_7_1 0.000000 +S4:g1k_7_2 0.000000 +S4:g1k_8_1 0.000000 +S4:g1k_8_2 0.000000 +S4:g1k_9_1 0.000000 +S4:g1k_9_2 0.000000 +S4:g2k_0_1 0.000000 +S4:g2k_0_2 0.000000 +S4:g2k_1_1 0.000000 +S4:g2k_1_2 0.000000 +S4:g2k_2_1 0.000000 +S4:g2k_2_2 0.000000 +S4:g2k_3_1 0.000000 +S4:g2k_3_2 0.000000 +S4:g2k_4_1 0.000000 +S4:g2k_4_2 0.000000 +S4:g2k_5_1 0.000000 +S4:g2k_5_2 0.000000 +S4:g2k_6_1 0.000000 +S4:g2k_6_2 0.000000 +S4:g2k_7_1 0.000000 +S4:g2k_7_2 0.000000 +S4:g2k_8_1 0.000000 +S4:g2k_8_2 0.000000 +S4:g2k_9_1 0.000000 +S4:g2k_9_2 0.000000 +S5:g1k_0_1 0.000000 +S5:g1k_0_2 0.000000 +S5:g1k_1_1 0.000000 +S5:g1k_1_2 0.000000 +S5:g1k_2_1 0.000000 +S5:g1k_2_2 0.000000 +S5:g1k_3_1 0.000000 +S5:g1k_3_2 0.000000 +S5:g1k_4_1 0.000000 +S5:g1k_4_2 0.000000 +S5:g1k_5_1 0.000000 +S5:g1k_5_2 0.000000 +S5:g1k_6_1 0.000000 +S5:g1k_6_2 0.000000 +S5:g1k_7_1 0.000000 +S5:g1k_7_2 0.000000 +S5:g1k_8_1 0.000000 +S5:g1k_8_2 0.000000 +S5:g1k_9_1 0.000000 +S5:g1k_9_2 0.000000 +S5:g2k_0_1 0.000000 +S5:g2k_0_2 0.000000 +S5:g2k_1_1 0.000000 +S5:g2k_1_2 0.000000 +S5:g2k_2_1 0.000000 +S5:g2k_2_2 0.000000 +S5:g2k_3_1 0.000000 +S5:g2k_3_2 0.000000 +S5:g2k_4_1 0.000000 +S5:g2k_4_2 0.000000 +S5:g2k_5_1 0.000000 +S5:g2k_5_2 0.000000 +S5:g2k_6_1 0.000000 +S5:g2k_6_2 0.000000 +S5:g2k_7_1 0.000000 +S5:g2k_7_2 0.000000 +S5:g2k_8_1 0.000000 +S5:g2k_8_2 0.000000 +S5:g2k_9_1 0.000000 +S5:g2k_9_2 0.000000 +S6:g1k_0_1 0.000000 +S6:g1k_0_2 0.000000 +S6:g1k_1_1 0.000000 +S6:g1k_1_2 0.000000 +S6:g1k_2_1 0.000000 +S6:g1k_2_2 0.000000 +S6:g1k_3_1 0.000000 +S6:g1k_3_2 0.000000 +S6:g1k_4_1 0.000000 +S6:g1k_4_2 0.000000 +S6:g1k_5_1 0.000000 +S6:g1k_5_2 0.000000 +S6:g1k_6_1 0.000000 +S6:g1k_6_2 0.000000 +S6:g1k_7_1 0.000000 +S6:g1k_7_2 0.000000 +S6:g1k_8_1 0.000000 +S6:g1k_8_2 0.000000 +S6:g1k_9_1 0.000000 +S6:g1k_9_2 0.000000 +S6:g2k_0_1 0.000000 +S6:g2k_0_2 0.000000 +S6:g2k_1_1 0.000000 +S6:g2k_1_2 0.000000 +S6:g2k_2_1 0.000000 +S6:g2k_2_2 0.000000 +S6:g2k_3_1 0.000000 +S6:g2k_3_2 0.000000 +S6:g2k_4_1 0.000000 +S6:g2k_4_2 0.000000 +S6:g2k_5_1 0.000000 +S6:g2k_5_2 0.000000 +S6:g2k_6_1 0.000000 +S6:g2k_6_2 0.000000 +S6:g2k_7_1 0.000000 +S6:g2k_7_2 0.000000 +S6:g2k_8_1 0.000000 +S6:g2k_8_2 0.000000 +S6:g2k_9_1 0.000000 +S6:g2k_9_2 0.000000 +S7:g1k_0_1 0.000000 +S7:g1k_0_2 0.000000 +S7:g1k_1_1 0.000000 +S7:g1k_1_2 0.000000 +S7:g1k_2_1 0.000000 +S7:g1k_2_2 0.000000 +S7:g1k_3_1 0.000000 +S7:g1k_3_2 0.000000 +S7:g1k_4_1 0.000000 +S7:g1k_4_2 0.000000 +S7:g1k_5_1 0.000000 +S7:g1k_5_2 0.000000 +S7:g1k_6_1 0.000000 +S7:g1k_6_2 0.000000 +S7:g1k_7_1 0.000000 +S7:g1k_7_2 0.000000 +S7:g1k_8_1 0.000000 +S7:g1k_8_2 0.000000 +S7:g1k_9_1 0.000000 +S7:g1k_9_2 0.000000 +S7:g2k_0_1 0.000000 +S7:g2k_0_2 0.000000 +S7:g2k_1_1 0.000000 +S7:g2k_1_2 0.000000 +S7:g2k_2_1 0.000000 +S7:g2k_2_2 0.000000 +S7:g2k_3_1 0.000000 +S7:g2k_3_2 0.000000 +S7:g2k_4_1 0.000000 +S7:g2k_4_2 0.000000 +S7:g2k_5_1 0.000000 +S7:g2k_5_2 0.000000 +S7:g2k_6_1 0.000000 +S7:g2k_6_2 0.000000 +S7:g2k_7_1 0.000000 +S7:g2k_7_2 0.000000 +S7:g2k_8_1 0.000000 +S7:g2k_8_2 0.000000 +S7:g2k_9_1 0.000000 +S7:g2k_9_2 0.000000 +S8:g1k_0_1 0.000000 +S8:g1k_0_2 0.000000 +S8:g1k_1_1 0.000000 +S8:g1k_1_2 0.000000 +S8:g1k_2_1 0.000000 +S8:g1k_2_2 0.000000 +S8:g1k_3_1 0.000000 +S8:g1k_3_2 0.000000 +S8:g1k_4_1 0.000000 +S8:g1k_4_2 0.000000 +S8:g1k_5_1 0.000000 +S8:g1k_5_2 0.000000 +S8:g1k_6_1 0.000000 +S8:g1k_6_2 0.000000 +S8:g1k_7_1 0.000000 +S8:g1k_7_2 0.000000 +S8:g1k_8_1 0.000000 +S8:g1k_8_2 0.000000 +S8:g1k_9_1 0.000000 +S8:g1k_9_2 0.000000 +S8:g2k_0_1 0.000000 +S8:g2k_0_2 0.000000 +S8:g2k_1_1 0.000000 +S8:g2k_1_2 0.000000 +S8:g2k_2_1 0.000000 +S8:g2k_2_2 0.000000 +S8:g2k_3_1 0.000000 +S8:g2k_3_2 0.000000 +S8:g2k_4_1 0.000000 +S8:g2k_4_2 0.000000 +S8:g2k_5_1 0.000000 +S8:g2k_5_2 0.000000 +S8:g2k_6_1 0.000000 +S8:g2k_6_2 0.000000 +S8:g2k_7_1 0.000000 +S8:g2k_7_2 0.000000 +S8:g2k_8_1 0.000000 +S8:g2k_8_2 0.000000 +S8:g2k_9_1 0.000000 +S8:g2k_9_2 0.000000 +S9:g1k_0_1 0.000000 +S9:g1k_0_2 0.000000 +S9:g1k_1_1 0.000000 +S9:g1k_1_2 0.000000 +S9:g1k_2_1 0.000000 +S9:g1k_2_2 0.000000 +S9:g1k_3_1 0.000000 +S9:g1k_3_2 0.000000 +S9:g1k_4_1 0.000000 +S9:g1k_4_2 0.000000 +S9:g1k_5_1 0.000000 +S9:g1k_5_2 0.000000 +S9:g1k_6_1 0.000000 +S9:g1k_6_2 0.000000 +S9:g1k_7_1 0.000000 +S9:g1k_7_2 0.000000 +S9:g1k_8_1 0.000000 +S9:g1k_8_2 0.000000 +S9:g1k_9_1 0.000000 +S9:g1k_9_2 0.000000 +S9:g2k_0_1 0.000000 +S9:g2k_0_2 0.000000 +S9:g2k_1_1 0.000000 +S9:g2k_1_2 0.000000 +S9:g2k_2_1 0.000000 +S9:g2k_2_2 0.000000 +S9:g2k_3_1 0.000000 +S9:g2k_3_2 0.000000 +S9:g2k_4_1 0.000000 +S9:g2k_4_2 0.000000 +S9:g2k_5_1 0.000000 +S9:g2k_5_2 0.000000 +S9:g2k_6_1 0.000000 +S9:g2k_6_2 0.000000 +S9:g2k_7_1 0.000000 +S9:g2k_7_2 0.000000 +S9:g2k_8_1 0.000000 +S9:g2k_8_2 0.000000 +S9:g2k_9_1 0.000000 +S9:g2k_9_2 0.000000 +S10:g1k_0_1 0.000000 +S10:g1k_0_2 0.000000 +S10:g1k_1_1 0.000000 +S10:g1k_1_2 0.000000 +S10:g1k_2_1 0.000000 +S10:g1k_2_2 0.000000 +S10:g1k_3_1 0.000000 +S10:g1k_3_2 0.000000 +S10:g1k_4_1 0.000000 +S10:g1k_4_2 0.000000 +S10:g1k_5_1 0.000000 +S10:g1k_5_2 0.000000 +S10:g1k_6_1 0.000000 +S10:g1k_6_2 0.000000 +S10:g1k_7_1 0.000000 +S10:g1k_7_2 0.000000 +S10:g1k_8_1 0.000000 +S10:g1k_8_2 0.000000 +S10:g1k_9_1 0.000000 +S10:g1k_9_2 0.000000 +S10:g2k_0_1 0.000000 +S10:g2k_0_2 0.000000 +S10:g2k_1_1 0.000000 +S10:g2k_1_2 0.000000 +S10:g2k_2_1 0.000000 +S10:g2k_2_2 0.000000 +S10:g2k_3_1 0.000000 +S10:g2k_3_2 0.000000 +S10:g2k_4_1 0.000000 +S10:g2k_4_2 0.000000 +S10:g2k_5_1 0.000000 +S10:g2k_5_2 0.000000 +S10:g2k_6_1 0.000000 +S10:g2k_6_2 0.000000 +S10:g2k_7_1 0.000000 +S10:g2k_7_2 0.000000 +S10:g2k_8_1 0.000000 +S10:g2k_8_2 0.000000 +S10:g2k_9_1 0.000000 +S10:g2k_9_2 0.000000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/strobealign_2.txt Tue Oct 28 08:17:27 2025 +0000 @@ -0,0 +1,400 @@ +S1:g1k_0_1 0.000000 +S1:g1k_0_2 0.000000 +S1:g1k_1_1 0.000000 +S1:g1k_1_2 0.000000 +S1:g1k_2_1 0.000000 +S1:g1k_2_2 0.000000 +S1:g1k_3_1 0.000000 +S1:g1k_3_2 0.000000 +S1:g1k_4_1 0.000000 +S1:g1k_4_2 0.000000 +S1:g1k_5_1 0.000000 +S1:g1k_5_2 0.000000 +S1:g1k_6_1 0.000000 +S1:g1k_6_2 0.000000 +S1:g1k_7_1 0.000000 +S1:g1k_7_2 0.000000 +S1:g1k_8_1 0.000000 +S1:g1k_8_2 0.000000 +S1:g1k_9_1 0.000000 +S1:g1k_9_2 0.000000 +S1:g2k_0_1 0.000000 +S1:g2k_0_2 0.000000 +S1:g2k_1_1 0.000000 +S1:g2k_1_2 0.000000 +S1:g2k_2_1 0.000000 +S1:g2k_2_2 0.000000 +S1:g2k_3_1 0.000000 +S1:g2k_3_2 0.000000 +S1:g2k_4_1 0.000000 +S1:g2k_4_2 0.000000 +S1:g2k_5_1 0.000000 +S1:g2k_5_2 0.000000 +S1:g2k_6_1 0.000000 +S1:g2k_6_2 0.000000 +S1:g2k_7_1 0.000000 +S1:g2k_7_2 0.000000 +S1:g2k_8_1 0.000000 +S1:g2k_8_2 0.000000 +S1:g2k_9_1 0.000000 +S1:g2k_9_2 0.000000 +S2:g1k_0_1 0.000000 +S2:g1k_0_2 0.000000 +S2:g1k_1_1 0.000000 +S2:g1k_1_2 0.000000 +S2:g1k_2_1 0.000000 +S2:g1k_2_2 0.000000 +S2:g1k_3_1 0.000000 +S2:g1k_3_2 0.000000 +S2:g1k_4_1 0.000000 +S2:g1k_4_2 0.000000 +S2:g1k_5_1 0.000000 +S2:g1k_5_2 0.000000 +S2:g1k_6_1 0.000000 +S2:g1k_6_2 0.000000 +S2:g1k_7_1 0.000000 +S2:g1k_7_2 0.000000 +S2:g1k_8_1 0.000000 +S2:g1k_8_2 0.000000 +S2:g1k_9_1 0.000000 +S2:g1k_9_2 0.000000 +S2:g2k_0_1 0.000000 +S2:g2k_0_2 0.000000 +S2:g2k_1_1 0.000000 +S2:g2k_1_2 0.000000 +S2:g2k_2_1 0.000000 +S2:g2k_2_2 0.000000 +S2:g2k_3_1 0.000000 +S2:g2k_3_2 0.000000 +S2:g2k_4_1 0.000000 +S2:g2k_4_2 0.000000 +S2:g2k_5_1 0.000000 +S2:g2k_5_2 0.000000 +S2:g2k_6_1 0.000000 +S2:g2k_6_2 0.000000 +S2:g2k_7_1 0.000000 +S2:g2k_7_2 0.000000 +S2:g2k_8_1 0.000000 +S2:g2k_8_2 0.000000 +S2:g2k_9_1 0.000000 +S2:g2k_9_2 0.000000 +S3:g1k_0_1 0.000000 +S3:g1k_0_2 0.000000 +S3:g1k_1_1 0.000000 +S3:g1k_1_2 0.000000 +S3:g1k_2_1 0.000000 +S3:g1k_2_2 0.000000 +S3:g1k_3_1 0.000000 +S3:g1k_3_2 0.000000 +S3:g1k_4_1 0.000000 +S3:g1k_4_2 0.000000 +S3:g1k_5_1 0.000000 +S3:g1k_5_2 0.000000 +S3:g1k_6_1 0.000000 +S3:g1k_6_2 0.000000 +S3:g1k_7_1 0.000000 +S3:g1k_7_2 0.000000 +S3:g1k_8_1 0.000000 +S3:g1k_8_2 0.000000 +S3:g1k_9_1 0.000000 +S3:g1k_9_2 0.000000 +S3:g2k_0_1 0.000000 +S3:g2k_0_2 0.000000 +S3:g2k_1_1 0.000000 +S3:g2k_1_2 0.000000 +S3:g2k_2_1 0.000000 +S3:g2k_2_2 0.000000 +S3:g2k_3_1 0.000000 +S3:g2k_3_2 0.000000 +S3:g2k_4_1 0.000000 +S3:g2k_4_2 0.000000 +S3:g2k_5_1 0.000000 +S3:g2k_5_2 0.000000 +S3:g2k_6_1 0.000000 +S3:g2k_6_2 0.000000 +S3:g2k_7_1 0.000000 +S3:g2k_7_2 0.000000 +S3:g2k_8_1 0.000000 +S3:g2k_8_2 0.000000 +S3:g2k_9_1 0.000000 +S3:g2k_9_2 0.000000 +S4:g1k_0_1 0.000000 +S4:g1k_0_2 0.000000 +S4:g1k_1_1 0.000000 +S4:g1k_1_2 0.000000 +S4:g1k_2_1 0.000000 +S4:g1k_2_2 0.000000 +S4:g1k_3_1 0.000000 +S4:g1k_3_2 0.000000 +S4:g1k_4_1 0.000000 +S4:g1k_4_2 0.000000 +S4:g1k_5_1 0.000000 +S4:g1k_5_2 0.000000 +S4:g1k_6_1 0.000000 +S4:g1k_6_2 0.000000 +S4:g1k_7_1 0.000000 +S4:g1k_7_2 0.000000 +S4:g1k_8_1 0.000000 +S4:g1k_8_2 0.000000 +S4:g1k_9_1 0.000000 +S4:g1k_9_2 0.000000 +S4:g2k_0_1 0.000000 +S4:g2k_0_2 0.000000 +S4:g2k_1_1 0.000000 +S4:g2k_1_2 0.000000 +S4:g2k_2_1 0.000000 +S4:g2k_2_2 0.000000 +S4:g2k_3_1 0.000000 +S4:g2k_3_2 0.000000 +S4:g2k_4_1 0.000000 +S4:g2k_4_2 0.000000 +S4:g2k_5_1 0.000000 +S4:g2k_5_2 0.000000 +S4:g2k_6_1 0.000000 +S4:g2k_6_2 0.000000 +S4:g2k_7_1 0.000000 +S4:g2k_7_2 0.000000 +S4:g2k_8_1 0.000000 +S4:g2k_8_2 0.000000 +S4:g2k_9_1 0.000000 +S4:g2k_9_2 0.000000 +S5:g1k_0_1 0.000000 +S5:g1k_0_2 0.000000 +S5:g1k_1_1 0.000000 +S5:g1k_1_2 0.000000 +S5:g1k_2_1 0.000000 +S5:g1k_2_2 0.000000 +S5:g1k_3_1 0.000000 +S5:g1k_3_2 0.000000 +S5:g1k_4_1 0.000000 +S5:g1k_4_2 0.000000 +S5:g1k_5_1 0.000000 +S5:g1k_5_2 0.000000 +S5:g1k_6_1 0.000000 +S5:g1k_6_2 0.000000 +S5:g1k_7_1 0.000000 +S5:g1k_7_2 0.000000 +S5:g1k_8_1 0.000000 +S5:g1k_8_2 0.000000 +S5:g1k_9_1 0.000000 +S5:g1k_9_2 0.000000 +S5:g2k_0_1 0.000000 +S5:g2k_0_2 0.000000 +S5:g2k_1_1 0.000000 +S5:g2k_1_2 0.000000 +S5:g2k_2_1 0.000000 +S5:g2k_2_2 0.000000 +S5:g2k_3_1 0.000000 +S5:g2k_3_2 0.000000 +S5:g2k_4_1 0.000000 +S5:g2k_4_2 0.000000 +S5:g2k_5_1 0.000000 +S5:g2k_5_2 0.000000 +S5:g2k_6_1 0.000000 +S5:g2k_6_2 0.000000 +S5:g2k_7_1 0.000000 +S5:g2k_7_2 0.000000 +S5:g2k_8_1 0.000000 +S5:g2k_8_2 0.000000 +S5:g2k_9_1 0.000000 +S5:g2k_9_2 0.000000 +S6:g1k_0_1 0.000000 +S6:g1k_0_2 0.000000 +S6:g1k_1_1 0.000000 +S6:g1k_1_2 0.000000 +S6:g1k_2_1 0.000000 +S6:g1k_2_2 0.000000 +S6:g1k_3_1 0.000000 +S6:g1k_3_2 0.000000 +S6:g1k_4_1 0.000000 +S6:g1k_4_2 0.000000 +S6:g1k_5_1 0.000000 +S6:g1k_5_2 0.000000 +S6:g1k_6_1 0.000000 +S6:g1k_6_2 0.000000 +S6:g1k_7_1 0.000000 +S6:g1k_7_2 0.000000 +S6:g1k_8_1 0.000000 +S6:g1k_8_2 0.000000 +S6:g1k_9_1 0.000000 +S6:g1k_9_2 0.000000 +S6:g2k_0_1 0.000000 +S6:g2k_0_2 0.000000 +S6:g2k_1_1 0.000000 +S6:g2k_1_2 0.000000 +S6:g2k_2_1 0.000000 +S6:g2k_2_2 0.000000 +S6:g2k_3_1 0.000000 +S6:g2k_3_2 0.000000 +S6:g2k_4_1 0.000000 +S6:g2k_4_2 0.000000 +S6:g2k_5_1 0.000000 +S6:g2k_5_2 0.000000 +S6:g2k_6_1 0.000000 +S6:g2k_6_2 0.000000 +S6:g2k_7_1 0.000000 +S6:g2k_7_2 0.000000 +S6:g2k_8_1 0.000000 +S6:g2k_8_2 0.000000 +S6:g2k_9_1 0.000000 +S6:g2k_9_2 0.000000 +S7:g1k_0_1 0.000000 +S7:g1k_0_2 0.000000 +S7:g1k_1_1 0.000000 +S7:g1k_1_2 0.000000 +S7:g1k_2_1 0.000000 +S7:g1k_2_2 0.000000 +S7:g1k_3_1 0.000000 +S7:g1k_3_2 0.000000 +S7:g1k_4_1 0.000000 +S7:g1k_4_2 0.000000 +S7:g1k_5_1 0.000000 +S7:g1k_5_2 0.000000 +S7:g1k_6_1 0.000000 +S7:g1k_6_2 0.000000 +S7:g1k_7_1 0.000000 +S7:g1k_7_2 0.000000 +S7:g1k_8_1 0.000000 +S7:g1k_8_2 0.000000 +S7:g1k_9_1 0.000000 +S7:g1k_9_2 0.000000 +S7:g2k_0_1 0.000000 +S7:g2k_0_2 0.000000 +S7:g2k_1_1 0.000000 +S7:g2k_1_2 0.000000 +S7:g2k_2_1 0.000000 +S7:g2k_2_2 0.000000 +S7:g2k_3_1 0.000000 +S7:g2k_3_2 0.000000 +S7:g2k_4_1 0.000000 +S7:g2k_4_2 0.000000 +S7:g2k_5_1 0.000000 +S7:g2k_5_2 0.000000 +S7:g2k_6_1 0.000000 +S7:g2k_6_2 0.000000 +S7:g2k_7_1 0.000000 +S7:g2k_7_2 0.000000 +S7:g2k_8_1 0.000000 +S7:g2k_8_2 0.000000 +S7:g2k_9_1 0.000000 +S7:g2k_9_2 0.000000 +S8:g1k_0_1 0.000000 +S8:g1k_0_2 0.000000 +S8:g1k_1_1 0.000000 +S8:g1k_1_2 0.000000 +S8:g1k_2_1 0.000000 +S8:g1k_2_2 0.000000 +S8:g1k_3_1 0.000000 +S8:g1k_3_2 0.000000 +S8:g1k_4_1 0.000000 +S8:g1k_4_2 0.000000 +S8:g1k_5_1 0.000000 +S8:g1k_5_2 0.000000 +S8:g1k_6_1 0.000000 +S8:g1k_6_2 0.000000 +S8:g1k_7_1 0.000000 +S8:g1k_7_2 0.000000 +S8:g1k_8_1 0.000000 +S8:g1k_8_2 0.000000 +S8:g1k_9_1 0.000000 +S8:g1k_9_2 0.000000 +S8:g2k_0_1 0.000000 +S8:g2k_0_2 0.000000 +S8:g2k_1_1 0.000000 +S8:g2k_1_2 0.000000 +S8:g2k_2_1 0.000000 +S8:g2k_2_2 0.000000 +S8:g2k_3_1 0.000000 +S8:g2k_3_2 0.000000 +S8:g2k_4_1 0.000000 +S8:g2k_4_2 0.000000 +S8:g2k_5_1 0.000000 +S8:g2k_5_2 0.000000 +S8:g2k_6_1 0.000000 +S8:g2k_6_2 0.000000 +S8:g2k_7_1 0.000000 +S8:g2k_7_2 0.000000 +S8:g2k_8_1 0.000000 +S8:g2k_8_2 0.000000 +S8:g2k_9_1 0.000000 +S8:g2k_9_2 0.000000 +S9:g1k_0_1 0.000000 +S9:g1k_0_2 0.000000 +S9:g1k_1_1 0.000000 +S9:g1k_1_2 0.000000 +S9:g1k_2_1 0.000000 +S9:g1k_2_2 0.000000 +S9:g1k_3_1 0.000000 +S9:g1k_3_2 0.000000 +S9:g1k_4_1 0.000000 +S9:g1k_4_2 0.000000 +S9:g1k_5_1 0.000000 +S9:g1k_5_2 0.000000 +S9:g1k_6_1 0.000000 +S9:g1k_6_2 0.000000 +S9:g1k_7_1 0.000000 +S9:g1k_7_2 0.000000 +S9:g1k_8_1 0.000000 +S9:g1k_8_2 0.000000 +S9:g1k_9_1 0.000000 +S9:g1k_9_2 0.000000 +S9:g2k_0_1 0.000000 +S9:g2k_0_2 0.000000 +S9:g2k_1_1 0.000000 +S9:g2k_1_2 0.000000 +S9:g2k_2_1 0.000000 +S9:g2k_2_2 0.000000 +S9:g2k_3_1 0.000000 +S9:g2k_3_2 0.000000 +S9:g2k_4_1 0.000000 +S9:g2k_4_2 0.000000 +S9:g2k_5_1 0.000000 +S9:g2k_5_2 0.000000 +S9:g2k_6_1 0.000000 +S9:g2k_6_2 0.000000 +S9:g2k_7_1 0.000000 +S9:g2k_7_2 0.000000 +S9:g2k_8_1 0.000000 +S9:g2k_8_2 0.000000 +S9:g2k_9_1 0.000000 +S9:g2k_9_2 0.000000 +S10:g1k_0_1 0.000000 +S10:g1k_0_2 0.000000 +S10:g1k_1_1 0.000000 +S10:g1k_1_2 0.000000 +S10:g1k_2_1 0.000000 +S10:g1k_2_2 0.000000 +S10:g1k_3_1 0.000000 +S10:g1k_3_2 0.000000 +S10:g1k_4_1 0.000000 +S10:g1k_4_2 0.000000 +S10:g1k_5_1 0.000000 +S10:g1k_5_2 0.000000 +S10:g1k_6_1 0.000000 +S10:g1k_6_2 0.000000 +S10:g1k_7_1 0.000000 +S10:g1k_7_2 0.000000 +S10:g1k_8_1 0.000000 +S10:g1k_8_2 0.000000 +S10:g1k_9_1 0.000000 +S10:g1k_9_2 0.000000 +S10:g2k_0_1 0.000000 +S10:g2k_0_2 0.000000 +S10:g2k_1_1 0.000000 +S10:g2k_1_2 0.000000 +S10:g2k_2_1 0.000000 +S10:g2k_2_2 0.000000 +S10:g2k_3_1 0.000000 +S10:g2k_3_2 0.000000 +S10:g2k_4_1 0.000000 +S10:g2k_4_2 0.000000 +S10:g2k_5_1 0.000000 +S10:g2k_5_2 0.000000 +S10:g2k_6_1 0.000000 +S10:g2k_6_2 0.000000 +S10:g2k_7_1 0.000000 +S10:g2k_7_2 0.000000 +S10:g2k_8_1 0.000000 +S10:g2k_8_2 0.000000 +S10:g2k_9_1 0.000000 +S10:g2k_9_2 0.000000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/strobealign_3.txt Tue Oct 28 08:17:27 2025 +0000 @@ -0,0 +1,400 @@ +S1:g1k_0_1 0.000000 +S1:g1k_0_2 0.000000 +S1:g1k_1_1 0.000000 +S1:g1k_1_2 0.000000 +S1:g1k_2_1 0.000000 +S1:g1k_2_2 0.000000 +S1:g1k_3_1 0.000000 +S1:g1k_3_2 0.000000 +S1:g1k_4_1 0.000000 +S1:g1k_4_2 0.000000 +S1:g1k_5_1 0.000000 +S1:g1k_5_2 0.000000 +S1:g1k_6_1 0.000000 +S1:g1k_6_2 0.000000 +S1:g1k_7_1 0.000000 +S1:g1k_7_2 0.000000 +S1:g1k_8_1 0.000000 +S1:g1k_8_2 0.000000 +S1:g1k_9_1 0.000000 +S1:g1k_9_2 0.000000 +S1:g2k_0_1 0.000000 +S1:g2k_0_2 0.000000 +S1:g2k_1_1 0.000000 +S1:g2k_1_2 0.000000 +S1:g2k_2_1 0.000000 +S1:g2k_2_2 0.000000 +S1:g2k_3_1 0.000000 +S1:g2k_3_2 0.000000 +S1:g2k_4_1 0.000000 +S1:g2k_4_2 0.000000 +S1:g2k_5_1 0.000000 +S1:g2k_5_2 0.000000 +S1:g2k_6_1 0.000000 +S1:g2k_6_2 0.000000 +S1:g2k_7_1 0.000000 +S1:g2k_7_2 0.000000 +S1:g2k_8_1 0.000000 +S1:g2k_8_2 0.000000 +S1:g2k_9_1 0.000000 +S1:g2k_9_2 0.000000 +S2:g1k_0_1 0.000000 +S2:g1k_0_2 0.000000 +S2:g1k_1_1 0.000000 +S2:g1k_1_2 0.000000 +S2:g1k_2_1 0.000000 +S2:g1k_2_2 0.000000 +S2:g1k_3_1 0.000000 +S2:g1k_3_2 0.000000 +S2:g1k_4_1 0.000000 +S2:g1k_4_2 0.000000 +S2:g1k_5_1 0.000000 +S2:g1k_5_2 0.000000 +S2:g1k_6_1 0.000000 +S2:g1k_6_2 0.000000 +S2:g1k_7_1 0.000000 +S2:g1k_7_2 0.000000 +S2:g1k_8_1 0.000000 +S2:g1k_8_2 0.000000 +S2:g1k_9_1 0.000000 +S2:g1k_9_2 0.000000 +S2:g2k_0_1 0.000000 +S2:g2k_0_2 0.000000 +S2:g2k_1_1 0.000000 +S2:g2k_1_2 0.000000 +S2:g2k_2_1 0.000000 +S2:g2k_2_2 0.000000 +S2:g2k_3_1 0.000000 +S2:g2k_3_2 0.000000 +S2:g2k_4_1 0.000000 +S2:g2k_4_2 0.000000 +S2:g2k_5_1 0.000000 +S2:g2k_5_2 0.000000 +S2:g2k_6_1 0.000000 +S2:g2k_6_2 0.000000 +S2:g2k_7_1 0.000000 +S2:g2k_7_2 0.000000 +S2:g2k_8_1 0.000000 +S2:g2k_8_2 0.000000 +S2:g2k_9_1 0.000000 +S2:g2k_9_2 0.000000 +S3:g1k_0_1 0.000000 +S3:g1k_0_2 0.000000 +S3:g1k_1_1 0.000000 +S3:g1k_1_2 0.000000 +S3:g1k_2_1 0.000000 +S3:g1k_2_2 0.000000 +S3:g1k_3_1 0.000000 +S3:g1k_3_2 0.000000 +S3:g1k_4_1 0.000000 +S3:g1k_4_2 0.000000 +S3:g1k_5_1 0.000000 +S3:g1k_5_2 0.000000 +S3:g1k_6_1 0.000000 +S3:g1k_6_2 0.000000 +S3:g1k_7_1 0.000000 +S3:g1k_7_2 0.000000 +S3:g1k_8_1 0.000000 +S3:g1k_8_2 0.000000 +S3:g1k_9_1 0.000000 +S3:g1k_9_2 0.000000 +S3:g2k_0_1 0.000000 +S3:g2k_0_2 0.000000 +S3:g2k_1_1 0.000000 +S3:g2k_1_2 0.000000 +S3:g2k_2_1 0.000000 +S3:g2k_2_2 0.000000 +S3:g2k_3_1 0.000000 +S3:g2k_3_2 0.000000 +S3:g2k_4_1 0.000000 +S3:g2k_4_2 0.000000 +S3:g2k_5_1 0.000000 +S3:g2k_5_2 0.000000 +S3:g2k_6_1 0.000000 +S3:g2k_6_2 0.000000 +S3:g2k_7_1 0.000000 +S3:g2k_7_2 0.000000 +S3:g2k_8_1 0.000000 +S3:g2k_8_2 0.000000 +S3:g2k_9_1 0.000000 +S3:g2k_9_2 0.000000 +S4:g1k_0_1 0.000000 +S4:g1k_0_2 0.000000 +S4:g1k_1_1 0.000000 +S4:g1k_1_2 0.000000 +S4:g1k_2_1 0.000000 +S4:g1k_2_2 0.000000 +S4:g1k_3_1 0.000000 +S4:g1k_3_2 0.000000 +S4:g1k_4_1 0.000000 +S4:g1k_4_2 0.000000 +S4:g1k_5_1 0.000000 +S4:g1k_5_2 0.000000 +S4:g1k_6_1 0.000000 +S4:g1k_6_2 0.000000 +S4:g1k_7_1 0.000000 +S4:g1k_7_2 0.000000 +S4:g1k_8_1 0.000000 +S4:g1k_8_2 0.000000 +S4:g1k_9_1 0.000000 +S4:g1k_9_2 0.000000 +S4:g2k_0_1 0.000000 +S4:g2k_0_2 0.000000 +S4:g2k_1_1 0.000000 +S4:g2k_1_2 0.000000 +S4:g2k_2_1 0.000000 +S4:g2k_2_2 0.000000 +S4:g2k_3_1 0.000000 +S4:g2k_3_2 0.000000 +S4:g2k_4_1 0.000000 +S4:g2k_4_2 0.000000 +S4:g2k_5_1 0.000000 +S4:g2k_5_2 0.000000 +S4:g2k_6_1 0.000000 +S4:g2k_6_2 0.000000 +S4:g2k_7_1 0.000000 +S4:g2k_7_2 0.000000 +S4:g2k_8_1 0.000000 +S4:g2k_8_2 0.000000 +S4:g2k_9_1 0.000000 +S4:g2k_9_2 0.000000 +S5:g1k_0_1 0.000000 +S5:g1k_0_2 0.000000 +S5:g1k_1_1 0.000000 +S5:g1k_1_2 0.000000 +S5:g1k_2_1 0.000000 +S5:g1k_2_2 0.000000 +S5:g1k_3_1 0.000000 +S5:g1k_3_2 0.000000 +S5:g1k_4_1 0.000000 +S5:g1k_4_2 0.000000 +S5:g1k_5_1 0.000000 +S5:g1k_5_2 0.000000 +S5:g1k_6_1 0.000000 +S5:g1k_6_2 0.000000 +S5:g1k_7_1 0.000000 +S5:g1k_7_2 0.000000 +S5:g1k_8_1 0.000000 +S5:g1k_8_2 0.000000 +S5:g1k_9_1 0.000000 +S5:g1k_9_2 0.000000 +S5:g2k_0_1 0.000000 +S5:g2k_0_2 0.000000 +S5:g2k_1_1 0.000000 +S5:g2k_1_2 0.000000 +S5:g2k_2_1 0.000000 +S5:g2k_2_2 0.000000 +S5:g2k_3_1 0.000000 +S5:g2k_3_2 0.000000 +S5:g2k_4_1 0.000000 +S5:g2k_4_2 0.000000 +S5:g2k_5_1 0.000000 +S5:g2k_5_2 0.000000 +S5:g2k_6_1 0.000000 +S5:g2k_6_2 0.000000 +S5:g2k_7_1 0.000000 +S5:g2k_7_2 0.000000 +S5:g2k_8_1 0.000000 +S5:g2k_8_2 0.000000 +S5:g2k_9_1 0.000000 +S5:g2k_9_2 0.000000 +S6:g1k_0_1 0.000000 +S6:g1k_0_2 0.000000 +S6:g1k_1_1 0.000000 +S6:g1k_1_2 0.000000 +S6:g1k_2_1 0.000000 +S6:g1k_2_2 0.000000 +S6:g1k_3_1 0.000000 +S6:g1k_3_2 0.000000 +S6:g1k_4_1 0.000000 +S6:g1k_4_2 0.000000 +S6:g1k_5_1 0.000000 +S6:g1k_5_2 0.000000 +S6:g1k_6_1 0.000000 +S6:g1k_6_2 0.000000 +S6:g1k_7_1 0.000000 +S6:g1k_7_2 0.000000 +S6:g1k_8_1 0.000000 +S6:g1k_8_2 0.000000 +S6:g1k_9_1 0.000000 +S6:g1k_9_2 0.000000 +S6:g2k_0_1 0.000000 +S6:g2k_0_2 0.000000 +S6:g2k_1_1 0.000000 +S6:g2k_1_2 0.000000 +S6:g2k_2_1 0.000000 +S6:g2k_2_2 0.000000 +S6:g2k_3_1 0.000000 +S6:g2k_3_2 0.000000 +S6:g2k_4_1 0.000000 +S6:g2k_4_2 0.000000 +S6:g2k_5_1 0.000000 +S6:g2k_5_2 0.000000 +S6:g2k_6_1 0.000000 +S6:g2k_6_2 0.000000 +S6:g2k_7_1 0.000000 +S6:g2k_7_2 0.000000 +S6:g2k_8_1 0.000000 +S6:g2k_8_2 0.000000 +S6:g2k_9_1 0.000000 +S6:g2k_9_2 0.000000 +S7:g1k_0_1 0.000000 +S7:g1k_0_2 0.000000 +S7:g1k_1_1 0.000000 +S7:g1k_1_2 0.000000 +S7:g1k_2_1 0.000000 +S7:g1k_2_2 0.000000 +S7:g1k_3_1 0.000000 +S7:g1k_3_2 0.000000 +S7:g1k_4_1 0.000000 +S7:g1k_4_2 0.000000 +S7:g1k_5_1 0.000000 +S7:g1k_5_2 0.000000 +S7:g1k_6_1 0.000000 +S7:g1k_6_2 0.000000 +S7:g1k_7_1 0.000000 +S7:g1k_7_2 0.000000 +S7:g1k_8_1 0.000000 +S7:g1k_8_2 0.000000 +S7:g1k_9_1 0.000000 +S7:g1k_9_2 0.000000 +S7:g2k_0_1 0.000000 +S7:g2k_0_2 0.000000 +S7:g2k_1_1 0.000000 +S7:g2k_1_2 0.000000 +S7:g2k_2_1 0.000000 +S7:g2k_2_2 0.000000 +S7:g2k_3_1 0.000000 +S7:g2k_3_2 0.000000 +S7:g2k_4_1 0.000000 +S7:g2k_4_2 0.000000 +S7:g2k_5_1 0.000000 +S7:g2k_5_2 0.000000 +S7:g2k_6_1 0.000000 +S7:g2k_6_2 0.000000 +S7:g2k_7_1 0.000000 +S7:g2k_7_2 0.000000 +S7:g2k_8_1 0.000000 +S7:g2k_8_2 0.000000 +S7:g2k_9_1 0.000000 +S7:g2k_9_2 0.000000 +S8:g1k_0_1 0.000000 +S8:g1k_0_2 0.000000 +S8:g1k_1_1 0.000000 +S8:g1k_1_2 0.000000 +S8:g1k_2_1 0.000000 +S8:g1k_2_2 0.000000 +S8:g1k_3_1 0.000000 +S8:g1k_3_2 0.000000 +S8:g1k_4_1 0.000000 +S8:g1k_4_2 0.000000 +S8:g1k_5_1 0.000000 +S8:g1k_5_2 0.000000 +S8:g1k_6_1 0.000000 +S8:g1k_6_2 0.000000 +S8:g1k_7_1 0.000000 +S8:g1k_7_2 0.000000 +S8:g1k_8_1 0.000000 +S8:g1k_8_2 0.000000 +S8:g1k_9_1 0.000000 +S8:g1k_9_2 0.000000 +S8:g2k_0_1 0.000000 +S8:g2k_0_2 0.000000 +S8:g2k_1_1 0.000000 +S8:g2k_1_2 0.000000 +S8:g2k_2_1 0.000000 +S8:g2k_2_2 0.000000 +S8:g2k_3_1 0.000000 +S8:g2k_3_2 0.000000 +S8:g2k_4_1 0.000000 +S8:g2k_4_2 0.000000 +S8:g2k_5_1 0.000000 +S8:g2k_5_2 0.000000 +S8:g2k_6_1 0.000000 +S8:g2k_6_2 0.000000 +S8:g2k_7_1 0.000000 +S8:g2k_7_2 0.000000 +S8:g2k_8_1 0.000000 +S8:g2k_8_2 0.000000 +S8:g2k_9_1 0.000000 +S8:g2k_9_2 0.000000 +S9:g1k_0_1 0.000000 +S9:g1k_0_2 0.000000 +S9:g1k_1_1 0.000000 +S9:g1k_1_2 0.000000 +S9:g1k_2_1 0.000000 +S9:g1k_2_2 0.000000 +S9:g1k_3_1 0.000000 +S9:g1k_3_2 0.000000 +S9:g1k_4_1 0.000000 +S9:g1k_4_2 0.000000 +S9:g1k_5_1 0.000000 +S9:g1k_5_2 0.000000 +S9:g1k_6_1 0.000000 +S9:g1k_6_2 0.000000 +S9:g1k_7_1 0.000000 +S9:g1k_7_2 0.000000 +S9:g1k_8_1 0.000000 +S9:g1k_8_2 0.000000 +S9:g1k_9_1 0.000000 +S9:g1k_9_2 0.000000 +S9:g2k_0_1 0.000000 +S9:g2k_0_2 0.000000 +S9:g2k_1_1 0.000000 +S9:g2k_1_2 0.000000 +S9:g2k_2_1 0.000000 +S9:g2k_2_2 0.000000 +S9:g2k_3_1 0.000000 +S9:g2k_3_2 0.000000 +S9:g2k_4_1 0.000000 +S9:g2k_4_2 0.000000 +S9:g2k_5_1 0.000000 +S9:g2k_5_2 0.000000 +S9:g2k_6_1 0.000000 +S9:g2k_6_2 0.000000 +S9:g2k_7_1 0.000000 +S9:g2k_7_2 0.000000 +S9:g2k_8_1 0.000000 +S9:g2k_8_2 0.000000 +S9:g2k_9_1 0.000000 +S9:g2k_9_2 0.000000 +S10:g1k_0_1 0.000000 +S10:g1k_0_2 0.000000 +S10:g1k_1_1 0.000000 +S10:g1k_1_2 0.000000 +S10:g1k_2_1 0.000000 +S10:g1k_2_2 0.000000 +S10:g1k_3_1 0.000000 +S10:g1k_3_2 0.000000 +S10:g1k_4_1 0.000000 +S10:g1k_4_2 0.000000 +S10:g1k_5_1 0.000000 +S10:g1k_5_2 0.000000 +S10:g1k_6_1 0.000000 +S10:g1k_6_2 0.000000 +S10:g1k_7_1 0.000000 +S10:g1k_7_2 0.000000 +S10:g1k_8_1 0.000000 +S10:g1k_8_2 0.000000 +S10:g1k_9_1 0.000000 +S10:g1k_9_2 0.000000 +S10:g2k_0_1 0.000000 +S10:g2k_0_2 0.000000 +S10:g2k_1_1 0.000000 +S10:g2k_1_2 0.000000 +S10:g2k_2_1 0.000000 +S10:g2k_2_2 0.000000 +S10:g2k_3_1 0.000000 +S10:g2k_3_2 0.000000 +S10:g2k_4_1 0.000000 +S10:g2k_4_2 0.000000 +S10:g2k_5_1 0.000000 +S10:g2k_5_2 0.000000 +S10:g2k_6_1 0.000000 +S10:g2k_6_2 0.000000 +S10:g2k_7_1 0.000000 +S10:g2k_7_2 0.000000 +S10:g2k_8_1 0.000000 +S10:g2k_8_2 0.000000 +S10:g2k_9_1 0.000000 +S10:g2k_9_2 0.000000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/strobealign_4.txt Tue Oct 28 08:17:27 2025 +0000 @@ -0,0 +1,400 @@ +S1:g1k_0_1 0.000000 +S1:g1k_0_2 0.000000 +S1:g1k_1_1 0.000000 +S1:g1k_1_2 0.000000 +S1:g1k_2_1 0.000000 +S1:g1k_2_2 0.000000 +S1:g1k_3_1 0.000000 +S1:g1k_3_2 0.000000 +S1:g1k_4_1 0.000000 +S1:g1k_4_2 0.000000 +S1:g1k_5_1 0.000000 +S1:g1k_5_2 0.000000 +S1:g1k_6_1 0.000000 +S1:g1k_6_2 0.000000 +S1:g1k_7_1 0.000000 +S1:g1k_7_2 0.000000 +S1:g1k_8_1 0.000000 +S1:g1k_8_2 0.000000 +S1:g1k_9_1 0.000000 +S1:g1k_9_2 0.000000 +S1:g2k_0_1 0.000000 +S1:g2k_0_2 0.000000 +S1:g2k_1_1 0.000000 +S1:g2k_1_2 0.000000 +S1:g2k_2_1 0.000000 +S1:g2k_2_2 0.000000 +S1:g2k_3_1 0.000000 +S1:g2k_3_2 0.000000 +S1:g2k_4_1 0.000000 +S1:g2k_4_2 0.000000 +S1:g2k_5_1 0.000000 +S1:g2k_5_2 0.000000 +S1:g2k_6_1 0.000000 +S1:g2k_6_2 0.000000 +S1:g2k_7_1 0.000000 +S1:g2k_7_2 0.000000 +S1:g2k_8_1 0.000000 +S1:g2k_8_2 0.000000 +S1:g2k_9_1 0.000000 +S1:g2k_9_2 0.000000 +S2:g1k_0_1 0.000000 +S2:g1k_0_2 0.000000 +S2:g1k_1_1 0.000000 +S2:g1k_1_2 0.000000 +S2:g1k_2_1 0.000000 +S2:g1k_2_2 0.000000 +S2:g1k_3_1 0.000000 +S2:g1k_3_2 0.000000 +S2:g1k_4_1 0.000000 +S2:g1k_4_2 0.000000 +S2:g1k_5_1 0.000000 +S2:g1k_5_2 0.000000 +S2:g1k_6_1 0.000000 +S2:g1k_6_2 0.000000 +S2:g1k_7_1 0.000000 +S2:g1k_7_2 0.000000 +S2:g1k_8_1 0.000000 +S2:g1k_8_2 0.000000 +S2:g1k_9_1 0.000000 +S2:g1k_9_2 0.000000 +S2:g2k_0_1 0.000000 +S2:g2k_0_2 0.000000 +S2:g2k_1_1 0.000000 +S2:g2k_1_2 0.000000 +S2:g2k_2_1 0.000000 +S2:g2k_2_2 0.000000 +S2:g2k_3_1 0.000000 +S2:g2k_3_2 0.000000 +S2:g2k_4_1 0.000000 +S2:g2k_4_2 0.000000 +S2:g2k_5_1 0.000000 +S2:g2k_5_2 0.000000 +S2:g2k_6_1 0.000000 +S2:g2k_6_2 0.000000 +S2:g2k_7_1 0.000000 +S2:g2k_7_2 0.000000 +S2:g2k_8_1 0.000000 +S2:g2k_8_2 0.000000 +S2:g2k_9_1 0.000000 +S2:g2k_9_2 0.000000 +S3:g1k_0_1 0.000000 +S3:g1k_0_2 0.000000 +S3:g1k_1_1 0.000000 +S3:g1k_1_2 0.000000 +S3:g1k_2_1 0.000000 +S3:g1k_2_2 0.000000 +S3:g1k_3_1 0.000000 +S3:g1k_3_2 0.000000 +S3:g1k_4_1 0.000000 +S3:g1k_4_2 0.000000 +S3:g1k_5_1 0.000000 +S3:g1k_5_2 0.000000 +S3:g1k_6_1 0.000000 +S3:g1k_6_2 0.000000 +S3:g1k_7_1 0.000000 +S3:g1k_7_2 0.000000 +S3:g1k_8_1 0.000000 +S3:g1k_8_2 0.000000 +S3:g1k_9_1 0.000000 +S3:g1k_9_2 0.000000 +S3:g2k_0_1 0.000000 +S3:g2k_0_2 0.000000 +S3:g2k_1_1 0.000000 +S3:g2k_1_2 0.000000 +S3:g2k_2_1 0.000000 +S3:g2k_2_2 0.000000 +S3:g2k_3_1 0.000000 +S3:g2k_3_2 0.000000 +S3:g2k_4_1 0.000000 +S3:g2k_4_2 0.000000 +S3:g2k_5_1 0.000000 +S3:g2k_5_2 0.000000 +S3:g2k_6_1 0.000000 +S3:g2k_6_2 0.000000 +S3:g2k_7_1 0.000000 +S3:g2k_7_2 0.000000 +S3:g2k_8_1 0.000000 +S3:g2k_8_2 0.000000 +S3:g2k_9_1 0.000000 +S3:g2k_9_2 0.000000 +S4:g1k_0_1 0.000000 +S4:g1k_0_2 0.000000 +S4:g1k_1_1 0.000000 +S4:g1k_1_2 0.000000 +S4:g1k_2_1 0.000000 +S4:g1k_2_2 0.000000 +S4:g1k_3_1 0.000000 +S4:g1k_3_2 0.000000 +S4:g1k_4_1 0.000000 +S4:g1k_4_2 0.000000 +S4:g1k_5_1 0.000000 +S4:g1k_5_2 0.000000 +S4:g1k_6_1 0.000000 +S4:g1k_6_2 0.000000 +S4:g1k_7_1 0.000000 +S4:g1k_7_2 0.000000 +S4:g1k_8_1 0.000000 +S4:g1k_8_2 0.000000 +S4:g1k_9_1 0.000000 +S4:g1k_9_2 0.000000 +S4:g2k_0_1 0.000000 +S4:g2k_0_2 0.000000 +S4:g2k_1_1 0.000000 +S4:g2k_1_2 0.000000 +S4:g2k_2_1 0.000000 +S4:g2k_2_2 0.000000 +S4:g2k_3_1 0.000000 +S4:g2k_3_2 0.000000 +S4:g2k_4_1 0.000000 +S4:g2k_4_2 0.000000 +S4:g2k_5_1 0.000000 +S4:g2k_5_2 0.000000 +S4:g2k_6_1 0.000000 +S4:g2k_6_2 0.000000 +S4:g2k_7_1 0.000000 +S4:g2k_7_2 0.000000 +S4:g2k_8_1 0.000000 +S4:g2k_8_2 0.000000 +S4:g2k_9_1 0.000000 +S4:g2k_9_2 0.000000 +S5:g1k_0_1 0.000000 +S5:g1k_0_2 0.000000 +S5:g1k_1_1 0.000000 +S5:g1k_1_2 0.000000 +S5:g1k_2_1 0.000000 +S5:g1k_2_2 0.000000 +S5:g1k_3_1 0.000000 +S5:g1k_3_2 0.000000 +S5:g1k_4_1 0.000000 +S5:g1k_4_2 0.000000 +S5:g1k_5_1 0.000000 +S5:g1k_5_2 0.000000 +S5:g1k_6_1 0.000000 +S5:g1k_6_2 0.000000 +S5:g1k_7_1 0.000000 +S5:g1k_7_2 0.000000 +S5:g1k_8_1 0.000000 +S5:g1k_8_2 0.000000 +S5:g1k_9_1 0.000000 +S5:g1k_9_2 0.000000 +S5:g2k_0_1 0.000000 +S5:g2k_0_2 0.000000 +S5:g2k_1_1 0.000000 +S5:g2k_1_2 0.000000 +S5:g2k_2_1 0.000000 +S5:g2k_2_2 0.000000 +S5:g2k_3_1 0.000000 +S5:g2k_3_2 0.000000 +S5:g2k_4_1 0.000000 +S5:g2k_4_2 0.000000 +S5:g2k_5_1 0.000000 +S5:g2k_5_2 0.000000 +S5:g2k_6_1 0.000000 +S5:g2k_6_2 0.000000 +S5:g2k_7_1 0.000000 +S5:g2k_7_2 0.000000 +S5:g2k_8_1 0.000000 +S5:g2k_8_2 0.000000 +S5:g2k_9_1 0.000000 +S5:g2k_9_2 0.000000 +S6:g1k_0_1 0.000000 +S6:g1k_0_2 0.000000 +S6:g1k_1_1 0.000000 +S6:g1k_1_2 0.000000 +S6:g1k_2_1 0.000000 +S6:g1k_2_2 0.000000 +S6:g1k_3_1 0.000000 +S6:g1k_3_2 0.000000 +S6:g1k_4_1 0.000000 +S6:g1k_4_2 0.000000 +S6:g1k_5_1 0.000000 +S6:g1k_5_2 0.000000 +S6:g1k_6_1 0.000000 +S6:g1k_6_2 0.000000 +S6:g1k_7_1 0.000000 +S6:g1k_7_2 0.000000 +S6:g1k_8_1 0.000000 +S6:g1k_8_2 0.000000 +S6:g1k_9_1 0.000000 +S6:g1k_9_2 0.000000 +S6:g2k_0_1 0.000000 +S6:g2k_0_2 0.000000 +S6:g2k_1_1 0.000000 +S6:g2k_1_2 0.000000 +S6:g2k_2_1 0.000000 +S6:g2k_2_2 0.000000 +S6:g2k_3_1 0.000000 +S6:g2k_3_2 0.000000 +S6:g2k_4_1 0.000000 +S6:g2k_4_2 0.000000 +S6:g2k_5_1 0.000000 +S6:g2k_5_2 0.000000 +S6:g2k_6_1 0.000000 +S6:g2k_6_2 0.000000 +S6:g2k_7_1 0.000000 +S6:g2k_7_2 0.000000 +S6:g2k_8_1 0.000000 +S6:g2k_8_2 0.000000 +S6:g2k_9_1 0.000000 +S6:g2k_9_2 0.000000 +S7:g1k_0_1 0.000000 +S7:g1k_0_2 0.000000 +S7:g1k_1_1 0.000000 +S7:g1k_1_2 0.000000 +S7:g1k_2_1 0.000000 +S7:g1k_2_2 0.000000 +S7:g1k_3_1 0.000000 +S7:g1k_3_2 0.000000 +S7:g1k_4_1 0.000000 +S7:g1k_4_2 0.000000 +S7:g1k_5_1 0.000000 +S7:g1k_5_2 0.000000 +S7:g1k_6_1 0.000000 +S7:g1k_6_2 0.000000 +S7:g1k_7_1 0.000000 +S7:g1k_7_2 0.000000 +S7:g1k_8_1 0.000000 +S7:g1k_8_2 0.000000 +S7:g1k_9_1 0.000000 +S7:g1k_9_2 0.000000 +S7:g2k_0_1 0.000000 +S7:g2k_0_2 0.000000 +S7:g2k_1_1 0.000000 +S7:g2k_1_2 0.000000 +S7:g2k_2_1 0.000000 +S7:g2k_2_2 0.000000 +S7:g2k_3_1 0.000000 +S7:g2k_3_2 0.000000 +S7:g2k_4_1 0.000000 +S7:g2k_4_2 0.000000 +S7:g2k_5_1 0.000000 +S7:g2k_5_2 0.000000 +S7:g2k_6_1 0.000000 +S7:g2k_6_2 0.000000 +S7:g2k_7_1 0.000000 +S7:g2k_7_2 0.000000 +S7:g2k_8_1 0.000000 +S7:g2k_8_2 0.000000 +S7:g2k_9_1 0.000000 +S7:g2k_9_2 0.000000 +S8:g1k_0_1 0.000000 +S8:g1k_0_2 0.000000 +S8:g1k_1_1 0.000000 +S8:g1k_1_2 0.000000 +S8:g1k_2_1 0.000000 +S8:g1k_2_2 0.000000 +S8:g1k_3_1 0.000000 +S8:g1k_3_2 0.000000 +S8:g1k_4_1 0.000000 +S8:g1k_4_2 0.000000 +S8:g1k_5_1 0.000000 +S8:g1k_5_2 0.000000 +S8:g1k_6_1 0.000000 +S8:g1k_6_2 0.000000 +S8:g1k_7_1 0.000000 +S8:g1k_7_2 0.000000 +S8:g1k_8_1 0.000000 +S8:g1k_8_2 0.000000 +S8:g1k_9_1 0.000000 +S8:g1k_9_2 0.000000 +S8:g2k_0_1 0.000000 +S8:g2k_0_2 0.000000 +S8:g2k_1_1 0.000000 +S8:g2k_1_2 0.000000 +S8:g2k_2_1 0.000000 +S8:g2k_2_2 0.000000 +S8:g2k_3_1 0.000000 +S8:g2k_3_2 0.000000 +S8:g2k_4_1 0.000000 +S8:g2k_4_2 0.000000 +S8:g2k_5_1 0.000000 +S8:g2k_5_2 0.000000 +S8:g2k_6_1 0.000000 +S8:g2k_6_2 0.000000 +S8:g2k_7_1 0.000000 +S8:g2k_7_2 0.000000 +S8:g2k_8_1 0.000000 +S8:g2k_8_2 0.000000 +S8:g2k_9_1 0.000000 +S8:g2k_9_2 0.000000 +S9:g1k_0_1 0.000000 +S9:g1k_0_2 0.000000 +S9:g1k_1_1 0.000000 +S9:g1k_1_2 0.000000 +S9:g1k_2_1 0.000000 +S9:g1k_2_2 0.000000 +S9:g1k_3_1 0.000000 +S9:g1k_3_2 0.000000 +S9:g1k_4_1 0.000000 +S9:g1k_4_2 0.000000 +S9:g1k_5_1 0.000000 +S9:g1k_5_2 0.000000 +S9:g1k_6_1 0.000000 +S9:g1k_6_2 0.000000 +S9:g1k_7_1 0.000000 +S9:g1k_7_2 0.000000 +S9:g1k_8_1 0.000000 +S9:g1k_8_2 0.000000 +S9:g1k_9_1 0.000000 +S9:g1k_9_2 0.000000 +S9:g2k_0_1 0.000000 +S9:g2k_0_2 0.000000 +S9:g2k_1_1 0.000000 +S9:g2k_1_2 0.000000 +S9:g2k_2_1 0.000000 +S9:g2k_2_2 0.000000 +S9:g2k_3_1 0.000000 +S9:g2k_3_2 0.000000 +S9:g2k_4_1 0.000000 +S9:g2k_4_2 0.000000 +S9:g2k_5_1 0.000000 +S9:g2k_5_2 0.000000 +S9:g2k_6_1 0.000000 +S9:g2k_6_2 0.000000 +S9:g2k_7_1 0.000000 +S9:g2k_7_2 0.000000 +S9:g2k_8_1 0.000000 +S9:g2k_8_2 0.000000 +S9:g2k_9_1 0.000000 +S9:g2k_9_2 0.000000 +S10:g1k_0_1 0.000000 +S10:g1k_0_2 0.000000 +S10:g1k_1_1 0.000000 +S10:g1k_1_2 0.000000 +S10:g1k_2_1 0.000000 +S10:g1k_2_2 0.000000 +S10:g1k_3_1 0.000000 +S10:g1k_3_2 0.000000 +S10:g1k_4_1 0.000000 +S10:g1k_4_2 0.000000 +S10:g1k_5_1 0.000000 +S10:g1k_5_2 0.000000 +S10:g1k_6_1 0.000000 +S10:g1k_6_2 0.000000 +S10:g1k_7_1 0.000000 +S10:g1k_7_2 0.000000 +S10:g1k_8_1 0.000000 +S10:g1k_8_2 0.000000 +S10:g1k_9_1 0.000000 +S10:g1k_9_2 0.000000 +S10:g2k_0_1 0.000000 +S10:g2k_0_2 0.000000 +S10:g2k_1_1 0.000000 +S10:g2k_1_2 0.000000 +S10:g2k_2_1 0.000000 +S10:g2k_2_2 0.000000 +S10:g2k_3_1 0.000000 +S10:g2k_3_2 0.000000 +S10:g2k_4_1 0.000000 +S10:g2k_4_2 0.000000 +S10:g2k_5_1 0.000000 +S10:g2k_5_2 0.000000 +S10:g2k_6_1 0.000000 +S10:g2k_6_2 0.000000 +S10:g2k_7_1 0.000000 +S10:g2k_7_2 0.000000 +S10:g2k_8_1 0.000000 +S10:g2k_8_2 0.000000 +S10:g2k_9_1 0.000000 +S10:g2k_9_2 0.000000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/strobealign_5.txt Tue Oct 28 08:17:27 2025 +0000 @@ -0,0 +1,400 @@ +S1:g1k_0_1 0.000000 +S1:g1k_0_2 0.000000 +S1:g1k_1_1 0.000000 +S1:g1k_1_2 0.000000 +S1:g1k_2_1 0.000000 +S1:g1k_2_2 0.000000 +S1:g1k_3_1 0.000000 +S1:g1k_3_2 0.000000 +S1:g1k_4_1 0.000000 +S1:g1k_4_2 0.000000 +S1:g1k_5_1 0.000000 +S1:g1k_5_2 0.000000 +S1:g1k_6_1 0.000000 +S1:g1k_6_2 0.000000 +S1:g1k_7_1 0.000000 +S1:g1k_7_2 0.000000 +S1:g1k_8_1 0.000000 +S1:g1k_8_2 0.000000 +S1:g1k_9_1 0.000000 +S1:g1k_9_2 0.000000 +S1:g2k_0_1 0.000000 +S1:g2k_0_2 0.000000 +S1:g2k_1_1 0.000000 +S1:g2k_1_2 0.000000 +S1:g2k_2_1 0.000000 +S1:g2k_2_2 0.000000 +S1:g2k_3_1 0.000000 +S1:g2k_3_2 0.000000 +S1:g2k_4_1 0.000000 +S1:g2k_4_2 0.000000 +S1:g2k_5_1 0.000000 +S1:g2k_5_2 0.000000 +S1:g2k_6_1 0.000000 +S1:g2k_6_2 0.000000 +S1:g2k_7_1 0.000000 +S1:g2k_7_2 0.000000 +S1:g2k_8_1 0.000000 +S1:g2k_8_2 0.000000 +S1:g2k_9_1 0.000000 +S1:g2k_9_2 0.000000 +S2:g1k_0_1 0.000000 +S2:g1k_0_2 0.000000 +S2:g1k_1_1 0.000000 +S2:g1k_1_2 0.000000 +S2:g1k_2_1 0.000000 +S2:g1k_2_2 0.000000 +S2:g1k_3_1 0.000000 +S2:g1k_3_2 0.000000 +S2:g1k_4_1 0.000000 +S2:g1k_4_2 0.000000 +S2:g1k_5_1 0.000000 +S2:g1k_5_2 0.000000 +S2:g1k_6_1 0.000000 +S2:g1k_6_2 0.000000 +S2:g1k_7_1 0.000000 +S2:g1k_7_2 0.000000 +S2:g1k_8_1 0.000000 +S2:g1k_8_2 0.000000 +S2:g1k_9_1 0.000000 +S2:g1k_9_2 0.000000 +S2:g2k_0_1 0.000000 +S2:g2k_0_2 0.000000 +S2:g2k_1_1 0.000000 +S2:g2k_1_2 0.000000 +S2:g2k_2_1 0.000000 +S2:g2k_2_2 0.000000 +S2:g2k_3_1 0.000000 +S2:g2k_3_2 0.000000 +S2:g2k_4_1 0.000000 +S2:g2k_4_2 0.000000 +S2:g2k_5_1 0.000000 +S2:g2k_5_2 0.000000 +S2:g2k_6_1 0.000000 +S2:g2k_6_2 0.000000 +S2:g2k_7_1 0.000000 +S2:g2k_7_2 0.000000 +S2:g2k_8_1 0.000000 +S2:g2k_8_2 0.000000 +S2:g2k_9_1 0.000000 +S2:g2k_9_2 0.000000 +S3:g1k_0_1 0.000000 +S3:g1k_0_2 0.000000 +S3:g1k_1_1 0.000000 +S3:g1k_1_2 0.000000 +S3:g1k_2_1 0.000000 +S3:g1k_2_2 0.000000 +S3:g1k_3_1 0.000000 +S3:g1k_3_2 0.000000 +S3:g1k_4_1 0.000000 +S3:g1k_4_2 0.000000 +S3:g1k_5_1 0.000000 +S3:g1k_5_2 0.000000 +S3:g1k_6_1 0.000000 +S3:g1k_6_2 0.000000 +S3:g1k_7_1 0.000000 +S3:g1k_7_2 0.000000 +S3:g1k_8_1 0.000000 +S3:g1k_8_2 0.000000 +S3:g1k_9_1 0.000000 +S3:g1k_9_2 0.000000 +S3:g2k_0_1 0.000000 +S3:g2k_0_2 0.000000 +S3:g2k_1_1 0.000000 +S3:g2k_1_2 0.000000 +S3:g2k_2_1 0.000000 +S3:g2k_2_2 0.000000 +S3:g2k_3_1 0.000000 +S3:g2k_3_2 0.000000 +S3:g2k_4_1 0.000000 +S3:g2k_4_2 0.000000 +S3:g2k_5_1 0.000000 +S3:g2k_5_2 0.000000 +S3:g2k_6_1 0.000000 +S3:g2k_6_2 0.000000 +S3:g2k_7_1 0.000000 +S3:g2k_7_2 0.000000 +S3:g2k_8_1 0.000000 +S3:g2k_8_2 0.000000 +S3:g2k_9_1 0.000000 +S3:g2k_9_2 0.000000 +S4:g1k_0_1 0.000000 +S4:g1k_0_2 0.000000 +S4:g1k_1_1 0.000000 +S4:g1k_1_2 0.000000 +S4:g1k_2_1 0.000000 +S4:g1k_2_2 0.000000 +S4:g1k_3_1 0.000000 +S4:g1k_3_2 0.000000 +S4:g1k_4_1 0.000000 +S4:g1k_4_2 0.000000 +S4:g1k_5_1 0.000000 +S4:g1k_5_2 0.000000 +S4:g1k_6_1 0.000000 +S4:g1k_6_2 0.000000 +S4:g1k_7_1 0.000000 +S4:g1k_7_2 0.000000 +S4:g1k_8_1 0.000000 +S4:g1k_8_2 0.000000 +S4:g1k_9_1 0.000000 +S4:g1k_9_2 0.000000 +S4:g2k_0_1 0.000000 +S4:g2k_0_2 0.000000 +S4:g2k_1_1 0.000000 +S4:g2k_1_2 0.000000 +S4:g2k_2_1 0.000000 +S4:g2k_2_2 0.000000 +S4:g2k_3_1 0.000000 +S4:g2k_3_2 0.000000 +S4:g2k_4_1 0.000000 +S4:g2k_4_2 0.000000 +S4:g2k_5_1 0.000000 +S4:g2k_5_2 0.000000 +S4:g2k_6_1 0.000000 +S4:g2k_6_2 0.000000 +S4:g2k_7_1 0.000000 +S4:g2k_7_2 0.000000 +S4:g2k_8_1 0.000000 +S4:g2k_8_2 0.000000 +S4:g2k_9_1 0.000000 +S4:g2k_9_2 0.000000 +S5:g1k_0_1 0.000000 +S5:g1k_0_2 0.000000 +S5:g1k_1_1 0.000000 +S5:g1k_1_2 0.000000 +S5:g1k_2_1 0.000000 +S5:g1k_2_2 0.000000 +S5:g1k_3_1 0.000000 +S5:g1k_3_2 0.000000 +S5:g1k_4_1 0.000000 +S5:g1k_4_2 0.000000 +S5:g1k_5_1 0.000000 +S5:g1k_5_2 0.000000 +S5:g1k_6_1 0.000000 +S5:g1k_6_2 0.000000 +S5:g1k_7_1 0.000000 +S5:g1k_7_2 0.000000 +S5:g1k_8_1 0.000000 +S5:g1k_8_2 0.000000 +S5:g1k_9_1 0.000000 +S5:g1k_9_2 0.000000 +S5:g2k_0_1 0.000000 +S5:g2k_0_2 0.000000 +S5:g2k_1_1 0.000000 +S5:g2k_1_2 0.000000 +S5:g2k_2_1 0.000000 +S5:g2k_2_2 0.000000 +S5:g2k_3_1 0.000000 +S5:g2k_3_2 0.000000 +S5:g2k_4_1 0.000000 +S5:g2k_4_2 0.000000 +S5:g2k_5_1 0.000000 +S5:g2k_5_2 0.000000 +S5:g2k_6_1 0.000000 +S5:g2k_6_2 0.000000 +S5:g2k_7_1 0.000000 +S5:g2k_7_2 0.000000 +S5:g2k_8_1 0.000000 +S5:g2k_8_2 0.000000 +S5:g2k_9_1 0.000000 +S5:g2k_9_2 0.000000 +S6:g1k_0_1 0.000000 +S6:g1k_0_2 0.000000 +S6:g1k_1_1 0.000000 +S6:g1k_1_2 0.000000 +S6:g1k_2_1 0.000000 +S6:g1k_2_2 0.000000 +S6:g1k_3_1 0.000000 +S6:g1k_3_2 0.000000 +S6:g1k_4_1 0.000000 +S6:g1k_4_2 0.000000 +S6:g1k_5_1 0.000000 +S6:g1k_5_2 0.000000 +S6:g1k_6_1 0.000000 +S6:g1k_6_2 0.000000 +S6:g1k_7_1 0.000000 +S6:g1k_7_2 0.000000 +S6:g1k_8_1 0.000000 +S6:g1k_8_2 0.000000 +S6:g1k_9_1 0.000000 +S6:g1k_9_2 0.000000 +S6:g2k_0_1 0.000000 +S6:g2k_0_2 0.000000 +S6:g2k_1_1 0.000000 +S6:g2k_1_2 0.000000 +S6:g2k_2_1 0.000000 +S6:g2k_2_2 0.000000 +S6:g2k_3_1 0.000000 +S6:g2k_3_2 0.000000 +S6:g2k_4_1 0.000000 +S6:g2k_4_2 0.000000 +S6:g2k_5_1 0.000000 +S6:g2k_5_2 0.000000 +S6:g2k_6_1 0.000000 +S6:g2k_6_2 0.000000 +S6:g2k_7_1 0.000000 +S6:g2k_7_2 0.000000 +S6:g2k_8_1 0.000000 +S6:g2k_8_2 0.000000 +S6:g2k_9_1 0.000000 +S6:g2k_9_2 0.000000 +S7:g1k_0_1 0.000000 +S7:g1k_0_2 0.000000 +S7:g1k_1_1 0.000000 +S7:g1k_1_2 0.000000 +S7:g1k_2_1 0.000000 +S7:g1k_2_2 0.000000 +S7:g1k_3_1 0.000000 +S7:g1k_3_2 0.000000 +S7:g1k_4_1 0.000000 +S7:g1k_4_2 0.000000 +S7:g1k_5_1 0.000000 +S7:g1k_5_2 0.000000 +S7:g1k_6_1 0.000000 +S7:g1k_6_2 0.000000 +S7:g1k_7_1 0.000000 +S7:g1k_7_2 0.000000 +S7:g1k_8_1 0.000000 +S7:g1k_8_2 0.000000 +S7:g1k_9_1 0.000000 +S7:g1k_9_2 0.000000 +S7:g2k_0_1 0.000000 +S7:g2k_0_2 0.000000 +S7:g2k_1_1 0.000000 +S7:g2k_1_2 0.000000 +S7:g2k_2_1 0.000000 +S7:g2k_2_2 0.000000 +S7:g2k_3_1 0.000000 +S7:g2k_3_2 0.000000 +S7:g2k_4_1 0.000000 +S7:g2k_4_2 0.000000 +S7:g2k_5_1 0.000000 +S7:g2k_5_2 0.000000 +S7:g2k_6_1 0.000000 +S7:g2k_6_2 0.000000 +S7:g2k_7_1 0.000000 +S7:g2k_7_2 0.000000 +S7:g2k_8_1 0.000000 +S7:g2k_8_2 0.000000 +S7:g2k_9_1 0.000000 +S7:g2k_9_2 0.000000 +S8:g1k_0_1 0.000000 +S8:g1k_0_2 0.000000 +S8:g1k_1_1 0.000000 +S8:g1k_1_2 0.000000 +S8:g1k_2_1 0.000000 +S8:g1k_2_2 0.000000 +S8:g1k_3_1 0.000000 +S8:g1k_3_2 0.000000 +S8:g1k_4_1 0.000000 +S8:g1k_4_2 0.000000 +S8:g1k_5_1 0.000000 +S8:g1k_5_2 0.000000 +S8:g1k_6_1 0.000000 +S8:g1k_6_2 0.000000 +S8:g1k_7_1 0.000000 +S8:g1k_7_2 0.000000 +S8:g1k_8_1 0.000000 +S8:g1k_8_2 0.000000 +S8:g1k_9_1 0.000000 +S8:g1k_9_2 0.000000 +S8:g2k_0_1 0.000000 +S8:g2k_0_2 0.000000 +S8:g2k_1_1 0.000000 +S8:g2k_1_2 0.000000 +S8:g2k_2_1 0.000000 +S8:g2k_2_2 0.000000 +S8:g2k_3_1 0.000000 +S8:g2k_3_2 0.000000 +S8:g2k_4_1 0.000000 +S8:g2k_4_2 0.000000 +S8:g2k_5_1 0.000000 +S8:g2k_5_2 0.000000 +S8:g2k_6_1 0.000000 +S8:g2k_6_2 0.000000 +S8:g2k_7_1 0.000000 +S8:g2k_7_2 0.000000 +S8:g2k_8_1 0.000000 +S8:g2k_8_2 0.000000 +S8:g2k_9_1 0.000000 +S8:g2k_9_2 0.000000 +S9:g1k_0_1 0.000000 +S9:g1k_0_2 0.000000 +S9:g1k_1_1 0.000000 +S9:g1k_1_2 0.000000 +S9:g1k_2_1 0.000000 +S9:g1k_2_2 0.000000 +S9:g1k_3_1 0.000000 +S9:g1k_3_2 0.000000 +S9:g1k_4_1 0.000000 +S9:g1k_4_2 0.000000 +S9:g1k_5_1 0.000000 +S9:g1k_5_2 0.000000 +S9:g1k_6_1 0.000000 +S9:g1k_6_2 0.000000 +S9:g1k_7_1 0.000000 +S9:g1k_7_2 0.000000 +S9:g1k_8_1 0.000000 +S9:g1k_8_2 0.000000 +S9:g1k_9_1 0.000000 +S9:g1k_9_2 0.000000 +S9:g2k_0_1 0.000000 +S9:g2k_0_2 0.000000 +S9:g2k_1_1 0.000000 +S9:g2k_1_2 0.000000 +S9:g2k_2_1 0.000000 +S9:g2k_2_2 0.000000 +S9:g2k_3_1 0.000000 +S9:g2k_3_2 0.000000 +S9:g2k_4_1 0.000000 +S9:g2k_4_2 0.000000 +S9:g2k_5_1 0.000000 +S9:g2k_5_2 0.000000 +S9:g2k_6_1 0.000000 +S9:g2k_6_2 0.000000 +S9:g2k_7_1 0.000000 +S9:g2k_7_2 0.000000 +S9:g2k_8_1 0.000000 +S9:g2k_8_2 0.000000 +S9:g2k_9_1 0.000000 +S9:g2k_9_2 0.000000 +S10:g1k_0_1 0.000000 +S10:g1k_0_2 0.000000 +S10:g1k_1_1 0.000000 +S10:g1k_1_2 0.000000 +S10:g1k_2_1 0.000000 +S10:g1k_2_2 0.000000 +S10:g1k_3_1 0.000000 +S10:g1k_3_2 0.000000 +S10:g1k_4_1 0.000000 +S10:g1k_4_2 0.000000 +S10:g1k_5_1 0.000000 +S10:g1k_5_2 0.000000 +S10:g1k_6_1 0.000000 +S10:g1k_6_2 0.000000 +S10:g1k_7_1 0.000000 +S10:g1k_7_2 0.000000 +S10:g1k_8_1 0.000000 +S10:g1k_8_2 0.000000 +S10:g1k_9_1 0.000000 +S10:g1k_9_2 0.000000 +S10:g2k_0_1 0.000000 +S10:g2k_0_2 0.000000 +S10:g2k_1_1 0.000000 +S10:g2k_1_2 0.000000 +S10:g2k_2_1 0.000000 +S10:g2k_2_2 0.000000 +S10:g2k_3_1 0.000000 +S10:g2k_3_2 0.000000 +S10:g2k_4_1 0.000000 +S10:g2k_4_2 0.000000 +S10:g2k_5_1 0.000000 +S10:g2k_5_2 0.000000 +S10:g2k_6_1 0.000000 +S10:g2k_6_2 0.000000 +S10:g2k_7_1 0.000000 +S10:g2k_7_2 0.000000 +S10:g2k_8_1 0.000000 +S10:g2k_8_2 0.000000 +S10:g2k_9_1 0.000000 +S10:g2k_9_2 0.000000
--- a/train.xml Tue Mar 25 15:50:55 2025 +0000 +++ b/train.xml Tue Oct 28 08:17:27 2025 +0000 @@ -11,40 +11,37 @@ <command detect_errors="exit_code"><![CDATA[ #import re #if $mode.select == 'single' - #if $mode.input_fasta.ext.endswith(".gz") -gunzip -c '$mode.input_fasta' > 'contigs.fasta' && - #else -ln -s '$mode.input_fasta' 'contigs.fasta' && - #end if +ln -s '$mode.input_fasta' 'contigs.$input_fasta.ext' && #else #for $e in $mode.input_fasta - #set $identifier = re.sub('[^\s\w\-\\.]', '_', str($e.element_identifier)) - #if $e.ext.endswith(".gz") -gunzip -c '$e' > '${identifier}.fasta' && - #else -ln -s '$e' '${identifier}.fasta' && - #end if + #set $identifier = re.sub('[^\s\w\-]', '_', str($e.element_identifier)) +ln -s '$e' '${identifier}.$e.ext' && #end for #end if SemiBin2 train_semi #if $mode.select == 'single' - --input-fasta 'contigs.fasta' + --input-fasta 'contigs.$input_fasta.ext' --data '$mode.data' --data-split '$mode.data_split' --cannot-link '$mode.cannot_link' #else --train-from-many + --input-fasta #for $e in $mode.input_fasta - --input-fasta '${e.element_identifier}.fasta' - #end for - #for $e in $mode.data - --data '$e' + #set $identifier = re.sub('[^\s\w\-]', '_', str($e.element_identifier)) + '${identifier}.$e.ext' #end for - #for $e in $mode.data_split - --data-split '$e' + --data + #for $e in $mode.data + '$e' #end for + --data-split + #for $e in $mode.data_split + '$e' + #end for + --cannot-link #for $e in $mode.cannot_link - --cannot-link '$e' + '$e' #end for #end if --output 'output' @@ -66,13 +63,13 @@ <option value="several">From multiple samples (train model across several samples can get better pre-trained model for single-sample binning)</option> </param> <when value="single"> - <param argument="--input-fasta" type="data" format="fasta,fasta.gz" label="Contig sequences"/> + <param argument="--input-fasta" type="data" format="fasta,fasta.gz,fasta.bz2" label="Contig sequences"/> <param argument="--data" type="data" format="csv" label="Train data"/> <param argument="--data-split" type="data" format="csv" label="Split train data"/> <param argument="--cannot-link" type="data" format="txt" label="Cannot-link constraints"/> </when> <when value="several"> - <param argument="--input-fasta" type="data" multiple="true" format="fasta,fasta.gz" label="Contig sequences"/> + <param argument="--input-fasta" type="data" multiple="true" format="fasta,fasta.gz,fasta.bz2" label="Contig sequences"/> <param argument="--data" type="data" format="csv" multiple="true" label="Train data"/> <param argument="--data-split" type="data" format="csv" multiple="true" label="Split train data"/> <param argument="--cannot-link" type="data" format="txt" multiple="true" label="Cannot-link constraints"/> @@ -112,6 +109,50 @@ </test> <test expect_num_outputs="1"> <conditional name="mode"> + <param name="select" value="single"/> + <param name="input_fasta" ftype="fasta.bz2" value="input_single.fasta.bz2"/> + <param name="data" ftype="csv" value="data.csv"/> + <param name="data_split" ftype="csv" value="data_split.csv"/> + <param name="cannot_link" ftype="txt" value="cannot.txt"/> + </conditional> + <conditional name="min_len"> + <param name="method" value="min-len"/> + <param name="min_len" value="2500" /> + </conditional> + <param name="orf_finder" value="prodigal"/> + <param name="random_seed" value="0"/> + <param name="epoches" value="1"/> + <param name="batch_size" value="2048"/> + <output name="model" ftype="h5"> + <assert_contents> + <has_size value="3119000" delta="2000" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1"> + <conditional name="mode"> + <param name="select" value="single"/> + <param name="input_fasta" ftype="fasta.gz" value="input_single.fasta.gz"/> + <param name="data" ftype="csv" value="data.csv"/> + <param name="data_split" ftype="csv" value="data_split.csv"/> + <param name="cannot_link" ftype="txt" value="cannot.txt"/> + </conditional> + <conditional name="min_len"> + <param name="method" value="min-len"/> + <param name="min_len" value="2500" /> + </conditional> + <param name="orf_finder" value="prodigal"/> + <param name="random_seed" value="0"/> + <param name="epoches" value="1"/> + <param name="batch_size" value="2048"/> + <output name="model" ftype="h5"> + <assert_contents> + <has_size value="3119000" delta="2000" /> + </assert_contents> + </output> + </test> + <test expect_num_outputs="1"> + <conditional name="mode"> <param name="select" value="several"/> <param name="input_fasta" ftype="fasta" value="input_single.fasta,input_single_2.fasta,input_single_3.fasta"/> <param name="data" ftype="csv" value="data.csv,data.csv,data.csv"/>
