nkululeko 0.81.7__tar.gz → 0.82.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nkululeko-0.81.7 → nkululeko-0.82.1}/CHANGELOG.md +8 -0
- {nkululeko-0.81.7/nkululeko.egg-info → nkululeko-0.82.1}/PKG-INFO +19 -1
- {nkululeko-0.81.7 → nkululeko-0.82.1}/README.md +10 -0
- nkululeko-0.82.1/meta/demos/multiple_exeriments/do_experiments.py +35 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/constants.py +1 -1
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/multidb.py +5 -10
- nkululeko-0.82.1/nkululeko/nkuluflag.py +95 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/nkululeko.py +6 -4
- {nkululeko-0.81.7 → nkululeko-0.82.1/nkululeko.egg-info}/PKG-INFO +19 -1
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko.egg-info/SOURCES.txt +1 -1
- nkululeko-0.81.7/meta/demos/multiple_exeriments/do_experiments.py +0 -48
- nkululeko-0.81.7/meta/demos/multiple_exeriments/parse_nkulu.py +0 -112
- {nkululeko-0.81.7 → nkululeko-0.82.1}/LICENSE +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/aesdd/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/androids/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/androids_orig/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/androids_test/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/ased/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/asvp-esd/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/baved/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/cafe/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/clac/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/cmu-mosei/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/demos/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/ekorpus/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/emns/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/emofilm/convert_to_16k.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/emofilm/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/emorynlp/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/emov-db/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/emovo/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/emozionalmente/create.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/enterface/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/esd/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/gerparas/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/iemocap/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/jl/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/jtes/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/meld/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/mesd/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/mess/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/mlendsnd/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/msp-improv/process_database2.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/msp-podcast/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/oreau2/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/portuguese/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/ravdess/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/ravdess/process_database_speaker.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/savee/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/shemo/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/subesco/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/tess/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/thorsten-emotional/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/urdu/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/data/vivae/process_database.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/docs/source/conf.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/meta/demos/demo_best_model.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/meta/demos/my_experiment.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/meta/demos/my_experiment_local.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/meta/demos/plot_faster_anim.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/aug_train.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/augment.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/augmenting/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/augmenting/augmenter.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/augmenting/randomsplicer.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/augmenting/randomsplicing.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/augmenting/resampler.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_age.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_arousal.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_dominance.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_gender.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_mos.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_pesq.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_sdr.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_snr.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_stoi.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/ap_valence.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/autopredict/estimate_snr.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/cacheddataset.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/data/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/data/dataset.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/data/dataset_csv.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/demo.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/demo_feats.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/demo_predictor.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/experiment.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/explore.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/export.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_agender.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_agender_agender.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_analyser.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_auddim.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_audmodel.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_clap.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_hubert.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_import.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_mld.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_mos.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_opensmile.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_oxbow.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_praat.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_snr.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_spectra.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_spkrec.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_squim.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_trill.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_wav2vec2.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_wavlm.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feats_whisper.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/featureset.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feat_extract/feinberg_praat.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/feature_extractor.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/file_checker.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/filter_data.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/glob_conf.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/losses/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/losses/loss_ccc.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/losses/loss_softf1loss.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/modelrunner.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_bayes.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_cnn.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_gmm.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_knn.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_knn_reg.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_lin_reg.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_mlp.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_mlp_regression.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_svm.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_svr.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_tree.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_tree_reg.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_xgb.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/models/model_xgr.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/plots.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/predict.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/reporter.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/reporting/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/reporting/defines.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/reporting/latex_writer.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/reporting/report.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/reporting/report_item.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/reporting/reporter.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/reporting/result.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/resample.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/runmanager.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/scaler.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/segment.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/segmenting/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/segmenting/seg_inaspeechsegmenter.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/segmenting/seg_silero.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/syllable_nuclei.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/test.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/test_predictor.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/utils/__init__.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/utils/files.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/utils/stats.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko/utils/util.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko.egg-info/dependency_links.txt +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko.egg-info/requires.txt +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/nkululeko.egg-info/top_level.txt +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/pyproject.toml +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/setup.cfg +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/setup.py +0 -0
- {nkululeko-0.81.7 → nkululeko-0.82.1}/venv/bin/activate_this.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nkululeko
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.82.1
|
4
4
|
Summary: Machine learning audio prediction experiments based on templates
|
5
5
|
Home-page: https://github.com/felixbur/nkululeko
|
6
6
|
Author: Felix Burkhardt
|
@@ -42,6 +42,7 @@ Requires-Dist: umap-learn
|
|
42
42
|
Requires-Dist: xgboost
|
43
43
|
Requires-Dist: pylatex
|
44
44
|
|
45
|
+
|
45
46
|
- [Overview](#overview)
|
46
47
|
- [Confusion matrix](#confusion-matrix)
|
47
48
|
- [Epoch progression](#epoch-progression)
|
@@ -203,6 +204,14 @@ All of them take *--config <my_config.ini>* as an argument.
|
|
203
204
|
* **nkululeko.predict**: [predict features](http://blog.syntheticspeech.de/2023/08/16/nkululeko-how-to-predict-labels-for-your-data-from-existing-models-and-check-them/) like SNR, MOS, arousal/valence, age/gender, with DNN models
|
204
205
|
* **nkululeko.segment**: [segment a database](http://blog.syntheticspeech.de/2023/07/14/nkululeko-segmenting-a-database/) based on VAD (voice activity detection)
|
205
206
|
* **nkululeko.resample**: check on all [sampling rates and change](http://blog.syntheticspeech.de/2023/08/31/how-to-fix-different-sampling-rates-in-a-dataset-with-nkululeko/) to 16kHz
|
207
|
+
* **nkululeko.nkuluflag**: a convenient module to specify configuration parameters on the command-line.
|
208
|
+
* usage: nkuluflag.py [-h] [--config CONFIG] [--data [DATA ...]] [--label [LABEL ...]] [--tuning_params [TUNING_PARAMS ...]] [--layers [LAYERS ...]] [--model MODEL] [--feat FEAT] [--set SET]
|
209
|
+
[--with_os WITH_OS] [--target TARGET] [--epochs EPOCHS] [--runs RUNS] [--learning_rate LEARNING_RATE] [--drop DROP]
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
206
215
|
|
207
216
|
There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
208
217
|
* [Introduction](http://blog.syntheticspeech.de/2021/08/04/machine-learning-experiment-framework/)
|
@@ -246,6 +255,7 @@ There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
|
246
255
|
* [Oversample the training set](http://blog.syntheticspeech.de/2023/11/16/nkululeko-oversample-the-training-set/)
|
247
256
|
* [Compare several databases](http://blog.syntheticspeech.de/2024/01/02/nkululeko-compare-several-databases/)
|
248
257
|
* [Tweak the target variable for database comparison](http://blog.syntheticspeech.de/2024/03/13/nkululeko-how-to-tweak-the-target-variable-for-database-comparison/)
|
258
|
+
* [How to run multiple experiments in one go](http://blog.syntheticspeech.de/2022/03/28/how-to-run-multiple-experiments-in-one-go-with-nkululeko/)
|
249
259
|
|
250
260
|
### <a name="helloworld">Hello World example</a>
|
251
261
|
* NEW: [Here's a Google colab that runs this example out-of-the-box](https://colab.research.google.com/drive/1GYNBd5cdZQ1QC3Jm58qoeMaJg3UuPhjw?usp=sharing#scrollTo=4G_SjuF9xeQf), and here is the same [with Kaggle](https://www.kaggle.com/felixburk/nkululeko-hello-world-example)
|
@@ -323,6 +333,14 @@ F. Burkhardt, Johannes Wagner, Hagen Wierstorf, Florian Eyben and Björn Schulle
|
|
323
333
|
Changelog
|
324
334
|
=========
|
325
335
|
|
336
|
+
Version 0.82.1
|
337
|
+
--------------
|
338
|
+
* Add more test for GC action
|
339
|
+
|
340
|
+
Version 0.82.0
|
341
|
+
--------------
|
342
|
+
* added nkuluflag module
|
343
|
+
|
326
344
|
Version 0.81.7
|
327
345
|
--------------
|
328
346
|
* bugfixes
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
- [Overview](#overview)
|
2
3
|
- [Confusion matrix](#confusion-matrix)
|
3
4
|
- [Epoch progression](#epoch-progression)
|
@@ -159,6 +160,14 @@ All of them take *--config <my_config.ini>* as an argument.
|
|
159
160
|
* **nkululeko.predict**: [predict features](http://blog.syntheticspeech.de/2023/08/16/nkululeko-how-to-predict-labels-for-your-data-from-existing-models-and-check-them/) like SNR, MOS, arousal/valence, age/gender, with DNN models
|
160
161
|
* **nkululeko.segment**: [segment a database](http://blog.syntheticspeech.de/2023/07/14/nkululeko-segmenting-a-database/) based on VAD (voice activity detection)
|
161
162
|
* **nkululeko.resample**: check on all [sampling rates and change](http://blog.syntheticspeech.de/2023/08/31/how-to-fix-different-sampling-rates-in-a-dataset-with-nkululeko/) to 16kHz
|
163
|
+
* **nkululeko.nkuluflag**: a convenient module to specify configuration parameters on the command-line.
|
164
|
+
* usage: nkuluflag.py [-h] [--config CONFIG] [--data [DATA ...]] [--label [LABEL ...]] [--tuning_params [TUNING_PARAMS ...]] [--layers [LAYERS ...]] [--model MODEL] [--feat FEAT] [--set SET]
|
165
|
+
[--with_os WITH_OS] [--target TARGET] [--epochs EPOCHS] [--runs RUNS] [--learning_rate LEARNING_RATE] [--drop DROP]
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
162
171
|
|
163
172
|
There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
164
173
|
* [Introduction](http://blog.syntheticspeech.de/2021/08/04/machine-learning-experiment-framework/)
|
@@ -202,6 +211,7 @@ There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
|
202
211
|
* [Oversample the training set](http://blog.syntheticspeech.de/2023/11/16/nkululeko-oversample-the-training-set/)
|
203
212
|
* [Compare several databases](http://blog.syntheticspeech.de/2024/01/02/nkululeko-compare-several-databases/)
|
204
213
|
* [Tweak the target variable for database comparison](http://blog.syntheticspeech.de/2024/03/13/nkululeko-how-to-tweak-the-target-variable-for-database-comparison/)
|
214
|
+
* [How to run multiple experiments in one go](http://blog.syntheticspeech.de/2022/03/28/how-to-run-multiple-experiments-in-one-go-with-nkululeko/)
|
205
215
|
|
206
216
|
### <a name="helloworld">Hello World example</a>
|
207
217
|
* NEW: [Here's a Google colab that runs this example out-of-the-box](https://colab.research.google.com/drive/1GYNBd5cdZQ1QC3Jm58qoeMaJg3UuPhjw?usp=sharing#scrollTo=4G_SjuF9xeQf), and here is the same [with Kaggle](https://www.kaggle.com/felixburk/nkululeko-hello-world-example)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import os
|
2
|
+
|
3
|
+
|
4
|
+
classifiers = [
|
5
|
+
{"--model": "mlp", "--layers": "\"{'l1':64,'l2':16}\"", "--epochs": 100},
|
6
|
+
{
|
7
|
+
"--model": "mlp",
|
8
|
+
"--layers": "\"{'l1':128,'l2':64,'l3':16}\"",
|
9
|
+
"--learning_rate": ".01",
|
10
|
+
"--drop": ".3",
|
11
|
+
"--epochs": 100,
|
12
|
+
},
|
13
|
+
{"--model": "xgb", "--epochs": 1},
|
14
|
+
{"--model": "svm", "--epochs": 1},
|
15
|
+
]
|
16
|
+
|
17
|
+
features = [
|
18
|
+
{"--feat": "os"},
|
19
|
+
# {'--feat': 'os',
|
20
|
+
# '--set': 'ComParE_2016',
|
21
|
+
# },
|
22
|
+
{"--feat": "praat"},
|
23
|
+
]
|
24
|
+
|
25
|
+
|
26
|
+
for c in classifiers:
|
27
|
+
for f in features:
|
28
|
+
cmd = "python -m nkululeko.nkuluflag --config exp.ini "
|
29
|
+
for item in c:
|
30
|
+
cmd += f"{item} {c[item]} "
|
31
|
+
for item in f:
|
32
|
+
cmd += f"{item} {f[item]} "
|
33
|
+
print(cmd)
|
34
|
+
os.system(cmd)
|
35
|
+
# print(f"results: {result}, {last_epoch}")
|
@@ -1,2 +1,2 @@
|
|
1
|
-
VERSION="0.
|
1
|
+
VERSION="0.82.1"
|
2
2
|
SAMPLING_RATE = 16000
|
@@ -12,18 +12,15 @@ import numpy as np
|
|
12
12
|
import pandas as pd
|
13
13
|
import seaborn as sn
|
14
14
|
|
15
|
-
import nkululeko.glob_conf as glob_conf
|
16
15
|
from nkululeko.aug_train import doit as aug_train
|
17
|
-
from nkululeko.experiment import Experiment
|
18
16
|
from nkululeko.nkululeko import doit as nkulu
|
19
|
-
from nkululeko.utils.util import Util
|
20
17
|
|
21
18
|
|
22
19
|
def main(src_dir):
|
23
20
|
parser = argparse.ArgumentParser(
|
24
|
-
description="Call the nkululeko MULTIDB framework."
|
25
|
-
|
26
|
-
|
21
|
+
description="Call the nkululeko MULTIDB framework."
|
22
|
+
)
|
23
|
+
parser.add_argument("--config", default="exp.ini", help="The base configuration")
|
27
24
|
args = parser.parse_args()
|
28
25
|
if args.config is not None:
|
29
26
|
config_file = args.config
|
@@ -58,8 +55,7 @@ def main(src_dir):
|
|
58
55
|
dataset = datasets[i]
|
59
56
|
print(f"running {dataset}")
|
60
57
|
if extra_trains:
|
61
|
-
extra_trains_1 = extra_trains.removeprefix(
|
62
|
-
"[").removesuffix("]")
|
58
|
+
extra_trains_1 = extra_trains.removeprefix("[").removesuffix("]")
|
63
59
|
config["DATA"]["databases"] = f"['{dataset}', {extra_trains_1}]"
|
64
60
|
extra_trains_2 = ast.literal_eval(extra_trains)
|
65
61
|
for extra_train in extra_trains_2:
|
@@ -72,8 +68,7 @@ def main(src_dir):
|
|
72
68
|
test = datasets[j]
|
73
69
|
print(f"running train: {train}, test: {test}")
|
74
70
|
if extra_trains:
|
75
|
-
extra_trains_1 = extra_trains.removeprefix(
|
76
|
-
"[").removesuffix("]")
|
71
|
+
extra_trains_1 = extra_trains.removeprefix("[").removesuffix("]")
|
77
72
|
config["DATA"][
|
78
73
|
"databases"
|
79
74
|
] = f"['{train}', '{test}', {extra_trains_1}]"
|
@@ -0,0 +1,95 @@
|
|
1
|
+
import argparse
|
2
|
+
import configparser
|
3
|
+
import os
|
4
|
+
import os.path
|
5
|
+
|
6
|
+
from nkululeko.nkululeko import doit as nkulu
|
7
|
+
|
8
|
+
|
9
|
+
def do_it(src_dir):
|
10
|
+
parser = argparse.ArgumentParser(description="Call the nkululeko framework.")
|
11
|
+
parser.add_argument("--config", help="The base configuration")
|
12
|
+
parser.add_argument("--data", help="The databases", nargs="*", action="append")
|
13
|
+
parser.add_argument(
|
14
|
+
"--label", nargs="*", help="The labels for the target", action="append"
|
15
|
+
)
|
16
|
+
parser.add_argument(
|
17
|
+
"--tuning_params", nargs="*", help="parameters to be tuned", action="append"
|
18
|
+
)
|
19
|
+
parser.add_argument(
|
20
|
+
"--layers",
|
21
|
+
nargs="*",
|
22
|
+
help="layer config for mlp, e.g. l1:128 ",
|
23
|
+
action="append",
|
24
|
+
)
|
25
|
+
parser.add_argument("--model", default="xgb", help="The model type")
|
26
|
+
parser.add_argument("--feat", default="['os']", help="The feature type")
|
27
|
+
parser.add_argument("--set", help="The opensmile set")
|
28
|
+
parser.add_argument("--with_os", help="To add os features")
|
29
|
+
parser.add_argument("--target", help="The target designation")
|
30
|
+
parser.add_argument("--epochs", help="The number of epochs")
|
31
|
+
parser.add_argument("--runs", help="The number of runs")
|
32
|
+
parser.add_argument("--learning_rate", help="The learning rate")
|
33
|
+
parser.add_argument("--drop", help="The dropout rate [0:1]")
|
34
|
+
|
35
|
+
args = parser.parse_args()
|
36
|
+
|
37
|
+
if args.config is not None:
|
38
|
+
config_file = args.config
|
39
|
+
else:
|
40
|
+
print("ERROR: need config file")
|
41
|
+
quit(-1)
|
42
|
+
# test if config is there
|
43
|
+
if not os.path.isfile(config_file):
|
44
|
+
print(f"ERROR: no such file {config_file}")
|
45
|
+
|
46
|
+
config = configparser.ConfigParser()
|
47
|
+
config.read(config_file)
|
48
|
+
# fill the config
|
49
|
+
|
50
|
+
if args.data is not None:
|
51
|
+
databases = []
|
52
|
+
for t in args.data:
|
53
|
+
databases.append(t[0])
|
54
|
+
print(f"got databases: {databases}")
|
55
|
+
config["DATA"]["databases"] = str(databases)
|
56
|
+
if args.label is not None:
|
57
|
+
labels = []
|
58
|
+
for label in args.label:
|
59
|
+
labels.append(label[0])
|
60
|
+
print(f"got labels: {labels}")
|
61
|
+
config["DATA"]["labels"] = str(labels)
|
62
|
+
if args.tuning_params is not None:
|
63
|
+
tuning_params = []
|
64
|
+
for tp in args.tuning_params:
|
65
|
+
tuning_params.append(tp[0])
|
66
|
+
config["MODEL"]["tuning_params"] = str(tuning_params)
|
67
|
+
if args.layers is not None:
|
68
|
+
config["MODEL"]["layers"] = args.layers[0][0]
|
69
|
+
if args.target is not None:
|
70
|
+
config["DATA"]["target"] = args.target
|
71
|
+
if args.epochs is not None:
|
72
|
+
config["EXP"]["epochs"] = args.epochs
|
73
|
+
if args.runs is not None:
|
74
|
+
config["EXP"]["runs"] = args.runs
|
75
|
+
if args.learning_rate is not None:
|
76
|
+
config["MODEL"]["learning_rate"] = args.learning_rate
|
77
|
+
if args.drop is not None:
|
78
|
+
config["MODEL"]["drop"] = args.drop
|
79
|
+
if args.model is not None:
|
80
|
+
config["MODEL"]["type"] = args.model
|
81
|
+
if args.feat is not None:
|
82
|
+
config["FEATS"]["type"] = f"['{args.feat}']"
|
83
|
+
if args.set is not None:
|
84
|
+
config["FEATS"]["set"] = args.set
|
85
|
+
tmp_config = "tmp.ini"
|
86
|
+
with open(tmp_config, "w") as tmp_file:
|
87
|
+
config.write(tmp_file)
|
88
|
+
|
89
|
+
result, last_epoch = nkulu(tmp_config)
|
90
|
+
return result, last_epoch
|
91
|
+
|
92
|
+
|
93
|
+
if __name__ == "__main__":
|
94
|
+
cwd = os.path.dirname(os.path.abspath(__file__))
|
95
|
+
do_it(cwd) # sys.argv[1])
|
@@ -1,12 +1,14 @@
|
|
1
1
|
# nkululeko.py
|
2
2
|
# Entry script to do a Nkululeko experiment
|
3
|
-
import numpy as np
|
4
|
-
import os.path
|
5
|
-
import configparser
|
6
3
|
import argparse
|
4
|
+
import configparser
|
5
|
+
import os.path
|
6
|
+
|
7
|
+
import numpy as np
|
8
|
+
|
9
|
+
from nkululeko.constants import VERSION
|
7
10
|
import nkululeko.experiment as exp
|
8
11
|
from nkululeko.utils.util import Util
|
9
|
-
from nkululeko.constants import VERSION
|
10
12
|
|
11
13
|
|
12
14
|
def doit(config_file):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nkululeko
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.82.1
|
4
4
|
Summary: Machine learning audio prediction experiments based on templates
|
5
5
|
Home-page: https://github.com/felixbur/nkululeko
|
6
6
|
Author: Felix Burkhardt
|
@@ -42,6 +42,7 @@ Requires-Dist: umap-learn
|
|
42
42
|
Requires-Dist: xgboost
|
43
43
|
Requires-Dist: pylatex
|
44
44
|
|
45
|
+
|
45
46
|
- [Overview](#overview)
|
46
47
|
- [Confusion matrix](#confusion-matrix)
|
47
48
|
- [Epoch progression](#epoch-progression)
|
@@ -203,6 +204,14 @@ All of them take *--config <my_config.ini>* as an argument.
|
|
203
204
|
* **nkululeko.predict**: [predict features](http://blog.syntheticspeech.de/2023/08/16/nkululeko-how-to-predict-labels-for-your-data-from-existing-models-and-check-them/) like SNR, MOS, arousal/valence, age/gender, with DNN models
|
204
205
|
* **nkululeko.segment**: [segment a database](http://blog.syntheticspeech.de/2023/07/14/nkululeko-segmenting-a-database/) based on VAD (voice activity detection)
|
205
206
|
* **nkululeko.resample**: check on all [sampling rates and change](http://blog.syntheticspeech.de/2023/08/31/how-to-fix-different-sampling-rates-in-a-dataset-with-nkululeko/) to 16kHz
|
207
|
+
* **nkululeko.nkuluflag**: a convenient module to specify configuration parameters on the command-line.
|
208
|
+
* usage: nkuluflag.py [-h] [--config CONFIG] [--data [DATA ...]] [--label [LABEL ...]] [--tuning_params [TUNING_PARAMS ...]] [--layers [LAYERS ...]] [--model MODEL] [--feat FEAT] [--set SET]
|
209
|
+
[--with_os WITH_OS] [--target TARGET] [--epochs EPOCHS] [--runs RUNS] [--learning_rate LEARNING_RATE] [--drop DROP]
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
206
215
|
|
207
216
|
There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
208
217
|
* [Introduction](http://blog.syntheticspeech.de/2021/08/04/machine-learning-experiment-framework/)
|
@@ -246,6 +255,7 @@ There's my [blog](http://blog.syntheticspeech.de/?s=nkululeko) with tutorials:
|
|
246
255
|
* [Oversample the training set](http://blog.syntheticspeech.de/2023/11/16/nkululeko-oversample-the-training-set/)
|
247
256
|
* [Compare several databases](http://blog.syntheticspeech.de/2024/01/02/nkululeko-compare-several-databases/)
|
248
257
|
* [Tweak the target variable for database comparison](http://blog.syntheticspeech.de/2024/03/13/nkululeko-how-to-tweak-the-target-variable-for-database-comparison/)
|
258
|
+
* [How to run multiple experiments in one go](http://blog.syntheticspeech.de/2022/03/28/how-to-run-multiple-experiments-in-one-go-with-nkululeko/)
|
249
259
|
|
250
260
|
### <a name="helloworld">Hello World example</a>
|
251
261
|
* NEW: [Here's a Google colab that runs this example out-of-the-box](https://colab.research.google.com/drive/1GYNBd5cdZQ1QC3Jm58qoeMaJg3UuPhjw?usp=sharing#scrollTo=4G_SjuF9xeQf), and here is the same [with Kaggle](https://www.kaggle.com/felixburk/nkululeko-hello-world-example)
|
@@ -323,6 +333,14 @@ F. Burkhardt, Johannes Wagner, Hagen Wierstorf, Florian Eyben and Björn Schulle
|
|
323
333
|
Changelog
|
324
334
|
=========
|
325
335
|
|
336
|
+
Version 0.82.1
|
337
|
+
--------------
|
338
|
+
* Add more test for GC action
|
339
|
+
|
340
|
+
Version 0.82.0
|
341
|
+
--------------
|
342
|
+
* added nkuluflag module
|
343
|
+
|
326
344
|
Version 0.81.7
|
327
345
|
--------------
|
328
346
|
* bugfixes
|
@@ -52,7 +52,6 @@ meta/demos/my_experiment.py
|
|
52
52
|
meta/demos/my_experiment_local.py
|
53
53
|
meta/demos/plot_faster_anim.py
|
54
54
|
meta/demos/multiple_exeriments/do_experiments.py
|
55
|
-
meta/demos/multiple_exeriments/parse_nkulu.py
|
56
55
|
nkululeko/__init__.py
|
57
56
|
nkululeko/aug_train.py
|
58
57
|
nkululeko/augment.py
|
@@ -70,6 +69,7 @@ nkululeko/filter_data.py
|
|
70
69
|
nkululeko/glob_conf.py
|
71
70
|
nkululeko/modelrunner.py
|
72
71
|
nkululeko/multidb.py
|
72
|
+
nkululeko/nkuluflag.py
|
73
73
|
nkululeko/nkululeko.py
|
74
74
|
nkululeko/plots.py
|
75
75
|
nkululeko/predict.py
|
@@ -1,48 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
|
3
|
-
src_path = 'demos/multiple_exeriments/'
|
4
|
-
|
5
|
-
classifiers = [
|
6
|
-
{'--model': 'mlp',
|
7
|
-
'--layers': '\"{\'l1\':64,\'l2\':16}\"'},
|
8
|
-
{'--model': 'mlp',
|
9
|
-
'--layers': '\"{\'l1\':64,\'l2\':16}\"',
|
10
|
-
'--learning_rate': '.1',},
|
11
|
-
{'--model': 'mlp',
|
12
|
-
'--layers': '\"{\'l1\':64,\'l2\':16}\"',
|
13
|
-
'--learning_rate': '.0001',
|
14
|
-
'--drop': '.3',
|
15
|
-
},
|
16
|
-
{'--model': 'xgb',
|
17
|
-
'--epochs':1},
|
18
|
-
{'--model': 'svm',
|
19
|
-
'--epochs':1},
|
20
|
-
]
|
21
|
-
|
22
|
-
features = [
|
23
|
-
{'--feat': 'os'},
|
24
|
-
# {'--feat': 'os',
|
25
|
-
# '--set': 'ComParE_2016',
|
26
|
-
# },
|
27
|
-
# {'--feat': 'mld'},
|
28
|
-
# {'--feat': 'mld',
|
29
|
-
# '--with_os': 'True',
|
30
|
-
# },
|
31
|
-
# {'--feat': 'xbow'},
|
32
|
-
# {'--feat': 'xbow',
|
33
|
-
# '--with_os': 'True',
|
34
|
-
# },
|
35
|
-
# {'--feat': 'trill'},
|
36
|
-
# {'--feat': 'wav2vec'},
|
37
|
-
]
|
38
|
-
|
39
|
-
|
40
|
-
for c in classifiers:
|
41
|
-
for f in features:
|
42
|
-
cmd = f'python {src_path}parse_nkulu.py '
|
43
|
-
for item in c:
|
44
|
-
cmd += f'{item} {c[item]} '
|
45
|
-
for item in f:
|
46
|
-
cmd += f'{item} {f[item]} '
|
47
|
-
print(cmd)
|
48
|
-
os.system(cmd)
|
@@ -1,112 +0,0 @@
|
|
1
|
-
|
2
|
-
import sys
|
3
|
-
#sys.path.append("../../src")
|
4
|
-
sys.path.append("../nkululeko/src")
|
5
|
-
import constants
|
6
|
-
import numpy as np
|
7
|
-
import experiment as exp
|
8
|
-
import configparser
|
9
|
-
from util import Util
|
10
|
-
import argparse
|
11
|
-
import os.path
|
12
|
-
src_path = './demos/multiple_experiments/'
|
13
|
-
|
14
|
-
|
15
|
-
def main():
|
16
|
-
parser = argparse.ArgumentParser(description='Call the nkululeko framework.')
|
17
|
-
parser.add_argument('--config', default='exp.ini', help='The base configuration')
|
18
|
-
parser.add_argument('--data', help='The databases', nargs='*', \
|
19
|
-
action='append')
|
20
|
-
parser.add_argument('--label', nargs='*', help='The labels for the target', \
|
21
|
-
action='append')
|
22
|
-
parser.add_argument('--tuning_params', nargs='*', help='parameters to be tuned', \
|
23
|
-
action='append')
|
24
|
-
parser.add_argument('--layers', nargs='*', help='layer config for mlp, e.g. l1:128 ', \
|
25
|
-
action='append')
|
26
|
-
parser.add_argument('--model', default='xgb', help='The model type')
|
27
|
-
parser.add_argument('--feat', default='os', help='The feature type')
|
28
|
-
parser.add_argument('--set', help='The opensmile set')
|
29
|
-
parser.add_argument('--with_os', help='To add os features')
|
30
|
-
parser.add_argument('--target', help='The target designation')
|
31
|
-
parser.add_argument('--epochs', help='The number of epochs')
|
32
|
-
parser.add_argument('--runs', help='The number of runs')
|
33
|
-
parser.add_argument('--learning_rate', help='The learning rate')
|
34
|
-
parser.add_argument('--drop', help='The dropout rate [0:1]')
|
35
|
-
|
36
|
-
args = parser.parse_args()
|
37
|
-
|
38
|
-
if args.config is not None:
|
39
|
-
config_file = args.config
|
40
|
-
else:
|
41
|
-
config_file = f'{src_path}exp.ini'
|
42
|
-
# test if config is there
|
43
|
-
if not os.path.isfile(config_file):
|
44
|
-
print(f'ERROR: no such file {config_file}')
|
45
|
-
|
46
|
-
config = configparser.ConfigParser()
|
47
|
-
config.read(config_file)
|
48
|
-
# fill the config
|
49
|
-
|
50
|
-
|
51
|
-
if args.data is not None:
|
52
|
-
databases = []
|
53
|
-
for t in args.data:
|
54
|
-
databases.append(t[0])
|
55
|
-
print(f'got databases: {databases}')
|
56
|
-
config['DATA']['databases'] = str(databases)
|
57
|
-
if args.label is not None:
|
58
|
-
labels = []
|
59
|
-
for l in args.label:
|
60
|
-
labels.append(l[0])
|
61
|
-
print(f'got labels: {labels}')
|
62
|
-
config['DATA']['labels'] = str(labels)
|
63
|
-
if args.tuning_params is not None:
|
64
|
-
tuning_params = []
|
65
|
-
for tp in args.tuning_params:
|
66
|
-
tuning_params.append(tp[0])
|
67
|
-
config['MODEL']['tuning_params'] = str(tuning_params)
|
68
|
-
if args.layers is not None:
|
69
|
-
config['MODEL']['layers'] = args.layers[0][0]
|
70
|
-
if args.target is not None:
|
71
|
-
config['DATA']['target'] = args.target
|
72
|
-
if args.epochs is not None:
|
73
|
-
config['EXP']['epochs'] = args.epochs
|
74
|
-
if args.runs is not None:
|
75
|
-
config['EXP']['runs'] = args.runs
|
76
|
-
if args.learning_rate is not None:
|
77
|
-
config['MODEL']['learning_rate'] = args.learning_rate
|
78
|
-
if args.drop is not None:
|
79
|
-
config['MODEL']['drop'] = args.drop
|
80
|
-
if args.model is not None:
|
81
|
-
config['MODEL']['type'] = args.model
|
82
|
-
if args.feat is not None:
|
83
|
-
config['FEATS']['type'] = f'[\'{args.feat}\']'
|
84
|
-
if args.with_os is not None:
|
85
|
-
config['FEATS']['with_os'] = args.with_os
|
86
|
-
if args.set is not None:
|
87
|
-
config['FEATS']['set'] = args.set
|
88
|
-
|
89
|
-
|
90
|
-
name = config['EXP']['name']
|
91
|
-
|
92
|
-
# init the experiment
|
93
|
-
expr = exp.Experiment(config)
|
94
|
-
util = Util()
|
95
|
-
util.debug(f'running {name}, Nkululeko version {constants.VERSION}')
|
96
|
-
|
97
|
-
# load the data
|
98
|
-
expr.load_datasets()
|
99
|
-
# split into train and test
|
100
|
-
expr.fill_train_and_tests()
|
101
|
-
# extract features
|
102
|
-
expr.extract_feats()
|
103
|
-
# initialize a run manager
|
104
|
-
expr.init_runmanager()
|
105
|
-
# run the experiment
|
106
|
-
reports = expr.run()
|
107
|
-
result = reports[-1].result.test
|
108
|
-
# report result
|
109
|
-
util.debug(f'result for {expr.get_name()} is {result}')
|
110
|
-
|
111
|
-
if __name__ == "__main__":
|
112
|
-
main()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|