changeset 0:d49893faf877 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/chopin2 commit 77562e028c37bc7afd254b33be7b48a21003818c
author iuc
date Tue, 31 Jan 2023 16:31:19 +0000
parents
children 693bfd012601
files chopin2.xml macros.xml test-data/iris.csv test-data/iris.tabular test-data/selection.txt test-data/summary.txt
diffstat 6 files changed, 559 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/chopin2.xml	Tue Jan 31 16:31:19 2023 +0000
@@ -0,0 +1,217 @@
+<?xml version="1.0"?>
+<tool name="chopin2" id="chopin2" version="@TOOL_VERSION@+galaxy@GALAXY_VERSION@" profile="@PROFILE@" license="GPL-3.0-or-later">
+    <description>Domain-Agnostic Supervised Learning with Hyperdimensional Computing</description>
+
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="creator"/>
+    <expand macro="requirements"/>
+
+    <command detect_errors="exit_code">
+<![CDATA[
+    ln -s '$dataset' '${dataset.element_identifier}' &&
+
+    chopin2
+
+    --dataset '${dataset.element_identifier}'
+    #if $dataset.ext == 'csv':
+        --fieldsep ','
+    #else:
+        --fieldsep \$'\t'
+    #end if
+
+    --dimensionality ${dimensionality}
+    --levels ${levels}
+    --retrain ${retrain}
+    --stop    
+    --crossv_k ${folds}
+
+    #if $feature_selection.enable_fs == "true":
+        --select_features
+        --group_min ${feature_selection.group_min}
+        --accuracy_threshold ${feature_selection.accuracy_threshold}
+        --accuracy_uncertainty_perc ${feature_selection.accuracy_uncertainty_perc}
+    #end if
+
+    --dump
+    --cleanup
+    --nproc "\${GALAXY_SLOTS:-4}"
+    --verbose
+]]>
+    </command>
+
+    <inputs>
+        <param name="dataset" type="data" format="csv,tabular" 
+               label="Select a dataset" 
+               help="Input dataset with features on columns and observations on rows. The first column must contain the observation IDs, while the last column must contain classes. The header line is also required." />
+        
+        <param name="dimensionality" type="integer" value="10000" min="100" 
+               label="Vectors dimensionality" 
+               help="Size of hypervectors is usually 10,000 in vector-symbolic architectures. However, lower values could work 
+                     with small datasets in terms of number of features and observations. Please note that you may require 
+                     to increase this number in case of datasets with a huge number of features." />
+        
+        <param name="levels" type="integer" value="1000" min="2" 
+               label="Levels" 
+               help="Number of level vectors. You may consider to look at the distribution of your data in order to choose 
+                     the most appropriate value." />
+        
+        <param name="retrain" type="integer" value="0" min="0" 
+               label="Model retraining iterations" 
+               help="Maximum number of retraining iterations. Class hypervectors are retrained to minimize errors caused by noise." />
+        
+        <param name="folds" type="integer" value="2" min="2" 
+               label="Number of folds for cross-validation" 
+               help="This tool makes use of k-folds cross-validation to evaluate the accuracy of the hyperdimensional model. 
+                     Make sure to choose a good number of folds for validating the classification model. Please note that higher number 
+                     of folds could significantly increase the running time." />
+
+        <conditional name="feature_selection">
+            <param name="enable_fs" type="select" 
+                   label="Enable feature selection" 
+                   help="If selected, this will extract a set of features with the better discriminative power among classes. 
+                         The feature selection algorithm is defined as a backward variable selection method.">
+                <option value="false" selected="true">Disabled</option>
+                <option value="true">Enabled</option>
+            </param>
+            
+            <when value="false" />
+
+            <when value="true">
+                <param name="group_min" type="integer" value="1" min="1" 
+                       label="Minimum number of selected features" 
+                       help="Tool will stop removing features if its number will reach this value." />
+                
+                <param name="accuracy_threshold" type="float" value="60.0" min="0.0" max="100.0" 
+                       label="Accuracy threshold" 
+                       help="Stop the execution if the best accuracy reached for a group of features is lower than this value." />
+                
+                <param name="accuracy_uncertainty_perc" type="float" value="5.0" min="0.0" max="100.0" 
+                       label="Accuracy uncertainty percentage" 
+                       help="Consider non optimal solutions if model accuracy is greater than the best accuracy minus this percentage." />
+            </when>
+        </conditional>
+    </inputs>
+
+    <outputs>
+        <data format="tabular" name="summary" label="${tool.name} on ${on_string}: Summary" from_work_dir="summary.txt">
+            <actions>
+                <action name="column_names" type="metadata" default="Run ID,Group Size,Retraining,Accuracy,Excluded Feature" />
+                <action name="column_types" type="metadata" default="str,int,int,float,str" />
+                <action name="comment_lines" type="metadata" default="7" />
+            </actions>
+        </data>
+        
+        <data format="tabular" name="selection" label="${tool.name} on ${on_string}: Selection" from_work_dir="selection.txt">
+            <filter>feature_selection["enable_fs"]</filter>
+            <actions>
+                <action name="column_names" type="metadata" default="Selected Features:" />
+                <action name="column_types" type="metadata" default="str" />
+                <action name="comment_lines" type="metadata" default="3" />
+            </actions>
+        </data>
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="dataset" value="iris.csv" />
+            <param name="dimensionality" value="1000" />
+            <param name="levels" value="100" />
+            <param name="retrain" value="10" />
+            <param name="folds" value="5" />
+            
+            <output name="summary" ftype="tabular" value="summary.txt">
+                <assert_contents>
+                    <has_text_matching expression="# Run ID\tGroup Size\tRetraining\tAccuracy"/>
+                    <has_text text="8f0e142ff27db7f8d2cc66cfcc05e27c" />
+                </assert_contents>
+            </output>
+        </test>
+
+        <test>
+            <param name="dataset" value="iris.tabular" />
+            <param name="dimensionality" value="1000" />
+            <param name="levels" value="100" />
+            <param name="retrain" value="10" />
+            <param name="folds" value="5" />
+            
+            <output name="summary" ftype="tabular" value="summary.txt">
+                <assert_contents>
+                    <has_text_matching expression="# Run ID\tGroup Size\tRetraining\tAccuracy"/>
+                    <has_text text="8f0e142ff27db7f8d2cc66cfcc05e27c" />
+                </assert_contents>
+            </output>
+        </test>
+
+        <test>
+            <param name="dataset" value="iris.csv" />
+            <param name="dimensionality" value="1000" />
+            <param name="levels" value="100" />
+            <param name="retrain" value="10" />
+            <param name="folds" value="5" />
+
+            <conditional name="feature_selection">
+                <param name="enable_fs" value="true" />
+                <param name="group_min" value="1" />
+                <param name="accuracy_threshold" value="60.0" />
+                <param name="accuracy_uncertainty_perc" value="5.0" />
+            </conditional>
+            
+            <output name="summary" ftype="tabular" value="summary.txt">
+                <assert_contents>
+                    <has_text_matching expression="# Run ID\tGroup Size\tRetraining\tAccuracy" />
+                    <has_text text="8f0e142ff27db7f8d2cc66cfcc05e27c" />
+                </assert_contents>
+            </output>
+
+            <output name="selection" ftype="tabular" value="selection.txt">
+                <assert_contents>
+                    <has_text text="# Selected Features:" />
+                    <has_text text="PetalLengthCm" />
+                    <has_text text="PetalWidthCm" />
+                    <has_text text="SepalLengthCm" />
+                    <has_text text="SepalWidthCm" />
+                </assert_contents>
+            </output>
+        </test>
+    </tests>
+
+    <help><![CDATA[
+chopin2 is a domain-agnostic supervised learning classifier built according to the Hyperdimensional Computing paradigm. 
+It also implements a feature selection method based on the backward variable elimination strategy.
+
+-----
+
+**Input**
+
+The input is a CSV file representing a matrix with the observations on the rows and features on columns. 
+The first column must contain the observation IDs, while the last column contains the classes.
+Also, the first line must contain the header with the column names.
+
+The tool doesn't support datasets with missing values. It also supports numerical datasets only.
+Please note that categorical values are allowed under the first and last columns.
+
+-----
+
+**Output**
+
+The output is a summary table with information about the accuracy of the hyperdimensional model and 
+the number of retraining iterations that were required to achieve that level of accuracy.
+
+In case the feature selection is enabled, it also returns a file with the list of selected features 
+that come out from the hyperdimensional classification model with the best accuracy.
+
+-----
+
+.. class:: infomark
+
+**Notes**
+
+Please visit the official GitHub repository_ for other information about `chopin2`.
+
+.. _repository: https://github.com/cumbof/chopin2
+    ]]></help>
+
+    <expand macro="citations"/>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Tue Jan 31 16:31:19 2023 +0000
@@ -0,0 +1,25 @@
+<macros>
+    <token name="@TOOL_VERSION@">1.0.7</token>
+    <token name="@GALAXY_VERSION@">1</token>
+    <token name="@PROFILE@">22.05</token>
+
+    <xml name="creator">
+        <creator>
+            <person givenName="Fabio" familyName="Cumbo" 
+                    url="https://cumbof.github.io/" 
+                    email="fabio.cumbo@gmail.com" />
+        </creator>
+    </xml>
+
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="@TOOL_VERSION@">chopin2</requirement>
+        </requirements>
+    </xml>
+
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.3390/a13090233</citation>
+        </citations>
+    </xml>
+</macros>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/iris.csv	Tue Jan 31 16:31:19 2023 +0000
@@ -0,0 +1,151 @@
+Id,SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm,Species
+1,5.1,3.5,1.4,0.2,Iris-setosa
+2,4.9,3.0,1.4,0.2,Iris-setosa
+3,4.7,3.2,1.3,0.2,Iris-setosa
+4,4.6,3.1,1.5,0.2,Iris-setosa
+5,5.0,3.6,1.4,0.2,Iris-setosa
+6,5.4,3.9,1.7,0.4,Iris-setosa
+7,4.6,3.4,1.4,0.3,Iris-setosa
+8,5.0,3.4,1.5,0.2,Iris-setosa
+9,4.4,2.9,1.4,0.2,Iris-setosa
+10,4.9,3.1,1.5,0.1,Iris-setosa
+11,5.4,3.7,1.5,0.2,Iris-setosa
+12,4.8,3.4,1.6,0.2,Iris-setosa
+13,4.8,3.0,1.4,0.1,Iris-setosa
+14,4.3,3.0,1.1,0.1,Iris-setosa
+15,5.8,4.0,1.2,0.2,Iris-setosa
+16,5.7,4.4,1.5,0.4,Iris-setosa
+17,5.4,3.9,1.3,0.4,Iris-setosa
+18,5.1,3.5,1.4,0.3,Iris-setosa
+19,5.7,3.8,1.7,0.3,Iris-setosa
+20,5.1,3.8,1.5,0.3,Iris-setosa
+21,5.4,3.4,1.7,0.2,Iris-setosa
+22,5.1,3.7,1.5,0.4,Iris-setosa
+23,4.6,3.6,1.0,0.2,Iris-setosa
+24,5.1,3.3,1.7,0.5,Iris-setosa
+25,4.8,3.4,1.9,0.2,Iris-setosa
+26,5.0,3.0,1.6,0.2,Iris-setosa
+27,5.0,3.4,1.6,0.4,Iris-setosa
+28,5.2,3.5,1.5,0.2,Iris-setosa
+29,5.2,3.4,1.4,0.2,Iris-setosa
+30,4.7,3.2,1.6,0.2,Iris-setosa
+31,4.8,3.1,1.6,0.2,Iris-setosa
+32,5.4,3.4,1.5,0.4,Iris-setosa
+33,5.2,4.1,1.5,0.1,Iris-setosa
+34,5.5,4.2,1.4,0.2,Iris-setosa
+35,4.9,3.1,1.5,0.1,Iris-setosa
+36,5.0,3.2,1.2,0.2,Iris-setosa
+37,5.5,3.5,1.3,0.2,Iris-setosa
+38,4.9,3.1,1.5,0.1,Iris-setosa
+39,4.4,3.0,1.3,0.2,Iris-setosa
+40,5.1,3.4,1.5,0.2,Iris-setosa
+41,5.0,3.5,1.3,0.3,Iris-setosa
+42,4.5,2.3,1.3,0.3,Iris-setosa
+43,4.4,3.2,1.3,0.2,Iris-setosa
+44,5.0,3.5,1.6,0.6,Iris-setosa
+45,5.1,3.8,1.9,0.4,Iris-setosa
+46,4.8,3.0,1.4,0.3,Iris-setosa
+47,5.1,3.8,1.6,0.2,Iris-setosa
+48,4.6,3.2,1.4,0.2,Iris-setosa
+49,5.3,3.7,1.5,0.2,Iris-setosa
+50,5.0,3.3,1.4,0.2,Iris-setosa
+51,7.0,3.2,4.7,1.4,Iris-versicolor
+52,6.4,3.2,4.5,1.5,Iris-versicolor
+53,6.9,3.1,4.9,1.5,Iris-versicolor
+54,5.5,2.3,4.0,1.3,Iris-versicolor
+55,6.5,2.8,4.6,1.5,Iris-versicolor
+56,5.7,2.8,4.5,1.3,Iris-versicolor
+57,6.3,3.3,4.7,1.6,Iris-versicolor
+58,4.9,2.4,3.3,1.0,Iris-versicolor
+59,6.6,2.9,4.6,1.3,Iris-versicolor
+60,5.2,2.7,3.9,1.4,Iris-versicolor
+61,5.0,2.0,3.5,1.0,Iris-versicolor
+62,5.9,3.0,4.2,1.5,Iris-versicolor
+63,6.0,2.2,4.0,1.0,Iris-versicolor
+64,6.1,2.9,4.7,1.4,Iris-versicolor
+65,5.6,2.9,3.6,1.3,Iris-versicolor
+66,6.7,3.1,4.4,1.4,Iris-versicolor
+67,5.6,3.0,4.5,1.5,Iris-versicolor
+68,5.8,2.7,4.1,1.0,Iris-versicolor
+69,6.2,2.2,4.5,1.5,Iris-versicolor
+70,5.6,2.5,3.9,1.1,Iris-versicolor
+71,5.9,3.2,4.8,1.8,Iris-versicolor
+72,6.1,2.8,4.0,1.3,Iris-versicolor
+73,6.3,2.5,4.9,1.5,Iris-versicolor
+74,6.1,2.8,4.7,1.2,Iris-versicolor
+75,6.4,2.9,4.3,1.3,Iris-versicolor
+76,6.6,3.0,4.4,1.4,Iris-versicolor
+77,6.8,2.8,4.8,1.4,Iris-versicolor
+78,6.7,3.0,5.0,1.7,Iris-versicolor
+79,6.0,2.9,4.5,1.5,Iris-versicolor
+80,5.7,2.6,3.5,1.0,Iris-versicolor
+81,5.5,2.4,3.8,1.1,Iris-versicolor
+82,5.5,2.4,3.7,1.0,Iris-versicolor
+83,5.8,2.7,3.9,1.2,Iris-versicolor
+84,6.0,2.7,5.1,1.6,Iris-versicolor
+85,5.4,3.0,4.5,1.5,Iris-versicolor
+86,6.0,3.4,4.5,1.6,Iris-versicolor
+87,6.7,3.1,4.7,1.5,Iris-versicolor
+88,6.3,2.3,4.4,1.3,Iris-versicolor
+89,5.6,3.0,4.1,1.3,Iris-versicolor
+90,5.5,2.5,4.0,1.3,Iris-versicolor
+91,5.5,2.6,4.4,1.2,Iris-versicolor
+92,6.1,3.0,4.6,1.4,Iris-versicolor
+93,5.8,2.6,4.0,1.2,Iris-versicolor
+94,5.0,2.3,3.3,1.0,Iris-versicolor
+95,5.6,2.7,4.2,1.3,Iris-versicolor
+96,5.7,3.0,4.2,1.2,Iris-versicolor
+97,5.7,2.9,4.2,1.3,Iris-versicolor
+98,6.2,2.9,4.3,1.3,Iris-versicolor
+99,5.1,2.5,3.0,1.1,Iris-versicolor
+100,5.7,2.8,4.1,1.3,Iris-versicolor
+101,6.3,3.3,6.0,2.5,Iris-virginica
+102,5.8,2.7,5.1,1.9,Iris-virginica
+103,7.1,3.0,5.9,2.1,Iris-virginica
+104,6.3,2.9,5.6,1.8,Iris-virginica
+105,6.5,3.0,5.8,2.2,Iris-virginica
+106,7.6,3.0,6.6,2.1,Iris-virginica
+107,4.9,2.5,4.5,1.7,Iris-virginica
+108,7.3,2.9,6.3,1.8,Iris-virginica
+109,6.7,2.5,5.8,1.8,Iris-virginica
+110,7.2,3.6,6.1,2.5,Iris-virginica
+111,6.5,3.2,5.1,2.0,Iris-virginica
+112,6.4,2.7,5.3,1.9,Iris-virginica
+113,6.8,3.0,5.5,2.1,Iris-virginica
+114,5.7,2.5,5.0,2.0,Iris-virginica
+115,5.8,2.8,5.1,2.4,Iris-virginica
+116,6.4,3.2,5.3,2.3,Iris-virginica
+117,6.5,3.0,5.5,1.8,Iris-virginica
+118,7.7,3.8,6.7,2.2,Iris-virginica
+119,7.7,2.6,6.9,2.3,Iris-virginica
+120,6.0,2.2,5.0,1.5,Iris-virginica
+121,6.9,3.2,5.7,2.3,Iris-virginica
+122,5.6,2.8,4.9,2.0,Iris-virginica
+123,7.7,2.8,6.7,2.0,Iris-virginica
+124,6.3,2.7,4.9,1.8,Iris-virginica
+125,6.7,3.3,5.7,2.1,Iris-virginica
+126,7.2,3.2,6.0,1.8,Iris-virginica
+127,6.2,2.8,4.8,1.8,Iris-virginica
+128,6.1,3.0,4.9,1.8,Iris-virginica
+129,6.4,2.8,5.6,2.1,Iris-virginica
+130,7.2,3.0,5.8,1.6,Iris-virginica
+131,7.4,2.8,6.1,1.9,Iris-virginica
+132,7.9,3.8,6.4,2.0,Iris-virginica
+133,6.4,2.8,5.6,2.2,Iris-virginica
+134,6.3,2.8,5.1,1.5,Iris-virginica
+135,6.1,2.6,5.6,1.4,Iris-virginica
+136,7.7,3.0,6.1,2.3,Iris-virginica
+137,6.3,3.4,5.6,2.4,Iris-virginica
+138,6.4,3.1,5.5,1.8,Iris-virginica
+139,6.0,3.0,4.8,1.8,Iris-virginica
+140,6.9,3.1,5.4,2.1,Iris-virginica
+141,6.7,3.1,5.6,2.4,Iris-virginica
+142,6.9,3.1,5.1,2.3,Iris-virginica
+143,5.8,2.7,5.1,1.9,Iris-virginica
+144,6.8,3.2,5.9,2.3,Iris-virginica
+145,6.7,3.3,5.7,2.5,Iris-virginica
+146,6.7,3.0,5.2,2.3,Iris-virginica
+147,6.3,2.5,5.0,1.9,Iris-virginica
+148,6.5,3.0,5.2,2.0,Iris-virginica
+149,6.2,3.4,5.4,2.3,Iris-virginica
+150,5.9,3.0,5.1,1.8,Iris-virginica
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/iris.tabular	Tue Jan 31 16:31:19 2023 +0000
@@ -0,0 +1,151 @@
+Id	SepalLengthCm	SepalWidthCm	PetalLengthCm	PetalWidthCm	Species
+1	5.1	3.5	1.4	0.2	Iris-setosa
+2	4.9	3.0	1.4	0.2	Iris-setosa
+3	4.7	3.2	1.3	0.2	Iris-setosa
+4	4.6	3.1	1.5	0.2	Iris-setosa
+5	5.0	3.6	1.4	0.2	Iris-setosa
+6	5.4	3.9	1.7	0.4	Iris-setosa
+7	4.6	3.4	1.4	0.3	Iris-setosa
+8	5.0	3.4	1.5	0.2	Iris-setosa
+9	4.4	2.9	1.4	0.2	Iris-setosa
+10	4.9	3.1	1.5	0.1	Iris-setosa
+11	5.4	3.7	1.5	0.2	Iris-setosa
+12	4.8	3.4	1.6	0.2	Iris-setosa
+13	4.8	3.0	1.4	0.1	Iris-setosa
+14	4.3	3.0	1.1	0.1	Iris-setosa
+15	5.8	4.0	1.2	0.2	Iris-setosa
+16	5.7	4.4	1.5	0.4	Iris-setosa
+17	5.4	3.9	1.3	0.4	Iris-setosa
+18	5.1	3.5	1.4	0.3	Iris-setosa
+19	5.7	3.8	1.7	0.3	Iris-setosa
+20	5.1	3.8	1.5	0.3	Iris-setosa
+21	5.4	3.4	1.7	0.2	Iris-setosa
+22	5.1	3.7	1.5	0.4	Iris-setosa
+23	4.6	3.6	1.0	0.2	Iris-setosa
+24	5.1	3.3	1.7	0.5	Iris-setosa
+25	4.8	3.4	1.9	0.2	Iris-setosa
+26	5.0	3.0	1.6	0.2	Iris-setosa
+27	5.0	3.4	1.6	0.4	Iris-setosa
+28	5.2	3.5	1.5	0.2	Iris-setosa
+29	5.2	3.4	1.4	0.2	Iris-setosa
+30	4.7	3.2	1.6	0.2	Iris-setosa
+31	4.8	3.1	1.6	0.2	Iris-setosa
+32	5.4	3.4	1.5	0.4	Iris-setosa
+33	5.2	4.1	1.5	0.1	Iris-setosa
+34	5.5	4.2	1.4	0.2	Iris-setosa
+35	4.9	3.1	1.5	0.1	Iris-setosa
+36	5.0	3.2	1.2	0.2	Iris-setosa
+37	5.5	3.5	1.3	0.2	Iris-setosa
+38	4.9	3.1	1.5	0.1	Iris-setosa
+39	4.4	3.0	1.3	0.2	Iris-setosa
+40	5.1	3.4	1.5	0.2	Iris-setosa
+41	5.0	3.5	1.3	0.3	Iris-setosa
+42	4.5	2.3	1.3	0.3	Iris-setosa
+43	4.4	3.2	1.3	0.2	Iris-setosa
+44	5.0	3.5	1.6	0.6	Iris-setosa
+45	5.1	3.8	1.9	0.4	Iris-setosa
+46	4.8	3.0	1.4	0.3	Iris-setosa
+47	5.1	3.8	1.6	0.2	Iris-setosa
+48	4.6	3.2	1.4	0.2	Iris-setosa
+49	5.3	3.7	1.5	0.2	Iris-setosa
+50	5.0	3.3	1.4	0.2	Iris-setosa
+51	7.0	3.2	4.7	1.4	Iris-versicolor
+52	6.4	3.2	4.5	1.5	Iris-versicolor
+53	6.9	3.1	4.9	1.5	Iris-versicolor
+54	5.5	2.3	4.0	1.3	Iris-versicolor
+55	6.5	2.8	4.6	1.5	Iris-versicolor
+56	5.7	2.8	4.5	1.3	Iris-versicolor
+57	6.3	3.3	4.7	1.6	Iris-versicolor
+58	4.9	2.4	3.3	1.0	Iris-versicolor
+59	6.6	2.9	4.6	1.3	Iris-versicolor
+60	5.2	2.7	3.9	1.4	Iris-versicolor
+61	5.0	2.0	3.5	1.0	Iris-versicolor
+62	5.9	3.0	4.2	1.5	Iris-versicolor
+63	6.0	2.2	4.0	1.0	Iris-versicolor
+64	6.1	2.9	4.7	1.4	Iris-versicolor
+65	5.6	2.9	3.6	1.3	Iris-versicolor
+66	6.7	3.1	4.4	1.4	Iris-versicolor
+67	5.6	3.0	4.5	1.5	Iris-versicolor
+68	5.8	2.7	4.1	1.0	Iris-versicolor
+69	6.2	2.2	4.5	1.5	Iris-versicolor
+70	5.6	2.5	3.9	1.1	Iris-versicolor
+71	5.9	3.2	4.8	1.8	Iris-versicolor
+72	6.1	2.8	4.0	1.3	Iris-versicolor
+73	6.3	2.5	4.9	1.5	Iris-versicolor
+74	6.1	2.8	4.7	1.2	Iris-versicolor
+75	6.4	2.9	4.3	1.3	Iris-versicolor
+76	6.6	3.0	4.4	1.4	Iris-versicolor
+77	6.8	2.8	4.8	1.4	Iris-versicolor
+78	6.7	3.0	5.0	1.7	Iris-versicolor
+79	6.0	2.9	4.5	1.5	Iris-versicolor
+80	5.7	2.6	3.5	1.0	Iris-versicolor
+81	5.5	2.4	3.8	1.1	Iris-versicolor
+82	5.5	2.4	3.7	1.0	Iris-versicolor
+83	5.8	2.7	3.9	1.2	Iris-versicolor
+84	6.0	2.7	5.1	1.6	Iris-versicolor
+85	5.4	3.0	4.5	1.5	Iris-versicolor
+86	6.0	3.4	4.5	1.6	Iris-versicolor
+87	6.7	3.1	4.7	1.5	Iris-versicolor
+88	6.3	2.3	4.4	1.3	Iris-versicolor
+89	5.6	3.0	4.1	1.3	Iris-versicolor
+90	5.5	2.5	4.0	1.3	Iris-versicolor
+91	5.5	2.6	4.4	1.2	Iris-versicolor
+92	6.1	3.0	4.6	1.4	Iris-versicolor
+93	5.8	2.6	4.0	1.2	Iris-versicolor
+94	5.0	2.3	3.3	1.0	Iris-versicolor
+95	5.6	2.7	4.2	1.3	Iris-versicolor
+96	5.7	3.0	4.2	1.2	Iris-versicolor
+97	5.7	2.9	4.2	1.3	Iris-versicolor
+98	6.2	2.9	4.3	1.3	Iris-versicolor
+99	5.1	2.5	3.0	1.1	Iris-versicolor
+100	5.7	2.8	4.1	1.3	Iris-versicolor
+101	6.3	3.3	6.0	2.5	Iris-virginica
+102	5.8	2.7	5.1	1.9	Iris-virginica
+103	7.1	3.0	5.9	2.1	Iris-virginica
+104	6.3	2.9	5.6	1.8	Iris-virginica
+105	6.5	3.0	5.8	2.2	Iris-virginica
+106	7.6	3.0	6.6	2.1	Iris-virginica
+107	4.9	2.5	4.5	1.7	Iris-virginica
+108	7.3	2.9	6.3	1.8	Iris-virginica
+109	6.7	2.5	5.8	1.8	Iris-virginica
+110	7.2	3.6	6.1	2.5	Iris-virginica
+111	6.5	3.2	5.1	2.0	Iris-virginica
+112	6.4	2.7	5.3	1.9	Iris-virginica
+113	6.8	3.0	5.5	2.1	Iris-virginica
+114	5.7	2.5	5.0	2.0	Iris-virginica
+115	5.8	2.8	5.1	2.4	Iris-virginica
+116	6.4	3.2	5.3	2.3	Iris-virginica
+117	6.5	3.0	5.5	1.8	Iris-virginica
+118	7.7	3.8	6.7	2.2	Iris-virginica
+119	7.7	2.6	6.9	2.3	Iris-virginica
+120	6.0	2.2	5.0	1.5	Iris-virginica
+121	6.9	3.2	5.7	2.3	Iris-virginica
+122	5.6	2.8	4.9	2.0	Iris-virginica
+123	7.7	2.8	6.7	2.0	Iris-virginica
+124	6.3	2.7	4.9	1.8	Iris-virginica
+125	6.7	3.3	5.7	2.1	Iris-virginica
+126	7.2	3.2	6.0	1.8	Iris-virginica
+127	6.2	2.8	4.8	1.8	Iris-virginica
+128	6.1	3.0	4.9	1.8	Iris-virginica
+129	6.4	2.8	5.6	2.1	Iris-virginica
+130	7.2	3.0	5.8	1.6	Iris-virginica
+131	7.4	2.8	6.1	1.9	Iris-virginica
+132	7.9	3.8	6.4	2.0	Iris-virginica
+133	6.4	2.8	5.6	2.2	Iris-virginica
+134	6.3	2.8	5.1	1.5	Iris-virginica
+135	6.1	2.6	5.6	1.4	Iris-virginica
+136	7.7	3.0	6.1	2.3	Iris-virginica
+137	6.3	3.4	5.6	2.4	Iris-virginica
+138	6.4	3.1	5.5	1.8	Iris-virginica
+139	6.0	3.0	4.8	1.8	Iris-virginica
+140	6.9	3.1	5.4	2.1	Iris-virginica
+141	6.7	3.1	5.6	2.4	Iris-virginica
+142	6.9	3.1	5.1	2.3	Iris-virginica
+143	5.8	2.7	5.1	1.9	Iris-virginica
+144	6.8	3.2	5.9	2.3	Iris-virginica
+145	6.7	3.3	5.7	2.5	Iris-virginica
+146	6.7	3.0	5.2	2.3	Iris-virginica
+147	6.3	2.5	5.0	1.9	Iris-virginica
+148	6.5	3.0	5.2	2.0	Iris-virginica
+149	6.2	3.4	5.4	2.3	Iris-virginica
+150	5.9	3.0	5.1	1.8	Iris-virginica
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/selection.txt	Tue Jan 31 16:31:19 2023 +0000
@@ -0,0 +1,7 @@
+# Best group size: 4
+# Best accuracy: 43.33333333333333
+# Selected Features:
+PetalLengthCm
+PetalWidthCm
+SepalLengthCm
+SepalWidthCm
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/summary.txt	Tue Jan 31 16:31:19 2023 +0000
@@ -0,0 +1,8 @@
+# Dataset: iris
+# Dimensionality: 1000
+# Number of levels: 100
+# Max retraining iterations: 10
+# Accuracy threshold (stop condition): 60.0
+# Accuracy uncertainty (percentage): 5.0
+# Run ID	Group Size	Retraining	Accuracy	Excluded Feature
+8f0e142ff27db7f8d2cc66cfcc05e27c	4	2	43.33333333333333