Package: discuit
Badgesfair-software.eu recommendations(1/5) code repository(2/5) license(3/5) community registry(4/5) citation(5/5) checklisthowfairisOther best practicesStatic analysisCoverageDocumentationGitHub ActionsBuildCitation data consistencySonarCloudMarkDown link checkerAbout DiscuitDiscuit is aDynamicitemsetclusteringUItool (with the UI part on streamlit)Discuit can split datasets (e.g. words defined by several variables) into subsets that are as comparable as possible.The package takes a csv file as input and generates a defined number of matched sets for a given number of continuous and categorical variables. One of the categorical variables can be selected to be split absolutely even across sets. Discuit generates the following output:csv file ammended with the set membership for each itemtxt file that reports on the outcomes of statistics testsIf you want to use this package and it's functionality with a graphic user interface, check theapp on streamlit.The project setup is documented inproject_setup.md.InstallationDiscuit is available on PyPI!pipinstalldiscuitOr install the latest development version directly from GitHub:git clone git@github.com:doerte/discuit-project.gitcd discuit-projectpython3 -m pip install .Using DiscuitIn the terminal, run Discuit with the following command:
discuit "name of input file" [number of desired sets] --columns l/c/n/a/d --runs [desired number of runs]Example: discuit example/input.csv 2 --columns l a n c n d --runs 3This will run Discuit with theprovided testfileand create 2 subsets.
The columns in the file are identified as "label", "categorical", "numerical", "absolute", "numerical"
and "disregard" (in that order). The program will run 3 times (and create 3 output files).Required inputThe input file needs to be a .csv file with a first line containing headings followed by rows that represent the different items. Each column specifies one variable.When launching the script, please specify per column what kind a data the script should expect:(l)abel: just a label, will not be taken into consideration, could be the itemname or itemnumber. This can only be assigned once.(n)umerical: a numerical variable, such as frequency or AoA,(c)ategorical: a categorical variable, such as "transitivity" or "accuracy",(a)bsolute: this needs to be perfectly divided between sets. This can only be assigned once.(d)isregard: a column that does not need to be taken into account for the split, but contains other information you have in the same file.The package will try maximally 20 times to come-up with a good split. If it doesn't it will give up and output it's last try. You can always run it again. Often it will succeed eventually. If not, consider dropping variables.If you run the script without specifying --columns, you will be asked what you want per column. If you don't specify the desired number of runs, it will generate 1 output file.Missing dataIf you choose an "absolute split variable", this variable cannot have missing data. The program will exit if it does.
For categorical variables, a dummy category is created that holds the items with missing data. For numerical variables,
missing data is replaced with the average of this variable.
If you prefer a different approach, please prepare your input file in a way that does not include missing data.ContributingIf you want to contribute to the development of Discuit,
have a look at thecontribution guidelines.CreditsThis package was created withCookiecutterand theNLeSC/python-template.