From e37885691ed3137f27e88241f5426069cc3fcd6e Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Tue, 17 Sep 2024 13:17:45 +0900 Subject: [PATCH 01/22] refactor: clean up imports and formatting across multiple files --- check.ini | 21 + cocosda_2024/exp.ini | 29 + cocosda_2024/exp_agedb_class_agender.ini | 31 + cocosda_2024/exp_agedb_class_os_praat.ini | 27 + cocosda_2024/exp_agedb_class_os_svm.ini | 27 + cocosda_2024/exp_agedb_class_os_xgb.ini | 26 + cocosda_2024/exp_agedb_class_praat_svm.ini | 27 + cocosda_2024/exp_emns_audmodel.ini | 26 + cocosda_2024/exp_emns_finetuning.ini | 25 + cocosda_2024/exp_emns_hubert.ini | 26 + cocosda_2024/exp_emns_os.ini | 26 + cocosda_2024/exp_emns_wavlm.ini | 26 + cocosda_2024/exp_iemocap_audmodel_svm.ini | 28 + cocosda_2024/exp_iemocap_hubert_svm.ini | 28 + cocosda_2024/exp_iemocap_wavlm_svm.ini | 28 + cocosda_2024/exp_jnv_audmodel.ini | 31 + cocosda_2024/exp_jnv_hubert.ini | 31 + cocosda_2024/exp_jnv_wavlm.ini | 31 + cocosda_2024/exp_jtes_audmodel.ini | 41 + cocosda_2024/exp_jtes_hubert.ini | 41 + cocosda_2024/exp_jtes_wavlm.ini | 41 + cocosda_2024/exp_kbes_audmodel.ini | 30 + cocosda_2024/exp_kbes_hubert.ini | 30 + cocosda_2024/exp_kbes_wavlm.ini | 30 + cocosda_2024/exp_laughter_os.ini | 55 ++ cocosda_2024/exp_laughter_praat.ini | 55 ++ cocosda_2024/exp_podcast_audmodel_svm.ini | 28 + cocosda_2024/exp_podcast_hubert_svm.ini | 28 + cocosda_2024/exp_podcast_wavlm_svm.ini | 28 + cocosda_2024/exp_polish_audmodel.ini | 34 + cocosda_2024/exp_polish_hubert.ini | 33 + cocosda_2024/exp_polish_wavlm.ini | 33 + cocosda_2024/exp_ravdess_gender_agender.ini | 35 + cocosda_2024/exp_ravdess_gender_os.ini | 35 + cocosda_2024/exp_ravdess_gender_praat.ini | 35 + cocosda_2024/exp_ravdess_speaker.ini | 36 + cocosda_2024/exp_ravdess_speaker_os.ini | 36 + cocosda_2024/exp_ravdess_speaker_praat.ini | 36 + cocosda_2024/exp_tth_audmodel.ini | 35 + cocosda_2024/exp_tth_hubert.ini | 34 + cocosda_2024/exp_tth_wavlm.ini | 35 + cocosda_2024/exp_turev_audmodel.ini | 33 + cocosda_2024/exp_turev_hubert.ini | 32 + cocosda_2024/exp_turev_wavlm.ini | 33 + cocosda_2024/exp_vivae_audmodel.ini | 31 + cocosda_2024/exp_vivae_hubert.ini | 31 + cocosda_2024/exp_vivae_wavlm.ini | 31 + meta/demos/demo_best_model.py | 11 +- meta/demos/my_experiment.py | 15 +- meta/demos/my_experiment_local.py | 19 +- meta/demos/plot_faster_anim.py | 10 +- nkululeko/augmenting/augmenter.py | 2 - nkululeko/augmenting/randomsplicer.py | 2 - nkululeko/augmenting/randomsplicing.py | 2 - nkululeko/augmenting/resampler.py | 13 +- nkululeko/autopredict/estimate_snr.py | 24 +- nkululeko/constants.py | 2 +- nkululeko/data/dataset.py | 18 +- nkululeko/data/dataset_csv.py | 2 +- nkululeko/demo-ft.py | 28 + nkululeko/demo_predictor.py | 2 +- nkululeko/ensemble.py | 50 +- nkululeko/experiment.py | 1 - nkululeko/experiment_felix.py | 729 ++++++++++++++++++ nkululeko/feat_extract/feats_agender.py | 2 +- .../feat_extract/feats_agender_agender.py | 5 +- nkululeko/feat_extract/feats_analyser.py | 16 +- nkululeko/feat_extract/feats_ast.py | 15 +- nkululeko/feat_extract/feats_auddim.py | 1 - nkululeko/feat_extract/feats_audmodel.py | 1 - nkululeko/feat_extract/feats_clap.py | 13 +- nkululeko/feat_extract/feats_import.py | 5 +- nkululeko/feat_extract/feats_mld.py | 3 - nkululeko/feat_extract/feats_mos.py | 1 - nkululeko/feat_extract/feats_opensmile.py | 1 - nkululeko/feat_extract/feats_oxbow.py | 3 +- nkululeko/feat_extract/feats_praat.py | 7 +- nkululeko/feat_extract/feats_snr.py | 7 +- nkululeko/feat_extract/feats_spectra.py | 2 - nkululeko/feat_extract/feats_spkrec.py | 12 +- nkululeko/feat_extract/feats_squim.py | 1 - nkululeko/feat_extract/feats_trill.py | 1 - nkululeko/feat_extract/feats_wav2vec2.py | 4 +- .../transformer_feature_extractor.py | 145 ++++ nkululeko/file_checker.py | 3 +- nkululeko/fixedsegment.py | 82 ++ nkululeko/models/model.py | 2 +- nkululeko/models/model_cnn.py | 4 +- nkululeko/models/model_gmm.py | 19 +- nkululeko/models/model_mlp.py | 3 +- nkululeko/models/model_mlp_regression.py | 2 - nkululeko/models/model_svm.py | 3 +- nkululeko/models/model_tree.py | 4 +- nkululeko/models/model_tuned.py | 37 +- nkululeko/models/model_tuned_bta.py | 482 ++++++++++++ nkululeko/predict.py | 9 +- nkululeko/reporting/defines.py | 14 +- nkululeko/reporting/latex_writer.py | 3 +- nkululeko/reporting/report.py | 1 - nkululeko/reporting/report_item.py | 1 + nkululeko/resample.py | 13 +- nkululeko/resample_cli.py | 98 +++ nkululeko/runmanager.py | 4 +- nkululeko/segment.py | 1 - .../segmenting/seg_inaspeechsegmenter.py | 1 - nkululeko/segmenting/seg_silero.py | 1 - nkululeko/syllable_nuclei.py | 25 +- nkululeko/utils/stats.py | 1 - openXBOW | 1 + output.txt | 37 + setup.py | 2 +- svd_downloader.py | 184 +++++ tutorials/tut_spotlight_ravdess.ini | 31 + tutorials/tut_stratify_emodb.ini | 29 + voice-disorder.bib | 1 + xbow_codebook | 503 ++++++++++++ 116 files changed, 4035 insertions(+), 250 deletions(-) create mode 100644 check.ini create mode 100644 cocosda_2024/exp.ini create mode 100644 cocosda_2024/exp_agedb_class_agender.ini create mode 100644 cocosda_2024/exp_agedb_class_os_praat.ini create mode 100644 cocosda_2024/exp_agedb_class_os_svm.ini create mode 100644 cocosda_2024/exp_agedb_class_os_xgb.ini create mode 100644 cocosda_2024/exp_agedb_class_praat_svm.ini create mode 100644 cocosda_2024/exp_emns_audmodel.ini create mode 100644 cocosda_2024/exp_emns_finetuning.ini create mode 100644 cocosda_2024/exp_emns_hubert.ini create mode 100644 cocosda_2024/exp_emns_os.ini create mode 100644 cocosda_2024/exp_emns_wavlm.ini create mode 100644 cocosda_2024/exp_iemocap_audmodel_svm.ini create mode 100644 cocosda_2024/exp_iemocap_hubert_svm.ini create mode 100644 cocosda_2024/exp_iemocap_wavlm_svm.ini create mode 100644 cocosda_2024/exp_jnv_audmodel.ini create mode 100644 cocosda_2024/exp_jnv_hubert.ini create mode 100644 cocosda_2024/exp_jnv_wavlm.ini create mode 100644 cocosda_2024/exp_jtes_audmodel.ini create mode 100644 cocosda_2024/exp_jtes_hubert.ini create mode 100644 cocosda_2024/exp_jtes_wavlm.ini create mode 100644 cocosda_2024/exp_kbes_audmodel.ini create mode 100644 cocosda_2024/exp_kbes_hubert.ini create mode 100644 cocosda_2024/exp_kbes_wavlm.ini create mode 100644 cocosda_2024/exp_laughter_os.ini create mode 100644 cocosda_2024/exp_laughter_praat.ini create mode 100644 cocosda_2024/exp_podcast_audmodel_svm.ini create mode 100644 cocosda_2024/exp_podcast_hubert_svm.ini create mode 100644 cocosda_2024/exp_podcast_wavlm_svm.ini create mode 100644 cocosda_2024/exp_polish_audmodel.ini create mode 100644 cocosda_2024/exp_polish_hubert.ini create mode 100644 cocosda_2024/exp_polish_wavlm.ini create mode 100644 cocosda_2024/exp_ravdess_gender_agender.ini create mode 100644 cocosda_2024/exp_ravdess_gender_os.ini create mode 100644 cocosda_2024/exp_ravdess_gender_praat.ini create mode 100644 cocosda_2024/exp_ravdess_speaker.ini create mode 100644 cocosda_2024/exp_ravdess_speaker_os.ini create mode 100644 cocosda_2024/exp_ravdess_speaker_praat.ini create mode 100644 cocosda_2024/exp_tth_audmodel.ini create mode 100644 cocosda_2024/exp_tth_hubert.ini create mode 100644 cocosda_2024/exp_tth_wavlm.ini create mode 100644 cocosda_2024/exp_turev_audmodel.ini create mode 100644 cocosda_2024/exp_turev_hubert.ini create mode 100644 cocosda_2024/exp_turev_wavlm.ini create mode 100644 cocosda_2024/exp_vivae_audmodel.ini create mode 100644 cocosda_2024/exp_vivae_hubert.ini create mode 100644 cocosda_2024/exp_vivae_wavlm.ini create mode 100644 nkululeko/demo-ft.py create mode 100644 nkululeko/experiment_felix.py create mode 100644 nkululeko/feat_extract/transformer_feature_extractor.py create mode 100644 nkululeko/fixedsegment.py create mode 100644 nkululeko/models/model_tuned_bta.py create mode 100644 nkululeko/resample_cli.py create mode 160000 openXBOW create mode 100644 output.txt create mode 100644 svd_downloader.py create mode 100644 tutorials/tut_spotlight_ravdess.ini create mode 100644 tutorials/tut_stratify_emodb.ini create mode 120000 voice-disorder.bib create mode 100644 xbow_codebook diff --git a/check.ini b/check.ini new file mode 100644 index 00000000..3256a937 --- /dev/null +++ b/check.ini @@ -0,0 +1,21 @@ +[EXP] +root = ./ +name = results/exp_asvp +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/asvp-esd/asvp_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +test = ./data/asvp-esd/asvp_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +; no_reuse = True +labels =["boredom","neutral","happy", "sad","angry", "fear", "disgust", "surprise", "excited","pleasure","pain","disapointed","others"] +# check the filesize of all samples in train and test splits, in bytes +check_size = 1000 +# check if the files contain speech with voice activity detection (VAD) +check_vad = True \ No newline at end of file diff --git a/cocosda_2024/exp.ini b/cocosda_2024/exp.ini new file mode 100644 index 00000000..67abf819 --- /dev/null +++ b/cocosda_2024/exp.ini @@ -0,0 +1,29 @@ +[EXP] +root = ./ +name = results/exp_vivae_wavlm1 +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/vivae/vivae_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +test = ./data/vivae/vivae_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +no_reuse = True +; labels = ["achievement", "anger", "fear", "pain", "pleasure", "surprise"] +labels = ["anger", "fear", "pleasure", "surprise"] +min_duration_of_samples = 1 +check_size = 1000 +[RESAMPLE] +# which of the data splits to re-sample: train, test or all (both) +sample_selection = all +[FEATS] +type = ['wavlm-large'] +scale = standard +[MODEL] +type = svm +; device = cuda diff --git a/cocosda_2024/exp_agedb_class_agender.ini b/cocosda_2024/exp_agedb_class_agender.ini new file mode 100644 index 00000000..dd12047e --- /dev/null +++ b/cocosda_2024/exp_agedb_class_agender.ini @@ -0,0 +1,31 @@ +[EXP] +root = ./cocosda_2024/results/ +name = exp_agedb_agender_1 +type = classification +runs = 1 +epochs = 1 +save = True +[DATA] +type = continuous +databases = ['emodb'] +emodb = ./data/emodb/emodb +emodb.split_strategy = specified +emodb.test_tables = ['emotion.categories.test.gold_standard'] +emodb.train_tables = ['emotion.categories.train.gold_standard'] +target = age +; labels = ['21','25','26','30', '31', '32', '34', '35'] +labels = ['u30', 'ü30'] +bins = [-100000, 30, 100000] +[EXPL] +; value_counts = [['age']] +value_counts = [['gender', 'duration']] +sample_selection = all +[FEATS] +type = ['agender_agender'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +kernel = linear +[PLOT] +; combine_per_speaker = mode diff --git a/cocosda_2024/exp_agedb_class_os_praat.ini b/cocosda_2024/exp_agedb_class_os_praat.ini new file mode 100644 index 00000000..3d021fc1 --- /dev/null +++ b/cocosda_2024/exp_agedb_class_os_praat.ini @@ -0,0 +1,27 @@ +[EXP] +root = ./cocosda_2024/results/ +name = exp_agedb_praat +type = classification +runs = 1 +epochs = 1 +save = True +[DATA] +type = continuous +databases = ['emodb'] +emodb = ./data/emodb/emodb +emodb.split_strategy = specified +emodb.test_tables = ['emotion.categories.test.gold_standard'] +emodb.train_tables = ['emotion.categories.train.gold_standard'] +target = age +; labels = ['21','25','26','30', '31', '32', '34', '35'] +labels = ['u24', '25_29', '30_34', 'a34'] +bins = [-100000, 24, 29, 34, 100000] +[FEATS] +type = ['praat'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; kernel = linear +[PLOT] +; combine_per_speaker = mode diff --git a/cocosda_2024/exp_agedb_class_os_svm.ini b/cocosda_2024/exp_agedb_class_os_svm.ini new file mode 100644 index 00000000..20ad7a89 --- /dev/null +++ b/cocosda_2024/exp_agedb_class_os_svm.ini @@ -0,0 +1,27 @@ +[EXP] +root = ./cocosda_2024/results/ +name = exp_agedb_os_svm +type = classification +runs = 1 +epochs = 1 +save = True +[DATA] +type = continuous +databases = ['emodb'] +emodb = ./data/emodb/emodb +emodb.split_strategy = specified +emodb.test_tables = ['emotion.categories.test.gold_standard'] +emodb.train_tables = ['emotion.categories.train.gold_standard'] +target = age +; labels = ['21','25','26','30', '31', '32', '34', '35'] +labels = ['u30', 'ü30'] +bins = [-100000, 30, 100000] +[FEATS] +type = ['os'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +kernel = linear +[PLOT] +; combine_per_speaker = mode diff --git a/cocosda_2024/exp_agedb_class_os_xgb.ini b/cocosda_2024/exp_agedb_class_os_xgb.ini new file mode 100644 index 00000000..d407e207 --- /dev/null +++ b/cocosda_2024/exp_agedb_class_os_xgb.ini @@ -0,0 +1,26 @@ +[EXP] +root = ./cocosda_2024/results/ +name = exp_agedb_svm +type = classification +runs = 1 +epochs = 1 +save = True +[DATA] +type = continuous +databases = ['emodb'] +emodb = ./data/emodb/emodb +emodb.split_strategy = specified +emodb.test_tables = ['emotion.categories.test.gold_standard'] +emodb.train_tables = ['emotion.categories.train.gold_standard'] +target = age +; labels = ['21','25','26','30', '31', '32', '34', '35'] +labels = ['u24', 'u29', 'u34'] +bins = [-100000, 24, 29, 100000] +[FEATS] +type = ['os'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +[PLOT] +; combine_per_speaker = mode diff --git a/cocosda_2024/exp_agedb_class_praat_svm.ini b/cocosda_2024/exp_agedb_class_praat_svm.ini new file mode 100644 index 00000000..87f2d4e3 --- /dev/null +++ b/cocosda_2024/exp_agedb_class_praat_svm.ini @@ -0,0 +1,27 @@ +[EXP] +root = ./cocosda_2024/results/ +name = exp_agedb_praat_svm_1 +type = classification +runs = 1 +epochs = 1 +save = True +[DATA] +type = continuous +databases = ['emodb'] +emodb = ./data/emodb/emodb +emodb.split_strategy = specified +emodb.test_tables = ['emotion.categories.test.gold_standard'] +emodb.train_tables = ['emotion.categories.train.gold_standard'] +target = age +; labels = ['21','25','26','30', '31', '32', '34', '35'] +labels = ['u30', 'ü30'] +bins = [-100000, 30, 100000] +[FEATS] +type = ['praat'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +kernel = linear +[PLOT] +; combine_per_speaker = mode diff --git a/cocosda_2024/exp_emns_audmodel.ini b/cocosda_2024/exp_emns_audmodel.ini new file mode 100644 index 00000000..225d7f55 --- /dev/null +++ b/cocosda_2024/exp_emns_audmodel.ini @@ -0,0 +1,26 @@ +[EXP] +root = ./apsipa_2024/results +name = exp_emns_aud +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/emns/emns_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +train.audio_path = EMNS +test = ./data/emns/emns_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +test.audio_path = EMNS +target = emotion +no_reuse = True +labels =['sadness', 'happiness', 'anger', 'neutral'] +[FEATS] +type = ['audmodel'] +scale = standard +balancing = smote +[MODEL] +type = xgb +; C_val = 0.001 diff --git a/cocosda_2024/exp_emns_finetuning.ini b/cocosda_2024/exp_emns_finetuning.ini new file mode 100644 index 00000000..5ad82f67 --- /dev/null +++ b/cocosda_2024/exp_emns_finetuning.ini @@ -0,0 +1,25 @@ +[EXP] +root = ./apsipa_2024/results +name = exp_emns_wavlm_finetuning +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/emns/emns_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +train.audio_path = EMNS +test = ./data/emns/emns_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +test.audio_path = EMNS +target = emotion +no_reuse = True +labels =['sadness', 'happiness', 'anger', 'neutral'] +[FEATS] +type = [] +; scale = standard +[MODEL] +type = finetune +pretrained_model = microsoft/wavlm-large diff --git a/cocosda_2024/exp_emns_hubert.ini b/cocosda_2024/exp_emns_hubert.ini new file mode 100644 index 00000000..24f022a1 --- /dev/null +++ b/cocosda_2024/exp_emns_hubert.ini @@ -0,0 +1,26 @@ +[EXP] +root = ./apsipa_2024/results +name = exp_emns_hubert +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/emns/emns_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +train.audio_path = EMNS +test = ./data/emns/emns_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +test.audio_path = EMNS +target = emotion +no_reuse = True +labels =['sadness', 'happiness', 'anger', 'neutral'] +[FEATS] +type = ['hubert-large-ll60k'] +scale = standard +balancing = smote +[MODEL] +type = svm +C_val = 1.0 diff --git a/cocosda_2024/exp_emns_os.ini b/cocosda_2024/exp_emns_os.ini new file mode 100644 index 00000000..89a77c13 --- /dev/null +++ b/cocosda_2024/exp_emns_os.ini @@ -0,0 +1,26 @@ +[EXP] +root = ./apsipa_2024/results +name = exp_emns_os +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/emns/emns_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +train.audio_path = EMNS +test = ./data/emns/emns_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +test.audio_path = EMNS +target = emotion +no_reuse = True +labels =['sadness', 'happiness', 'anger', 'neutral'] +[FEATS] +type = ['os'] +scale = standard +balancing = smote +[MODEL] +type = svm +C_val = 1.0 diff --git a/cocosda_2024/exp_emns_wavlm.ini b/cocosda_2024/exp_emns_wavlm.ini new file mode 100644 index 00000000..d14c8d18 --- /dev/null +++ b/cocosda_2024/exp_emns_wavlm.ini @@ -0,0 +1,26 @@ +[EXP] +root = ./ococosda_2024/results +name = exp_emns_wavlm +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/emns/emns_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +train.audio_path = EMNS +test = ./data/emns/emns_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +test.audio_path = EMNS +target = emotion +no_reuse = True +labels =['sadness', 'happiness', 'anger', 'neutral'] +[FEATS] +type = ['wavlm-large'] +scale = standard +balancing = smote +[MODEL] +type = svm +C_val = 1.0 diff --git a/cocosda_2024/exp_iemocap_audmodel_svm.ini b/cocosda_2024/exp_iemocap_audmodel_svm.ini new file mode 100644 index 00000000..6a687641 --- /dev/null +++ b/cocosda_2024/exp_iemocap_audmodel_svm.ini @@ -0,0 +1,28 @@ +[EXP] +root = ./bagus_tests/results +name = iemocap_aud +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test', 'dev'] +train = ./data/iemocap/iemocap_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/iemocap/iemocap_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/iemocap/iemocap_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['ang', 'hap', 'neu', 'sad'] +[FEATS] +type = ['audmodel'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 diff --git a/cocosda_2024/exp_iemocap_hubert_svm.ini b/cocosda_2024/exp_iemocap_hubert_svm.ini new file mode 100644 index 00000000..500967af --- /dev/null +++ b/cocosda_2024/exp_iemocap_hubert_svm.ini @@ -0,0 +1,28 @@ +[EXP] +root = ./bagus_tests/results +name = iemocap_hubert +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test', 'dev'] +train = ./data/iemocap/iemocap_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/iemocap/iemocap_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/iemocap/iemocap_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['ang', 'hap', 'neu', 'sad'] +[FEATS] +type = ['hubert-large-ll60k'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_iemocap_wavlm_svm.ini b/cocosda_2024/exp_iemocap_wavlm_svm.ini new file mode 100644 index 00000000..52bf3a3f --- /dev/null +++ b/cocosda_2024/exp_iemocap_wavlm_svm.ini @@ -0,0 +1,28 @@ +[EXP] +root = ./apsipa_2024/results +name = iemocap_wavlm_svm +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test', 'dev'] +train = ./data/iemocap/iemocap_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/iemocap/iemocap_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/iemocap/iemocap_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['ang', 'hap', 'neu', 'sad'] +[FEATS] +type = ['wavlm-large'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_jnv_audmodel.ini b/cocosda_2024/exp_jnv_audmodel.ini new file mode 100644 index 00000000..f8d2ef8c --- /dev/null +++ b/cocosda_2024/exp_jnv_audmodel.ini @@ -0,0 +1,31 @@ +[EXP] +root = ./cocosda_2024/results +name = exp_jnv_audmodel +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/jnv/jnv_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/jnv/jnv_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/jnv/jnv_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['angry', 'disgust', 'surprise', 'sad'] +[FEATS] +type = ['audmodel'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jnv_hubert.ini b/cocosda_2024/exp_jnv_hubert.ini new file mode 100644 index 00000000..ae050854 --- /dev/null +++ b/cocosda_2024/exp_jnv_hubert.ini @@ -0,0 +1,31 @@ +[EXP] +root = ./cocosda_2024/results +name = exp_jnv_hubert +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/jnv/jnv_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/jnv/jnv_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/jnv/jnv_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['angry', 'disgust', 'surprise', 'sad'] +[FEATS] +type = ['hubert-large-ll60k'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jnv_wavlm.ini b/cocosda_2024/exp_jnv_wavlm.ini new file mode 100644 index 00000000..0daf46c3 --- /dev/null +++ b/cocosda_2024/exp_jnv_wavlm.ini @@ -0,0 +1,31 @@ +[EXP] +root = ./cocosda_2024/results +name = exp_jnv_wavlm +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/jnv/jnv_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/jnv/jnv_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/jnv/jnv_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['angry', 'disgust', 'surprise', 'sad'] +[FEATS] +type = ['wavlm-large'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jtes_audmodel.ini b/cocosda_2024/exp_jtes_audmodel.ini new file mode 100644 index 00000000..e3fade57 --- /dev/null +++ b/cocosda_2024/exp_jtes_audmodel.ini @@ -0,0 +1,41 @@ +[EXP] +root = ./iemocap_2024/results/ +name = jtes-sti_audmodel +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/jtes-sti/jtes_sti_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train + +dev = ./data/jtes-sti/jtes_sti_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train + +; augment = ./data/jtes/augment.csv +; augment.type = csv +; augment.absolute_path = False +; augment.split_strategy = train + +test = ./data/jtes-sti/jtes_sti_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; augment = train +; augment_result = augment.csv +target = emotion +labels = ['ang', 'joy', 'neu', 'sad'] +[FEATS] +type = ['audmodel'] +scale = standard +[MODEL] +type = svm +; scale = standard +; device = cuda +C_val = 1.0 +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jtes_hubert.ini b/cocosda_2024/exp_jtes_hubert.ini new file mode 100644 index 00000000..4152a65f --- /dev/null +++ b/cocosda_2024/exp_jtes_hubert.ini @@ -0,0 +1,41 @@ +[EXP] +root = ./iemocap_2024/results/ +name = jtes-sti_hubert +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/jtes-sti/jtes_sti_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train + +dev = ./data/jtes-sti/jtes_sti_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train + +; augment = ./data/jtes/augment.csv +; augment.type = csv +; augment.absolute_path = False +; augment.split_strategy = train + +test = ./data/jtes-sti/jtes_sti_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; augment = train +; augment_result = augment.csv +target = emotion +labels = ['ang', 'joy', 'neu', 'sad'] +[FEATS] +type = ['hubert-large-ll60k'] +; scale = standard +[MODEL] +type = svm +scale = standard +; device = cuda +C_val = 1.0 +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jtes_wavlm.ini b/cocosda_2024/exp_jtes_wavlm.ini new file mode 100644 index 00000000..74558fa8 --- /dev/null +++ b/cocosda_2024/exp_jtes_wavlm.ini @@ -0,0 +1,41 @@ +[EXP] +root = ./iemocap_2024/results/ +name = jtes-sti_wavlm +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/jtes-sti/jtes_sti_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train + +dev = ./data/jtes-sti/jtes_sti_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train + +; augment = ./data/jtes/augment.csv +; augment.type = csv +; augment.absolute_path = False +; augment.split_strategy = train + +test = ./data/jtes-sti/jtes_sti_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; augment = train +; augment_result = augment.csv +target = emotion +labels = ['ang', 'joy', 'neu', 'sad'] +[FEATS] +type = ['wavlm-large'] +; scale = standard +[MODEL] +type = svm +; scale = standard +; device = cuda +C_val = 1.0 +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_kbes_audmodel.ini b/cocosda_2024/exp_kbes_audmodel.ini new file mode 100644 index 00000000..386cf090 --- /dev/null +++ b/cocosda_2024/exp_kbes_audmodel.ini @@ -0,0 +1,30 @@ +[EXP] +root = ./ococosda_2024/results/ +name = kbes_audomodel +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/kbes/kbes_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/kbes/kbes_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/kbes/kbes_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['angry', 'neutral', 'sad', 'happy'] +; get the number of classes from the target column automatically +[FEATS] +type = ['audmodel'] +; no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_kbes_hubert.ini b/cocosda_2024/exp_kbes_hubert.ini new file mode 100644 index 00000000..54b97d54 --- /dev/null +++ b/cocosda_2024/exp_kbes_hubert.ini @@ -0,0 +1,30 @@ +[EXP] +root = ./ococosda_2024/results/ +name = kbes_hubert +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/kbes/kbes_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/kbes/kbes_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/kbes/kbes_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['angry', 'neutral', 'sad', 'happy'] +; get the number of classes from the target column automatically +[FEATS] +type = ['hubert-large-ll60k'] +; no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_kbes_wavlm.ini b/cocosda_2024/exp_kbes_wavlm.ini new file mode 100644 index 00000000..733cb68a --- /dev/null +++ b/cocosda_2024/exp_kbes_wavlm.ini @@ -0,0 +1,30 @@ +[EXP] +root = ./ococosda_2024/results/ +name = kbes_wavlm +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/kbes/kbes_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/kbes/kbes_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/kbes/kbes_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['angry', 'neutral', 'sad', 'happy'] +; get the number of classes from the target column automatically +[FEATS] +type = ['wavlm-large'] +; no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_laughter_os.ini b/cocosda_2024/exp_laughter_os.ini new file mode 100644 index 00000000..53ebb2a8 --- /dev/null +++ b/cocosda_2024/exp_laughter_os.ini @@ -0,0 +1,55 @@ +[EXP] +root = ./cocosda_2024/ +name = exp_laughter_os +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['data'] +data = ./data/laughter-types/EvilLaughter/data.csv +data.type = csv +data.absolute_path = False +#data.split_strategy = reuse +data.split_strategy = speaker_split +data.testsplit = 30 +target = type +labels = ['laugh at', 'laugh with'] +[FEATS] +#type = trill +#model = ../trill +#type = xbow +#xbow = ../openXBOW/ +#size = 1000 +#assignments = 20 +#type = mld +#with_os = True +min_syls = 4 +type = ['os'] +; type = ['praat'] +#set = ComParE_2016 +#type = wav2vec +#model = /home/felix/data/research/wav2vec2-large-robust-ft-swbd-300h +; scale = standard +#needs_feature_extraction = True +[MODEL] +; type = xgb +type = svm +C_val = 1.0 +kernel = linear +#C_val = 10 for w2v, .1 for trill, .01 for os +; C_val = .001 +#tuning_params = ['C'] +; C = [20, 10, 1, .1, .01, .001] +; scoring = recall_macro +#loso = True +#logo = 10 +#k_fold_cross = 10 +save = True +[EXPL] +#value_counts = True +#max_feats = 5 +#feature_distributions = True +#model = tree +; scatter = ['pca'] +[PLOT] +#tsne = True \ No newline at end of file diff --git a/cocosda_2024/exp_laughter_praat.ini b/cocosda_2024/exp_laughter_praat.ini new file mode 100644 index 00000000..a1f83630 --- /dev/null +++ b/cocosda_2024/exp_laughter_praat.ini @@ -0,0 +1,55 @@ +[EXP] +root = ./cocosda_2024/ +name = exp_laughter_praat +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['data'] +data = ./data/laughter-types/EvilLaughter/data.csv +data.type = csv +data.absolute_path = False +#data.split_strategy = reuse +data.split_strategy = speaker_split +data.testsplit = 30 +target = type +labels = ['laugh at', 'laugh with'] +[FEATS] +#type = trill +#model = ../trill +#type = xbow +#xbow = ../openXBOW/ +#size = 1000 +#assignments = 20 +#type = mld +#with_os = True +min_syls = 4 +; type = ['os'] +type = ['praat'] +#set = ComParE_2016 +#type = wav2vec +#model = /home/felix/data/research/wav2vec2-large-robust-ft-swbd-300h +scale = standard +#needs_feature_extraction = True +[MODEL] +; type = xgb +type = svm +C_val = 1.0 +; kernel = linear +#C_val = 10 for w2v, .1 for trill, .01 for os +; C_val = .001 +; tuning_params = ['C'] +; C = [20, 10, 1, .1, .01, .001] +scoring = recall_macro +#loso = True +#logo = 10 +#k_fold_cross = 10 +save = True +[EXPL] +#value_counts = True +#max_feats = 5 +#feature_distributions = True +#model = tree +scatter = ['pca'] +[PLOT] +#tsne = True \ No newline at end of file diff --git a/cocosda_2024/exp_podcast_audmodel_svm.ini b/cocosda_2024/exp_podcast_audmodel_svm.ini new file mode 100644 index 00000000..63c7183e --- /dev/null +++ b/cocosda_2024/exp_podcast_audmodel_svm.ini @@ -0,0 +1,28 @@ +[EXP] +root = ./ococosda_2024/results +name = podcast_audmodel +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test', 'dev'] +train = ./data/msp-podcast/podcast_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/msp-podcast/podcast_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/msp-podcast/podcast_test2.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['ang', 'hap', 'neu', 'sad'] +[FEATS] +type = ['audmodel'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_podcast_hubert_svm.ini b/cocosda_2024/exp_podcast_hubert_svm.ini new file mode 100644 index 00000000..33d4dd5c --- /dev/null +++ b/cocosda_2024/exp_podcast_hubert_svm.ini @@ -0,0 +1,28 @@ +[EXP] +root = ./ococosda_2024/results +name = podcast_audmodel +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test', 'dev'] +train = ./data/msp-podcast/podcast_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/msp-podcast/podcast_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/msp-podcast/podcast_test2.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['ang', 'hap', 'neu', 'sad'] +[FEATS] +type = ['hubert-large-ll60k'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_podcast_wavlm_svm.ini b/cocosda_2024/exp_podcast_wavlm_svm.ini new file mode 100644 index 00000000..0f75df62 --- /dev/null +++ b/cocosda_2024/exp_podcast_wavlm_svm.ini @@ -0,0 +1,28 @@ +[EXP] +root = ./ococosda_2024/results +name = podcast_audmodel +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test', 'dev'] +train = ./data/msp-podcast/podcast_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/msp-podcast/podcast_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/msp-podcast/podcast_test2.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['ang', 'hap', 'neu', 'sad'] +[FEATS] +type = ['wavlm-large'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_polish_audmodel.ini b/cocosda_2024/exp_polish_audmodel.ini new file mode 100644 index 00000000..6116fa2b --- /dev/null +++ b/cocosda_2024/exp_polish_audmodel.ini @@ -0,0 +1,34 @@ +[EXP] +root = ./ococosda_2024/results/ +name = exp_polish_audmodel +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/polish/polish_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.audio_path = ./POLISH +dev = ./data/polish/polish_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +; dev.audio_path = ./POLISH +test = ./data/polish/polish_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.audio_path = ./nEMO/samples +target = emotion +labels = ['anger', 'neutral', 'fear'] +; get the number of classes from the target column automatically +[FEATS] +type = ['audmodel'] +; type = ['hubert-xlarge-ll60k'] +; no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_polish_hubert.ini b/cocosda_2024/exp_polish_hubert.ini new file mode 100644 index 00000000..d7b9ed40 --- /dev/null +++ b/cocosda_2024/exp_polish_hubert.ini @@ -0,0 +1,33 @@ +[EXP] +root = ./ococosda_2024/results/ +name = exp_polish_hubert +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/polish/polish_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.audio_path = ./POLISH +dev = ./data/polish/polish_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +; dev.audio_path = ./POLISH +test = ./data/polish/polish_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.audio_path = ./nEMO/samples +target = emotion +labels = ['anger', 'neutral', 'fear'] +; get the number of classes from the target column automatically +[FEATS] +type = ['hubert-large-ll60k'] +; no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_polish_wavlm.ini b/cocosda_2024/exp_polish_wavlm.ini new file mode 100644 index 00000000..03ea9405 --- /dev/null +++ b/cocosda_2024/exp_polish_wavlm.ini @@ -0,0 +1,33 @@ +[EXP] +root = ./ococosda_2024/results/ +name = exp_polish_wavlm +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/polish/polish_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.audio_path = ./POLISH +dev = ./data/polish/polish_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +; dev.audio_path = ./POLISH +test = ./data/polish/polish_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.audio_path = ./nEMO/samples +target = emotion +labels = ['anger', 'neutral', 'fear'] +; get the number of classes from the target column automatically +[FEATS] +type = ['wavlm-large'] +; no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_gender_agender.ini b/cocosda_2024/exp_ravdess_gender_agender.ini new file mode 100644 index 00000000..6d44a19c --- /dev/null +++ b/cocosda_2024/exp_ravdess_gender_agender.ini @@ -0,0 +1,35 @@ +[EXP] +root = ./cocosda_2024 +name = exp_ravdess_agender +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/ravdess/ravdess_speaker_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.rename_speakers = True +test = ./data/ravdess/ravdess_speaker_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.rename_speakers = True +; target = speaker +; target = emotion +target = gender +; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] +; labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] +; labels = ['angry', 'happy', 'neutral', 'sad'] +labels = ['male', 'female'] +[FEATS] +type = ['agender'] +no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +[RESAMPLE] +replace = True +sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_gender_os.ini b/cocosda_2024/exp_ravdess_gender_os.ini new file mode 100644 index 00000000..00514d22 --- /dev/null +++ b/cocosda_2024/exp_ravdess_gender_os.ini @@ -0,0 +1,35 @@ + [EXP] +root = ./ +name = results/exp_ravdess_speaker +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/ravdess/ravdess_speaker_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.rename_speakers = True +test = ./data/ravdess/ravdess_speaker_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.rename_speakers = True +; target = speaker +; target = emotion +target = gender +; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] +; labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] +; labels = ['angry', 'happy', 'neutral', 'sad'] +labels = ['male', 'female'] +[FEATS] +type = ['os'] +no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +[RESAMPLE] +replace = True +sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_gender_praat.ini b/cocosda_2024/exp_ravdess_gender_praat.ini new file mode 100644 index 00000000..af6f4252 --- /dev/null +++ b/cocosda_2024/exp_ravdess_gender_praat.ini @@ -0,0 +1,35 @@ +[EXP] +root = ./cocosda_2024/results +name = exp_ravdess_speaker +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/ravdess/ravdess_speaker_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.rename_speakers = True +test = ./data/ravdess/ravdess_speaker_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.rename_speakers = True +; target = speaker +; target = emotion +target = gender +; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] +; labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] +; labels = ['angry', 'happy', 'neutral', 'sad'] +labels = ['male', 'female'] +[FEATS] +type = ['praat'] +no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +[RESAMPLE] +replace = True +sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_speaker.ini b/cocosda_2024/exp_ravdess_speaker.ini new file mode 100644 index 00000000..a703bfbc --- /dev/null +++ b/cocosda_2024/exp_ravdess_speaker.ini @@ -0,0 +1,36 @@ +[EXP] +root = ./cocosda_2024 +name = exp_ravdess_speaker +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/ravdess/ravdess_speaker_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.rename_speakers = True +test = ./data/ravdess/ravdess_speaker_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.rename_speakers = True +target = speaker +; target = emotion +; target = gender +; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] +labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] +; labels = ['angry', 'happy', 'neutral', 'sad'] +; labels = ['male', 'female'] +no_reuse = True +[FEATS] +type = ['spkrec-ecapa-voxceleb'] +no_reuse = True +scale = standard +[MODEL] +type = svm +C_val = 1.0 +[RESAMPLE] +replace = True +sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_speaker_os.ini b/cocosda_2024/exp_ravdess_speaker_os.ini new file mode 100644 index 00000000..1656c8e7 --- /dev/null +++ b/cocosda_2024/exp_ravdess_speaker_os.ini @@ -0,0 +1,36 @@ +[EXP] +root = ./cocosda_2024 +name = exp_ravdess_speaker_os +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/ravdess/ravdess_speaker_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.rename_speakers = True +test = ./data/ravdess/ravdess_speaker_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.rename_speakers = True +target = speaker +; target = emotion +; target = gender +; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] +labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] +; labels = ['angry', 'happy', 'neutral', 'sad'] +; labels = ['male', 'female'] +; no_reuse = True +[FEATS] +type = ['os'] +; no_reuse = True +scale = standard +[MODEL] +type = svm +C_val = 1.0 +[RESAMPLE] +replace = True +sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_speaker_praat.ini b/cocosda_2024/exp_ravdess_speaker_praat.ini new file mode 100644 index 00000000..84ec0c0c --- /dev/null +++ b/cocosda_2024/exp_ravdess_speaker_praat.ini @@ -0,0 +1,36 @@ +[EXP] +root = ./cocosda_2024 +name = exp_ravdess_speaker_praat +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/ravdess/ravdess_speaker_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +; train.rename_speakers = True +test = ./data/ravdess/ravdess_speaker_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +; test.rename_speakers = True +target = speaker +; target = emotion +; target = gender +; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] +labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] +; labels = ['angry', 'happy', 'neutral', 'sad'] +; labels = ['male', 'female'] +; no_reuse = True +[FEATS] +type = ['praat'] +; no_reuse = True +scale = standard +[MODEL] +type = svm +C_val = 1.0 +[RESAMPLE] +replace = True +sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_tth_audmodel.ini b/cocosda_2024/exp_tth_audmodel.ini new file mode 100644 index 00000000..e4fc08c8 --- /dev/null +++ b/cocosda_2024/exp_tth_audmodel.ini @@ -0,0 +1,35 @@ +[EXP] +root = ./ococosda_2024/results/ +name = exp_tth_audmodel +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/tth/tth_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +train.audio_path = ./TTH_final/wav_segment +dev = ./data/tth/tth_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +dev.audio_path = ./TTH_final/wav_segment +test = ./data/tth/tth_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +test.audio_path = ./TTH_final/wav_segment +target = emotion +labels = ['neutral', 'happy', 'angry', 'sad'] +; get the number of classes from the target column automatically +[FEATS] +; type = ['os'] +type = ['audmodel'] +; no_reuse = False +scale = standard +; balancing = smote +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_tth_hubert.ini b/cocosda_2024/exp_tth_hubert.ini new file mode 100644 index 00000000..4026e482 --- /dev/null +++ b/cocosda_2024/exp_tth_hubert.ini @@ -0,0 +1,34 @@ +[EXP] +root = ./ococosda_2024/results/ +name = exp_tth_hubert +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/tth/tth_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +train.audio_path = ./TTH_final/wav_segment +dev = ./data/tth/tth_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +dev.audio_path = ./TTH_final/wav_segment +test = ./data/tth/tth_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +test.audio_path = ./TTH_final/wav_segment +target = emotion +labels = ['neutral', 'happy', 'angry', 'sad'] +; get the number of classes from the target column automatically +[FEATS] +; type = ['os'] +type = ['hubert-large-ll60k'] +; no_reuse = False +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_tth_wavlm.ini b/cocosda_2024/exp_tth_wavlm.ini new file mode 100644 index 00000000..010309ad --- /dev/null +++ b/cocosda_2024/exp_tth_wavlm.ini @@ -0,0 +1,35 @@ +[EXP] +root = ./ococosda_2024/results/ +name = exp_tth_wavlm +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/tth/tth_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +train.audio_path = ./TTH_final/wav_segment +dev = ./data/tth/tth_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +dev.audio_path = ./TTH_final/wav_segment +test = ./data/tth/tth_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +test.audio_path = ./TTH_final/wav_segment +target = emotion +labels = ['neutral', 'happy', 'angry', 'sad'] +; get the number of classes from the target column automatically +; no_reuse = True +[FEATS] +; type = ['os'] +type = ['wavlm-large'] +; no_reuse = True +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_turev_audmodel.ini b/cocosda_2024/exp_turev_audmodel.ini new file mode 100644 index 00000000..af991db9 --- /dev/null +++ b/cocosda_2024/exp_turev_audmodel.ini @@ -0,0 +1,33 @@ +[EXP] +root = ./ococosda_2024/results +name = exp_turev_svm +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/turev/turev_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/turev/turev_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/turev/turev_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +; no_reuse = True +labels = ['angry', 'calm', 'happy', 'sad'] +; get the number of classes from the target column automatically +[FEATS] +type = ['audmodel'] +; type = ['hubert-large-ll60k'] +; type = ['os'] +scale = standard +; no_reuse = True +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_turev_hubert.ini b/cocosda_2024/exp_turev_hubert.ini new file mode 100644 index 00000000..cbde4d72 --- /dev/null +++ b/cocosda_2024/exp_turev_hubert.ini @@ -0,0 +1,32 @@ +[EXP] +root = ./ococosda_2024/results +name = exp_turev_svm +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/turev/turev_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/turev/turev_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/turev/turev_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +; no_reuse = True +labels = ['angry', 'calm', 'happy', 'sad'] +; get the number of classes from the target column automatically +[FEATS] +type = ['hubert-large-ll60k'] +; type = ['os'] +scale = standard +; no_reuse = True +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_turev_wavlm.ini b/cocosda_2024/exp_turev_wavlm.ini new file mode 100644 index 00000000..5b1e65fc --- /dev/null +++ b/cocosda_2024/exp_turev_wavlm.ini @@ -0,0 +1,33 @@ +[EXP] +root = ./ococosda_2024/results +name = exp_turev_svm +[DATA] +databases = ['train', 'dev', 'test'] +train = ./data/turev/turev_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/turev/turev_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/turev/turev_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +no_reuse = True +labels = ['angry', 'calm', 'happy', 'sad'] +; get the number of classes from the target column automatically +[FEATS] +type = ['wavlm-large'] +; type = ['hubert-large-ll60k'] +; type = ['os'] +scale = standard +; no_reuse = True +[MODEL] +type = svm +C_val = 1.0 +; save = True +[RESAMPLE] +replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_vivae_audmodel.ini b/cocosda_2024/exp_vivae_audmodel.ini new file mode 100644 index 00000000..12a95e89 --- /dev/null +++ b/cocosda_2024/exp_vivae_audmodel.ini @@ -0,0 +1,31 @@ +[EXP] +root = ./ococosda_2024/results +name = exp_vivae_audmodel +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/vivae/vivae_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +test = ./data/vivae/vivae_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +no_reuse = True +; labels = ["achievement", "anger", "fear", "pain", "pleasure", "surprise"] +labels = ["anger", "fear", "pleasure", "surprise"] +; min_duration_of_samples = 1 +; check_size = 1000 +[RESAMPLE] +# which of the data splits to re-sample: train, test or all (both) +sample_selection = all +replace = True +[FEATS] +type = ['audmodel'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; device = cuda diff --git a/cocosda_2024/exp_vivae_hubert.ini b/cocosda_2024/exp_vivae_hubert.ini new file mode 100644 index 00000000..1607c19b --- /dev/null +++ b/cocosda_2024/exp_vivae_hubert.ini @@ -0,0 +1,31 @@ +[EXP] +root = ./ococosda_2024/results +name = exp_vivae_hubert +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/vivae/vivae_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +test = ./data/vivae/vivae_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +no_reuse = True +; labels = ["achievement", "anger", "fear", "pain", "pleasure", "surprise"] +labels = ["anger", "fear", "pleasure", "surprise"] +; min_duration_of_samples = 1 +; check_size = 1000 +[RESAMPLE] +# which of the data splits to re-sample: train, test or all (both) +sample_selection = all +replace = True +[FEATS] +type = ['hubert-large-ll60k'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; device = cuda diff --git a/cocosda_2024/exp_vivae_wavlm.ini b/cocosda_2024/exp_vivae_wavlm.ini new file mode 100644 index 00000000..c0be620c --- /dev/null +++ b/cocosda_2024/exp_vivae_wavlm.ini @@ -0,0 +1,31 @@ +[EXP] +root = ./ococosda_2024/results +name = exp_vivae_wavlm +save = True +[DATA] +databases = ['train', 'test'] +train = ./data/vivae/vivae_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +test = ./data/vivae/vivae_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +no_reuse = True +; labels = ["achievement", "anger", "fear", "pain", "pleasure", "surprise"] +labels = ["anger", "fear", "pleasure", "surprise"] +; min_duration_of_samples = 1 +; check_size = 1000 +[RESAMPLE] +# which of the data splits to re-sample: train, test or all (both) +sample_selection = all +replace = True +[FEATS] +type = ['wavlm-large'] +scale = standard +[MODEL] +type = svm +C_val = 1.0 +; device = cuda diff --git a/meta/demos/demo_best_model.py b/meta/demos/demo_best_model.py index 8d8e91f9..ca3313b7 100644 --- a/meta/demos/demo_best_model.py +++ b/meta/demos/demo_best_model.py @@ -2,28 +2,29 @@ # Demonstration code to use the ML-experiment framework import sys + sys.path.append("./src") -from reporter import Reporter import experiment as exp import configparser from util import Util + def main(config_file): # load one configuration per experiment config = configparser.ConfigParser() config.read(config_file) util = Util() - + # create a new experiment expr = exp.Experiment(config) - print(f'running {expr.name}') + print(f"running {expr.name}") # load the experiment - expr.load(f'{util.get_exp_name()}.pkl') + expr.load(f"{util.get_exp_name()}.pkl") expr.demo() - print('DONE') + print("DONE") if __name__ == "__main__": diff --git a/meta/demos/my_experiment.py b/meta/demos/my_experiment.py index 22e700b7..4db37d00 100644 --- a/meta/demos/my_experiment.py +++ b/meta/demos/my_experiment.py @@ -2,6 +2,7 @@ # Demonstration code to use the ML-experiment framework import sys + sys.path.append("./nkululeko/src") import experiment as exp import configparser @@ -9,27 +10,28 @@ import os.path import constants + def main(config_file): # test if the configuration file exists if not os.path.isfile(config_file): - print(f'ERROR: no such file: {config_file}') + print(f"ERROR: no such file: {config_file}") exit() # load one configuration per experiment config = configparser.ConfigParser() config.read(config_file) - + # create a new experiment expr = exp.Experiment(config) util = Util() - util.debug(f'running {expr.name}, nkululeko version {constants.VERSION}') + util.debug(f"running {expr.name}, nkululeko version {constants.VERSION}") # load the data expr.load_datasets() # split into train and test expr.fill_train_and_tests() - util.debug(f'train shape : {expr.df_train.shape}, test shape:{expr.df_test.shape}') + util.debug(f"train shape : {expr.df_train.shape}, test shape:{expr.df_test.shape}") # extract features expr.extract_feats() @@ -40,9 +42,10 @@ def main(config_file): # run the experiment expr.run() - print('DONE') + print("DONE") + if __name__ == "__main__": cwd = os.path.dirname(os.path.abspath(__file__)) - main('./nkululeko/demos/exp_emodb.ini') + main("./nkululeko/demos/exp_emodb.ini") # main(sys.argv[1]) # use this if you want to state the config file path on command line diff --git a/meta/demos/my_experiment_local.py b/meta/demos/my_experiment_local.py index 81a739e7..b1972b1f 100644 --- a/meta/demos/my_experiment_local.py +++ b/meta/demos/my_experiment_local.py @@ -2,20 +2,22 @@ # Demonstration code to use the ML-experiment framework import sys + sys.path.append("./src") import experiment as exp import configparser from util import Util + def main(config_file): # load one configuration per experiment config = configparser.ConfigParser() config.read(config_file) - + # create a new experiment expr = exp.Experiment(config) util = Util() - util.debug(f'running {expr.name}') + util.debug(f"running {expr.name}") # load the data expr.load_datasets() @@ -32,13 +34,14 @@ def main(config_file): # run the experiment expr.run() - print('DONE') + print("DONE") + if __name__ == "__main__": -# main('./demos/exp_danish_local.ini') -# main('./demos/exp_emodb_wav2vec.ini') -# main('./demos/exp_cross_wav2vec1pager.ini') -# main('./demos/exp_emodb_local.ini') - main('./demos/exp_cross_local.ini') + # main('./demos/exp_danish_local.ini') + # main('./demos/exp_emodb_wav2vec.ini') + # main('./demos/exp_cross_wav2vec1pager.ini') + # main('./demos/exp_emodb_local.ini') + main("./demos/exp_cross_local.ini") # main('./demos/exp_bdtgfir pul_local.ini') # main(sys.argv[1]) # use this if you want to state the config file path on command line diff --git a/meta/demos/plot_faster_anim.py b/meta/demos/plot_faster_anim.py index 575e65f0..1c6aed25 100644 --- a/meta/demos/plot_faster_anim.py +++ b/meta/demos/plot_faster_anim.py @@ -2,30 +2,32 @@ # Demonstration code to use the ML-experiment framework import sys + sys.path.append("./src") from reporter import Reporter import experiment as exp import configparser from util import Util + def main(config_file): # load one configuration per experiment config = configparser.ConfigParser() config.read(config_file) util = Util() - + # create a new experiment expr = exp.Experiment(config) - print(f'running {expr.name}') + print(f"running {expr.name}") # load the experiment # expr.load(f'{util.get_exp_name()}.pkl') reporter = Reporter([], []) - reporter.make_conf_animation('test.gif') + reporter.make_conf_animation("test.gif") - print('DONE') + print("DONE") if __name__ == "__main__": diff --git a/nkululeko/augmenting/augmenter.py b/nkululeko/augmenting/augmenter.py index 47704967..a3067b06 100644 --- a/nkululeko/augmenting/augmenter.py +++ b/nkululeko/augmenting/augmenter.py @@ -1,12 +1,10 @@ # augmenter.py import os -import numpy as np import pandas as pd from audiomentations import * from tqdm import tqdm import audeer import audiofile -from audformat.utils import map_file_path from nkululeko.utils.util import Util diff --git a/nkululeko/augmenting/randomsplicer.py b/nkululeko/augmenting/randomsplicer.py index 8d7584d2..6763927b 100644 --- a/nkululeko/augmenting/randomsplicer.py +++ b/nkululeko/augmenting/randomsplicer.py @@ -16,9 +16,7 @@ import pandas as pd from tqdm import tqdm import os -import numpy as np import audiofile as af -from audformat.utils import map_file_path import audeer from nkululeko.utils.util import Util import nkululeko.augmenting.randomsplicing as rsp diff --git a/nkululeko/augmenting/randomsplicing.py b/nkululeko/augmenting/randomsplicing.py index 75bd0f70..d88eaaf8 100644 --- a/nkululeko/augmenting/randomsplicing.py +++ b/nkululeko/augmenting/randomsplicing.py @@ -12,7 +12,6 @@ """ import numpy as np import librosa -import audiofile as af def random_splicing( @@ -54,7 +53,6 @@ def split_wav_naive(wav, top_db=12): def remix_random_reverse(wav, indices, p_reverse=0): - import random wav_remix = [] diff --git a/nkululeko/augmenting/resampler.py b/nkululeko/augmenting/resampler.py index 56ff60f2..7e75e25a 100644 --- a/nkululeko/augmenting/resampler.py +++ b/nkululeko/augmenting/resampler.py @@ -18,8 +18,11 @@ def __init__(self, df, replace, not_testing=True): self.util = Util("resampler", has_config=not_testing) self.util.warn(f"all files might be resampled to {self.SAMPLING_RATE}") self.not_testing = not_testing - self.replace = eval(self.util.config_val( - "RESAMPLE", "replace", "False")) if not not_testing else replace + self.replace = ( + eval(self.util.config_val("RESAMPLE", "replace", "False")) + if not not_testing + else replace + ) def resample(self): files = self.df.index.get_level_values(0).values @@ -45,8 +48,7 @@ def resample(self): continue if org_sr != self.SAMPLING_RATE: self.util.debug(f"resampling {f} (sr = {org_sr})") - resampler = torchaudio.transforms.Resample( - org_sr, self.SAMPLING_RATE) + resampler = torchaudio.transforms.Resample(org_sr, self.SAMPLING_RATE) signal = resampler(signal) if replace: torchaudio.save( @@ -63,8 +65,7 @@ def resample(self): self.df = self.df.set_index( self.df.index.set_levels(new_files, level="file") ) - target_file = self.util.config_val( - "RESAMPLE", "target", "resampled.csv") + target_file = self.util.config_val("RESAMPLE", "target", "resampled.csv") # remove encoded labels target = self.util.config_val("DATA", "target", "emotion") if "class_label" in self.df.columns: diff --git a/nkululeko/autopredict/estimate_snr.py b/nkululeko/autopredict/estimate_snr.py index b75135b6..da4aa948 100644 --- a/nkululeko/autopredict/estimate_snr.py +++ b/nkululeko/autopredict/estimate_snr.py @@ -43,9 +43,7 @@ def __init__(self, input_data, sample_rate, window_size=320, hop_size=160): def frame_audio(self, signal): num_frames = 1 + (len(signal) - self.frame_length) // self.hop_length frames = [ - signal[ - i * self.hop_length: (i * self.hop_length) + self.frame_length - ] + signal[i * self.hop_length : (i * self.hop_length) + self.frame_length] for i in range(num_frames) ] return frames @@ -64,11 +62,8 @@ def estimate_snr(self): for frame in frames ] - energy_threshold_low = np.percentile( - log_energies, 25) # First quartile - energy_threshold_high = np.percentile( - log_energies, 75 - ) # Third quartile + energy_threshold_low = np.percentile(log_energies, 25) # First quartile + energy_threshold_high = np.percentile(log_energies, 75) # Third quartile low_energy_frames = [ log_energy @@ -94,9 +89,7 @@ def estimate_snr(self): energy_threshold_high, ) - def plot_energy( - self, log_energies, energy_threshold_low, energy_threshold_high - ): + def plot_energy(self, log_energies, energy_threshold_low, energy_threshold_high): plt.figure(figsize=(10, 6)) plt.plot(log_energies, label="Log Energy") plt.axhline( @@ -153,9 +146,12 @@ def main(): signal, sr = audiofile.read(args.input) snr_estimator = SNREstimator(signal, sr, args.window_size, args.hop_size) - estimated_snr, log_energies, energy_threshold_low, energy_threshold_high = ( - snr_estimator.estimate_snr() - ) + ( + estimated_snr, + log_energies, + energy_threshold_low, + energy_threshold_high, + ) = snr_estimator.estimate_snr() print("Estimated SNR:", estimated_snr) diff --git a/nkululeko/constants.py b/nkululeko/constants.py index 9cb657f5..47579caf 100644 --- a/nkululeko/constants.py +++ b/nkululeko/constants.py @@ -1,2 +1,2 @@ -VERSION="0.90.0" +VERSION = "0.90.0" SAMPLING_RATE = 16000 diff --git a/nkululeko/data/dataset.py b/nkululeko/data/dataset.py index d89ffc85..36c096b9 100644 --- a/nkululeko/data/dataset.py +++ b/nkululeko/data/dataset.py @@ -7,9 +7,7 @@ import pandas as pd import audformat -from audformat.utils import duration -import nkululeko.filter_data as filter import nkululeko.glob_conf as glob_conf from nkululeko.filter_data import DataFilter from nkululeko.plots import Plots @@ -274,20 +272,20 @@ def _get_df_for_lists(self, db, df_files): # try to get the target values df_local[self.target] = source_df[self.col_label] is_labeled = True - except (KeyError, ValueError, audformat.errors.BadKeyError) as e: + except (KeyError, ValueError, audformat.errors.BadKeyError): pass try: # try to get the speaker values df_local["speaker"] = source_df["speaker"] got_speaker = True - except (KeyError, ValueError, audformat.errors.BadKeyError) as e: + except (KeyError, ValueError, audformat.errors.BadKeyError): pass try: # try to get the gender values if "gender" in source_df: df_local["gender"] = source_df["gender"] got_gender = True - except (KeyError, ValueError, audformat.errors.BadKeyError) as e: + except (KeyError, ValueError, audformat.errors.BadKeyError): pass try: # try to get the age values @@ -311,13 +309,13 @@ def _get_df_for_lists(self, db, df_files): # also it might be possible that the age is part of the speaker description df_local["age"] = db[table]["speaker"].get(map="age").astype(int) got_age = True - except (ValueError, audformat.errors.BadKeyError) as e: + except (ValueError, audformat.errors.BadKeyError): pass try: # same for the target, e.g. "age" df_local[self.target] = db[table]["speaker"].get(map=self.target) is_labeled = True - except (ValueError, audformat.core.errors.BadKeyError) as e: + except (ValueError, audformat.core.errors.BadKeyError): pass # copy other column for column in source_df.columns: @@ -473,7 +471,7 @@ def balanced_split(self): # split target targets = df[self.target].to_numpy() # - bins = self.util.config_val("DATA", f"bin", False) + bins = self.util.config_val("DATA", "bin", False) if bins: nbins = len(ast.literal_eval(bins)) targets = binning(targets, nbins=nbins) @@ -481,7 +479,7 @@ def balanced_split(self): speakers = df["speaker"].to_numpy() # on which variables (targets, groupings) to stratify - stratif_vars = self.util.config_val("DATA", f"balance", False) + stratif_vars = self.util.config_val("DATA", "balance", False) stratif_vars_array = {} if not stratif_vars: self.util.error("balanced split needs stratif_vars to stratify the splits") @@ -500,7 +498,7 @@ def balanced_split(self): # weights for all stratify_on variables and # and for test proportion match. Give target # variable EMOTION more weight than groupings. - size_diff = int(self.util.config_val("DATA", f"size_diff_weight", "1")) + size_diff = int(self.util.config_val("DATA", "size_diff_weight", "1")) weights = { "size_diff": size_diff, } diff --git a/nkululeko/data/dataset_csv.py b/nkululeko/data/dataset_csv.py index 2c279e92..42ef898e 100644 --- a/nkululeko/data/dataset_csv.py +++ b/nkululeko/data/dataset_csv.py @@ -81,7 +81,7 @@ def load(self): self.start_fresh = eval(self.util.config_val("DATA", "no_reuse", "False")) is_index = False try: - if self.is_labeled and not "class_label" in self.df.columns: + if self.is_labeled and "class_label" not in self.df.columns: self.df["class_label"] = self.df[self.target] except AttributeError: is_index = True diff --git a/nkululeko/demo-ft.py b/nkululeko/demo-ft.py new file mode 100644 index 00000000..f465cd5a --- /dev/null +++ b/nkululeko/demo-ft.py @@ -0,0 +1,28 @@ +from sklearn import pipeline +from transformers import pipelines +import argparse +import configparser +import os + +from nkululeko.utils.util import get_exp_dir + +parser = argparse.ArgumentParser() +parser.add_argument("--file", help="A file that should be processed (16kHz mono wav)") +# read config from ini file +parser.add_argument("--config", default="exp.ini", help="The base configuration") + + +args = parser.parse_args() +file = args.file +config = configparser.ConfigParser() + +# get exp dir from config [EXP][root][name] + models + run_0 + torch +config.read(args.config) +exp_dir = get_exp_dir("model_path") + +# exp_dir = get_exp_dir("model_path") +model_path = os.path.join(exp_dir, "model") +pipe = pipelines("audio-classification", model=model_path) + + +print(pipeline(file)) diff --git a/nkululeko/demo_predictor.py b/nkululeko/demo_predictor.py index 006bbd9b..879ad7fe 100644 --- a/nkululeko/demo_predictor.py +++ b/nkululeko/demo_predictor.py @@ -46,7 +46,7 @@ def run_demo(self): ) else: file_list = in_df.index.values - except (ValueError, AttributeError) as error: + except (ValueError, AttributeError): with open(self.file) as f: first = True for index, line in enumerate(f): diff --git a/nkululeko/ensemble.py b/nkululeko/ensemble.py index b467cf2a..3a62cf87 100644 --- a/nkululeko/ensemble.py +++ b/nkululeko/ensemble.py @@ -27,15 +27,10 @@ import numpy as np import pandas as pd -import matplotlib.pyplot as plt -from sklearn.metrics import( - RocCurveDisplay, - balanced_accuracy_score, +from sklearn.metrics import ( + balanced_accuracy_score, classification_report, - auc, - roc_auc_score, - roc_curve ) from nkululeko.constants import VERSION @@ -169,17 +164,19 @@ def performance_weighted_ensemble(ensemble_preds_ls, labels, weights): # asserts weiths in decimal 0-1 assert all(0 <= w <= 1 for w in weights), "Weights must be between 0 and 1" - + # assert lenght of weights matches number of models - assert len(weights) == len(ensemble_preds_ls), "Number of weights must match number of models" - + assert len(weights) == len( + ensemble_preds_ls + ), "Number of weights must match number of models" + # Normalize weights total_weight = sum(weights) weights = [weight / total_weight for weight in weights] - + for idx in ensemble_preds_ls[0].index: class_probabilities = {label: 0 for label in labels} - + for df, weight in zip(ensemble_preds_ls, weights): row = df.loc[idx] for label in labels: @@ -192,10 +189,12 @@ def performance_weighted_ensemble(ensemble_preds_ls, labels, weights): return final_predictions, final_confidences - - def ensemble_predictions( - config_files: List[str], method: str, threshold: float, weights: List[float], no_labels: bool + config_files: List[str], + method: str, + threshold: float, + weights: List[float], + no_labels: bool, ) -> pd.DataFrame: """ Ensemble predictions from multiple experiments. @@ -261,17 +260,20 @@ def ensemble_predictions( ensemble_preds_ls, labels, threshold ) elif method == "uncertainty_weighted": - ensemble_preds["predicted"], ensemble_preds["uncertainty"] = ( - uncertainty_weighted_ensemble(ensemble_preds_ls, labels) - ) + ( + ensemble_preds["predicted"], + ensemble_preds["uncertainty"], + ) = uncertainty_weighted_ensemble(ensemble_preds_ls, labels) elif method == "confidence_weighted": - ensemble_preds["predicted"], ensemble_preds["confidence"] = ( - confidence_weighted_ensemble(ensemble_preds_ls, labels) - ) + ( + ensemble_preds["predicted"], + ensemble_preds["confidence"], + ) = confidence_weighted_ensemble(ensemble_preds_ls, labels) elif method == "performance_weighted": - ensemble_preds["predicted"], ensemble_preds["confidence"] = ( - performance_weighted_ensemble(ensemble_preds_ls, labels, weights) - ) + ( + ensemble_preds["predicted"], + ensemble_preds["confidence"], + ) = performance_weighted_ensemble(ensemble_preds_ls, labels, weights) else: raise ValueError(f"Unknown ensemble method: {method}") diff --git a/nkululeko/experiment.py b/nkululeko/experiment.py index d07b0687..92a00da2 100644 --- a/nkululeko/experiment.py +++ b/nkululeko/experiment.py @@ -744,7 +744,6 @@ def save_onnx(self, filename): if model.is_ann(): print("converting to onnx from torch") else: - print("converting to onnx from sklearn") # save the rest f = open(filename, "wb") diff --git a/nkululeko/experiment_felix.py b/nkululeko/experiment_felix.py new file mode 100644 index 00000000..92b3d5b7 --- /dev/null +++ b/nkululeko/experiment_felix.py @@ -0,0 +1,729 @@ +# experiment.py: Main class for an experiment (nkululeko.nkululeko) +import ast +import os +import pickle +import random +import time + +import numpy as np +import pandas as pd +from sklearn.preprocessing import LabelEncoder + +import audeer +import audformat + +from nkululeko.data.dataset import Dataset +from nkululeko.data.dataset_csv import Dataset_CSV +from nkululeko.demo_predictor import Demo_predictor +from nkululeko.feat_extract.feats_analyser import FeatureAnalyser +from nkululeko.feature_extractor import FeatureExtractor +from nkululeko.file_checker import FileChecker +from nkululeko.filter_data import DataFilter +import nkululeko.glob_conf as glob_conf +from nkululeko.plots import Plots +from nkululeko.reporting.report import Report +from nkululeko.runmanager import Runmanager +from nkululeko.scaler import Scaler +from nkululeko.test_predictor import TestPredictor +from nkululeko.utils.util import Util + + +class Experiment: + """Main class specifying an experiment""" + + def __init__(self, config_obj): + """ + Parameters + ---------- + config_obj : a config parser object that sets the experiment parameters and being set as a global object. + """ + + self.set_globals(config_obj) + self.name = glob_conf.config["EXP"]["name"] + self.root = os.path.join(glob_conf.config["EXP"]["root"], "") + self.data_dir = os.path.join(self.root, self.name) + audeer.mkdir(self.data_dir) # create the experiment directory + self.util = Util("experiment") + glob_conf.set_util(self.util) + fresh_report = eval(self.util.config_val("REPORT", "fresh", "False")) + if not fresh_report: + try: + with open(os.path.join(self.data_dir, "report.pkl"), "rb") as handle: + self.report = pickle.load(handle) + except FileNotFoundError: + self.report = Report() + else: + self.util.debug("starting a fresh report") + self.report = Report() + glob_conf.set_report(self.report) + self.loso = self.util.config_val("MODEL", "loso", False) + self.logo = self.util.config_val("MODEL", "logo", False) + self.xfoldx = self.util.config_val("MODEL", "k_fold_cross", False) + self.start = time.process_time() + + def set_module(self, module): + glob_conf.set_module(module) + + def store_report(self): + with open(os.path.join(self.data_dir, "report.pkl"), "wb") as handle: + pickle.dump(self.report, handle) + if eval(self.util.config_val("REPORT", "show", "False")): + self.report.print() + if self.util.config_val("REPORT", "latex", False): + self.report.export_latex() + + def get_name(self): + return self.util.get_exp_name() + + def set_globals(self, config_obj): + """install a config object in the global space""" + glob_conf.init_config(config_obj) + + def load_datasets(self): + """Load all databases specified in the configuration and map the labels""" + ds = ast.literal_eval(glob_conf.config["DATA"]["databases"]) + self.datasets = {} + self.got_speaker, self.got_gender, self.got_age = False, False, False + for d in ds: + ds_type = self.util.config_val_data(d, "type", "audformat") + if ds_type == "audformat": + data = Dataset(d) + elif ds_type == "csv": + data = Dataset_CSV(d) + else: + self.util.error(f"unknown data type: {ds_type}") + data.load() + data.prepare() + if data.got_gender: + self.got_gender = True + if data.got_age: + self.got_age = True + if data.got_speaker: + self.got_speaker = True + self.datasets.update({d: data}) + self.target = self.util.config_val("DATA", "target", "emotion") + glob_conf.set_target(self.target) + # print target via debug + self.util.debug(f"target: {self.target}") + # print keys/column + dbs = ",".join(list(self.datasets.keys())) + labels = self.util.config_val("DATA", "labels", False) + if labels: + self.labels = ast.literal_eval(labels) + self.util.debug(f"Target labels (from config): {labels}") + else: + self.labels = list( + next(iter(self.datasets.values())).df[self.target].unique() + ) + self.util.debug(f"Target labels (from database): {labels}") + glob_conf.set_labels(self.labels) + self.util.debug(f"loaded databases {dbs}") + + def _import_csv(self, storage): + # df = pd.read_csv(storage, header=0, index_col=[0,1,2]) + # df.index.set_levels(pd.to_timedelta(df.index.levels[1]), level=1) + # df.index.set_levels(pd.to_timedelta(df.index.levels[2]), level=2) + df = audformat.utils.read_csv(storage) + df.is_labeled = True if self.target in df else False + # print(df.head()) + return df + + def fill_tests(self): + """Only fill a new test set""" + + test_dbs = ast.literal_eval(glob_conf.config["DATA"]["tests"]) + self.df_test = pd.DataFrame() + start_fresh = eval(self.util.config_val("DATA", "no_reuse", "False")) + store = self.util.get_path("store") + storage_test = f"{store}extra_testdf.csv" + if os.path.isfile(storage_test) and not start_fresh: + self.util.debug(f"reusing previously stored {storage_test}") + self.df_test = self._import_csv(storage_test) + else: + for d in test_dbs: + ds_type = self.util.config_val_data(d, "type", "audformat") + if ds_type == "audformat": + data = Dataset(d) + elif ds_type == "csv": + data = Dataset_CSV(d) + else: + self.util.error(f"unknown data type: {ds_type}") + data.load() + if data.got_gender: + self.got_gender = True + if data.got_age: + self.got_age = True + if data.got_speaker: + self.got_speaker = True + data.split() + data.prepare_labels() + self.df_test = pd.concat( + [self.df_test, self.util.make_segmented_index(data.df_test)] + ) + self.df_test.is_labeled = data.is_labeled + self.df_test.got_gender = self.got_gender + self.df_test.got_speaker = self.got_speaker + # self.util.set_config_val('FEATS', 'needs_features_extraction', 'True') + # self.util.set_config_val('FEATS', 'no_reuse', 'True') + self.df_test["class_label"] = self.df_test[self.target] + self.df_test[self.target] = self.label_encoder.transform( + self.df_test[self.target] + ) + self.df_test.to_csv(storage_test) + + def fill_train_and_tests(self): + """Set up train and development sets. The method should be specified in the config.""" + store = self.util.get_path("store") + storage_test = f"{store}testdf.csv" + storage_train = f"{store}traindf.csv" + start_fresh = eval(self.util.config_val("DATA", "no_reuse", "False")) + if ( + os.path.isfile(storage_train) + and os.path.isfile(storage_test) + and not start_fresh + ): + self.util.debug( + f"reusing previously stored {storage_test} and {storage_train}" + ) + self.df_test = self._import_csv(storage_test) + # print(f"df_test: {self.df_test}") + self.df_train = self._import_csv(storage_train) + # print(f"df_train: {self.df_train}") + else: + self.df_train, self.df_test = pd.DataFrame(), pd.DataFrame() + for d in self.datasets.values(): + d.split() + d.prepare_labels() + if d.df_train.shape[0] == 0: + self.util.debug(f"warn: {d.name} train empty") + self.df_train = pd.concat([self.df_train, d.df_train]) + # print(f"df_train: {self.df_train}") + self.util.copy_flags(d, self.df_train) + if d.df_test.shape[0] == 0: + self.util.debug(f"warn: {d.name} test empty") + self.df_test = pd.concat([self.df_test, d.df_test]) + self.util.copy_flags(d, self.df_test) + store = self.util.get_path("store") + storage_test = f"{store}testdf.csv" + storage_train = f"{store}traindf.csv" + self.df_test.to_csv(storage_test) + self.df_train.to_csv(storage_train) + + self.util.copy_flags(self, self.df_test) + self.util.copy_flags(self, self.df_train) + # Try data checks + datachecker = FileChecker(self.df_train) + self.df_train = datachecker.all_checks() + datachecker.set_data(self.df_test) + self.df_test = datachecker.all_checks() + + # Check for filters + filter_sample_selection = self.util.config_val( + "DATA", "filter.sample_selection", "all" + ) + if filter_sample_selection == "all": + datafilter = DataFilter(self.df_train) + self.df_train = datafilter.all_filters() + datafilter = DataFilter(self.df_test) + self.df_test = datafilter.all_filters() + elif filter_sample_selection == "train": + datafilter = DataFilter(self.df_train) + self.df_train = datafilter.all_filters() + elif filter_sample_selection == "test": + datafilter = DataFilter(self.df_test) + self.df_test = datafilter.all_filters() + else: + self.util.error( + "unkown filter sample selection specifier" + f" {filter_sample_selection}, should be [all | train | test]" + ) + + # encode the labels + if self.util.exp_is_classification(): + datatype = self.util.config_val("DATA", "type", "dummy") + if datatype == "continuous": + # if self.df_test.is_labeled: + # # remember the target in case they get labelencoded later + # self.df_test["class_label"] = self.df_test[self.target] + test_cats = self.df_test["class_label"].unique() + # else: + # # if there is no target, copy a dummy label + # self.df_test = self._add_random_target(self.df_test) + # if self.df_train.is_labeled: + # # remember the target in case they get labelencoded later + # self.df_train["class_label"] = self.df_train[self.target] + train_cats = self.df_train["class_label"].unique() + + else: + if self.df_test.is_labeled: + test_cats = self.df_test[self.target].unique() + else: + # if there is no target, copy a dummy label + self.df_test = self._add_random_target(self.df_test).astype("str") + train_cats = self.df_train[self.target].unique() + # print(f"df_train: {pd.DataFrame(self.df_train[self.target])}") + # print(f"train_cats with target {self.target}: {train_cats}") + if self.df_test.is_labeled: + if type(test_cats) == np.ndarray: + self.util.debug(f"Categories test (nd.array): {test_cats}") + else: + self.util.debug(f"Categories test (list): {list(test_cats)}") + if type(train_cats) == np.ndarray: + self.util.debug(f"Categories train (nd.array): {train_cats}") + else: + self.util.debug(f"Categories train (list): {list(train_cats)}") + + # encode the labels as numbers + self.label_encoder = LabelEncoder() + self.df_train[self.target] = self.label_encoder.fit_transform( + self.df_train[self.target] + ) + self.df_test[self.target] = self.label_encoder.transform( + self.df_test[self.target] + ) + glob_conf.set_label_encoder(self.label_encoder) + if self.got_speaker: + self.util.debug( + f"{self.df_test.speaker.nunique()} speakers in test and" + f" {self.df_train.speaker.nunique()} speakers in train" + ) + + target_factor = self.util.config_val("DATA", "target_divide_by", False) + if target_factor: + self.df_test[self.target] = self.df_test[self.target] / float(target_factor) + self.df_train[self.target] = self.df_train[self.target] / float( + target_factor + ) + if not self.util.exp_is_classification(): + self.df_test["class_label"] = self.df_test["class_label"] / float( + target_factor + ) + self.df_train["class_label"] = self.df_train["class_label"] / float( + target_factor + ) + + def _add_random_target(self, df): + labels = glob_conf.labels + a = [None] * len(df) + for i in range(0, len(df)): + a[i] = random.choice(labels) + df[self.target] = a + return df + + def plot_distribution(self, df_labels): + """Plot the distribution of samples and speaker per target class and biological sex""" + plot = Plots() + sample_selection = self.util.config_val("EXPL", "sample_selection", "all") + plot.plot_distributions(df_labels) + if self.got_speaker: + plot.plot_distributions_speaker(df_labels) + + def extract_test_feats(self): + self.feats_test = pd.DataFrame() + feats_name = "_".join(ast.literal_eval(glob_conf.config["DATA"]["tests"])) + feats_types = self.util.config_val_list("FEATS", "type", ["os"]) + self.feature_extractor = FeatureExtractor( + self.df_test, feats_types, feats_name, "test" + ) + self.feats_test = self.feature_extractor.extract() + self.util.debug(f"Test features shape:{self.feats_test.shape}") + + def extract_feats(self): + """Extract the features for train and dev sets. + + They will be stored on disk and need to be removed manually. + + The string FEATS.feats_type is read from the config, defaults to os. + + """ + df_train, df_test = self.df_train, self.df_test + feats_name = "_".join(ast.literal_eval(glob_conf.config["DATA"]["databases"])) + self.feats_test, self.feats_train = pd.DataFrame(), pd.DataFrame() + feats_types = self.util.config_val_list("FEATS", "type", ["os"]) + self.feature_extractor = FeatureExtractor( + df_train, feats_types, feats_name, "train" + ) + self.feats_train = self.feature_extractor.extract() + self.feature_extractor = FeatureExtractor( + df_test, feats_types, feats_name, "test" + ) + self.feats_test = self.feature_extractor.extract() + self.util.debug( + f"All features: train shape : {self.feats_train.shape}, test" + f" shape:{self.feats_test.shape}" + ) + if self.feats_train.shape[0] < self.df_train.shape[0]: + self.util.warn( + f"train feats ({self.feats_train.shape[0]}) != train labels" + f" ({self.df_train.shape[0]})" + ) + self.df_train = self.df_train[ + self.df_train.index.isin(self.feats_train.index) + ] + self.util.warn(f"new train labels shape: {self.df_train.shape[0]}") + if self.feats_test.shape[0] < self.df_test.shape[0]: + self.util.warn( + f"test feats ({self.feats_test.shape[0]}) != test labels" + f" ({self.df_test.shape[0]})" + ) + self.df_test = self.df_test[self.df_test.index.isin(self.feats_test.index)] + self.util.warn(f"mew test labels shape: {self.df_test.shape[0]}") + + self._check_scale() + + def augment(self): + """ + Augment the selected samples + """ + from nkululeko.augmenting.augmenter import Augmenter + + sample_selection = self.util.config_val("AUGMENT", "sample_selection", "all") + if sample_selection == "all": + df = pd.concat([self.df_train, self.df_test]) + elif sample_selection == "train": + df = self.df_train + elif sample_selection == "test": + df = self.df_test + else: + self.util.error( + f"unknown augmentation selection specifier {sample_selection}," + " should be [all | train | test]" + ) + + augmenter = Augmenter(df) + df_ret = augmenter.augment(sample_selection) + return df_ret + + def autopredict(self): + """ + Predict labels for samples with existing models and add to the dataframe. + """ + sample_selection = self.util.config_val("PREDICT", "split", "all") + if sample_selection == "all": + df = pd.concat([self.df_train, self.df_test]) + elif sample_selection == "train": + df = self.df_train + elif sample_selection == "test": + df = self.df_test + else: + self.util.error( + f"unknown augmentation selection specifier {sample_selection}," + " should be [all | train | test]" + ) + targets = self.util.config_val_list("PREDICT", "targets", ["gender"]) + for target in targets: + if target == "gender": + from nkululeko.autopredict.ap_gender import GenderPredictor + + predictor = GenderPredictor(df) + df = predictor.predict(sample_selection) + elif target == "age": + from nkululeko.autopredict.ap_age import AgePredictor + + predictor = AgePredictor(df) + df = predictor.predict(sample_selection) + elif target == "snr": + from nkululeko.autopredict.ap_snr import SNRPredictor + + predictor = SNRPredictor(df) + df = predictor.predict(sample_selection) + elif target == "mos": + from nkululeko.autopredict.ap_mos import MOSPredictor + + predictor = MOSPredictor(df) + df = predictor.predict(sample_selection) + elif target == "pesq": + from nkululeko.autopredict.ap_pesq import PESQPredictor + + predictor = PESQPredictor(df) + df = predictor.predict(sample_selection) + elif target == "sdr": + from nkululeko.autopredict.ap_sdr import SDRPredictor + + predictor = SDRPredictor(df) + df = predictor.predict(sample_selection) + elif target == "stoi": + from nkululeko.autopredict.ap_stoi import STOIPredictor + + predictor = STOIPredictor(df) + df = predictor.predict(sample_selection) + elif target == "arousal": + from nkululeko.autopredict.ap_arousal import ArousalPredictor + + predictor = ArousalPredictor(df) + df = predictor.predict(sample_selection) + elif target == "valence": + from nkululeko.autopredict.ap_valence import ValencePredictor + + predictor = ValencePredictor(df) + df = predictor.predict(sample_selection) + elif target == "dominance": + from nkululeko.autopredict.ap_dominance import DominancePredictor + + predictor = DominancePredictor(df) + df = predictor.predict(sample_selection) + else: + self.util.error(f"unknown auto predict target: {target}") + return df + + def random_splice(self): + """ + Random-splice the selected samples + """ + from nkululeko.augmenting.randomsplicer import Randomsplicer + + sample_selection = self.util.config_val("AUGMENT", "sample_selection", "all") + if sample_selection == "all": + df = pd.concat([self.df_train, self.df_test]) + elif sample_selection == "train": + df = self.df_train + elif sample_selection == "test": + df = self.df_test + else: + self.util.error( + f"unknown augmentation selection specifier {sample_selection}," + " should be [all | train | test]" + ) + randomsplicer = Randomsplicer(df) + df_ret = randomsplicer.run(sample_selection) + return df_ret + + def analyse_features(self, needs_feats): + """Do a feature exploration.""" + plot_feats = eval( + self.util.config_val("EXPL", "feature_distributions", "False") + ) + sample_selection = self.util.config_val("EXPL", "sample_selection", "all") + # get the data labels + if sample_selection == "all": + df_labels = pd.concat([self.df_train, self.df_test]) + self.util.copy_flags(self.df_train, df_labels) + elif sample_selection == "train": + df_labels = self.df_train + self.util.copy_flags(self.df_train, df_labels) + elif sample_selection == "test": + df_labels = self.df_test + self.util.copy_flags(self.df_test, df_labels) + else: + self.util.error( + f"unknown sample selection specifier {sample_selection}, should" + " be [all | train | test]" + ) + self.util.debug(f"sampling selection: {sample_selection}") + if self.util.config_val("EXPL", "value_counts", False): + self.plot_distribution(df_labels) + + # check if data should be shown with the spotlight data visualizer + spotlight = eval(self.util.config_val("EXPL", "spotlight", "False")) + if spotlight: + self.util.debug("opening spotlight tab in web browser") + from renumics import spotlight + + spotlight.show(df_labels.reset_index()) + + if not needs_feats: + return + # get the feature values + if sample_selection == "all": + df_feats = pd.concat([self.feats_train, self.feats_test]) + elif sample_selection == "train": + df_feats = self.feats_train + elif sample_selection == "test": + df_feats = self.feats_test + else: + self.util.error( + f"unknown sample selection specifier {sample_selection}, should" + " be [all | train | test]" + ) + feat_analyser = FeatureAnalyser(sample_selection, df_labels, df_feats) + # check if SHAP features should be analysed + shap = eval(self.util.config_val("EXPL", "shap", "False")) + if shap: + feat_analyser.analyse_shap(self.runmgr.get_best_model()) + + if plot_feats: + feat_analyser.analyse() + + # check if a scatterplot should be done + scatter_var = eval(self.util.config_val("EXPL", "scatter", "False")) + scatter_target = self.util.config_val( + "EXPL", "scatter.target", "['class_label']" + ) + if scatter_var: + scatters = ast.literal_eval(glob_conf.config["EXPL"]["scatter"]) + scat_targets = ast.literal_eval(scatter_target) + plots = Plots() + for scat_target in scat_targets: + if self.util.is_categorical(df_labels[scat_target]): + for scatter in scatters: + plots.scatter_plot(df_feats, df_labels, scat_target, scatter) + else: + self.util.debug( + f"{self.name}: binning continuous variable to categories" + ) + cat_vals = self.util.continuous_to_categorical( + df_labels[scat_target] + ) + df_labels[f"{scat_target}_bins"] = cat_vals.values + for scatter in scatters: + plots.scatter_plot( + df_feats, df_labels, f"{scat_target}_bins", scatter + ) + + def _check_scale(self): + scale_feats = self.util.config_val("FEATS", "scale", False) + # print the scale + self.util.debug(f"scaler: {scale_feats}") + if scale_feats: + self.scaler_feats = Scaler( + self.df_train, + self.df_test, + self.feats_train, + self.feats_test, + scale_feats, + ) + self.feats_train, self.feats_test = self.scaler_feats.scale() + # store versions + self.util.save_to_store(self.feats_train, "feats_train_scaled") + self.util.save_to_store(self.feats_test, "feats_test_scaled") + + def init_runmanager(self): + """Initialize the manager object for the runs.""" + self.runmgr = Runmanager( + self.df_train, self.df_test, self.feats_train, self.feats_test + ) + + def run(self): + """Do the runs.""" + self.runmgr.do_runs() + + # access the best results all runs + self.reports = self.runmgr.best_results + last_epochs = self.runmgr.last_epochs + # try to save yourself + save = self.util.config_val("EXP", "save", False) + if save: + # save the experiment for future use + self.save(self.util.get_save_name()) + # self.save_onnx(self.util.get_save_name()) + + # self.__collect_reports() + self.util.print_best_results(self.reports) + + # check if the test predictions should be saved to disk + test_pred_file = self.util.config_val("EXP", "save_test", False) + if test_pred_file: + self.predict_test_and_save(test_pred_file) + + # check if the majority voting for all speakers should be plotted + conf_mat_per_speaker_function = self.util.config_val( + "PLOT", "combine_per_speaker", False + ) + if conf_mat_per_speaker_function: + self.plot_confmat_per_speaker(conf_mat_per_speaker_function) + used_time = time.process_time() - self.start + self.util.debug(f"Done, used {used_time:.3f} seconds") + + # check if a test set should be labeled by the model: + label_data = self.util.config_val("DATA", "label_data", False) + label_result = self.util.config_val("DATA", "label_result", False) + if label_data and label_result: + self.predict_test_and_save(label_result) + + return self.reports, last_epochs + + def plot_confmat_per_speaker(self, function): + if self.loso or self.logo or self.xfoldx: + self.util.debug( + "plot combined speaker predictions not possible for cross" " validation" + ) + return + best = self.get_best_report(self.reports) + # if not best.is_classification: + # best.continuous_to_categorical() + truths = best.truths + preds = best.preds + speakers = self.df_test.speaker.values + print(f"{len(truths)} {len(preds)} {len(speakers) }") + df = pd.DataFrame(data={"truth": truths, "pred": preds, "speaker": speakers}) + plot_name = "result_combined_per_speaker" + self.util.debug( + f"plotting speaker combination ({function}) confusion matrix to" + f" {plot_name}" + ) + best.plot_per_speaker(df, plot_name, function) + + def get_best_report(self, reports): + return self.runmgr.get_best_result(reports) + + def print_best_model(self): + self.runmgr.print_best_result_runs() + + def demo(self, file, is_list, outfile): + model = self.runmgr.get_best_model() + labelEncoder = None + try: + labelEncoder = self.label_encoder + except AttributeError: + pass + demo = Demo_predictor( + model, file, is_list, self.feature_extractor, labelEncoder, outfile + ) + demo.run_demo() + + def predict_test_and_save(self, result_name): + model = self.runmgr.get_best_model() + model.set_testdata(self.df_test, self.feats_test) + test_predictor = TestPredictor( + model, self.df_test, self.label_encoder, result_name + ) + result = test_predictor.predict_and_store() + return result + + def load(self, filename): + try: + f = open(filename, "rb") + tmp_dict = pickle.load(f) + f.close() + except EOFError as eof: + self.util.error(f"can't open file {filename}: {eof}") + self.__dict__.update(tmp_dict) + glob_conf.set_labels(self.labels) + + def save(self, filename): + if self.runmgr.modelrunner.model.is_ann(): + self.runmgr.modelrunner.model = None + self.util.warn( + "Save experiment: Can't pickle the trained model so saving without it. (it should be stored anyway)" + ) + try: + f = open(filename, "wb") + pickle.dump(self.__dict__, f) + f.close() + except (TypeError, AttributeError) as error: + self.feature_extractor.feat_extractor.model = None + f = open(filename, "wb") + pickle.dump(self.__dict__, f) + f.close() + self.util.warn( + "Save experiment: Can't pickle the feature extraction model so saving without it." + + f"{type(error).__name__} {error}" + ) + except RuntimeError as error: + self.util.warn( + "Save experiment: Can't pickle local object, NOT saving: " + + f"{type(error).__name__} {error}" + ) + + def save_onnx(self, filename): + # export the model to onnx + model = self.runmgr.get_best_model() + if model.is_ann(): + print("converting to onnx from torch") + else: + + print("converting to onnx from sklearn") + # save the rest + f = open(filename, "wb") + pickle.dump(self.__dict__, f) + f.close() diff --git a/nkululeko/feat_extract/feats_agender.py b/nkululeko/feat_extract/feats_agender.py index 15992d8b..619c904f 100644 --- a/nkululeko/feat_extract/feats_agender.py +++ b/nkululeko/feat_extract/feats_agender.py @@ -37,7 +37,7 @@ def _load_model(self): cuda = "cuda" if torch.cuda.is_available() else "cpu" device = self.util.config_val("MODEL", "device", cuda) self.model = audonnx.load(model_root, device=device) - self.util.debug(f"initialized agender model") + self.util.debug("initialized agender model") self.model_loaded = True def extract(self): diff --git a/nkululeko/feat_extract/feats_agender_agender.py b/nkululeko/feat_extract/feats_agender_agender.py index 83a3a162..9d758c5c 100644 --- a/nkululeko/feat_extract/feats_agender_agender.py +++ b/nkululeko/feat_extract/feats_agender_agender.py @@ -1,7 +1,6 @@ # feats_audmodel_dim.py from nkululeko.feat_extract.featureset import Featureset import os -import pandas as pd import audeer import nkululeko.glob_conf as glob_conf import audonnx @@ -9,6 +8,7 @@ import audinterface import torch + class Agender_agenderSet(Featureset): """ Age and gender predictions from the wav2vec2. based model finetuned on agender, described in the paper @@ -29,8 +29,7 @@ def _load_model(self): if not os.path.isdir(model_root): cache_root = audeer.mkdir("cache") model_root = audeer.mkdir(model_root) - archive_path = audeer.download_url( - model_url, cache_root, verbose=True) + archive_path = audeer.download_url(model_url, cache_root, verbose=True) audeer.extract_archive(archive_path, model_root) cuda = "cuda" if torch.cuda.is_available() else "cpu" device = self.util.config_val("MODEL", "device", cuda) diff --git a/nkululeko/feat_extract/feats_analyser.py b/nkululeko/feat_extract/feats_analyser.py index 0859b1b4..2fcf7217 100644 --- a/nkululeko/feat_extract/feats_analyser.py +++ b/nkululeko/feat_extract/feats_analyser.py @@ -58,9 +58,9 @@ def analyse_shap(self, model): model_func = model.clf.predict else: raise Exception("Model not supported for SHAP analysis") - + self.util.debug(f"using SHAP explainer for {model_name} model") - + explainer = shap.Explainer( model_func, self.features, @@ -68,14 +68,14 @@ def analyse_shap(self, model): algorithm="permutation", npermutations=5, ) - + self.util.debug("computing SHAP values...") shap_values = explainer(self.features) self.util.to_pickle(shap_values, name) else: shap_values = self.util.from_pickle(name) # plt.figure() - plt.close('all') + plt.close("all") plt.tight_layout() shap.plots.bar(shap_values) fig_dir = self.util.get_path("fig_dir") + "../" # one up because of the runs @@ -272,7 +272,7 @@ def analyse(self): fig = ax.figure fig.clear() plt.close(fig) - caption = f"Feature importance" + caption = "Feature importance" if permutation: caption += " based on permutation of features." glob_conf.report.add_item( @@ -285,7 +285,9 @@ def analyse(self): ) # print feature importance values to file and debug and save to result - self.util.debug(f"Importance features from {model_name}: features = \n{df_imp['feats'].values.tolist()}") + self.util.debug( + f"Importance features from {model_name}: features = \n{df_imp['feats'].values.tolist()}" + ) # result file res_dir = self.util.get_path("res_dir") filename = f"_EXPL_{model_name}" @@ -300,7 +302,7 @@ def analyse(self): df_imp.to_csv(filename, mode="a") self.util.debug(f"Saved feature importance values to {filename}") - + # check if feature distributions should be plotted plot_feats = self.util.config_val("EXPL", "feature_distributions", False) if plot_feats: diff --git a/nkululeko/feat_extract/feats_ast.py b/nkululeko/feat_extract/feats_ast.py index 816f56f4..46f53327 100644 --- a/nkululeko/feat_extract/feats_ast.py +++ b/nkululeko/feat_extract/feats_ast.py @@ -4,7 +4,6 @@ import numpy as np import pandas as pd import torch -import torch.nn.functional as F import torchaudio from tqdm import tqdm from transformers import AutoProcessor, ASTModel @@ -34,7 +33,6 @@ def init_model(self): self.model.eval() self.model_initialized = True - def extract(self): """Extract the features or load them from disk if present.""" store = self.util.get_path("store") @@ -80,11 +78,12 @@ def extract(self): f"got nan: {self.df.shape} {self.df.isnull().sum().sum()}" ) - def get_embeddings(self, signal, sampling_rate, file): """Extract embeddings from raw audio signal.""" try: - inputs = self.processor(signal.numpy(), sampling_rate=sampling_rate, return_tensors="pt") + inputs = self.processor( + signal.numpy(), sampling_rate=sampling_rate, return_tensors="pt" + ) inputs = {k: v.to(self.device) for k, v in inputs.items()} @@ -102,14 +101,16 @@ def get_embeddings(self, signal, sampling_rate, file): # print(f"hs shape: {embeddings.shape}") # hs shape: (1, 768) - + except Exception as e: - self.util.error(f"Error extracting embeddings for file {file}: {str(e)}, fill with") + self.util.error( + f"Error extracting embeddings for file {file}: {str(e)}, fill with" + ) return np.zeros( self.model.config.hidden_size ) # Return zero vector on error return embeddings.ravel() - + def extract_sample(self, signal, sr): self.init_model() feats = self.get_embeddings(signal, sr, "no file") diff --git a/nkululeko/feat_extract/feats_auddim.py b/nkululeko/feat_extract/feats_auddim.py index fe4f8262..eaface98 100644 --- a/nkululeko/feat_extract/feats_auddim.py +++ b/nkululeko/feat_extract/feats_auddim.py @@ -2,7 +2,6 @@ import os import numpy as np -import pandas as pd import torch import audeer diff --git a/nkululeko/feat_extract/feats_audmodel.py b/nkululeko/feat_extract/feats_audmodel.py index 74c783a1..8f298612 100644 --- a/nkululeko/feat_extract/feats_audmodel.py +++ b/nkululeko/feat_extract/feats_audmodel.py @@ -6,7 +6,6 @@ import audonnx import nkululeko.glob_conf as glob_conf import numpy as np -import pandas as pd import torch from nkululeko.feat_extract.featureset import Featureset diff --git a/nkululeko/feat_extract/feats_clap.py b/nkululeko/feat_extract/feats_clap.py index da1f5de4..298cc7b5 100644 --- a/nkululeko/feat_extract/feats_clap.py +++ b/nkululeko/feat_extract/feats_clap.py @@ -1,11 +1,9 @@ # feats_clap.py -from nkululeko.utils.util import Util from nkululeko.feat_extract.featureset import Featureset import os import pandas as pd from tqdm import tqdm -import os import nkululeko.glob_conf as glob_conf import laion_clap import audiofile @@ -26,21 +24,19 @@ def init_model(self): self.util.debug("loading clap model...") self.model = laion_clap.CLAP_Module(enable_fusion=False) self.model.load_ckpt() # download the default pretrained checkpoint. - print(f"loaded clap model") + print("loaded clap model") def extract(self): """Extract the features or load them from disk if present.""" store = self.util.get_path("store") store_format = self.util.config_val("FEATS", "store_format", "pkl") storage = f"{store}{self.name}.{store_format}" - extract = self.util.config_val( - "FEATS", "needs_feature_extraction", False) + extract = self.util.config_val("FEATS", "needs_feature_extraction", False) no_reuse = eval(self.util.config_val("FEATS", "no_reuse", "False")) if extract or no_reuse or not os.path.isfile(storage): if not self.model_initialized: self.init_model() - self.util.debug( - "extracting clap embeddings, this might take a while...") + self.util.debug("extracting clap embeddings, this might take a while...") emb_series = pd.Series(index=self.data_df.index, dtype=object) length = len(self.data_df.index) for idx, (file, start, end) in enumerate( @@ -54,8 +50,7 @@ def extract(self): ) emb = self.get_embeddings(signal, sampling_rate) emb_series[idx] = emb - self.df = pd.DataFrame( - emb_series.values.tolist(), index=self.data_df.index) + self.df = pd.DataFrame(emb_series.values.tolist(), index=self.data_df.index) self.util.write_store(self.df, storage, store_format) try: glob_conf.config["DATA"]["needs_feature_extraction"] = "false" diff --git a/nkululeko/feat_extract/feats_import.py b/nkululeko/feat_extract/feats_import.py index 73fc5f32..d10dbd4c 100644 --- a/nkululeko/feat_extract/feats_import.py +++ b/nkululeko/feat_extract/feats_import.py @@ -4,7 +4,6 @@ import ast import audformat import pandas as pd -from nkululeko.utils.util import Util from nkululeko.feat_extract.featureset import Featureset @@ -20,11 +19,11 @@ def extract(self): try: feat_import_files = self.util.config_val("FEATS", "import_file", False) feat_import_files = ast.literal_eval(feat_import_files) - except ValueError as e: + except ValueError: self.util.error( "feature type == import needs import_file = ['file1', 'filex']" ) - except SyntaxError as se: + except SyntaxError: if type(feat_import_files) == str: feat_import_files = [feat_import_files] else: diff --git a/nkululeko/feat_extract/feats_mld.py b/nkululeko/feat_extract/feats_mld.py index 6a17a009..96d9e06b 100644 --- a/nkululeko/feat_extract/feats_mld.py +++ b/nkululeko/feat_extract/feats_mld.py @@ -2,9 +2,6 @@ from nkululeko.feat_extract.featureset import Featureset import sys import os -import pandas as pd -import numpy as np -from nkululeko.utils.util import Util import nkululeko.glob_conf as glob_conf diff --git a/nkululeko/feat_extract/feats_mos.py b/nkululeko/feat_extract/feats_mos.py index d2c38f47..9db6be11 100644 --- a/nkululeko/feat_extract/feats_mos.py +++ b/nkululeko/feat_extract/feats_mos.py @@ -20,7 +20,6 @@ from torchaudio.utils import download_asset import audiofile import nkululeko.glob_conf as glob_conf -from nkululeko.utils.util import Util from nkululeko.feat_extract.featureset import Featureset diff --git a/nkululeko/feat_extract/feats_opensmile.py b/nkululeko/feat_extract/feats_opensmile.py index e423a890..aadaf8ed 100644 --- a/nkululeko/feat_extract/feats_opensmile.py +++ b/nkululeko/feat_extract/feats_opensmile.py @@ -3,7 +3,6 @@ import os import pandas as pd import nkululeko.glob_conf as glob_conf -import ast import opensmile diff --git a/nkululeko/feat_extract/feats_oxbow.py b/nkululeko/feat_extract/feats_oxbow.py index c679a0fe..8d1850ee 100644 --- a/nkululeko/feat_extract/feats_oxbow.py +++ b/nkululeko/feat_extract/feats_oxbow.py @@ -1,6 +1,5 @@ # feats_oxbow.py -from nkululeko.utils.util import Util from nkululeko.feat_extract.featureset import Featureset import os import pandas as pd @@ -53,7 +52,7 @@ def extract(self): # check if JAR file exist if not os.path.isfile(f"{xbow_path}/openXBOW.jar"): # download using wget if not exist and locate in xbow_path - os.system(f"git clone https://github.com/openXBOW/openXBOW") + os.system("git clone https://github.com/openXBOW/openXBOW") # get the size of the codebook size = self.util.config_val("FEATS", "size", 500) # get the number of assignements diff --git a/nkululeko/feat_extract/feats_praat.py b/nkululeko/feat_extract/feats_praat.py index 6bc69049..d56178e4 100644 --- a/nkululeko/feat_extract/feats_praat.py +++ b/nkululeko/feat_extract/feats_praat.py @@ -1,5 +1,4 @@ # feats_praat.py -import ast import os import numpy as np @@ -26,12 +25,10 @@ def extract(self): store = self.util.get_path("store") store_format = self.util.config_val("FEATS", "store_format", "pkl") storage = f"{store}{self.name}.{store_format}" - extract = self.util.config_val( - "FEATS", "needs_feature_extraction", False) + extract = self.util.config_val("FEATS", "needs_feature_extraction", False) no_reuse = eval(self.util.config_val("FEATS", "no_reuse", "False")) if extract or no_reuse or not os.path.isfile(storage): - self.util.debug( - "extracting Praat features, this might take a while...") + self.util.debug("extracting Praat features, this might take a while...") self.df = feinberg_praat.compute_features(self.data_df.index) self.df = self.df.set_index(self.data_df.index) for i, col in enumerate(self.df.columns): diff --git a/nkululeko/feat_extract/feats_snr.py b/nkululeko/feat_extract/feats_snr.py index 5077be96..73242d23 100644 --- a/nkululeko/feat_extract/feats_snr.py +++ b/nkululeko/feat_extract/feats_snr.py @@ -11,7 +11,6 @@ import nkululeko.glob_conf as glob_conf from nkululeko.autopredict.estimate_snr import SNREstimator from nkululeko.feat_extract.featureset import Featureset -from nkululeko.utils.util import Util class SNRSet(Featureset): @@ -28,8 +27,7 @@ def extract(self): store = self.util.get_path("store") store_format = self.util.config_val("FEATS", "store_format", "pkl") storage = f"{store}{self.name}.{store_format}" - extract = self.util.config_val( - "FEATS", "needs_feature_extraction", False) + extract = self.util.config_val("FEATS", "needs_feature_extraction", False) no_reuse = eval(self.util.config_val("FEATS", "no_reuse", "False")) if extract or no_reuse or not os.path.isfile(storage): self.util.debug("estimating SNR, this might take a while...") @@ -46,8 +44,7 @@ def extract(self): snr = self.get_snr(signal[0], sampling_rate) snr_series[idx] = snr print("") - self.df = pd.DataFrame( - snr_series.values.tolist(), index=self.data_df.index) + self.df = pd.DataFrame(snr_series.values.tolist(), index=self.data_df.index) self.df.columns = ["snr"] self.util.write_store(self.df, storage, store_format) try: diff --git a/nkululeko/feat_extract/feats_spectra.py b/nkululeko/feat_extract/feats_spectra.py index 691fec47..f4afece4 100644 --- a/nkululeko/feat_extract/feats_spectra.py +++ b/nkululeko/feat_extract/feats_spectra.py @@ -8,8 +8,6 @@ import os import torchaudio import torchaudio.transforms as T -import torch -from torch.utils.data import Dataset from PIL import Image, ImageOps import pandas as pd import numpy as np diff --git a/nkululeko/feat_extract/feats_spkrec.py b/nkululeko/feat_extract/feats_spkrec.py index fb7b9def..9ee267a1 100644 --- a/nkululeko/feat_extract/feats_spkrec.py +++ b/nkululeko/feat_extract/feats_spkrec.py @@ -49,16 +49,12 @@ def extract(self): """Extract the features or load them from disk if present.""" store = self.util.get_path("store") storage = f"{store}{self.name}.pkl" - extract = self.util.config_val( - "FEATS", "needs_feature_extraction", False - ) + extract = self.util.config_val("FEATS", "needs_feature_extraction", False) no_reuse = eval(self.util.config_val("FEATS", "no_reuse", "False")) if extract or no_reuse or not os.path.isfile(storage): if not self.classifier_initialized: self.init_model() - self.util.debug( - "extracting Spkrec embeddings, this might take a while..." - ) + self.util.debug("extracting Spkrec embeddings, this might take a while...") emb_series = pd.Series(index=self.data_df.index, dtype=object) length = len(self.data_df.index) for idx, (file, start, end) in enumerate( @@ -77,9 +73,7 @@ def extract(self): # fill series with embeddings emb_series.iloc[idx] = emb # print(f"emb_series shape: {emb_series.shape}") - self.df = pd.DataFrame( - emb_series.values.tolist(), index=self.data_df.index - ) + self.df = pd.DataFrame(emb_series.values.tolist(), index=self.data_df.index) print(f"df shape: {self.df.shape}") self.df.to_pickle(storage) try: diff --git a/nkululeko/feat_extract/feats_squim.py b/nkululeko/feat_extract/feats_squim.py index b10cb1e4..1375b3d2 100644 --- a/nkululeko/feat_extract/feats_squim.py +++ b/nkululeko/feat_extract/feats_squim.py @@ -24,7 +24,6 @@ from nkululeko.feat_extract.featureset import Featureset import nkululeko.glob_conf as glob_conf -from nkululeko.utils.util import Util class SquimSet(Featureset): diff --git a/nkululeko/feat_extract/feats_trill.py b/nkululeko/feat_extract/feats_trill.py index 9f3cc1e4..2271da2f 100644 --- a/nkululeko/feat_extract/feats_trill.py +++ b/nkululeko/feat_extract/feats_trill.py @@ -10,7 +10,6 @@ from nkululeko.feat_extract.featureset import Featureset import nkululeko.glob_conf as glob_conf -from nkululeko.utils.util import Util # Import TF 2.X and make sure we're running eager. diff --git a/nkululeko/feat_extract/feats_wav2vec2.py b/nkululeko/feat_extract/feats_wav2vec2.py index 39f5fb9a..07db886a 100644 --- a/nkululeko/feat_extract/feats_wav2vec2.py +++ b/nkululeko/feat_extract/feats_wav2vec2.py @@ -47,7 +47,9 @@ def init_model(self): config.num_hidden_layers = layer_num - hidden_layer self.util.debug(f"using hidden layer #{config.num_hidden_layers}") self.processor = Wav2Vec2FeatureExtractor.from_pretrained(model_path) - self.model = Wav2Vec2Model.from_pretrained(model_path, config=config).to(self.device) + self.model = Wav2Vec2Model.from_pretrained(model_path, config=config).to( + self.device + ) print(f"intialized Wav2vec model on {self.device}") self.model.eval() self.model_initialized = True diff --git a/nkululeko/feat_extract/transformer_feature_extractor.py b/nkululeko/feat_extract/transformer_feature_extractor.py new file mode 100644 index 00000000..dd63db83 --- /dev/null +++ b/nkululeko/feat_extract/transformer_feature_extractor.py @@ -0,0 +1,145 @@ +# transformer_feature_extractor.py + +import os +import pandas as pd +import torch +import torchaudio +from tqdm import tqdm +from nkululeko.feat_extract.featureset import Featureset +import nkululeko.glob_conf as glob_conf + + +class TransformerFeatureExtractor(Featureset): + def __init__(self, name, data_df, feat_type): + super().__init__(name, data_df, feat_type) + cuda = "cuda" if torch.cuda.is_available() else "cpu" + self.device = self.util.config_val("MODEL", "device", cuda) + self.model_initialized = False + self.feat_type = feat_type + + def init_model(self): + raise NotImplementedError("Subclasses must implement init_model method") + + def get_embeddings(self, signal, sampling_rate, file): + try: + with torch.no_grad(): + # Preprocess the input + inputs = self.preprocess_input(signal, sampling_rate) + + # Get model outputs + outputs = self.model(**inputs) + + # Extract the relevant hidden states + hidden_states = self.extract_hidden_states(outputs) + + # Pool the hidden states + embeddings = self.pool_hidden_states(hidden_states) + + # Convert to numpy and flatten + embeddings = embeddings.cpu().numpy().ravel() + + return embeddings + + except Exception as e: + self.util.error(f"Error extracting embeddings for file {file}: {str(e)}") + return np.zeros(self.get_embedding_dim()) # Return zero vector on error + + def preprocess_input(self, signal, sampling_rate): + # This method should be implemented by subclasses + raise NotImplementedError("Subclasses must implement preprocess_input method") + + def extract_hidden_states(self, outputs): + # This method should be implemented by subclasses + raise NotImplementedError( + "Subclasses must implement extract_hidden_states method" + ) + + def pool_hidden_states(self, hidden_states): + # Default implementation: mean pooling over time dimension + return torch.mean(hidden_states, dim=1) + + def get_embedding_dim(self): + # This method should be implemented by subclasses + raise NotImplementedError("Subclasses must implement get_embedding_dim method") + + def extract(self): + store = self.util.get_path("store") + storage = f"{store}{self.name}.pkl" + extract = self.util.config_val("FEATS", "needs_feature_extraction", False) + no_reuse = eval(self.util.config_val("FEATS", "no_reuse", "False")) + if extract or no_reuse or not os.path.isfile(storage): + if not self.model_initialized: + self.init_model() + self.util.debug( + f"extracting {self.feat_type} embeddings, this might take a while..." + ) + emb_series = pd.Series(index=self.data_df.index, dtype=object) + for idx, (file, start, end) in enumerate( + tqdm(self.data_df.index.to_list()) + ): + signal, sampling_rate = torchaudio.load( + file, + frame_offset=int(start.total_seconds() * 16000), + num_frames=int((end - start).total_seconds() * 16000), + ) + assert sampling_rate == 16000, f"got {sampling_rate} instead of 16000" + emb = self.get_embeddings(signal, sampling_rate, file) + emb_series[idx] = emb + self.df = pd.DataFrame(emb_series.values.tolist(), index=self.data_df.index) + self.df.to_pickle(storage) + try: + glob_conf.config["DATA"]["needs_feature_extraction"] = "false" + except KeyError: + pass + else: + self.util.debug(f"reusing extracted {self.feat_type} embeddings") + self.df = pd.read_pickle(storage) + if self.df.isnull().values.any(): + self.util.error( + f"got nan: {self.df.shape} {self.df.isnull().sum().sum()}" + ) + + def extract_sample(self, signal, sr): + self.init_model() + feats = self.get_embeddings(signal, sr, "no file") + return feats + + # for each feature extractor + # feats_ast.py + + # class Ast(TransformerFeatureExtractor): + # def preprocess_input(self, signal, sampling_rate): + # inputs = self.processor(signal.numpy(), sampling_rate=sampling_rate, return_tensors="pt") + # return {k: v.to(self.device) for k, v in inputs.items()} + + # def extract_hidden_states(self, outputs): + # return outputs.last_hidden_state + + # def get_embedding_dim(self): + # return self.model.config.hidden_size + + # # feats_wav2vec2.py + + # class Wav2vec2(TransformerFeatureExtractor): + # def preprocess_input(self, signal, sampling_rate): + # inputs = self.processor(signal, sampling_rate=sampling_rate, return_tensors="pt") + # return {k: v.to(self.device) for k, v in inputs.items()} + + # def extract_hidden_states(self, outputs): + # return outputs.last_hidden_state + + # def get_embedding_dim(self): + # return self.model.config.hidden_size + + # # feats_wavlm.py + + # class Wavlm(TransformerFeatureExtractor): + # def preprocess_input(self, signal, sampling_rate): + # inputs = self.processor(signal, sampling_rate=sampling_rate, return_tensors="pt") + # return {k: v.to(self.device) for k, v in inputs.items()} + + # def extract_hidden_states(self, outputs): + return outputs.last_hidden_state + + # def get_embedding_dim(self): + # return self.model.config.hidden_size diff --git a/nkululeko/file_checker.py b/nkululeko/file_checker.py index 8f6ae663..f1837afe 100644 --- a/nkululeko/file_checker.py +++ b/nkululeko/file_checker.py @@ -1,4 +1,3 @@ -import pandas as pd from nkululeko.utils.util import Util import os @@ -10,7 +9,7 @@ def __init__(self, df): self.util.copy_flags(df, self.df) check_vad = self.util.config_val("DATA", "check_vad", False) if check_vad: - self.util.debug(f"This may take a while downloading the VAD model") + self.util.debug("This may take a while downloading the VAD model") import torch torch.set_num_threads(1) diff --git a/nkululeko/fixedsegment.py b/nkululeko/fixedsegment.py new file mode 100644 index 00000000..7dba0d7d --- /dev/null +++ b/nkululeko/fixedsegment.py @@ -0,0 +1,82 @@ +""" +Segment audio files in a given directory into smaller chunks with a specified length and overlap. This requires the PyDub library to be installed. + +Args: + input_dir (str): The directory containing the audio files to be segmented. + output_dir (str): The directory where the segmented audio files will be saved. + segment_length (int): The length of each audio segment in milliseconds. + overlap (int): The overlap between adjacent audio segments in milliseconds. + +This function will recursively search the input directory for all .wav audio files, and then segment each file into smaller chunks with the specified length and overlap. The segmented audio files will be saved in the output directory, preserving the relative directory structure from the input directory. +""" + +from pathlib import Path +from pydub import AudioSegment +import glob +import argparse + + +# list audio files given a directory +def segment_audio(input_dir, output_dir, segment_length, overlap): + # check if input dir exist + if not Path(input_dir).exists(): + print(f"Directory {input_dir} does not exist.") + return + + # check if output dir exist, create if not + if not Path(output_dir).exists(): + Path(output_dir).mkdir(parents=True) + + audio_files = glob.glob(str(Path(input_dir) / "**" / "*.wav"), recursive=True) + + for audio_file in audio_files: + # segment into 2 seconds with 1 second overlap (default values) + audio = AudioSegment.from_file(audio_file) + + segments = [] + + for i in range(0, len(audio), segment_length - overlap): + segment = audio[i : i + segment_length] + segments.append(segment) + + # Path(output_dir).mkdir(exist_ok=True) + for i, segment in enumerate(segments): + # get relative path from input_dir + relative_path = Path(audio_file).relative_to(input_dir) + # make output directory if not exist + output_subdir = Path(output_dir) / relative_path.parent + output_subdir.mkdir(parents=True, exist_ok=True) + segment.export( + str(output_subdir / f"{Path(audio_file).stem}_{i}.wav"), + format="wav", + ) + + print("DONE.") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--input_dir", type=str, default="./") + # add argument for output_dir + parser.add_argument( + "--output_dir", + type=str, + default="./segmented_data/", + ) + parser.add_argument( + "--segment_length", + type=int, + default=2000, + ) + parser.add_argument( + "--overlap", + type=int, + default=1000, + ) + args = parser.parse_args() + segment_audio( + args.input_dir, + args.output_dir, + segment_length=args.segment_length, + overlap=args.overlap, + ) diff --git a/nkululeko/models/model.py b/nkululeko/models/model.py index 438a4efe..d22e87a9 100644 --- a/nkululeko/models/model.py +++ b/nkululeko/models/model.py @@ -119,7 +119,7 @@ def _do_logo(self): # get unique list of speakers speakers = annos["speaker"].unique() # check for folds columns - if not "fold" in annos.columns: + if "fold" not in annos.columns: self.util.debug(f"creating random folds for {logo} groups") # create a random dictionary of groups sdict = {} diff --git a/nkululeko/models/model_cnn.py b/nkululeko/models/model_cnn.py index 883c5a2e..7ce5476c 100644 --- a/nkululeko/models/model_cnn.py +++ b/nkululeko/models/model_cnn.py @@ -6,7 +6,6 @@ """ import ast -from collections import OrderedDict import numpy as np import pandas as pd @@ -22,7 +21,6 @@ from nkululeko.losses.loss_softf1loss import SoftF1Loss from nkululeko.models.model import Model from nkululeko.reporting.reporter import Reporter -from nkululeko.utils.util import Util class CNNModel(Model): @@ -55,7 +53,7 @@ def __init__(self, df_train, df_test, feats_train, feats_test): ) else: self.util.error(f"unknown loss function: {criterion}") - self.util.debug(f"using model with cross entropy loss function") + self.util.debug("using model with cross entropy loss function") # set up the model # cuda = "cuda" if torch.cuda.is_available() else "cpu" self.device = self.util.config_val("MODEL", "device", "cpu") diff --git a/nkululeko/models/model_gmm.py b/nkululeko/models/model_gmm.py index b561437e..b3426881 100644 --- a/nkululeko/models/model_gmm.py +++ b/nkululeko/models/model_gmm.py @@ -4,6 +4,7 @@ from nkululeko.models.model import Model import pandas as pd + class GMM_model(Model): """An GMM model""" @@ -15,23 +16,25 @@ def __init__(self, df_train, df_test, feats_train, feats_test): self.n_components = int(self.util.config_val("MODEL", "GMM_components", "4")) covariance_type = self.util.config_val("MODEL", "GMM_covariance_type", "full") self.clf = mixture.GaussianMixture( - n_components=self.n_components, + n_components=self.n_components, covariance_type=covariance_type, - random_state = 42, + random_state=42, ) # set up the classifier def get_predictions(self): - """Use the predict_proba method of the GaussianMixture model to get - probabilities. Create a DataFrame with these probabilities and return + """Use the predict_proba method of the GaussianMixture model to get + probabilities. Create a DataFrame with these probabilities and return it along with the predictions.""" probs = self.clf.predict_proba(self.feats_test) preds = self.clf.predict(self.feats_test) - + # Convert predictions to a list preds = preds.tolist() - + # Create a DataFrame for probabilities - proba_df = pd.DataFrame(probs, index=self.feats_test.index, columns=range(self.n_components)) - + proba_df = pd.DataFrame( + probs, index=self.feats_test.index, columns=range(self.n_components) + ) + return preds, proba_df diff --git a/nkululeko/models/model_mlp.py b/nkululeko/models/model_mlp.py index 3fcffec0..b83f7592 100644 --- a/nkululeko/models/model_mlp.py +++ b/nkululeko/models/model_mlp.py @@ -11,7 +11,6 @@ from nkululeko.losses.loss_softf1loss import SoftF1Loss from nkululeko.models.model import Model from nkululeko.reporting.reporter import Reporter -from nkululeko.utils.util import Util class MLPModel(Model): @@ -44,7 +43,7 @@ def __init__(self, df_train, df_test, feats_train, feats_test): ) else: self.util.error(f"unknown loss function: {criterion}") - self.util.debug(f"using model with cross entropy loss function") + self.util.debug("using model with cross entropy loss function") # set up the model, use GPU if availabe cuda = "cuda" if torch.cuda.is_available() else "cpu" self.device = self.util.config_val("MODEL", "device", cuda) diff --git a/nkululeko/models/model_mlp_regression.py b/nkululeko/models/model_mlp_regression.py index b3f6e1a5..43273758 100644 --- a/nkululeko/models/model_mlp_regression.py +++ b/nkululeko/models/model_mlp_regression.py @@ -1,7 +1,6 @@ # model_mlp.py import ast from collections import OrderedDict -import os import numpy as np import torch @@ -9,7 +8,6 @@ from audmetric import concordance_cc from audmetric import mean_absolute_error from audmetric import mean_squared_error -from traitlets import default import nkululeko.glob_conf as glob_conf from nkululeko.losses.loss_ccc import ConcordanceCorCoeff diff --git a/nkululeko/models/model_svm.py b/nkululeko/models/model_svm.py index 5f3705b6..d4c11da3 100644 --- a/nkululeko/models/model_svm.py +++ b/nkululeko/models/model_svm.py @@ -1,6 +1,5 @@ # model_svm.py -import random from sklearn import svm from nkululeko.models.model import Model @@ -25,7 +24,7 @@ def __init__(self, df_train, df_test, feats_train, feats_test): gamma="scale", probability=True, class_weight=class_weight, - random_state=42, # for consistent result + random_state=42, # for consistent result ) # set up the classifier def set_c(self, c): diff --git a/nkululeko/models/model_tree.py b/nkululeko/models/model_tree.py index 8a37af0e..d8bf6830 100644 --- a/nkululeko/models/model_tree.py +++ b/nkululeko/models/model_tree.py @@ -12,6 +12,4 @@ class Tree_model(Model): def __init__(self, df_train, df_test, feats_train, feats_test): super().__init__(df_train, df_test, feats_train, feats_test) self.name = "tree" - self.clf = DecisionTreeClassifier( - random_state=42 - ) # set up the classifier + self.clf = DecisionTreeClassifier(random_state=42) # set up the classifier diff --git a/nkululeko/models/model_tuned.py b/nkululeko/models/model_tuned.py index 99b0b8c2..e7215134 100644 --- a/nkululeko/models/model_tuned.py +++ b/nkululeko/models/model_tuned.py @@ -25,7 +25,6 @@ class TunedModel(BaseModel): - def __init__(self, df_train, df_test, feats_train, feats_test): """Constructor taking the configuration and all dataframes.""" super().__init__(df_train, df_test, feats_train, feats_test) @@ -54,8 +53,7 @@ def __init__(self, df_train, df_test, feats_train, feats_test): self.learning_rate = float( self.util.config_val("MODEL", "learning_rate", "0.0001") ) - self.max_duration = float( - self.util.config_val("MODEL", "max_duration", "8.0")) + self.max_duration = float(self.util.config_val("MODEL", "max_duration", "8.0")) self.df_train, self.df_test = df_train, df_test self.epoch_num = int(self.util.config_val("EXP", "epochs", 1)) self.util.debug(f"num of epochs: {self.epoch_num}") @@ -69,8 +67,7 @@ def __init__(self, df_train, df_test, feats_train, feats_test): def _init_model(self): model_path = "facebook/wav2vec2-large-robust-ft-swbd-300h" - pretrained_model = self.util.config_val( - "MODEL", "pretrained_model", model_path) + pretrained_model = self.util.config_val("MODEL", "pretrained_model", model_path) self.num_layers = None self.sampling_rate = 16000 self.max_duration_sec = self.max_duration @@ -101,7 +98,7 @@ def _init_model(self): # load pre-trained model if self.is_classifier: - self.util.debug(f"Task is classification.") + self.util.debug("Task is classification.") le = glob_conf.label_encoder mapping = dict(zip(le.classes_, range(len(le.classes_)))) target_mapping = {k: int(v) for k, v in mapping.items()} @@ -116,7 +113,7 @@ def _init_model(self): finetuning_task=target_name, ) else: - self.util.debug(f"Task is regression.") + self.util.debug("Task is regression.") self.config = transformers.AutoConfig.from_pretrained( pretrained_model, num_labels=1, @@ -215,7 +212,6 @@ def data_collator(self, data): return batch def compute_metrics(self, p: transformers.EvalPrediction): - metrics = { "UAR": audmetric.unweighted_average_recall, "ACC": audmetric.accuracy, @@ -268,8 +264,7 @@ def train(self): else: criterion = torch.nn.CrossEntropyLoss() else: - self.util.error( - f"criterion {criterion} not supported for classifier") + self.util.error(f"criterion {criterion} not supported for classifier") else: self.criterion = self.util.config_val("MODEL", "loss", "ccc") if criterion == "1-ccc": @@ -279,8 +274,7 @@ def train(self): elif criterion == "mae": criterion = torch.nn.L1Loss() else: - self.util.error( - f"criterion {criterion} not supported for regressor") + self.util.error(f"criterion {criterion} not supported for regressor") # set push_to_hub value, default false # push = eval(self.util.config_val("MODEL", "push_to_hub", "False")) @@ -319,8 +313,7 @@ def compute_loss( elif metrics_for_best_model == "MAE": greater_is_better = False else: - self.util.error( - f"unknown metric/measure: {metrics_for_best_model}") + self.util.error(f"unknown metric/measure: {metrics_for_best_model}") training_args = transformers.TrainingArguments( output_dir=model_root, @@ -453,17 +446,15 @@ def load_path(self, path, run, epoch): self.clf = pickle.load(handle) -@ dataclasses.dataclass +@dataclasses.dataclass class ModelOutput(transformers.file_utils.ModelOutput): - logits: torch.FloatTensor = None hidden_states: typing.Tuple[torch.FloatTensor] = None cnn_features: torch.FloatTensor = None -@ dataclasses.dataclass +@dataclasses.dataclass class ModelOutputReg(transformers.file_utils.ModelOutput): - logits: torch.FloatTensor hidden_states: typing.Tuple[torch.FloatTensor] = None attentions: typing.Tuple[torch.FloatTensor] = None @@ -473,9 +464,7 @@ class ModelOutputReg(transformers.file_utils.ModelOutput): class ModelHead(torch.nn.Module): - def __init__(self, config): - super().__init__() self.dense = torch.nn.Linear(config.hidden_size, config.hidden_size) @@ -483,7 +472,6 @@ def __init__(self, config): self.out_proj = torch.nn.Linear(config.hidden_size, config.num_labels) def forward(self, features, **kwargs): - x = features x = self.dropout(x) x = self.dense(x) @@ -495,9 +483,7 @@ def forward(self, features, **kwargs): class Model(Wav2Vec2PreTrainedModel): - def __init__(self, config): - if not hasattr(config, "add_adapter"): setattr(config, "add_adapter", False) @@ -516,7 +502,6 @@ def pooling( hidden_states, attention_mask, ): - if attention_mask is None: # For evaluation with batch_size==1 outputs = torch.mean(hidden_states, dim=1) else: @@ -532,8 +517,7 @@ def pooling( attention_sum = torch.sum(attention_mask, dim=1) epsilon = 1e-6 # to avoid division by zero and numerical instability - outputs = outputs / (torch.reshape(attention_sum, (-1, 1)) + - epsilon) + outputs = outputs / (torch.reshape(attention_sum, (-1, 1)) + epsilon) return outputs @@ -590,7 +574,6 @@ def predict(self, signal): class ConcordanceCorCoeff(torch.nn.Module): - def __init__(self): super().__init__() self.mean = torch.mean diff --git a/nkululeko/models/model_tuned_bta.py b/nkululeko/models/model_tuned_bta.py new file mode 100644 index 00000000..8ed65f08 --- /dev/null +++ b/nkululeko/models/model_tuned_bta.py @@ -0,0 +1,482 @@ +""" +Code based on @jwagner. +""" + +import dataclasses +import json +import os +import pickle +import typing + +import audeer +import audiofile +import audmetric +import datasets +import numpy as np +import pandas as pd +import torch +import transformers +from transformers.models.wav2vec2.modeling_wav2vec2 import ( + Wav2Vec2Model, + Wav2Vec2PreTrainedModel, +) + +import nkululeko.glob_conf as glob_conf +from nkululeko.models.model import Model as BaseModel +from nkululeko.reporting.reporter import Reporter + + +class TunedModel(BaseModel): + is_classifier = True + + def __init__(self, df_train, df_test, feats_train, feats_test): + """Constructor taking the configuration and all dataframes.""" + super().__init__(df_train, df_test, feats_train, feats_test) + super().set_model_type("finetuned") + self.name = "finetuned_wav2vec2" + self.target = glob_conf.config["DATA"]["target"] + labels = glob_conf.labels + self.class_num = len(labels) + # device = self.util.config_val("MODEL", "device", "cpu") + self.device = "cuda" if torch.cuda.is_available() else "cpu" + self.batch_size = int(self.util.config_val("MODEL", "batch_size", "8")) + # self.device_id = self.util.config_val("MODEL", "device_id", "0") + if self.device != "cpu": + self.util.debug(f"running on device {self.device}") + os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" + os.environ["CUDA_VISIBLE_DEVICES"] = self.device # self.device + self.df_train, self.df_test = df_train, df_test + self.epoch_num = int(self.util.config_val("EXP", "epochs", 1)) + + self._init_model() + + def _init_model(self): + model_path = "facebook/wav2vec2-large-robust-ft-swbd-300h" + pretrained_model = self.util.config_val("MODEL", "pretrained_model", model_path) + self.num_layers = None + self.sampling_rate = 16000 + self.max_duration_sec = 8.0 + self.accumulation_steps = 4 + + # print finetuning information via debug + self.util.debug(f"Finetuning from model: {pretrained_model}") + + # create dataset + dataset = {} + target_name = glob_conf.target + data_sources = { + "train": pd.DataFrame(self.df_train[target_name]), + "dev": pd.DataFrame(self.df_test[target_name]), + } + + for split in ["train", "dev"]: + df = data_sources[split] + y = df[target_name].astype("float") + y.name = "targets" + df = y.reset_index() + df.start = df.start.dt.total_seconds() + df.end = df.end.dt.total_seconds() + ds = datasets.Dataset.from_pandas(df) + dataset[split] = ds + + self.dataset = datasets.DatasetDict(dataset) + + # load pre-trained model + le = glob_conf.label_encoder + mapping = dict(zip(le.classes_, range(len(le.classes_)))) + target_mapping = {k: int(v) for k, v in mapping.items()} + target_mapping_reverse = {value: key for key, value in target_mapping.items()} + + self.config = transformers.AutoConfig.from_pretrained( + pretrained_model, + num_labels=len(target_mapping), + label2id=target_mapping, + id2label=target_mapping_reverse, + finetuning_task=target_name, + ) + + if self.num_layers is not None: + self.config.num_hidden_layers = self.num_layers + setattr(self.config, "sampling_rate", self.sampling_rate) + setattr(self.config, "data", self.util.get_data_name()) + + vocab_dict = {} + with open("vocab.json", "w") as vocab_file: + json.dump(vocab_dict, vocab_file) + tokenizer = transformers.Wav2Vec2CTCTokenizer("./vocab.json") + tokenizer.save_pretrained(".") + + feature_extractor = transformers.Wav2Vec2FeatureExtractor( + feature_size=1, + sampling_rate=16000, + padding_value=0.0, + do_normalize=True, + return_attention_mask=True, + ) + self.processor = transformers.Wav2Vec2Processor( + feature_extractor=feature_extractor, + tokenizer=tokenizer, + ) + assert self.processor.feature_extractor.sampling_rate == self.sampling_rate + + self.model = Model.from_pretrained( + pretrained_model, + config=self.config, + ) + self.model.freeze_feature_extractor() + self.model.train() + self.model_initialized = True + + def set_model_type(self, type): + self.model_type = type + + def set_testdata(self, data_df, feats_df): + self.df_test, self.feats_test = data_df, feats_df + + def reset_test(self, df_test, feats_test): + self.df_test, self.feats_test = df_test, feats_test + + def set_id(self, run, epoch): + self.run = run + self.epoch = epoch + dir = self.util.get_path("model_dir") + name = f"{self.util.get_exp_name(only_train=True)}_{self.run}_{self.epoch:03d}.model" + self.store_path = dir + name + + def data_collator(self, data): + files = [d["file"] for d in data] + starts = [d["start"] for d in data] + ends = [d["end"] for d in data] + targets = [d["targets"] for d in data] + + signals = [] + for file, start, end in zip( + files, + starts, + ends, + ): + offset = start + duration = end - offset + if self.max_duration_sec is not None: + duration = min(duration, self.max_duration_sec) + signal, _ = audiofile.read( + file, + offset=offset, + duration=duration, + ) + signals.append(signal.squeeze()) + + input_values = self.processor( + signals, + sampling_rate=self.sampling_rate, + padding=True, + ) + batch = self.processor.pad( + input_values, + padding=True, + return_tensors="pt", + ) + + batch["labels"] = torch.tensor(targets) + + return batch + + def compute_metrics(self, p: transformers.EvalPrediction): + metrics = { + "UAR": audmetric.unweighted_average_recall, + "ACC": audmetric.accuracy, + } + + # truth = p.label_ids[:, 0].astype(int) + truth = p.label_ids + preds = p.predictions + preds = np.argmax(preds, axis=1) + scores = {} + for name, metric in metrics.items(): + scores[f"{name}"] = metric(truth, preds) + return scores + + def train(self): + """Train the model.""" + model_root = self.util.get_path("model_dir") + log_root = os.path.join(self.util.get_exp_dir(), "log") + audeer.mkdir(log_root) + self.torch_root = audeer.path(model_root, "torch") + conf_file = os.path.join(self.torch_root, "config.json") + if os.path.isfile(conf_file): + self.util.debug(f"reusing finetuned model: {conf_file}") + self.load(self.run, self.epoch_num) + return + targets = pd.DataFrame(self.dataset["train"]["targets"]) + counts = targets[0].value_counts().sort_index() + train_weights = 1 / counts + train_weights /= train_weights.sum() + self.util.debug("train weights: {train_weights}") + criterion = torch.nn.CrossEntropyLoss( + weight=torch.Tensor(train_weights).to(self.device), + ) + # criterion = torch.nn.CrossEntropyLoss() + + # set push_to_hub value, default false + push = self.util.config_val("MODEL", "push_to_hub", False) + + class Trainer(transformers.Trainer): + def compute_loss( + self, + model, + inputs, + return_outputs=False, + ): + targets = inputs.pop("labels").squeeze() + targets = targets.type(torch.long) + + outputs = model(**inputs) + logits = outputs[0].squeeze() + + loss = criterion(logits, targets) + + return (loss, outputs) if return_outputs else loss + + num_steps = ( + len(self.dataset["train"]) + // (self.batch_size * self.accumulation_steps) + // 5 + ) + num_steps = max(1, num_steps) + # print(num_steps) + + training_args = transformers.TrainingArguments( + output_dir=model_root, + logging_dir=log_root, + per_device_train_batch_size=self.batch_size, + per_device_eval_batch_size=self.batch_size, + gradient_accumulation_steps=self.accumulation_steps, + evaluation_strategy="steps", + num_train_epochs=self.epoch_num, + fp16=self.device == "cuda", + save_steps=num_steps, + eval_steps=num_steps, + logging_steps=num_steps, + learning_rate=1e-4, + save_total_limit=2, + metric_for_best_model="UAR", + greater_is_better=True, + load_best_model_at_end=True, + remove_unused_columns=False, + report_to="none", + push_to_hub=push, + hub_model_id=f"{self.util.get_name()}", + ) + + trainer = Trainer( + model=self.model, + data_collator=self.data_collator, + args=training_args, + compute_metrics=self.compute_metrics, + train_dataset=self.dataset["train"], + eval_dataset=self.dataset["dev"], + tokenizer=self.processor.feature_extractor, + callbacks=[transformers.integrations.TensorBoardCallback()], + ) + trainer.train() + trainer.save_model(self.torch_root) + self.load(self.run, self.epoch) + + def get_predictions(self): + results = [] + for (file, start, end), _ in audeer.progress_bar( + self.df_test.iterrows(), + total=len(self.df_test), + desc=f"Predicting {len(self.df_test)} audiofiles", + ): + if end == pd.NaT: + signal, sr = audiofile.read(file, offset=start) + else: + signal, sr = audiofile.read( + file, duration=end - start, offset=start, always_2d=True + ) + assert sr == self.sampling_rate + predictions = self.model.predict(signal) + results.append(predictions.argmax()) + return results + + def predict(self): + """Predict the whole eval feature set""" + predictions = self.get_predictions() + report = Reporter( + self.df_test[self.target].to_numpy().astype(float), + predictions, + self.run, + self.epoch_num, + ) + return report + + def predict_sample(self, signal): + """Predict one sample""" + prediction = {} + if self.util.exp_is_classification(): + # get the class probabilities + predictions = self.model.predict(signal) + # pred = self.clf.predict(features) + for i in range(len(self.labels)): + cat = self.labels[i] + prediction[cat] = predictions[i] + else: + predictions = self.model.predict(signal) + prediction = predictions + return prediction + + def store(self): + self.util.debug("stored: ") + + def load(self, run, epoch): + self.set_id(run, epoch) + self.model = Model.from_pretrained( + self.torch_root, + config=self.config, + ) + # print(f"loaded model type {type(self.model)}") + + def load_path(self, path, run, epoch): + self.set_id(run, epoch) + with open(path, "rb") as handle: + self.clf = pickle.load(handle) + + +@dataclasses.dataclass +class ModelOutput(transformers.file_utils.ModelOutput): + logits_cat: torch.FloatTensor = None + hidden_states: typing.Tuple[torch.FloatTensor] = None + cnn_features: torch.FloatTensor = None + + +class ModelHead(torch.nn.Module): + def __init__(self, config): + super().__init__() + + self.dense = torch.nn.Linear(config.hidden_size, config.hidden_size) + self.dropout = torch.nn.Dropout(config.final_dropout) + self.out_proj = torch.nn.Linear(config.hidden_size, config.num_labels) + + def forward(self, features, **kwargs): + x = features + x = self.dropout(x) + x = self.dense(x) + x = torch.tanh(x) + x = self.dropout(x) + x = self.out_proj(x) + + return x + + +class Model(Wav2Vec2PreTrainedModel): + def __init__(self, config): + if not hasattr(config, "add_adapter"): + setattr(config, "add_adapter", False) + + super().__init__(config) + + self.wav2vec2 = Wav2Vec2Model(config) + self.cat = ModelHead(config) + self.init_weights() + + def freeze_feature_extractor(self): + self.wav2vec2.feature_extractor._freeze_parameters() + + def pooling( + self, + hidden_states, + attention_mask, + ): + if attention_mask is None: # For evaluation with batch_size==1 + outputs = torch.mean(hidden_states, dim=1) + else: + attention_mask = self._get_feature_vector_attention_mask( + hidden_states.shape[1], + attention_mask, + ) + hidden_states = hidden_states * torch.reshape( + attention_mask, + (-1, attention_mask.shape[-1], 1), + ) + outputs = torch.sum(hidden_states, dim=1) + attention_sum = torch.sum(attention_mask, dim=1) + outputs = outputs / torch.reshape(attention_sum, (-1, 1)) + + return outputs + + def forward( + self, + input_values, + attention_mask=None, + labels=None, + return_hidden=False, + ): + outputs = self.wav2vec2( + input_values, + attention_mask=attention_mask, + ) + + cnn_features = outputs.extract_features + hidden_states_framewise = outputs.last_hidden_state + hidden_states = self.pooling( + hidden_states_framewise, + attention_mask, + ) + logits_cat = self.cat(hidden_states) + + if not self.training: + logits_cat = torch.softmax(logits_cat, dim=1) + + if return_hidden: + # make time last axis + cnn_features = torch.transpose(cnn_features, 1, 2) + + return ModelOutput( + logits_cat=logits_cat, + hidden_states=hidden_states, + cnn_features=cnn_features, + ) + + else: + return ModelOutput( + logits_cat=logits_cat, + ) + + def predict(self, signal): + result = self(torch.from_numpy(signal)) + result = result[0].detach().numpy()[0] + return result + + +class ModelWithPreProcessing(Model): + def __init__(self, config): + super().__init__(config) + + def forward( + self, + input_values, + ): + # Wav2Vec2FeatureExtractor.zero_mean_unit_var_norm(): + # normed_slice = (vector - vector[:length].mean()) / np.sqrt(vector[:length].var() + 1e-7) + + mean = input_values.mean() + + # var = input_values.var() + # raises: onnxruntime.capi.onnxruntime_pybind11_state.NotImplemented: + # [ONNXRuntimeError] : 9 : NOT_IMPLEMENTED : Could not find an + # implementation for the node ReduceProd_3:ReduceProd(11) + + var = torch.square(input_values - mean).mean() + input_values = (input_values - mean) / torch.sqrt(var + 1e-7) + + output = super().forward( + input_values, + return_hidden=True, + ) + + return ( + output.hidden_states, + output.logits_cat, + output.cnn_features, + ) diff --git a/nkululeko/predict.py b/nkululeko/predict.py index 7d830de5..d4c5c6ec 100644 --- a/nkululeko/predict.py +++ b/nkululeko/predict.py @@ -26,9 +26,9 @@ def main(src_dir): parser = argparse.ArgumentParser( - description="Call the nkululeko PREDICT framework.") - parser.add_argument("--config", default="exp.ini", - help="The base configuration") + description="Call the nkululeko PREDICT framework." + ) + parser.add_argument("--config", default="exp.ini", help="The base configuration") args = parser.parse_args() if args.config is not None: config_file = args.config @@ -58,8 +58,7 @@ def main(src_dir): # split into train and test expr.fill_train_and_tests() - util.debug( - f"train shape : {expr.df_train.shape}, test shape:{expr.df_test.shape}") + util.debug(f"train shape : {expr.df_train.shape}, test shape:{expr.df_test.shape}") # process the data df = expr.autopredict() diff --git a/nkululeko/reporting/defines.py b/nkululeko/reporting/defines.py index bcbe871b..c385148b 100644 --- a/nkululeko/reporting/defines.py +++ b/nkululeko/reporting/defines.py @@ -1,5 +1,4 @@ class DefineBase: - @classmethod def _assert_has_attribute_value(cls, value): valid_values = cls._attribute_values() @@ -8,17 +7,16 @@ def _assert_has_attribute_value(cls, value): @classmethod def _attribute_values(cls): - attributes = inspect.getmembers( - cls, lambda x: not inspect.isroutine(x) - ) + attributes = inspect.getmembers(cls, lambda x: not inspect.isroutine(x)) return sorted( [ - a[1] for a in attributes - if not (a[0].startswith('__') and a[0].endswith('__')) + a[1] + for a in attributes + if not (a[0].startswith("__") and a[0].endswith("__")) ] ) class Header(DefineBase): - HEADER_RESULTS = 'Results' - HEADER_EXPLORE = 'Data exploration' + HEADER_RESULTS = "Results" + HEADER_EXPLORE = "Data exploration" diff --git a/nkululeko/reporting/latex_writer.py b/nkululeko/reporting/latex_writer.py index f389483e..42c4dfbf 100644 --- a/nkululeko/reporting/latex_writer.py +++ b/nkululeko/reporting/latex_writer.py @@ -4,8 +4,7 @@ """ from pylatex import Document, Section, Subsection, Command, Figure -from pylatex.utils import italic, NoEscape -from nkululeko.reporting.report_item import ReportItem +from pylatex.utils import NoEscape from nkululeko.utils.util import Util diff --git a/nkululeko/reporting/report.py b/nkululeko/reporting/report.py index 87f1d121..288918bb 100644 --- a/nkululeko/reporting/report.py +++ b/nkululeko/reporting/report.py @@ -5,7 +5,6 @@ """ from nkululeko.utils.util import Util -from nkululeko.reporting.report_item import ReportItem from nkululeko.reporting.latex_writer import LatexWriter diff --git a/nkululeko/reporting/report_item.py b/nkululeko/reporting/report_item.py index a03409df..c91959d0 100644 --- a/nkululeko/reporting/report_item.py +++ b/nkululeko/reporting/report_item.py @@ -4,6 +4,7 @@ import os.path + class ReportItem: def __init__(self, topic, caption, contents, image=None): self.topic = topic diff --git a/nkululeko/resample.py b/nkululeko/resample.py index e5ad1e84..f64a912b 100644 --- a/nkululeko/resample.py +++ b/nkululeko/resample.py @@ -18,10 +18,8 @@ def main(src_dir): parser = argparse.ArgumentParser( description="Call the nkululeko RESAMPLE framework." ) - parser.add_argument("--config", default=None, - help="The base configuration") - parser.add_argument("--file", default=None, - help="The input audio file to resample") + parser.add_argument("--config", default=None, help="The base configuration") + parser.add_argument("--file", default=None, help="The input audio file to resample") parser.add_argument( "--folder", default=None, @@ -34,9 +32,7 @@ def main(src_dir): args = parser.parse_args() if args.file is None and args.folder is None and args.config is None: - print( - "ERROR: Either --file, --folder, or --config argument must be provided." - ) + print("ERROR: Either --file, --folder, or --config argument must be provided.") exit() if args.file is not None: @@ -102,8 +98,7 @@ def main(src_dir): f"train shape : {expr.df_train.shape}, test shape:{expr.df_test.shape}" ) - sample_selection = util.config_val( - "RESAMPLE", "sample_selection", "all") + sample_selection = util.config_val("RESAMPLE", "sample_selection", "all") if sample_selection == "all": df = pd.concat([expr.df_train, expr.df_test]) elif sample_selection == "train": diff --git a/nkululeko/resample_cli.py b/nkululeko/resample_cli.py new file mode 100644 index 00000000..f6376c3f --- /dev/null +++ b/nkululeko/resample_cli.py @@ -0,0 +1,98 @@ +import argparse +import configparser +import os +import pandas as pd +import audformat +from nkululeko.augmenting.resampler import Resampler +from nkululeko.utils.util import Util + +from nkululeko.constants import VERSION +from nkululeko.experiment import Experiment + + +def main(src_dir): + parser = argparse.ArgumentParser( + description="Call the nkululeko RESAMPLE framework." + ) + parser.add_argument("--config", default=None, help="The base configuration") + parser.add_argument("--file", default=None, help="The input audio file to resample") + parser.add_argument( + "--replace", action="store_true", help="Replace the original audio file" + ) + + args = parser.parse_args() + + if args.file is None and args.config is None: + print("ERROR: Either --file or --config argument must be provided.") + exit() + + if args.file is not None: + # Load the audio file into a DataFrame + files = pd.Series([args.file]) + df_sample = pd.DataFrame(index=files) + df_sample.index = audformat.utils.to_segmented_index( + df_sample.index, allow_nat=False + ) + + # Resample the audio file + util = Util("resampler", has_config=False) + util.debug(f"Resampling audio file: {args.file}") + rs = Resampler(df_sample, not_testing=True, replace=args.replace) + rs.resample() + else: + # Existing code for handling INI file + config_file = args.config + + # Test if the configuration file exists + if not os.path.isfile(config_file): + print(f"ERROR: no such file: {config_file}") + exit() + + # Load one configuration per experiment + config = configparser.ConfigParser() + config.read(config_file) + # Create a new experiment + expr = Experiment(config) + module = "resample" + expr.set_module(module) + util = Util(module) + util.debug( + f"running {expr.name} from config {config_file}, nkululeko version" + f" {VERSION}" + ) + + if util.config_val("EXP", "no_warnings", False): + import warnings + + warnings.filterwarnings("ignore") + + # Load the data + expr.load_datasets() + + # Split into train and test + expr.fill_train_and_tests() + util.debug( + f"train shape : {expr.df_train.shape}, test shape:{expr.df_test.shape}" + ) + + sample_selection = util.config_val("RESAMPLE", "sample_selection", "all") + if sample_selection == "all": + df = pd.concat([expr.df_train, expr.df_test]) + elif sample_selection == "train": + df = expr.df_train + elif sample_selection == "test": + df = expr.df_test + else: + util.error( + f"unknown selection specifier {sample_selection}, should be [all |" + " train | test]" + ) + util.debug(f"resampling {sample_selection}: {df.shape[0]} samples") + replace = util.config_val("RESAMPLE", "replace", "False") + rs = Resampler(df, replace=replace) + rs.resample() + + +if __name__ == "__main__": + cwd = os.path.dirname(os.path.abspath(__file__)) + main(cwd) diff --git a/nkululeko/runmanager.py b/nkululeko/runmanager.py index 5e4eee9f..f47780b5 100644 --- a/nkululeko/runmanager.py +++ b/nkululeko/runmanager.py @@ -50,7 +50,9 @@ def do_runs(self): self.last_epochs = [] # keep the epoch of best result per run # for all runs for run in range(int(self.util.config_val("EXP", "runs", 1))): - self.util.debug(f"run {run} using model {glob_conf.config['MODEL']['type']}") + self.util.debug( + f"run {run} using model {glob_conf.config['MODEL']['type']}" + ) # set the run index as global variable for reporting self.util.set_config_val("EXP", "run", run) self.modelrunner = Modelrunner( diff --git a/nkululeko/segment.py b/nkululeko/segment.py index 61a46911..e4693d5e 100644 --- a/nkululeko/segment.py +++ b/nkululeko/segment.py @@ -75,7 +75,6 @@ def main(src_dir): util.error(f"unkown segmenter: {segmenter}") def calc_dur(x): - from datetime import datetime starts = x[1] ends = x[2] diff --git a/nkululeko/segmenting/seg_inaspeechsegmenter.py b/nkululeko/segmenting/seg_inaspeechsegmenter.py index 57187e8f..42eaacf8 100644 --- a/nkululeko/segmenting/seg_inaspeechsegmenter.py +++ b/nkululeko/segmenting/seg_inaspeechsegmenter.py @@ -3,7 +3,6 @@ # segment the data from inaSpeechSegmenter import Segmenter -from audformat.utils import to_filewise_index from audformat import segmented_index import warnings diff --git a/nkululeko/segmenting/seg_silero.py b/nkululeko/segmenting/seg_silero.py index 05972a97..642a4069 100644 --- a/nkululeko/segmenting/seg_silero.py +++ b/nkululeko/segmenting/seg_silero.py @@ -9,7 +9,6 @@ import pandas as pd from tqdm import tqdm import audformat -from audformat.utils import to_filewise_index from audformat import segmented_index from nkululeko.utils.util import Util diff --git a/nkululeko/syllable_nuclei.py b/nkululeko/syllable_nuclei.py index 5dfc5353..d40a8399 100644 --- a/nkululeko/syllable_nuclei.py +++ b/nkululeko/syllable_nuclei.py @@ -120,9 +120,7 @@ def speech_rate(filename): # use total duration, not end time, to find out duration of intdur (intensity_duration) # in order to allow nonzero starting times. intensity_duration = call(sound_from_intensity_matrix, "Get total duration") - intensity_max = call( - sound_from_intensity_matrix, "Get maximum", 0, 0, "Parabolic" - ) + intensity_max = call(sound_from_intensity_matrix, "Get maximum", 0, 0, "Parabolic") point_process = call( sound_from_intensity_matrix, "To PointProcess (extrema)", @@ -133,19 +131,14 @@ def speech_rate(filename): ) # estimate peak positions (all peaks) numpeaks = call(point_process, "Get number of points") - t = [ - call(point_process, "Get time from index", i + 1) - for i in range(numpeaks) - ] + t = [call(point_process, "Get time from index", i + 1) for i in range(numpeaks)] # fill array with intensity values timepeaks = [] peakcount = 0 intensities = [] for i in range(numpeaks): - value = call( - sound_from_intensity_matrix, "Get value at time", t[i], "Cubic" - ) + value = call(sound_from_intensity_matrix, "Get value at time", t[i], "Cubic") if value > threshold: peakcount += 1 intensities.append(value) @@ -161,22 +154,16 @@ def speech_rate(filename): for p in range(peakcount - 1): following = p + 1 followingtime = timepeaks[p + 1] - dip = call( - intensity, "Get minimum", currenttime, timepeaks[p + 1], "None" - ) + dip = call(intensity, "Get minimum", currenttime, timepeaks[p + 1], "None") diffint = abs(currentint - dip) if diffint > mindip: validpeakcount += 1 validtime.append(timepeaks[p]) currenttime = timepeaks[following] - currentint = call( - intensity, "Get value at time", timepeaks[following], "Cubic" - ) + currentint = call(intensity, "Get value at time", timepeaks[following], "Cubic") # Look for only voiced parts - pitch = sound.to_pitch_ac( - 0.02, 30, 4, False, 0.03, 0.25, 0.01, 0.35, 0.25, 450 - ) + pitch = sound.to_pitch_ac(0.02, 30, 4, False, 0.03, 0.25, 0.01, 0.35, 0.25, 450) voicedcount = 0 voicedpeak = [] diff --git a/nkululeko/utils/stats.py b/nkululeko/utils/stats.py index 1f3d0187..70ed605d 100644 --- a/nkululeko/utils/stats.py +++ b/nkululeko/utils/stats.py @@ -2,7 +2,6 @@ from itertools import combinations import numpy as np -import pandas as pd def check_na(a): diff --git a/openXBOW b/openXBOW new file mode 160000 index 00000000..01b54185 --- /dev/null +++ b/openXBOW @@ -0,0 +1 @@ +Subproject commit 01b54185a09d66a35da0bc8011d26cd3173d1419 diff --git a/output.txt b/output.txt new file mode 100644 index 00000000..371ffd81 --- /dev/null +++ b/output.txt @@ -0,0 +1,37 @@ +DEBUG nkululeko: running results/exp_emodb_os_svm from config data/emodb/exp_os_svm.ini, nkululeko version 0.66.12 +DEBUG experiment: value for type not found, using default: audformat +DEBUG dataset: emodb: loading from ./data/emodb/emodb +DEBUG dataset: emodb: reusing previously stored file ./results/exp_emodb_os_svm/./store/emodb.pkl +DEBUG dataset: emodb: loaded with 535 samples: got targets: True, got speakers: True (10), got sexes: True +DEBUG experiment: target: emotion +DEBUG experiment: Target labels (user defined): ['angry', 'happy', 'neutral', 'sad'] +DEBUG experiment: loaded databases emodb +DEBUG experiment: reusing previously stored ./results/exp_emodb_os_svm/./store/testdf.csv and ./results/exp_emodb_os_svm/./store/traindf.csv +DEBUG experiment: value for filter.sample_selection not found, using default: all +DEBUG experiment: value for type not found, using default: dummy +DEBUG experiment: Categories test (nd.array): ['happy' 'neutral' 'angry' 'sad'] +DEBUG experiment: Categories train (nd.array): ['happy' 'neutral' 'angry' 'sad'] +DEBUG experiment: 4 speakers in test and 6 speakers in train +DEBUG nkululeko: train shape : (203, 6), test shape:(136, 6) +DEBUG featureset: value for set not found, using default: eGeMAPSv02 +DEBUG featureset: value for level not found, using default: functionals +DEBUG featureset: value for store_format not found, using default: pkl +DEBUG featureset: reusing extracted OS features: ./results/exp_emodb_os_svm/./store/emodb_os_train.pkl. +DEBUG feature_extractor: os: shape : (203, 88) +DEBUG featureset: value for set not found, using default: eGeMAPSv02 +DEBUG featureset: value for level not found, using default: functionals +DEBUG featureset: value for store_format not found, using default: pkl +DEBUG featureset: reusing extracted OS features: ./results/exp_emodb_os_svm/./store/emodb_os_test.pkl. +DEBUG feature_extractor: os: shape : (136, 88) +DEBUG experiment: All features: train shape : (203, 88), test shape:(136, 88) +DEBUG scaler: scaling features based on training set +DEBUG runmanager: run 0 +DEBUG model: value for C_val not found, using default: 0.001 +DEBUG modelrunner: run: 0 epoch: 0: result: test: 0.681 UAR +DEBUG modelrunner: plotting confusion matrix to emodb_svm_os__0_000_cnf +DEBUG reporter: epoch: 0, UAR: 0.6808080808080808, ACC: 0.7352941176470589 +DEBUG runmanager: value for measure not found, using default: uar +DEBUG reporter: labels: ['angry', 'happy', 'neutral', 'sad'] +DEBUG reporter: result per class (F1 score): [0.794, 0.0, 0.812, 0.88] +DEBUG experiment: Done, used 1.659 seconds +DONE diff --git a/setup.py b/setup.py index 26126d85..d5d43d7c 100644 --- a/setup.py +++ b/setup.py @@ -1,3 +1,3 @@ from setuptools import setup -setup(use_scm_version=True) \ No newline at end of file +setup(use_scm_version=True) diff --git a/svd_downloader.py b/svd_downloader.py new file mode 100644 index 00000000..654ac462 --- /dev/null +++ b/svd_downloader.py @@ -0,0 +1,184 @@ +# svd_downloader.py +# copied from https://github.com/rijulg/svd-downloader + +import sys +import logging +from argparse import ArgumentParser + +import re +import dask +import json +import requests +from pathlib import Path +from logging import Logger +from bs4 import BeautifulSoup +from dask.diagnostics.progress import ProgressBar + + +class Downloader: + base_url = "https://stimmdb.coli.uni-saarland.de" + max_speaker_id = 2742 + session = requests.Session() + + def __init__(self, out_path: str, refetch_links: bool, logger: Logger): + self.logger = logger + self.out_path = out_path + self.refetch_links = refetch_links + self.links_file = f"{out_path}/data.json" + + def run(self): + self.logger.info("Running downloader") + self.logger.info(f"Saving at: {self.out_path}") + if not Path(self.links_file).is_file() or self.refetch_links: + self.logger.info("Saving file links") + self.save_all_file_links() + with open(self.links_file, "r") as links_file: + data = json.load(links_file) + self.download_data(data) + + def download_data(self, data): + jobs = [] + self.logger.info("Setting up download jobs") + for key, row in data.items(): + if row is not None: + gender = row["gender"] + for session in row["sessions"]: + session_id = session["session_id"] + classification = session["classification"] + for file in session["files"]: + job = self.download_file( + key=key, + session_id=session_id, + gender=gender, + classification=classification, + file=file, + ) + jobs += [job] + self.logger.info("Downloading files") + with ProgressBar(): + dask.compute(*jobs) + + @dask.delayed + def download_file(self, key, session_id, gender, classification, file): + data_path = f"{self.out_path}/{classification}/{gender}/{key}/{session_id}" + Path(data_path).mkdir(parents=True, exist_ok=True) + file_id = file.split("=")[1] + file_path = f"{data_path}/{file_id}.wav" + doc = requests.get(file) + with open(file_path, "wb") as f: + f.write(doc.content) + + def save_all_file_links(self): + session = self.db_session() + ids = list(range(self.max_speaker_id)) + pages = [f"{self.base_url}/details.php4?SprecherID={number}" for number in ids] + jobs = [self.extract_links_from_page(session, page) for page in pages] + with ProgressBar(): + data = dict(zip(ids, dask.compute(*jobs))) + Path(self.links_file).parent.mkdir(exist_ok=True, parents=True) + with open(self.links_file, "w") as link_file: + json.dump(data, link_file, indent=4) + + @dask.delayed + def extract_links_from_page(self, session, url): + response = session.get(url) + soup = BeautifulSoup(response.text, "html.parser") + gender = self.get_gender(soup.find("div", class_="title").text) + valid_classifications = ["healthy", "pathological"] + data = {"page": url, "gender": gender, "sessions": []} + for sess in soup.findAll("table", class_="sessiondetails"): + session_id = self.find_session_id(sess) + classification = self.identify_classification(sess) + recording_date, age = self.find_dates(sess) + pathologies = self.find_pathologies(sess) + sess_data = { + "session_id": session_id, + "classification": classification, + "age": age, + "recording_date": recording_date, + "pathologies": pathologies, + } + if classification in valid_classifications: + sess_data["files"] = self.get_file_links(sess) + else: + print(f"Invalid classification(={classification}) found at url: {url}") + data["sessions"] += [sess_data] + return data + + def find_session_id(self, sess): + row = sess.find("tr", class_="titleactive") + cell = row.find("td") + link = cell.find("a") + return link["name"] + + def find_dates(self, sess): + rows = sess.find_all("tr", class_="detailsactive") + for row in rows: + cells = row.find_all("td") + if "date of recording" in cells[0].text.lower(): + recording_date = cells[1].find("span").text + age = re.findall(r"\((\d*)\)", cells[1].text)[0] + return recording_date, age + + def find_pathologies(self, sess): + rows = sess.find_all("tr", class_="detailsactive") + for row in rows: + cells = row.find_all("td") + if "pathologies" in cells[0].text.lower(): + return cells[1].text.strip() + + def db_session(self): + session = requests.Session() + session.post(f"{self.base_url}/index.php4", data={"sb_lang": "English"}) + session.post( + f"{self.base_url}/index.php4", + data={"sb_search": "Database request", "sb_sent": "Accept"}, + ) + return session + + def identify_classification(self, sess): + row = sess.find("tr", class_="detailsactive") + classification = row.find_all("td")[1].text + return classification + + def get_file_links(self, sess): + files = sess.find_all("a", attrs={"target": "PLAY"}) + file_links = [f"{self.base_url}/{x.get('href')}" for x in files] + return file_links + + def get_gender(self, title: str): + title = title.lower() + if "female" in title: + return "female" + if "male" in title: + return "male" + return "unknown" + + +def get_logger(): + log_handler = logging.StreamHandler(sys.stdout) + log_formatter = logging.Formatter(fmt="[%(asctime)s] %(levelname)-8s:: %(message)s") + log_handler.setFormatter(log_formatter) + + logger = logging.Logger("SVD Downloader") + logger.addHandler(log_handler) + return logger + + +if __name__ == "__main__": + parser = ArgumentParser("SVD Downloader") + parser.add_argument( + "out_path", type=str, default="SVD", help="The location of where to store data" + ) + parser.add_argument( + "--refetch-links", + action="store_true", + help="Whether to refresh the list of links", + ) + args = parser.parse_args() + + logger = get_logger() + downloader = Downloader( + out_path=args.out_path, refetch_links=args.refetch_links, logger=logger + ) + downloader.run() diff --git a/tutorials/tut_spotlight_ravdess.ini b/tutorials/tut_spotlight_ravdess.ini new file mode 100644 index 00000000..e6421451 --- /dev/null +++ b/tutorials/tut_spotlight_ravdess.ini @@ -0,0 +1,31 @@ +[EXP] +root = ./ +name = results/exp_ravdess_wavlm +runs = 1 +epochs = 1 +save = True +[DATA] +databases = ['train', 'test', 'dev'] +train = ./data/ravdess/ravdess_train.csv +train.type = csv +train.absolute_path = False +train.split_strategy = train +dev = ./data/ravdess/ravdess_dev.csv +dev.type = csv +dev.absolute_path = False +dev.split_strategy = train +test = ./data/ravdess/ravdess_test.csv +test.type = csv +test.absolute_path = False +test.split_strategy = test +target = emotion +labels = ['angry', 'happy', 'neutral', 'sad'] +[FEATS] +type = ['wavlm-large'] +no_reuse = False +scale = standard +[EXPL] +sample_selection = all +spotlight = True +[MODEL] +type = svm \ No newline at end of file diff --git a/tutorials/tut_stratify_emodb.ini b/tutorials/tut_stratify_emodb.ini new file mode 100644 index 00000000..d7d5dea7 --- /dev/null +++ b/tutorials/tut_stratify_emodb.ini @@ -0,0 +1,29 @@ +[EXP] +root = ./results/ +name = exp_emodb_wavlm_1 +runs = 1 +epochs = 1 +save = True +[DATA] +# the name of the database +databases = ['emodb'] +# the location of the data +emodb = ./data/emodb/emodb +# set the split strategy to "balanced" +emodb.split_strategy = balanced +# set a percentage value for your test split +emodb.test_size = 20 +# stratify variables with weights for importance +balance = {'emotion':2, 'age':1, 'gender':1} +# all stratification variables need to be categorical, +# so we need to state the number of bins for "age" +age_bins = 2 +# a value for how much importance to give for the ideal group sizes +size_diff_weight = 1 +# the target value of the experiment +target = emotion +[FEATS] +type = ['wavlm-large'] +scale = standard +[MODEL] +type = svm \ No newline at end of file diff --git a/voice-disorder.bib b/voice-disorder.bib new file mode 120000 index 00000000..0f6b69f2 --- /dev/null +++ b/voice-disorder.bib @@ -0,0 +1 @@ +/home/bagus/Documents/bib/voice-disorder.bib \ No newline at end of file diff --git a/xbow_codebook b/xbow_codebook new file mode 100644 index 00000000..5bb4fb2a --- /dev/null +++ b/xbow_codebook @@ -0,0 +1,503 @@ +log +codebookNumeric +500;25;10;0.0;0.0 +0.21978395;-4.33896;14.128907;0.10038653;-1.413634E-4;0.052169874;23.244234;-18.877434;7.1137977;2.9039972;39.269543;0.03618;1.0568339;2.014624;8.736433;5.285682;534.4556;1309.6403;0.0;1552.5472;984.6031;-19.133478;2485.1575;822.8496;-17.486681 +0.0010339657;0.0;0.0;0.11200001;0.07636364;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;-201.0;0.0;0.0;-201.0;0.0;0.0;-201.0 +0.39115325;-1.6035528;5.4387355;0.016302004;-0.011569287;0.1931662;-1.4472059;7.0866246;17.885477;-9.426082;38.987087;0.0;0.0;5.252252;14.324527;2.7829392;451.96048;902.6853;-12.452242;1568.1556;487.5662;-31.089907;2512.4856;1113.7628;-13.7132225 +0.004766719;-12.155108;23.587053;-0.0135693075;0.04738536;6.2957156E-4;-3.15507;7.363344;11.688762;16.251793;0.0;0.0;0.0;0.0;0.0;0.0;1091.186;1035.0461;-201.0;1909.8529;1078.2463;-201.0;2885.2031;721.7006;-201.0 +0.0059815;-8.616739;17.793694;0.015284414;0.029883452;2.3886557E-4;2.5775945;15.905022;10.599924;5.497069;0.0;0.0;0.0;0.0;0.0;0.0;685.64813;1061.775;-201.0;1618.5536;1273.2512;-201.0;2419.0098;1065.9927;-201.0 +0.004808624;-12.70253;24.432722;-0.0062058023;0.047854755;2.940738E-4;-0.75852424;13.72062;10.269783;11.689147;0.0;0.0;0.0;0.0;0.0;0.0;1048.0049;1016.26666;-201.0;2198.1982;938.53265;-201.0;3018.3975;3332.8242;-201.0 +2.4493759;10.240928;-0.9837412;0.08109618;0.007895938;1.3690118;-4.7486243;-26.191233;0.7568572;18.24196;43.78891;0.03613854;2.119139;-0.6708386;14.256343;-7.9642487;1222.8243;727.57794;-22.761673;2214.8113;4945.012;-1.1202606;2536.0894;996.9839;-0.76979715 +0.2268659;-12.022839;31.649963;0.12011593;0.024866415;0.045537636;12.79687;7.9512734;-32.021862;-2.8547046;41.432194;0.044155564;2.101384;5.4454827;17.98017;25.024279;1127.7103;1024.2384;-18.621183;1945.9281;1946.2203;-26.791582;3216.861;1013.02997;-37.74725 +1.3143958;-14.44222;14.5796995;0.02458092;-0.054816082;0.35847273;27.193474;2.024324;13.7497835;-60.111954;39.462185;0.0068270527;0.46371874;11.988602;10.384137;19.667353;840.3623;981.4256;-7.8502083;2285.639;321.89722;-26.917738;3111.794;652.6773;-17.133423 +0.18478973;-16.748026;20.670778;0.06964468;-0.020154491;0.034863204;32.443356;1.6126628;32.474438;-4.9081473;31.45165;0.011441442;1.2729572;7.094421;11.160926;31.346384;527.6169;1410.5582;-13.275443;1733.4572;760.56976;-28.73449;2785.7761;814.56683;-33.888096 +0.0063661453;-0.48841634;8.674914;0.055961713;0.036747303;1.2799422E-4;3.1610057;-0.30989894;-3.8736756;4.8965;0.0;0.0;0.0;0.0;0.0;0.0;935.407;1655.4122;-201.0;1735.6227;1483.4205;-201.0;2638.8135;1202.9357;-201.0 +0.05609995;-3.9770393;18.668957;0.08057729;0.01206405;0.0071638785;25.407501;-11.703861;-15.534889;-3.3040545;0.0;0.0;0.0;0.0;0.0;0.0;435.9966;2032.1636;-201.0;1351.1464;1231.4622;-201.0;2358.2747;1051.1268;-201.0 +0.29994437;-24.081182;34.487217;0.082633324;-0.030936465;0.0923359;44.122517;7.611263;14.198171;-16.525244;34.977432;0.029146353;0.67027324;10.127206;15.667603;45.348145;1011.40265;1587.8818;-21.76539;2279.64;836.5391;-40.0689;3691.048;1060.1637;-44.85536 +0.15768524;15.2058115;-10.63255;0.090432584;3.5954337E-4;0.017618112;-22.642744;-0.95957476;14.96656;-21.008177;0.0;0.0;0.0;0.0;0.0;0.0;1294.4971;537.8259;-201.0;1954.4877;1974.1385;-201.0;2871.3477;1044.0159;-201.0 +0.15420501;-13.469504;26.712103;0.058642447;0.0026224696;0.041986216;32.120224;2.189267;9.369642;-7.094649;32.40447;0.028479012;3.4122734;7.454557;3.9590166;23.031569;733.2016;1364.491;-8.014882;1510.0146;1252.399;-13.387703;2617.6602;733.7207;-26.874374 +1.0392073;-6.9653397;10.172703;0.10458217;-0.0024224385;0.49623442;16.22887;-40.779213;-16.056837;-27.180506;44.82362;0.034963753;1.6636357;8.429916;18.242039;13.207413;828.7342;1531.0443;-6.718541;1916.4879;902.69775;0.31910467;2971.7039;595.5923;-1.2045422 +0.39306465;-7.78192;15.674961;0.07434588;-0.027533686;0.066508695;36.707478;-14.444107;8.793794;-49.530197;31.043198;0.0058386303;0.5432424;6.825235;-1.7118177;14.475173;382.66296;1270.3672;0.21326129;1191.7661;981.9119;4.683024;2517.3691;449.80884;-14.26191 +0.2814366;-21.05043;20.931646;0.08034086;-0.0446782;0.04885518;46.221752;4.7665763;-2.9672043;-7.716255;26.239756;0.004437809;0.55508614;5.330963;1.5618529;32.727825;861.8929;1080.9731;1.5545268;2104.4514;615.89154;-16.016867;3317.804;1215.6813;-29.9841 +0.22445035;-30.570793;41.993973;0.07594266;-0.008643702;0.020896653;41.91315;26.94134;12.392143;-2.3292558;35.259007;0.0013043092;0.10575498;13.378278;23.831015;42.106613;413.291;1493.8231;-3.1348944;1544.4259;1464.061;-41.6797;2786.9158;1589.1562;-45.241512 +0.10085728;-22.235641;23.346588;0.070544325;-0.039340872;0.021072345;43.50485;11.582286;19.927732;-27.231836;0.0;0.0;0.0;0.0;0.0;0.0;800.4694;1023.5955;-201.0;2229.9856;579.887;-201.0;2928.8386;787.0268;-201.0 +0.101289846;-16.953873;22.078903;0.015428814;0.0133112995;0.03452708;25.750402;10.829182;40.186172;19.002138;0.0;0.0;0.0;0.0;0.0;0.0;363.21994;1184.2639;-201.0;1397.8822;920.7312;-201.0;2300.572;648.404;-201.0 +0.008602311;-13.606753;24.336695;-0.011997473;0.03220704;8.699687E-4;6.6948495;14.442554;10.482455;9.874404;0.0;0.0;0.0;0.0;0.0;0.0;622.7077;1416.7148;-201.0;1624.3102;1067.1902;-201.0;2655.2246;998.1873;-201.0 +0.34944746;2.4668114;1.1628904;0.110187076;-0.008344889;0.10757584;-11.425628;3.9612749;8.535754;-42.145176;47.98448;0.0;2.2649367;7.341305;21.73983;3.3236873;1275.2175;1084.8774;-37.95451;2038.2539;1185.0514;-27.13502;2734.3079;2400.574;-22.762888 +0.0072130933;-2.5345356;11.063573;0.054147284;0.028692752;1.8372077E-4;0.9020837;5.016578;-1.405601;-4.0483565;0.0;0.0;0.0;0.0;0.0;0.0;444.36868;1520.7455;-201.0;1391.0292;1129.4191;-201.0;2458.3745;1107.4362;-201.0 +0.10655153;-19.61119;29.045961;0.0950385;-0.04443948;0.019768944;43.60695;-0.7622714;10.728645;-22.877878;23.993683;0.024201808;1.2255216;0.95940095;2.5147026;23.919962;875.7949;1064.5898;8.512262;1995.0947;908.03937;-3.95605;2804.0325;875.93414;-7.8774796 +0.037244927;6.1097245;5.5454154;0.06308642;0.022793444;0.0022845562;4.746444;-26.98926;7.5041127;-13.935303;0.0;0.0;0.0;0.0;0.0;0.0;1143.5751;966.7647;-201.0;2077.7058;1331.6954;-201.0;2903.3994;956.3803;-201.0 +0.268945;-25.222418;32.632507;0.07771603;-0.03767538;0.11781434;41.267155;19.574532;9.434993;-28.917648;29.423681;0.013841818;0.63849217;6.269296;-4.9663043;32.52767;288.90527;1758.6163;-0.06768942;1054.392;1215.6914;-21.898539;2270.3015;710.7503;-34.295246 +0.64849144;-6.185541;13.035153;0.09863093;-0.008893616;0.14981599;9.45443;-20.10939;6.3447385;-8.140331;42.52789;0.00539935;0.4483243;11.246766;10.0966215;8.81665;1399.6152;578.4548;-22.072393;2548.495;984.5537;-16.486898;3423.8972;1478.736;-23.373133 +0.2202353;-15.49034;27.134499;0.10220104;-0.03305262;0.05256051;33.576015;-3.646733;-8.561938;-63.51013;34.680946;0.006186852;0.25909114;1.9861475;-12.027053;20.06505;848.2941;1530.1139;-64.71719;1927.3422;1303.8407;-75.21839;3207.8948;1070.3405;-77.94431 +0.14764063;-19.30958;28.15911;0.012339336;-6.690266E-4;0.07727175;35.08017;4.9774966;32.14236;23.774008;26.918152;0.030228028;1.956889;4.573076;11.250478;30.631262;322.38535;1238.4291;-4.218833;1426.4766;686.0351;-20.393461;2515.75;684.2031;-26.82044 +0.20211387;-11.073249;27.847136;0.087667905;-0.0043932004;0.0378215;32.359756;-6.9541316;-7.3688483;-9.940985;35.680393;0.0120405005;0.8874504;8.556825;1.5698906;20.576574;723.8081;1448.2217;-11.07124;1656.504;938.5566;-16.69854;2853.264;794.9515;-30.490698 +0.006908973;-11.342384;21.336563;0.005579663;0.02453777;5.3231587E-4;7.566942;11.933867;2.1881084;5.3992887;0.0;0.0;0.0;0.0;0.0;0.0;698.38446;1289.8309;-201.0;1646.9535;1319.109;-201.0;2585.8457;929.9377;-201.0 +0.0033370724;-2.8513346;11.051353;0.041509792;0.040427733;1.3185933E-4;1.0757166;8.3120165;-3.0612106;4.94546;0.0;0.0;0.0;0.0;0.0;0.0;613.6187;1271.9585;-201.0;1610.4517;1047.1412;-201.0;2623.2725;707.09424;-201.0 +0.60470146;3.5503829;9.980251;0.103224784;0.0057605803;0.2985275;5.0982738;-37.241512;-28.460615;-21.173254;48.88747;0.20691688;2.0617166;-0.031695683;-13.051411;3.6920693;973.09576;1225.905;-4.9723167;1892.2621;1094.3615;-2.37424;2667.1345;1877.9766;-10.262191 +0.004324283;-2.926748;12.031133;0.03371496;0.038103383;2.7005305E-4;-0.1029582;8.096603;0.34743643;2.1253278;0.0;0.0;0.0;0.0;0.0;0.0;873.2368;1399.7782;-201.0;1855.836;1182.2052;-201.0;2774.2444;918.4495;-201.0 +0.031129405;-23.806887;29.431223;0.021753991;0.022325426;0.012667869;27.017876;19.263918;24.614204;19.09006;0.0;0.0;0.0;0.0;0.0;0.0;380.9587;1253.2797;-201.0;1580.5096;979.96747;-201.0;2483.0974;1065.0637;-201.0 +0.015355532;-34.058613;48.635773;-0.06317778;0.026540704;0.01290454;17.22687;14.520888;13.073968;13.633064;0.0;0.0;0.0;0.0;0.0;0.0;1018.27216;1294.7845;-201.0;2073.205;1258.4928;-201.0;3013.3477;1046.2805;-201.0 +0.018016651;2.094509;19.289053;0.039285485;0.040315356;0.0015174891;16.01689;-8.350558;-3.6785176;18.38362;0.0;0.0;0.0;0.0;0.0;0.0;1017.42413;1161.7716;-201.0;1823.287;1535.1254;-201.0;2799.7512;1000.7652;-201.0 +0.48636493;-11.371625;22.497032;0.10272917;-0.010070327;0.118574016;35.478252;-11.771213;1.3439509;-30.536516;36.06348;0.004862969;0.7540517;10.312531;8.704209;25.655764;379.17996;1273.4886;1.8491888;1257.1797;1011.6758;-11.084512;2309.117;737.5669;-24.136366 +0.0073584975;10.771461;-4.4661803;0.047163785;0.048792657;5.691365E-4;-15.570464;2.4844208;6.6843033;-5.2473464;0.0;0.0;0.0;0.0;0.0;0.0;852.5828;1094.9672;-201.0;1818.6655;1101.9467;-201.0;2719.6355;936.98315;-201.0 +0.0022258542;4.6931;1.5903473;0.07203683;0.05070649;2.050942E-5;-5.5747857;-0.24551539;-1.8802338;3.370682;0.0;0.0;0.0;0.0;0.0;0.0;627.6501;1174.4647;-201.0;1519.2041;1186.3529;-201.0;2378.6184;1087.8525;-201.0 +0.39869633;-4.1382318;22.640596;0.048305858;0.008356598;0.12619658;50.06952;-24.999063;-8.99234;21.260948;31.609903;0.12147502;2.549485;0.7041494;6.713859;18.721449;867.5214;1495.0883;-12.660667;1607.1876;1125.9017;-9.445728;2717.5645;733.1841;-22.210632 +0.24115415;-12.6943865;20.166586;0.10848632;-0.013476512;0.11599054;29.63001;-15.673702;24.170822;-16.61809;0.0;0.0;0.0;0.0;0.0;0.0;416.09473;1502.7985;-201.0;1543.1898;852.27277;-201.0;2530.659;1075.3009;-201.0 +0.21585377;-15.869815;20.61101;0.09591911;-0.018590638;0.054876547;23.381617;6.338894;33.401;-18.458502;34.128246;0.008576239;0.98158693;6.857975;15.308456;26.780146;481.33206;1710.2831;-0.22244866;1760.7643;509.0966;-21.548933;2926.8977;480.6089;-22.422333 +0.0063157105;-1.2330389;9.241332;0.049470406;0.032575708;1.1914601E-4;2.3093717;5.1876254;9.426665;2.9900792;0.0;0.0;0.0;0.0;0.0;0.0;627.71814;1316.2716;-201.0;1613.5958;1041.7264;-201.0;2536.5337;2299.2754;-201.0 +0.0034692485;0.17073815;7.114937;0.03953944;0.037701085;9.0527195E-5;-5.3731556;8.1700945;-0.6568503;-0.63735324;0.0;0.0;0.0;0.0;0.0;0.0;773.4681;1247.8486;-201.0;1808.6769;2325.2346;-201.0;2418.4434;997.4306;-201.0 +0.0025553082;-3.1389306;9.1207285;0.049657926;0.06307397;1.4291679E-4;0.7266279;6.1085143;6.0783386;4.9585443;0.0;0.0;0.0;0.0;0.0;0.0;851.3048;1220.5059;-201.0;1866.2542;1139.3569;-201.0;2664.279;1423.0208;-201.0 +0.9548922;-10.159908;22.513193;0.0089154905;-0.04084072;0.3050906;22.672174;-10.3729105;-14.373611;-57.94128;34.145817;0.008677135;0.69676757;8.955217;-5.3922095;15.630723;811.987;1382.9164;11.818799;1900.7552;1053.0914;-2.5184348;3032.0334;936.1458;-8.570354 +0.07318713;-7.800244;13.979497;0.03611389;0.010517004;0.01244691;32.733913;-5.6180077;5.6168594;13.040278;0.0;0.0;0.0;0.0;0.0;0.0;906.11523;1152.4629;-201.0;1861.5453;818.82404;-201.0;2885.2634;555.2195;-201.0 +0.048963923;8.613066;0.6762428;0.092267;0.028178336;0.0029218178;-8.094735;-14.170936;9.525054;-7.9514832;0.0;0.0;0.0;0.0;0.0;0.0;1146.6301;833.1187;-201.0;2278.589;995.78436;-201.0;3020.9333;2491.68;-201.0 +0.67733544;-11.82698;20.67202;0.08994267;-0.020757245;0.26458177;23.569258;-24.362322;-10.820465;-47.688595;43.841595;0.030614235;0.6132674;9.811009;14.062851;25.360153;725.6035;1514.2816;-16.785606;1651.9525;1853.3842;-29.358469;2396.5012;903.25604;-34.579884 +2.320362;14.368617;12.018714;0.10054183;0.05556372;1.7387751;-12.307284;-52.743984;-18.858335;-17.353952;49.939617;0.001907364;0.59906393;3.1665313;-6.421454;7.319781;1042.9502;1101.4261;0.0;2124.0034;1193.0614;7.3376503;2936.2239;980.92145;5.917297 +0.010966285;-15.751187;27.51583;-0.010579552;0.032236185;0.001105448;16.406385;16.823908;9.457127;11.843425;0.0;0.0;0.0;0.0;0.0;0.0;764.4095;1498.0219;-201.0;1707.8722;1536.7213;-201.0;2646.516;1005.9012;-201.0 +0.19211634;-9.18129;16.96351;0.052089203;0.0021164233;0.030880846;5.4704247;14.530464;7.345612;-7.7648864;0.0;0.0;0.0;0.0;0.0;0.0;1025.2296;1180.2189;-201.0;2106.7285;876.9328;-201.0;3135.963;767.14795;-201.0 +0.13558854;-13.542226;26.199667;0.075572155;0.009558101;0.031830247;25.662115;-0.9717426;7.032228;-10.834601;36.567318;0.03036423;2.2165263;6.785565;0.045441706;25.856733;1151.9441;1351.4552;-11.361221;2042.2482;955.27344;-25.512062;3223.4167;905.4809;-33.11682 +0.004393495;2.8630621;5.0049615;0.05557735;0.04804941;1.01051315E-4;1.3241062;-7.3908725;0.41624752;3.6901922;0.0;0.0;0.0;0.0;0.0;0.0;615.5423;1261.9032;-201.0;1508.807;1288.9144;-201.0;2427.0388;1256.4761;-201.0 +1.5135452;-7.767851;14.877597;0.1009201;-0.011414832;1.0339144;6.3333697;-32.900074;-5.680447;-57.286556;37.872437;0.1712691;1.5459017;4.7501273;-33.596703;-7.2039948;732.53436;1240.0153;0.0;1838.7084;890.2409;38.30525;2819.7776;748.98444;26.41387 +0.04567753;-22.559423;28.118402;0.018894246;0.022785379;0.013137107;28.679619;20.889223;32.356163;16.204824;0.0;0.0;0.0;0.0;0.0;0.0;314.12894;1375.0726;-201.0;1420.143;1010.9595;-201.0;2490.0088;773.36456;-201.0 +0.4963596;-5.029226;8.363036;0.106799625;-0.008034551;0.22574723;6.192323;-13.129626;16.00922;-33.78002;43.117725;0.029196644;1.7880821;7.695908;22.10311;4.155862;863.2669;2360.436;0.0;1606.7389;960.02344;-23.620544;2537.0352;1860.7197;-13.678956 +0.7335246;-5.422743;12.706074;0.08388234;-0.01708665;0.2933443;12.494657;-29.216467;0.68217343;-25.181839;0.0;0.0;0.0;0.0;0.0;0.0;401.02078;1689.936;-201.0;1548.7194;896.5508;-138.52217;2609.658;791.60474;-136.39595 +0.006790971;-28.461054;39.894608;-0.045872938;0.033383638;0.0036990384;4.2920566;18.697199;18.153849;16.128584;0.0;0.0;0.0;0.0;0.0;0.0;1095.3048;1436.8285;-201.0;2143.591;1312.051;-201.0;3205.1125;1102.9458;-201.0 +0.051895052;-27.140701;43.270336;-0.052223384;0.036498334;0.013576552;22.80664;-0.023493728;15.964722;31.784857;0.0;0.0;0.0;0.0;0.0;0.0;946.5778;2262.1135;-201.0;1577.9581;1247.037;-201.0;2881.503;1017.3566;-201.0 +0.17170377;13.535842;-5.416849;0.06493988;0.0067577213;0.014654171;-22.098791;-5.300494;1.890776;-9.561163;0.0;0.0;0.0;0.0;0.0;0.0;1225.2075;674.5523;-201.0;2397.5635;1014.45575;-201.0;3013.8562;2057.1907;-201.0 +0.0058496334;-6.2574806;17.483648;-0.010337514;0.039401982;1.3718386E-4;-5.357746;9.207035;5.5652213;7.767305;0.0;0.0;0.0;0.0;0.0;0.0;534.50134;1341.9159;-201.0;1417.6958;1146.4517;-201.0;2494.61;931.4992;-201.0 +0.22274743;-17.25952;29.546091;0.040723924;-0.011350696;0.051278394;30.511831;0.33574626;-10.668007;-10.832054;38.56757;0.011987396;0.74954605;6.8898664;19.162106;36.94243;406.44226;1389.4706;0.0;1434.2863;1392.7203;-28.28415;2339.8142;1327.2345;-32.01977 +0.0030489136;-2.7555287;9.612282;0.05888872;0.054382075;1.2891315E-4;0.7384634;4.6249127;-1.4159633;-1.0094265;0.0;0.0;0.0;0.0;0.0;0.0;682.0985;2296.7336;-201.0;1352.2394;1081.4165;-201.0;2515.0044;458.50806;-201.0 +0.11629897;-16.74581;22.809568;0.051252615;0.0022244474;0.05646174;32.995575;2.1072242;35.98942;18.93133;0.0;0.0;0.0;0.0;0.0;0.0;355.09705;1122.3275;-201.0;1468.0768;642.89026;-201.0;2498.3792;834.47296;-201.0 +0.8151174;-0.3773845;12.663037;0.062086213;0.003235706;0.31239077;19.32979;-45.237354;-7.109014;-21.962927;39.67003;0.035888534;1.6065506;6.265927;-7.4353695;4.667682;667.41205;1369.8947;6.6254387;1617.5889;1084.6207;1.5558791;2651.6292;1090.606;-5.092716 +0.0019287532;4.2955737;-0.10565961;0.07873502;0.07024228;2.051916E-5;-6.5880527;0.14766367;-0.48841444;2.4922488;0.0;0.0;0.0;0.0;0.0;0.0;588.04376;1754.0767;-201.0;1087.4332;2859.1877;-201.0;1964.5906;1512.4603;-201.0 +0.075277604;4.1960173;7.30955;0.08269906;0.041948125;0.0059002857;-4.479235;-3.305611;10.819168;15.963776;0.0;0.0;0.0;0.0;0.0;0.0;1079.0526;858.74097;-201.0;2055.582;1286.0121;-201.0;2756.3132;2474.578;-201.0 +0.31289563;-0.9606059;11.4038515;0.09245434;-0.010185152;0.07489253;37.858593;-29.037283;4.074365;-9.332776;31.0736;0.024717078;1.1228939;-1.6839689;0.07147709;3.1018875;348.32935;1249.0427;-2.9419107;1344.792;956.40625;-10.705285;2152.6487;896.6916;-6.043798 +0.009630865;-17.164293;28.205877;-0.017368764;0.031600095;0.0014875792;3.3837802;13.593387;13.27353;11.6455965;0.0;0.0;0.0;0.0;0.0;0.0;698.7979;1985.71;-201.0;1604.0059;988.36743;-201.0;2693.1868;936.02545;-201.0 +0.9435937;2.4431002;1.7690605;0.14490077;-6.204086E-4;0.6102409;-5.4697685;-34.576782;9.412004;-54.840435;48.420456;0.036684386;1.9018942;4.4116864;15.852032;-8.467081;1096.4733;929.7107;-77.8498;1945.6035;1145.6682;-80.355064;2893.5203;1018.31366;-68.82308 +0.0066938903;-2.2828057;10.793949;0.034653578;0.03210747;1.5438847E-4;3.2542849;5.352856;2.8912938;5.6442375;0.0;0.0;0.0;0.0;0.0;0.0;494.88632;1647.9219;-201.0;1338.919;1735.899;-201.0;2137.7253;2137.9807;-201.0 +0.0026565818;1.6329898;3.0904539;0.07786518;0.0450632;8.5060536E-5;4.341614;-6.863157;0.14469059;2.464753;0.0;0.0;0.0;0.0;0.0;0.0;627.93475;1459.5458;-201.0;1591.5787;1233.4893;-201.0;2297.7256;1011.3945;-201.0 +0.313768;-24.94242;33.549892;0.08873805;-0.033910137;0.109048165;45.67169;9.222514;9.05285;-4.5105524;35.406094;0.081394;1.3221332;10.705132;21.60195;38.58581;827.1328;1504.0797;-25.493294;2111.0898;2314.15;-44.090885;2514.6296;963.97705;-41.17597 +0.23348391;-25.964285;32.110622;0.09191248;-0.05341394;0.05794623;48.343502;7.416355;-5.779204;-26.5652;33.47851;0.018558921;0.6771515;9.570857;-5.657679;42.092556;808.1089;1251.9305;-3.200222;1993.7335;918.64777;-23.909172;3249.4597;965.7925;-36.78614 +0.13847077;-17.355417;20.059977;0.11406347;-0.024512729;0.05248748;17.739618;15.732437;18.365032;-25.690155;35.55778;0.07195572;1.5978409;3.4922743;17.987303;27.930784;703.8072;1369.18;-11.717668;1858.1792;554.2834;-21.99771;2944.235;549.9797;-21.559387 +1.1151867;-5.9386673;14.882148;-0.010624289;-0.033408526;0.37749788;29.106447;-17.712372;2.2989736;-41.200405;31.562311;0.009809456;2.051157;10.149839;2.1709387;3.6876001;586.06036;1411.5201;0.0;1492.1481;1078.9185;2.9607172;2644.2668;460.0709;-4.3206058 +0.007957544;-3.4310703;12.3783045;0.057369363;0.039144736;2.3800426E-4;7.0593762;4.3893394;3.0625813;1.5434319;0.0;0.0;0.0;0.0;0.0;0.0;762.4235;1363.8949;-201.0;1662.5739;1383.9225;-201.0;2491.622;1174.827;-201.0 +0.12783991;-10.397313;28.309525;-0.04603972;0.021041406;0.020850623;26.146578;-11.903603;3.2645235;0.09092665;0.0;0.0;0.0;0.0;0.0;0.0;702.35596;1242.0741;-201.0;1762.6602;1313.7744;-201.0;2962.5222;1166.9681;-201.0 +0.72770804;2.5547674;18.38082;0.058892626;0.008075266;0.301451;26.484756;-46.887722;-38.229416;-10.393608;42.30219;0.004468299;0.8413346;8.428897;18.242704;27.637056;1046.9219;924.44464;-5.287084;2057.09;1036.8722;-2.5339613;2992.505;1311.8926;-14.6814375 +0.021584818;-21.312157;32.518074;-0.048462186;0.030163648;0.0073501016;7.9702744;6.856317;17.359194;14.07643;0.0;0.0;0.0;0.0;0.0;0.0;1009.8809;1278.1552;-201.0;2058.3982;1013.4543;-201.0;3187.5637;1352.8644;-201.0 +0.36544022;-10.842525;20.771454;0.09202277;0.0036348824;0.086332925;33.306156;-8.064171;-0.66058874;4.045883;29.53482;0.0105032;1.0488695;4.6400514;-9.525218;17.174637;818.9108;1068.9591;-3.31933;1694.6984;1007.56805;-4.240648;2781.3477;673.0472;-15.085013 +0.7752599;-3.4259202;17.89734;0.07769803;-0.02229082;0.19219673;26.848394;-16.386095;-13.576538;-22.649452;31.554405;0.010842516;0.95982194;5.6223063;-2.8063061;10.234401;999.383;1010.2588;7.6184897;2153.5608;783.7285;-6.3663583;3197.0315;991.32;-9.862994 +0.01094085;2.3312194;9.019928;0.07851147;0.021706333;3.5947585E-4;3.9363081;-6.477246;-0.46089697;3.122504;0.0;0.0;0.0;0.0;0.0;0.0;367.8563;1921.6425;-201.0;1372.6947;969.85443;-201.0;2476.674;1224.0411;-201.0 +0.42783198;2.4149573;23.21271;0.08545085;0.005582189;0.021411167;30.419672;-28.73587;-29.623339;-25.265062;39.214176;0.0016084426;0.18336932;13.154429;-9.392093;19.454885;455.65332;1309.4043;-6.9603996;1385.1061;1100.2964;2.4252949;2809.2493;2019.3086;-26.80631 +0.0066476553;-4.3630013;10.761807;0.013961475;0.031299602;3.389232E-4;-0.2471544;12.933259;10.326785;0.14868481;0.0;0.0;0.0;0.0;0.0;0.0;731.8964;1133.2714;-201.0;1695.2456;973.5717;-201.0;2637.4348;953.1792;-201.0 +0.0054869135;-5.747621;14.384309;0.009942462;0.03926711;1.3432204E-4;2.0971968;9.847552;12.769524;9.738663;0.0;0.0;0.0;0.0;0.0;0.0;876.80206;1503.0148;-201.0;1862.8453;1350.9767;-201.0;2551.3552;2728.0403;-201.0 +0.16664742;1.4511995;5.3802714;0.026264424;0.022806533;0.024237229;-6.748127;13.731591;23.682907;4.02722;0.0;0.0;0.0;0.0;0.0;0.0;1102.0781;1096.8579;-201.0;1845.4147;1539.4609;-201.0;2710.722;853.4217;-201.0 +1.1828039;-6.0712304;13.193202;0.08105373;0.002005088;1.3833338;19.79954;-27.241053;33.915096;-23.995062;46.487915;0.046608016;1.6559626;6.1456122;6.23197;-4.935516;1205.9635;758.429;-31.354546;2193.732;1152.82;-17.355566;3005.9143;665.12646;-20.187061 +0.15693171;-5.552668;12.764613;0.09328437;-0.010566344;0.061257694;37.449738;-27.820791;-11.031094;-4.060516;0.0;0.0;0.0;0.0;0.0;0.0;284.77042;1516.2943;-201.0;1417.8646;1082.6688;-201.0;2078.8167;1378.0663;-201.0 +0.016147794;-38.263165;52.786255;-0.06130736;0.022146022;0.009476662;18.23194;12.54589;9.965999;11.417899;0.0;0.0;0.0;0.0;0.0;0.0;1042.5007;1639.7367;-201.0;2100.1707;1540.1361;-201.0;3135.7898;1496.6587;-201.0 +0.011420866;-22.587523;35.757114;-0.008603306;0.0278014;9.023957E-4;11.86481;12.196788;8.243375;2.6569798;0.0;0.0;0.0;0.0;0.0;0.0;761.1574;1459.0675;-201.0;1916.4713;935.98956;-201.0;3052.2434;891.98145;-201.0 +1.2448673;-1.5030594;13.440948;0.06719432;-0.0047110366;0.72076935;-3.407778;-8.108308;6.8370337;1.455922;41.743713;0.012536682;1.8166459;4.2944264;15.962379;9.142168;1301.8042;679.6701;-14.281265;2361.03;924.47504;-3.2981853;3280.5603;615.30365;-11.552783 +0.11522845;-9.16796;22.345732;0.029097527;6.047543E-4;0.035749823;22.877447;7.609753;-2.4627426;-15.323288;0.0;0.0;0.0;0.0;0.0;0.0;813.09717;1575.4747;-201.0;1738.6554;1447.9979;-201.0;2992.1648;986.9577;-201.0 +1.7699394;-14.365218;19.145954;0.056959804;-0.033813767;0.80041474;9.994205;-22.306879;-3.8016307;-47.11566;50.075832;0.10195401;0.3753531;12.209598;7.601359;2.9668014;975.1657;1077.0697;-17.696056;2015.9874;431.08463;-31.500338;3033.8142;553.75244;-20.14128 +0.112641476;-12.139202;28.583185;0.0705275;0.005214045;0.003495941;41.39992;-5.048124;-9.917237;-12.78408;34.86467;0.0020644672;0.17481051;13.089313;-0.49378577;32.15683;668.86926;1530.7543;-1.1984602;1625.0365;982.314;-10.342553;2846.695;1034.8989;-33.849075 +0.012247632;-4.7260957;13.650479;0.028502755;0.03576592;4.6701278E-4;6.5253224;3.260999;7.415381;4.827518;0.0;0.0;0.0;0.0;0.0;0.0;445.39615;2580.7595;-201.0;1269.6029;1442.4132;-201.0;2239.0173;1272.2184;-201.0 +0.0056343977;1.6861008;5.786381;0.07511565;0.034502532;1.02623686E-4;-0.543209;-0.36147162;-1.3772434;-0.216057;0.0;0.0;0.0;0.0;0.0;0.0;915.5484;3101.511;-201.0;1581.2529;1191.9869;-201.0;2517.7627;1082.5333;-201.0 +0.04891933;-22.27265;26.016708;0.0063301274;-0.007047105;0.011224256;33.68684;17.647112;33.698048;0.56569076;0.0;0.0;0.0;0.0;0.0;0.0;711.3442;1336.6904;-138.43692;1758.7231;1002.4737;-147.0142;2876.1436;878.33984;-144.84189 +0.19336659;-7.4986434;13.268842;0.008218586;-0.005809276;0.080940254;14.42957;5.203809;26.304525;7.658899;30.061728;0.0;0.56977075;2.3494394;1.3461876;5.637284;532.49066;1385.6334;-9.027346;1596.9077;930.1656;-15.207776;2423.2236;1248.2949;-9.65464 +0.21223448;-28.322271;36.05897;0.04393436;-0.0134174125;0.038318425;35.847107;22.56958;31.175444;-6.8460655;34.54822;0.015742311;0.5142268;13.098846;13.187538;30.897669;413.37222;2147.086;0.0;1711.1725;1451.7114;-38.872684;2727.9866;2008.9257;-38.117085 +0.41217923;-13.667403;16.637735;0.08566469;-0.019949498;0.15965001;19.905096;-8.498809;10.433385;-16.174599;39.98439;0.046876132;0.9377759;6.8411236;14.057395;5.364993;554.5472;1450.0293;0.0;1716.8584;1235.4062;-82.10608;2456.512;1211.1182;-79.694725 +0.33870044;-12.180043;27.200968;0.04420294;0.009274974;0.17122966;35.818226;-5.6954613;4.566477;22.386866;36.713455;0.014098649;2.783392;7.4907646;13.324425;26.96012;853.7452;1367.6952;-26.465157;1821.5298;1186.098;-20.649714;2862.3418;1391.3802;-37.9725 +0.003058656;0.83103865;5.608495;0.043239105;0.049479652;5.9816743E-5;-4.9443674;10.745457;9.804942;7.28826;0.0;0.0;0.0;0.0;0.0;0.0;359.70825;2146.1697;-201.0;1472.4698;999.64185;-201.0;2562.4248;3730.335;-201.0 +0.7406326;-20.702307;23.887175;0.06663323;-0.066849224;0.5351898;32.14634;10.529904;5.362635;-44.24716;0.0;0.0;0.0;0.0;0.0;0.0;774.0698;1125.8053;-201.0;2174.5872;587.7576;-201.0;2910.119;2206.9775;-201.0 +0.010631596;-19.765638;32.992607;-0.001879467;0.009353573;0.001654741;8.691654;1.4908857;0.57548946;-0.68216777;0.0;0.0;0.0;0.0;0.0;0.0;455.83826;1041.6564;-201.0;1538.9795;791.14764;-201.0;2696.9436;894.1364;-201.0 +0.004814872;-2.6566815;12.0590925;0.021598766;0.037723925;1.1005241E-4;-0.95388025;-0.6012705;-9.364533;0.375911;0.0;0.0;0.0;0.0;0.0;0.0;584.0235;910.45074;-201.0;1739.4769;985.06006;-201.0;2794.4968;3079.3997;-201.0 +0.013922195;-23.37988;38.591164;-0.02771377;0.014596888;0.005344864;16.749977;7.636322;5.2584014;11.346238;0.0;0.0;0.0;0.0;0.0;0.0;818.8303;1988.1959;-201.0;1805.1393;1435.6005;-201.0;2559.6624;2378.6582;-201.0 +0.21626739;-4.83544;8.393247;0.07523667;-0.017540911;0.07866796;25.320564;-10.780961;49.215183;5.207555;0.0;0.0;0.0;0.0;0.0;0.0;620.183;892.7554;-201.0;1722.5077;566.9373;-201.0;2643.3425;722.88696;-201.0 +0.0060401116;-10.63329;20.890907;0.0068702064;0.03393655;3.1105513E-4;6.9592648;14.25602;11.5391035;12.847974;0.0;0.0;0.0;0.0;0.0;0.0;951.5455;1111.8898;-201.0;1947.087;906.8501;-201.0;3030.4426;897.6873;-201.0 +0.007352819;-30.495651;42.13489;-0.0576801;0.03060405;0.0036327995;9.091;21.147802;18.768705;17.755484;0.0;0.0;0.0;0.0;0.0;0.0;1117.9648;1263.0239;-201.0;2176.1104;2098.4016;-201.0;2967.1895;1104.3486;-201.0 +0.07486615;-13.646985;23.908554;-0.024564305;0.009567286;0.018111244;8.787599;-3.1864846;-0.16169651;5.101419;0.0;0.0;0.0;0.0;0.0;0.0;519.91797;1168.6421;-201.0;1537.653;1117.211;-201.0;2473.5632;911.80206;-201.0 +0.648464;1.2345935;0.46411;0.10017028;-0.025933402;0.43583977;3.868307;-37.52464;10.526465;-54.9734;51.99323;0.007924898;1.469285;2.3923008;3.4100106;-9.178602;1251.6201;927.7698;-14.500829;2166.1707;770.145;-9.626327;3109.904;717.88556;-2.8146255 +0.13325953;-13.431946;21.209162;0.0074865236;0.017435277;0.018727517;-9.726013;50.843784;6.1412807;40.30136;0.0;0.0;0.0;0.0;0.0;0.0;647.9134;1109.8451;-201.0;1741.3138;641.31537;-201.0;2751.1975;846.95264;-201.0 +0.15356034;-9.261985;17.525984;0.14635898;0.017009111;0.023602583;-8.946229;14.019961;-27.2518;-9.094269;0.0;0.0;0.0;0.0;0.0;0.0;1114.2393;1067.2797;-201.0;2007.9266;1205.5587;-201.0;2929.2576;770.29486;-201.0 +0.07884733;0.87657064;1.7294289;0.07032312;0.0051481323;0.005944434;-4.4405627;5.905129;11.409179;-6.9079766;0.0;0.0;0.0;0.0;0.0;0.0;567.58856;1205.8771;-201.0;1714.3602;817.7478;-201.0;2681.2122;738.554;-201.0 +0.3007455;-12.686078;16.27636;0.056721013;-0.007222729;0.095065676;23.538248;1.6748853;32.33827;5.460695;35.296318;0.025035562;0.45507923;8.748337;18.285593;14.170532;342.79578;1265.9921;-5.81279;1578.8278;753.99896;-33.336926;2275.3203;1437.642;-20.64106 +0.5356297;-17.937618;29.103224;0.08672914;-0.048612073;0.17172082;33.25283;6.898769;-16.281282;-60.413208;40.162994;0.00451157;0.20188493;9.755397;18.640724;30.321404;888.3343;1491.4103;-7.1981525;1797.1387;1189.5377;-35.279743;2934.0623;543.0297;-18.878832 +0.36845073;8.084366;-0.8805203;0.061133992;0.01329891;0.062368054;-18.504488;-22.227285;-11.897881;-22.464903;60.427998;0.051580276;2.7841415;-4.866469;7.357555;4.889582;1311.7352;819.9182;0.0;2392.2988;738.43677;-9.062628;2998.2605;3122.3984;-6.5946555 +0.15704465;-1.1289023;9.65366;-0.017565012;0.017604023;0.020775082;-6.499906;9.660039;8.642299;3.3849041;0.0;0.0;0.0;0.0;0.0;0.0;735.1895;1328.3676;-201.0;1711.5103;1171.2975;-201.0;2398.908;2854.6143;-201.0 +0.30453834;-16.35824;32.992477;0.06625921;-0.024952605;0.05870502;42.573868;10.240172;0.47913823;-12.810306;30.474092;0.0044029043;0.19924831;8.76047;-6.6445255;31.38939;567.53766;1395.9639;-4.274694;1464.3032;2937.5833;-17.547865;2476.4006;790.6165;-32.323536 +0.20275487;19.3539;-16.11709;0.028407281;0.016155394;0.03836818;-28.438065;15.194282;-1.8270941;-8.077244;0.0;0.0;0.0;0.0;0.0;0.0;428.56458;1374.232;-137.20186;1303.7789;959.70123;-145.68233;2342.495;860.7895;-144.37938 +0.008303343;-8.725763;18.4393;0.009134832;0.036243413;3.9172443E-4;8.933838;11.461228;13.203728;12.770779;0.0;0.0;0.0;0.0;0.0;0.0;1051.1827;1376.5345;-201.0;1842.4448;1903.1383;-201.0;2736.3708;1011.15234;-201.0 +0.03166333;-1.7662816;9.36538;0.056002665;0.023908457;0.0020992253;17.91275;-10.824776;2.2699564;7.827521;0.0;0.0;0.0;0.0;0.0;0.0;847.08466;1498.3239;-201.0;1703.6122;1611.3317;-201.0;2508.481;1517.7745;-201.0 +0.19850999;-9.562558;31.142786;0.054279923;-0.0011926278;0.017510345;43.4805;-6.1299834;-7.5642333;-1.094083;24.502539;0.004236366;1.0025393;5.6313;4.821862;21.976076;692.59515;1582.233;-5.7146225;1435.4178;1395.5248;-9.423603;2369.5938;1061.8307;-23.302628 +0.0016352516;5.2015686;0.19913292;0.070385896;0.0469861;3.2726482E-5;-3.1884615;1.4600945;2.406497;5.2668242;0.0;0.0;0.0;0.0;0.0;0.0;542.7933;5136.2017;-201.0;1437.3853;1914.0967;-201.0;2180.5479;988.39984;-201.0 +0.43463954;-6.0312867;25.867998;0.104100846;-0.004442996;0.08951521;34.310673;-13.258306;-24.58539;-20.082144;37.456158;0.002458699;0.54408115;9.186309;-2.8197346;15.927451;733.9915;1323.1577;-0.06300449;1762.3326;1264.4625;-18.264753;2903.596;833.0925;-27.368248 +1.3016492;-6.7734313;10.373912;0.08736817;0.0034162204;0.6843469;15.916699;-44.04184;-10.029592;-26.766138;44.546463;0.03727294;1.5881995;8.307866;21.368052;9.061074;1017.084;1638.9844;-6.9275174;1925.3232;951.7032;1.8301958;2965.0735;787.062;5.3794594 +0.20337965;19.580212;-16.006342;0.0886701;0.022112206;0.031232782;-22.651932;-4.381067;37.91544;-29.925772;0.0;0.0;0.0;0.0;0.0;0.0;1174.3007;177.65028;-201.0;2402.2214;2043.0443;-201.0;3094.3372;933.032;-201.0 +0.0016309953;2.9207432;0.4584601;0.088062994;0.059800062;1.7457074E-5;-0.21423171;-2.978474;1.9424291;-2.4490979;0.0;0.0;0.0;0.0;0.0;0.0;1043.2181;1583.656;-201.0;1882.7056;714.91864;-201.0;2677.217;1469.2874;-201.0 +0.11473528;11.85434;1.7557226;0.09383882;0.02555356;0.011371847;-0.74775964;-30.641678;9.519326;-0.052541096;0.0;0.0;0.0;0.0;0.0;0.0;800.48114;1441.9409;-201.0;1796.5698;1983.3163;-201.0;2489.8818;1259.1241;-201.0 +0.2372452;-14.555295;24.188858;0.089838386;-0.04155985;0.094532214;44.284317;-3.0775769;6.6319165;-31.877016;0.0;0.0;0.0;0.0;0.0;0.0;705.9553;1213.8461;-201.0;1709.6302;795.90717;-201.0;2953.4192;547.21716;-201.0 +0.002318297;3.754956;2.1592424;0.05938563;0.043169778;4.137411E-5;-4.1275654;-1.1700646;-5.0035453;2.4650073;0.0;0.0;0.0;0.0;0.0;0.0;676.6611;1579.0703;-201.0;1561.7067;1509.293;-201.0;2392.7346;1297.8063;-201.0 +0.08685073;-11.18092;34.334015;0.01641609;0.007143947;0.023527443;46.06436;0.9378862;-10.404456;14.949638;21.031988;0.018280469;2.1087232;3.5756989;-4.528612;27.793264;574.6138;1674.0264;-16.492632;1455.0326;1144.34;-21.082144;2684.3367;930.0552;-37.58639 +0.0014014547;4.036266;5.1771934E-7;0.09129077;0.062243715;2.029081E-5;-3.0113223;-0.023218216;-0.7501607;-0.038488556;0.0;0.0;0.0;0.0;0.0;0.0;417.2656;1810.1726;-201.0;1197.3853;1696.0927;-201.0;2027.94;1423.5862;-201.0 +0.085991405;-18.00712;25.613379;0.038313244;-0.020633463;0.020591263;40.265804;10.291882;21.973738;-19.96102;0.0;0.0;0.0;0.0;0.0;0.0;727.7154;1490.974;-133.17978;1810.8505;1121.8177;-139.76631;2852.5098;635.41205;-143.16327 +0.12195897;4.489878;4.2290998;0.011435212;0.01306015;0.013377451;-10.945079;-4.2446146;23.48583;-16.265566;48.412273;0.06578268;0.7594447;11.432868;12.763283;10.013774;758.33795;1243.5616;0.0;1502.4595;879.11237;-30.930176;2484.6738;1192.55;-30.110481 +0.037330966;0.6591289;8.903522;0.030102128;0.025668746;0.0023984106;6.295564;-22.726282;7.371138;-5.9812317;0.0;0.0;0.0;0.0;0.0;0.0;590.1962;1338.5552;-201.0;1534.0928;1130.6736;-201.0;2581.632;1572.3295;-201.0 +0.0064833933;-14.471345;27.397589;0.007821686;0.025525244;3.4270438E-4;7.5510726;13.044148;3.5318527;8.534495;0.0;0.0;0.0;0.0;0.0;0.0;362.28235;1547.1674;-201.0;1357.3876;1055.9132;-201.0;2466.8801;986.2644;-201.0 +0.37908256;-4.9731174;17.545494;0.12609868;0.0029750261;0.22632153;-0.5470211;-6.5881906;-15.454749;-9.546512;45.562313;0.07307849;3.7008865;10.403011;13.129277;12.038414;1196.3348;952.2205;-21.624868;2272.7952;1174.5015;-20.899508;2947.1487;1547.4594;-22.137007 +0.027272603;7.850445;1.1230394;0.01825711;0.05386292;0.0011374216;-22.670609;-3.2367208;12.451435;8.562446;0.0;0.0;0.0;0.0;0.0;0.0;764.1307;536.85614;-201.0;1745.4395;2017.2719;-201.0;2419.6587;1381.1729;-201.0 +0.1889295;-2.7566578;8.212753;0.10778985;0.0035861267;0.03302334;16.853569;-44.3978;10.318696;-22.82612;41.000927;0.0062352773;0.9713289;9.840545;15.650945;12.692677;940.8669;1123.8937;0.0;1924.4281;990.3633;-2.9700282;2836.305;799.7603;-6.6150784 +0.011506123;-3.674075;15.167752;0.015208229;0.037397943;6.479044E-4;3.6806715;1.5124019;-0.011690696;3.160155;0.0;0.0;0.0;0.0;0.0;0.0;650.36395;1344.7686;-201.0;1298.8555;2764.9597;-201.0;2157.2727;1304.6161;-201.0 +0.00505751;-0.3566686;7.312822;0.045839716;0.032069292;1.4793941E-4;2.5823839;0.6277558;-4.8038096;-0.5429506;0.0;0.0;0.0;0.0;0.0;0.0;705.2164;1308.2245;-201.0;1680.9073;1121.6136;-201.0;2644.628;959.65436;-201.0 +0.13128416;-19.704485;29.826082;0.06256165;-0.034333896;0.012918826;43.55772;16.399498;0.27775535;-17.48578;22.660925;0.0072388686;0.5582808;3.6711543;6.695791;28.52391;925.8974;1218.8158;-6.2343197;2360.8508;828.57587;-21.454187;3345.4033;1210.4083;-24.633013 +0.5590515;-1.2454524;9.5862;0.05259684;0.015451853;0.12408785;-9.876472;15.92471;-6.9870987;-4.4914775;43.445225;0.0;0.0;4.19897;9.637312;7.492525;960.292;962.71173;-77.532684;1986.3663;909.5339;-73.14149;2857.411;901.4834;-76.10282 +0.27869853;-12.376045;23.326227;0.06680464;-0.028819032;0.04080394;44.31476;-13.542792;4.1528745;-25.025263;26.459787;0.008021477;0.62055063;7.494346;-3.220422;18.646929;501.21533;1503.2792;3.7005744;1518.3667;926.7813;-5.755104;2694.8018;731.41705;-14.978663 +0.017276125;-2.3643658;14.639671;0.023211598;0.03148668;0.0010945387;12.038003;-5.518336;6.630878;16.722809;0.0;0.0;0.0;0.0;0.0;0.0;1024.0438;1198.4509;-201.0;1893.9155;1355.352;-201.0;2500.0154;2095.9421;-201.0 +0.24586682;7.6846695;-2.7743523;0.02059521;0.026942981;0.058003023;-11.334869;1.5288731;27.550024;-3.7477262;0.0;0.0;0.0;0.0;0.0;0.0;1048.3916;720.6905;-201.0;2009.645;1021.022;-201.0;2735.3645;1316.1743;-201.0 +0.10212767;9.87573;-6.353695;0.07231833;0.007895975;0.011339922;-19.658699;9.244672;0.14018314;-26.064253;0.0;0.0;0.0;0.0;0.0;0.0;1237.3335;1251.6035;-201.0;1909.2574;997.6077;-201.0;2822.3105;1148.3185;-201.0 +0.00544009;-14.993224;26.59464;-0.043500047;0.047279403;3.2773768E-4;-2.4977686;10.964278;12.242737;18.64884;0.0;0.0;0.0;0.0;0.0;0.0;990.63995;941.03046;-201.0;2040.3717;776.5166;-201.0;3038.9631;714.4069;-201.0 +0.9659689;-6.8141837;20.907068;0.09045472;-0.022413401;0.34700844;24.936478;-6.601797;-16.834427;-35.57703;36.892483;0.011071123;0.4746141;11.554248;-10.537942;12.786171;262.6299;1452.7887;0.0;1156.3666;1006.76337;3.232072;2457.6912;437.0387;-13.760722 +0.29554555;-6.4082828;15.169942;0.10554394;0.005577348;0.09341252;25.116468;-33.260338;6.3505044;-45.450592;39.5744;0.010870452;1.12642;6.1523957;-1.5026884;15.820596;487.7999;1825.2164;0.0;1376.5695;1239.5342;-11.216854;2379.0908;906.939;-23.36905 +0.27202067;-15.198845;23.930756;0.07751379;-0.01984683;0.1663044;24.010149;3.3464491;13.744573;-17.316689;38.180584;0.022817457;3.5768127;11.033467;8.675626;34.05589;608.28143;1722.2803;-15.529232;1866.87;1146.2104;-38.357365;2597.6438;1248.5798;-42.190235 +0.013366985;8.050103;-4.643242;0.05533101;0.03726548;7.166777E-4;-6.7483993;-2.0536664;19.41064;1.8700489;0.0;0.0;0.0;0.0;0.0;0.0;1022.2925;1209.183;-201.0;2064.5735;1216.6826;-201.0;2776.5056;1919.2826;-201.0 +0.71431226;8.54097;-4.068085;0.035755347;-0.008411128;0.1707799;-3.086114;-17.328098;12.865764;-2.2091331;0.0;0.0;0.0;0.0;0.0;0.0;1189.9575;1434.5557;-201.0;1906.5546;1391.9014;-201.0;2801.0989;1115.3477;-201.0 +0.10497892;-7.6965585;18.239939;0.08491287;0.0089722825;0.016684039;14.985778;1.5108243;-0.2407875;-8.649481;33.677124;0.0;0.0;-0.8623401;-4.028101;3.1833863;369.06754;1107.2028;-64.859604;1315.9995;753.8899;-58.756348;2411.6116;582.0513;-66.98186 +0.028313665;-19.338472;42.819706;-0.030500965;0.02464225;0.0048053493;31.218506;7.09522;14.113231;32.215775;0.0;0.0;0.0;0.0;0.0;0.0;1244.3883;1813.6835;-201.0;1673.0753;1212.0293;-201.0;3054.6296;749.5256;-201.0 +0.6436165;-17.663786;18.939074;0.0651421;-0.05625686;0.24128865;31.340631;5.039765;11.855937;-48.159622;33.997543;0.014177629;0.5645171;10.72969;4.4753075;27.080015;864.99176;1065.6642;0.12994003;2235.1494;368.79544;-13.558808;3259.3398;976.965;-15.033591 +0.8295415;-12.300847;26.040024;0.08239321;-0.04999247;0.39493263;31.053991;-3.8696682;-13.871715;-75.25154;38.753025;0.004541649;0.35528192;9.043689;1.3070936;24.023428;993.4687;1116.8203;8.682935;1691.3517;3125.6191;-19.83818;2694.5645;437.41702;-16.636053 +0.6766967;-0.47634783;14.137599;0.085329704;-0.006781014;0.2074645;20.763529;-35.392277;-3.898676;-29.742815;38.220844;0.013724471;1.0463973;10.685287;-9.726174;0.071281396;425.01187;1298.3087;-1.8907856;1531.1573;1086.2305;9.101453;2266.6067;1817.0929;-1.380488 +0.012696911;6.210607;-3.0806086;0.013249456;0.041449714;0.0022468718;-7.955698;2.4455984;28.356956;-4.8356752;0.0;0.0;0.0;0.0;0.0;0.0;884.7139;1260.8463;-201.0;1731.3273;1405.663;-201.0;2590.5088;1885.9762;-201.0 +0.024867048;15.898295;-12.25367;0.082303084;0.018392652;0.001512421;-12.600635;-17.3686;30.85079;-16.12132;0.0;0.0;0.0;0.0;0.0;0.0;1190.4694;336.16284;-201.0;2191.612;1736.7858;-201.0;2745.1091;2424.8037;-201.0 +0.010240136;-11.997807;27.502768;-0.0012631273;0.04166193;5.796183E-4;5.476546;1.7876396;-1.8122045;11.288175;0.0;0.0;0.0;0.0;0.0;0.0;745.11224;1922.1832;-201.0;1329.3549;1430.3885;-201.0;2454.717;1139.4233;-201.0 +0.0050353534;-4.0647483;13.560382;0.015916508;0.048415754;1.2388905E-4;-4.1999564;10.578763;7.1189957;10.59893;0.0;0.0;0.0;0.0;0.0;0.0;781.1779;1532.7894;-201.0;1535.788;1140.0674;-201.0;2504.621;970.42773;-201.0 +0.32969484;-9.547673;11.243858;0.123189546;-0.0126445005;0.046782497;23.458008;-8.013105;30.124315;-51.875057;37.616688;0.007551569;0.46172166;13.327704;16.827047;17.632708;889.89307;1460.9828;-16.957159;2090.0388;654.56866;-25.274313;3093.5427;1226.5615;-17.551764 +0.74167544;-4.572111;11.237004;0.06817967;0.0030532398;0.46675014;-6.764225;-1.085331;-10.481137;-27.948694;50.394867;0.041129425;1.4814177;9.460673;9.801589;7.27343;1010.76154;980.6509;-9.866768;2040.6997;1244.2222;-20.68196;2778.8704;702.63885;-19.789965 +0.11845402;-4.892386;11.176925;0.06621062;0.019125888;0.011775841;-18.94545;34.844204;-15.664731;-1.4247704;0.0;0.0;0.0;0.0;0.0;0.0;1409.68;1306.3491;-201.0;2150.1619;1514.2833;-201.0;2933.9443;3082.1628;-201.0 +1.3169045;0.16732566;11.382889;0.07400114;0.002645906;0.72774744;7.1612334;-18.86099;4.0433645;-0.6397845;0.0;0.0;0.0;0.0;0.0;0.0;165.34673;1639.8066;-201.0;1292.3248;846.2995;-201.0;2358.5913;885.38885;-201.0 +0.24264283;-25.381552;39.90633;0.09564572;-0.053803127;0.06590467;37.783596;21.986029;-17.67365;-45.503235;38.439457;0.0105572445;0.82382375;8.89886;7.5932508;45.517956;681.134;1433.5029;-5.8238354;1910.9799;1482.9175;-32.634808;2920.4036;1281.1648;-44.6775 +0.12734757;13.818757;-2.181388;0.08004127;0.0065760836;0.012854991;-19.113327;-8.690547;6.9037933;-9.254928;0.0;0.0;0.0;0.0;0.0;0.0;1149.9335;538.55597;-201.0;2129.8953;1512.022;-201.0;2754.8643;1229.6622;-201.0 +0.33124986;-8.573731;22.160177;0.055309743;-0.0026268195;0.1506588;25.810984;-11.7407875;-0.57689995;-11.022487;40.21994;0.03430732;1.9609829;5.334408;-4.722255;12.877808;1014.4266;1187.7682;-13.927072;1703.1339;2920.202;-22.419168;2821.9043;1291.4316;-30.647385 +0.047069173;13.733592;-9.64605;0.061567012;0.03472354;0.004448664;-15.710574;1.3115643;24.311686;-15.07857;0.0;0.0;0.0;0.0;0.0;0.0;1292.3839;1007.23444;-201.0;2261.1707;1502.6025;-201.0;2835.388;1125.4993;-201.0 +0.2586994;-17.99954;33.72501;0.07410806;-0.023093255;0.09562904;35.713535;13.897255;-3.2357693;8.7211275;34.11635;0.0095337825;1.0797071;6.267119;9.395447;36.86619;383.86716;1224.8912;-0.48266277;1476.027;857.00854;-20.129438;2694.5857;1160.4865;-37.34885 +0.018958883;-34.517437;46.459015;-0.048483554;0.028471872;0.008473269;12.794032;12.075173;13.756715;12.559509;0.0;0.0;0.0;0.0;0.0;0.0;1094.8148;1592.7432;-201.0;2151.2173;1405.2606;-201.0;3348.2415;1305.3181;-201.0 +0.2836994;6.9615364;4.619759;0.04793306;0.007173373;0.046045568;-16.96958;-13.889789;-10.884171;-15.06643;53.598873;0.014599694;0.71823764;2.5648396;-4.5712857;2.6119225;1178.0806;722.9107;-18.340271;2295.0496;1303.1385;-28.107641;2861.5664;1586.6747;-20.952194 +0.56960994;-7.6261373;14.12233;0.04012248;0.0076014623;0.24962354;8.582706;13.774353;21.020674;4.2413707;34.55232;0.0;4.195941;8.104455;-0.05412491;22.062347;591.3599;1001.3367;-2.557297;1533.5742;673.83;-9.883263;2542.6238;600.4991;-19.020962 +0.009114138;-12.534907;25.511108;6.0523238E-5;0.018024752;3.9681283E-4;2.9827464;5.180922;-3.5775995;-5.609794;0.0;0.0;0.0;0.0;0.0;0.0;497.5005;939.4854;-201.0;1556.6558;869.31445;-201.0;2526.1824;1698.8114;-201.0 +0.34756204;-16.84461;17.065393;-0.016862445;-0.022600388;0.18234074;34.97988;8.603839;29.852903;8.4243555;0.0;0.0;0.0;0.0;0.0;0.0;436.0121;1129.077;-133.62718;1877.211;698.12946;-143.93953;2518.9797;2286.6677;-139.33417 +0.0065041264;1.1676579;4.9765515;0.05329505;0.03984678;1.8474345E-4;1.1885695;2.9406822;4.9495234;-8.929954;0.0;0.0;0.0;0.0;0.0;0.0;732.2403;1417.2042;-201.0;1584.9137;1135.9247;-201.0;2637.2327;797.6831;-201.0 +0.2137401;-10.972749;12.011043;0.08781657;-0.02604019;0.021698559;12.447223;-2.2147934;20.839277;-36.222694;0.0;0.0;0.0;0.0;0.0;0.0;557.69916;1270.6139;-132.86041;1888.2201;417.609;-139.69612;2873.5068;1026.2747;-137.64586 +0.03640124;1.3632039;4.5951447;0.016321382;0.01843021;0.0020428803;8.45461;-13.643397;15.162992;-2.0755281;0.0;0.0;0.0;0.0;0.0;0.0;591.3311;1092.4467;-201.0;1570.607;945.04474;-201.0;2508.1138;1137.6085;-201.0 +0.008016239;-8.460616;19.51552;6.518541E-4;0.03237694;3.9518182E-4;2.405011;6.5898323;5.9587626;7.328879;0.0;0.0;0.0;0.0;0.0;0.0;711.4714;1320.0444;-201.0;1783.723;1098.2816;-201.0;2743.1443;917.43146;-201.0 +0.002881391;1.3329134;4.4676156;0.06219451;0.041819096;8.77676E-5;0.074560486;1.776838;-6.1440234;-2.3858416;0.0;0.0;0.0;0.0;0.0;0.0;589.6615;1359.1749;-201.0;1459.6744;1273.9418;-201.0;2372.8445;1042.7305;-201.0 +0.0023414067;5.512959;-0.059339494;0.09318627;0.057427082;2.623423E-5;-7.603559;-0.40235755;-0.14762555;-0.48368382;0.0;0.0;0.0;0.0;0.0;0.0;1203.0894;1030.6227;-201.0;2169.513;1047.5431;-201.0;3095.568;975.1626;-201.0 +0.005499081;1.7266906;3.239949;0.051170673;0.037772063;1.20997836E-4;-0.5047829;-1.5153519;3.7336853;4.3053575;0.0;0.0;0.0;0.0;0.0;0.0;620.5914;3627.702;-201.0;1387.3224;1453.1432;-201.0;2317.6199;1356.3021;-201.0 +1.3951145;-5.467438;11.722362;0.04851583;-0.022952406;1.1348472;16.323853;-16.322786;-7.3749866;-12.029012;40.17306;0.12170977;2.8062937;4.0953355;8.507356;12.2051325;679.1143;1533.6576;4.7040424;1950.495;890.0386;-5.9011917;3010.863;2728.4026;-3.1701412 +0.05646171;-1.1020776;18.654661;0.0062061124;0.038993493;0.0070516677;26.44278;-12.92669;-2.0987966;30.02372;0.0;0.0;0.0;0.0;0.0;0.0;796.2896;1417.5684;-201.0;1636.4082;1246.0194;-201.0;2786.2874;1417.8212;-201.0 +0.27874652;1.8734785;3.6132565;3.3909455E-4;0.0017478421;0.052088827;-14.869906;23.210848;3.5843995;0.12412834;36.679443;0.0;0.0;6.984371;17.024597;21.681269;1010.73114;1079.102;-13.349294;1791.9395;2230.4507;-9.992364;2614.8037;910.446;-21.40425 +0.5763068;-6.8139777;12.418965;0.069812864;-0.01920066;0.17881908;6.978102;-7.014439;23.318323;-27.305542;42.08919;0.01700324;1.8476967;7.0732174;22.07616;6.9060783;1211.5902;1568.2975;-83.056;2055.6392;699.46075;-77.80679;3449.3096;944.92896;-77.89458 +0.002702824;5.836272;0.5604479;0.04937796;0.060740937;3.633588E-5;-8.044979;0.43044028;0.5443754;5.262807;0.0;0.0;0.0;0.0;0.0;0.0;713.2895;1171.5713;-201.0;1645.4066;1230.5526;-201.0;2437.6433;1046.0947;-201.0 +0.008272021;-3.2239873;12.650905;0.02242046;0.035569478;2.30777E-4;4.7167463;3.665268;5.032188;5.9966664;0.0;0.0;0.0;0.0;0.0;0.0;657.1413;1527.6913;-201.0;1602.1693;1184.2251;-201.0;2500.252;848.79364;-201.0 +0.0017270589;3.6733973;0.1971488;0.08829131;0.059075058;1.9477544E-5;-1.7074088;-1.893037;-0.18508725;-1.3938936;0.0;0.0;0.0;0.0;0.0;0.0;825.30194;1850.1039;-201.0;1499.2885;810.3722;-201.0;2493.897;1684.1523;-201.0 +0.0064422465;-16.834036;29.726568;-0.005739825;0.03740571;3.3312754E-4;-1.3202378;7.1406493;4.504725;7.273145;0.0;0.0;0.0;0.0;0.0;0.0;820.154;2193.1895;-201.0;1562.6217;1225.2012;-201.0;2786.9407;727.7678;-201.0 +0.62903553;-14.206466;16.785444;0.15246809;-0.0068294373;0.084054865;9.7831745;-15.649446;-36.780415;-84.81448;46.378162;0.0032928865;0.286056;14.689349;16.273077;30.509363;660.49286;1337.673;5.741736;1666.5332;1197.7587;-27.698639;2731.911;541.1047;-24.653666 +0.37424836;-6.2620316;9.775994;0.06905558;-0.004361225;0.12318229;22.335207;-11.063483;21.314056;22.801474;37.190434;0.007919227;0.91050774;8.842069;15.377776;11.934056;331.79288;1229.253;0.0;1448.0919;657.0197;-41.266087;2310.2146;966.6086;-21.425919 +0.15975761;-12.2372055;31.613264;0.08062374;-0.0018708367;0.006329125;43.010548;-4.9300246;-14.778607;-21.434381;34.585613;0.0024741562;0.18231082;12.840249;-2.6739838;16.184538;565.65686;1992.8539;2.2145493;1307.7015;2352.748;-6.4424305;2054.4856;1319.0194;-15.716633 +0.0037587557;-5.0715427;15.186382;0.0023834333;0.039212734;1.9731035E-4;-2.6862476;6.5617447;8.572238;9.8131895;0.0;0.0;0.0;0.0;0.0;0.0;809.16254;1297.848;-201.0;1769.3912;1151.4049;-201.0;2522.6565;726.4033;-201.0 +0.006469472;-8.75427;16.571863;0.018399106;0.022163028;1.91255E-4;9.701238;10.249837;3.1122284;2.3836842;0.0;0.0;0.0;0.0;0.0;0.0;500.0607;1415.7109;-201.0;1527.3925;1160.4265;-201.0;2415.7883;1178.2496;-201.0 +0.0032302989;0.04959321;6.7877727;0.03267325;0.046315458;1.3636782E-4;-4.189516;9.293431;5.1470203;2.7978127;0.0;0.0;0.0;0.0;0.0;0.0;906.2031;892.1006;-201.0;1822.3881;1453.0382;-201.0;2532.8342;1167.2848;-201.0 +0.08643737;-32.342026;37.32757;0.0014598122;-0.007154882;0.0119744195;39.545956;26.459436;28.03987;17.118166;23.619612;0.0039695813;0.16963534;5.0669284;16.145094;48.071625;613.79376;2029.0272;-18.40231;1790.1876;1621.9106;-38.258495;2999.927;1109.1798;-41.651066 +0.85198706;-3.9121158;5.423801;0.110951684;-0.006602788;0.39856735;15.565178;-20.03451;19.080126;-8.94347;38.38952;0.013367223;1.0065091;3.939622;16.636354;14.361847;970.88043;1344.5924;0.0;1553.1234;1296.8278;-78.12243;2628.584;973.0007;-78.6171 +0.09354388;-14.424904;17.899836;0.034320135;-0.011774485;0.022000598;23.854815;12.543072;43.91817;-2.6794097;0.0;0.0;0.0;0.0;0.0;0.0;383.0732;1061.0079;-136.19409;1601.557;711.8409;-139.86009;2299.1267;1029.609;-137.4638 +0.008866929;-4.8961205;12.665906;0.037633996;0.031377744;3.246528E-4;9.699994;5.439176;3.5461166;7.9653187;0.0;0.0;0.0;0.0;0.0;0.0;857.37256;1554.7052;-201.0;1706.8341;1260.3163;-201.0;2747.1445;957.0305;-201.0 +0.06237236;-14.620706;20.049227;0.06517952;0.023837686;0.018045174;25.485853;4.360627;25.743185;16.331404;0.0;0.0;0.0;0.0;0.0;0.0;941.8943;1274.1558;-201.0;1786.4908;1781.8392;-201.0;2585.2957;1942.2709;-201.0 +0.014357671;2.5110137;4.9735584;0.010219269;0.05710557;5.935672E-4;-10.450738;-3.9812317;10.229474;12.08799;0.0;0.0;0.0;0.0;0.0;0.0;769.5867;791.66925;-201.0;1930.0923;897.13043;-201.0;2826.1584;1892.0306;-201.0 +0.048594996;-10.182079;27.82966;0.033179957;0.009114742;0.008190404;34.291874;-1.6553774;-5.158678;14.644524;0.0;0.0;0.0;0.0;0.0;0.0;687.5423;1717.4489;-201.0;1508.1276;1129.3375;-201.0;2755.5574;1062.7069;-201.0 +0.07577273;-0.050777275;3.976964;0.09558296;-0.006053828;0.018604187;-5.756909;-6.4313865;-12.27493;-19.598349;42.94301;0.0;0.0;0.12183422;0.61334586;13.367519;564.6324;1005.582;0.0;1805.7373;756.6121;-67.872894;2783.7468;910.42755;-71.31863 +0.008222777;-3.1943321;11.262582;0.011388287;0.03960273;4.5937346E-4;-7.295613;8.552479;10.36404;5.7224565;0.0;0.0;0.0;0.0;0.0;0.0;689.7126;1109.8225;-201.0;1521.8964;1208.5438;-201.0;2405.1575;861.0544;-201.0 +1.9731716;9.893506;-0.28453827;0.0679095;-0.013250883;1.1846251;-19.81348;-35.854607;-13.872826;-36.05955;51.988483;0.010058861;1.0598923;12.925624;5.061358;15.93764;818.4594;1115.547;9.962409;1832.3848;999.0983;2.6349738;2819.0107;2388.7034;-3.7097044 +0.51957184;-7.999492;12.532121;0.074705616;-0.006647073;0.2108845;12.082341;-20.272308;25.318094;-33.35327;45.5313;0.032298703;0.6712473;5.532528;17.246595;11.139283;1199.7179;1651.3248;-31.66893;1822.8324;1072.7711;-24.59315;2962.5588;1256.3094;-25.56162 +1.4873346;-3.6677234;13.137492;0.12007919;-0.02171038;1.044764;25.11402;-35.465862;-8.163743;-44.855213;36.872498;0.011239603;0.79470354;0.23423362;-5.627643;9.7865715;1095.8807;1071.6112;0.77738243;2126.0496;767.59155;-3.3350697;3227.0605;441.25928;-4.9758015 +0.17539859;-16.443926;26.309198;0.107702754;-0.010098338;0.028187366;29.131083;-2.74141;9.740882;-7.587444;36.88136;0.007722053;0.44477394;11.348815;9.092156;24.70246;477.03677;1350.5201;-5.1943784;1664.6302;852.58795;-25.43981;2772.7668;3027.1453;-29.896837 +0.010084207;-19.149622;35.26726;-2.9488964E-4;0.027676744;7.197913E-4;16.078962;12.031974;-2.4709775;-0.046973407;0.0;0.0;0.0;0.0;0.0;0.0;370.45224;1816.8115;-201.0;1317.7448;1352.208;-201.0;2614.7168;1016.42096;-201.0 +0.009275884;-3.2811038;13.863609;-6.472091E-4;0.041035865;3.4964024E-4;-0.8991266;-5.8662133;7.1078353;11.387489;0.0;0.0;0.0;0.0;0.0;0.0;665.9102;1462.459;-201.0;1403.4808;1387.836;-201.0;2317.719;2203.8662;-201.0 +0.118884705;0.059410095;1.9872674;0.04599941;0.004804064;0.012361597;2.3311872;2.2955747;12.428662;-16.249235;0.0;0.0;0.0;0.0;0.0;0.0;644.95184;1263.3712;-201.0;1702.6893;807.7879;-201.0;2729.2517;465.10596;-201.0 +0.029234478;-21.598837;35.32015;-0.03743719;0.020992799;0.00587013;29.865644;13.942677;11.668655;11.974507;0.0;0.0;0.0;0.0;0.0;0.0;1120.2765;1176.1378;-201.0;2321.3655;1196.2734;-201.0;3464.4436;1297.9414;-201.0 +0.0076770354;1.7284884;4.1371307;0.045681477;0.036613;2.0593319E-4;1.3388573;-3.5508068;-0.752341;7.8563952;0.0;0.0;0.0;0.0;0.0;0.0;603.3841;1342.108;-201.0;1489.9122;1346.9282;-201.0;2315.6091;1281.042;-201.0 +1.7255214;-6.776891;8.222774;0.026874527;-0.013726161;1.1595849;-2.513357;-42.74243;-7.1615205;-44.342255;57.288006;0.003969256;0.42684153;14.013218;-5.884928;0.7906806;842.50323;1059.5687;0.0;1786.2631;796.39886;-16.279947;2755.3206;599.1242;-21.214888 +0.0034445154;2.5911353;5.622518;0.050191227;0.051400214;7.2500196E-5;-5.9693913;3.1285136;1.4320136;3.0466812;0.0;0.0;0.0;0.0;0.0;0.0;953.08185;1335.0978;-201.0;1665.43;1020.82715;-201.0;2662.404;1196.682;-201.0 +0.0024972816;7.2855163;-3.5499566;0.09056916;0.055917263;5.0067963E-5;-8.978034;-1.3894666;7.633583;-7.3373337;0.0;0.0;0.0;0.0;0.0;0.0;1079.407;863.13745;-201.0;2047.0574;1087.9775;-201.0;2743.7395;1473.8975;-201.0 +0.5628312;-6.86643;15.8504305;0.10222786;-0.023020765;0.15042496;23.554724;-30.028048;-4.373224;-31.618607;38.84558;0.004441814;1.0651646;5.579775;3.446909;13.087361;549.3637;1513.4845;-7.2527494;1477.722;1833.7808;-13.267716;2549.2434;1779.0865;-18.439753 +0.010528483;-22.337076;36.080784;-0.018252151;0.029478736;0.0010979805;6.310702;11.913163;6.580466;7.0032105;0.0;0.0;0.0;0.0;0.0;0.0;791.9182;1464.8102;-201.0;1704.9191;1265.5697;-201.0;2788.875;986.64136;-201.0 +0.008708578;-6.406534;15.738106;0.044878855;0.018937213;2.74254E-4;10.135711;6.636543;-4.988004;-4.3827057;0.0;0.0;0.0;0.0;0.0;0.0;571.1212;1523.945;-201.0;1511.349;1292.4775;-201.0;2459.5422;1039.6069;-201.0 +0.007236684;-8.807111;18.056618;0.012923635;0.043286365;5.4460013E-4;1.6665064;6.312977;10.533328;12.926599;0.0;0.0;0.0;0.0;0.0;0.0;873.4808;1134.0837;-201.0;1887.0265;1056.1615;-201.0;2865.8884;1084.6066;-201.0 +0.25523612;-10.038449;21.11579;0.053335518;-0.017435445;0.060923487;47.53519;-7.52565;-20.511604;1.5128584;25.336477;0.059791803;2.6343675;4.980541;4.4750457;24.853151;573.2402;1470.8043;1.6641804;1531.0875;1309.7372;-4.4754524;2813.2913;1562.66;-23.35634 +0.1424157;-21.179895;26.6168;-0.027004356;-0.018781196;0.112229586;33.80927;3.2034862;34.582596;2.0392067;0.0;0.0;0.0;0.0;0.0;0.0;629.6107;1328.7142;-201.0;1848.7803;654.5716;-201.0;3011.8196;838.6622;-201.0 +0.08064175;4.934526;6.2139153;0.007458001;0.033388626;0.006144551;-6.60548;-14.163646;5.2863555;6.185762;0.0;0.0;0.0;0.0;0.0;0.0;725.3904;1068.333;-201.0;1338.6935;1743.5215;-201.0;2425.0461;973.95;-201.0 +0.0055776364;-0.21677248;9.340279;0.041970566;0.04262502;1.5088235E-4;-2.1523404;2.4034727;0.58007807;1.413623;0.0;0.0;0.0;0.0;0.0;0.0;746.8122;1258.6454;-201.0;1676.8602;1157.3888;-201.0;2592.0012;885.60565;-201.0 +0.26693055;-23.035463;26.390833;0.1036269;-0.0403178;0.04812169;40.919804;9.66435;15.466797;-19.07676;30.476587;0.013146731;0.522209;9.178497;-7.3295383;25.75799;283.7413;1969.0625;0.0;1132.1266;1729.8195;-32.504322;2303.9065;808.8237;-25.44686 +0.26680112;12.345075;-6.5305657;0.07911836;0.0018188054;0.041723;-13.690036;-15.138265;17.048952;-19.663698;0.0;0.0;0.0;0.0;0.0;0.0;1153.2803;605.9034;-201.0;2122.1863;1231.8833;-201.0;2937.5593;1459.393;-201.0 +0.28370765;-6.5772;13.916199;0.042204816;0.008118483;0.027451614;-5.5568795;26.286179;-13.628571;15.866633;0.0;0.0;0.0;0.0;0.0;0.0;913.9715;1271.2216;-201.0;1716.4166;1841.5464;-201.0;2601.1367;841.53143;-201.0 +0.020149387;-15.886336;27.348928;-0.03239451;0.043562025;0.0030634857;-0.33930373;12.81195;13.074393;13.732034;0.0;0.0;0.0;0.0;0.0;0.0;1132.6403;1185.7672;-201.0;2032.8441;1578.4911;-201.0;2907.1123;1067.931;-201.0 +0.07512037;-1.9281725;29.888021;0.056979287;0.014890741;0.013859597;37.09905;-10.33355;-24.190237;7.1795425;0.0;0.0;0.0;0.0;0.0;0.0;798.5335;1466.4525;-201.0;1579.3063;1147.3027;-201.0;2875.9143;1000.85895;-201.0 +0.19638212;-16.442392;18.965536;0.017008377;-0.012626144;0.09839999;35.891773;2.7917922;32.67833;12.764187;0.0;0.0;0.0;0.0;0.0;0.0;866.0554;1343.7394;-201.0;1893.9951;627.0705;-201.0;3072.203;1291.3026;-201.0 +0.035394404;-19.415773;35.65571;0.0015002508;0.019901074;0.009189355;34.54771;13.549057;8.851219;15.744622;0.0;0.0;0.0;0.0;0.0;0.0;722.5613;1395.7474;-201.0;1649.6678;985.8255;-201.0;2987.2266;710.4705;-201.0 +0.78519917;-7.8402;13.62309;0.102142565;-0.013352868;0.7965212;12.858426;-18.022219;20.418793;-23.848633;46.262836;0.007827304;1.8996931;12.077779;-0.13741112;-19.343365;439.3965;1991.4198;0.0;1479.6727;716.48114;-23.794756;2574.7688;889.23236;-12.303238 +0.31028327;-5.444216;13.351776;0.09954796;-0.006605988;0.06778409;-7.2198615;13.137829;1.7213169;-30.559286;43.761536;0.03198051;1.4184903;-0.9216251;11.606682;3.9811637;851.97754;1418.2666;-29.714613;1889.3268;757.0467;-27.274298;2872.348;941.25665;-22.769629 +0.14986086;-9.819922;23.354004;0.061923876;0.026568957;0.044683244;26.099123;4.6509395;0.0012728771;19.461815;0.0;0.0;0.0;0.0;0.0;0.0;1133.2505;1285.3906;-201.0;2114.887;1350.4381;-201.0;3287.378;2565.739;-201.0 +0.0040886467;-7.175072;16.3431;0.013244835;0.051775172;2.8321022E-4;-4.165739;7.1347795;6.392184;12.097031;0.0;0.0;0.0;0.0;0.0;0.0;915.4443;2250.0557;-201.0;1458.4899;1388.0347;-201.0;2482.3918;1448.1283;-201.0 +1.4386095;-9.805566;14.699638;0.127999;-0.009472276;1.1403046;11.9397;-24.770498;-1.3409568;-24.015656;45.848324;0.06508147;2.1386487;4.106113;9.168387;6.4611893;1121.5831;1205.9994;-21.307144;1921.3447;1024.901;-14.843658;2895.4746;842.76056;-21.10823 +0.0021162361;-0.5341163;3.562526;0.073054254;0.043083716;3.0956955E-5;0.1929503;6.7520084;4.6530805;-6.0892315;0.0;0.0;0.0;0.0;0.0;0.0;1072.3844;1734.5775;-201.0;2257.846;739.2371;-201.0;2539.7112;1340.937;-201.0 +0.006442146;-3.921939;11.679093;0.028482521;0.029567137;2.1887159E-4;2.7923813;6.8592973;2.7804863;3.7872188;0.0;0.0;0.0;0.0;0.0;0.0;636.3441;1636.1862;-201.0;1397.4977;1487.8414;-201.0;2256.3752;1285.4293;-201.0 +0.51235384;-18.38098;34.898743;0.109967224;-0.020584429;0.2435729;39.09043;-0.6726002;0.42902932;-23.669046;38.925037;0.071401656;3.2564633;5.954281;9.940282;27.678833;528.6652;1454.1976;-27.791653;1577.248;943.62695;-33.69522;2882.1055;803.0215;-45.840893 +0.15817864;-10.584493;16.471832;0.09632433;-0.024620866;0.04369064;2.6997492;20.776747;19.706295;-42.06616;43.03561;0.016989393;1.4625568;11.150416;25.438194;14.042216;662.02057;1105.8788;-23.448109;1986.8867;359.5096;-28.669443;2781.319;936.499;-24.5241 +0.5188463;-7.9538293;13.555023;0.07415121;-0.011961666;0.14927469;32.250694;-19.251226;8.65331;-4.8570557;28.28103;0.063650005;2.7479887;5.5638022;3.9098663;14.297469;1158.119;1142.3402;1.3947397;2144.215;997.2529;-4.5107627;2984.1223;846.305;-9.571116 +1.1003743;-0.50956345;12.0123415;0.073599935;0.019578742;0.71168756;6.00296;-20.082975;12.395123;3.2593088;0.0;0.0;0.0;0.0;0.0;0.0;1075.4066;591.16846;-201.0;2090.5251;885.3813;-201.0;3008.4697;675.8234;-201.0 +0.22655748;-5.7037106;31.87707;0.06250804;-0.0062127714;0.0413021;42.20339;-9.275229;-20.406397;-12.341252;0.0;0.0;0.0;0.0;0.0;0.0;1018.67773;1230.6444;-201.0;1810.2129;790.2248;-201.0;3167.8965;322.47946;-201.0 +0.30644912;-8.0720415;17.928717;0.06312607;-0.019399168;0.098998584;21.991945;-16.463139;22.510813;-3.1849365;38.906757;0.02468423;1.4089984;5.464178;3.4477608;13.16122;330.79233;1267.5922;0.0;1472.8657;640.4719;-26.548357;2653.538;814.46436;-39.477528 +0.029801039;-13.90229;36.90617;-0.011770432;0.030980445;0.0032309256;31.88737;5.284292;1.7435379;21.89862;0.0;0.0;0.0;0.0;0.0;0.0;860.37665;1362.1099;-201.0;1486.6691;1584.7515;-201.0;2954.0527;898.6661;-201.0 +0.2279306;-13.547379;24.727882;0.038728915;0.0020516813;0.043935988;24.131607;5.6437936;17.281067;18.002872;32.240566;0.02016922;1.0755497;6.9346905;12.875781;21.50141;792.7446;1786.2476;-24.109491;1598.5653;1140.6061;-16.542566;2757.5378;1736.7534;-25.180258 +0.35968807;-5.4060154;7.3277516;0.121772826;-0.0259095;0.117016084;15.518571;-26.740982;11.730962;-45.504715;0.0;0.0;0.0;0.0;0.0;0.0;860.6233;1602.3213;-201.0;1791.3837;948.986;-201.0;2823.3145;901.98627;-201.0 +0.0031948264;2.483173;3.4649096;0.08983797;0.041184515;9.1999325E-5;-1.5045477;-2.8985386;-2.8168285;-5.078669;0.0;0.0;0.0;0.0;0.0;0.0;1009.41876;912.3057;-201.0;1659.0815;1399.0961;-201.0;2591.661;1348.625;-201.0 +0.118861;-17.541748;26.195925;0.057983544;0.0021163134;0.049695242;31.694525;9.734479;24.20283;28.291956;27.862696;0.010428273;1.1597489;3.1566043;5.998802;28.143204;369.84216;1068.7339;-69.28131;1402.4596;711.636;-83.30343;2311.2283;803.56525;-84.04424 +0.17220414;4.318197;0.28761038;0.013931795;0.022828162;0.033683673;-8.227757;20.858362;6.0764747;3.6439247;30.376734;0.0;0.0;3.998924;-3.2784903;21.930288;747.08124;1114.9298;-18.460129;1925.207;838.91504;-20.65985;2904.9531;874.3791;-24.761358 +0.100869745;-16.990881;24.983606;0.0036720939;-0.0034828323;0.0217314;29.436783;12.28485;11.721728;5.972401;24.795937;0.0;3.0725083;4.0096183;12.051646;22.189928;545.65454;1592.8678;-10.272236;1525.2217;1702.1361;-13.739091;2277.8123;1051.7101;-19.477163 +0.6453853;2.1614122;17.709608;0.094872534;0.014235471;0.28905416;25.818026;-42.134808;-19.531546;-36.053524;39.363342;0.03899659;1.0464039;3.182211;-5.8815227;12.06203;668.8625;1727.152;0.0;1457.7788;1246.0177;3.7424667;2779.3625;529.43274;-13.171496 +0.4847647;-7.2064767;10.100998;0.03031229;-0.014912342;0.22843003;19.865786;-17.833656;37.20183;-10.566403;38.28541;0.030431421;0.619126;8.871128;6.825523;6.082332;782.366;1206.1493;0.0;1982.4335;887.41876;-32.481804;2703.4229;1220.1617;-28.511978 +0.91587704;-8.205616;12.086909;0.04242145;-0.026186304;0.31666356;22.276926;-15.100395;-0.5141184;-57.901657;34.993954;0.027129516;2.2849004;4.913832;-9.491155;4.9189067;543.2822;1329.1631;0.0;1510.7574;848.0063;-3.4501941;2649.7366;497.16275;-5.9448485 +0.021514336;-1.5153761;11.813538;0.013914786;0.04287063;0.0012311718;2.8216457;-12.202111;13.002364;5.642203;0.0;0.0;0.0;0.0;0.0;0.0;635.92596;1462.5776;-201.0;1172.7188;1717.3495;-201.0;2152.863;1336.9337;-201.0 +0.39981616;-10.569817;13.011622;0.11294779;-0.01886004;0.19124953;19.041193;-11.335194;30.868752;-44.145874;41.13599;0.056497145;1.9797901;10.30033;10.3477;15.094388;1012.27045;1210.3479;-28.466217;2085.4502;678.6169;-26.08786;3283.8308;2467.5774;-28.199957 +0.009445556;-2.3247645;6.9816246;0.058332413;0.017438518;2.1979694E-4;4.562103;0.96037364;9.015667;-3.3125947;0.0;0.0;0.0;0.0;0.0;0.0;395.67856;1332.8522;-201.0;1401.8495;1025.2838;-201.0;2319.3494;978.81085;-201.0 +0.10324069;-3.9639637;10.483929;-0.016987057;0.01766807;0.01800681;-3.7635853;9.684512;10.286202;15.780604;36.262512;0.0;0.0;0.23926315;0.7584362;25.077785;597.3145;1375.1791;-66.81615;1535.5841;978.2083;-81.481514;2517.015;985.74115;-79.846794 +0.0060208426;2.925741;3.242957;0.07491938;0.0376313;2.1363975E-4;-0.04320693;-6.3722897;0.33707747;-1.9872904;0.0;0.0;0.0;0.0;0.0;0.0;1132.1444;1440.6869;-201.0;1914.2511;1708.5944;-201.0;2701.412;1160.9441;-201.0 +0.6749928;-20.349043;27.646904;0.061240252;-0.04230058;0.2658643;31.452143;-9.27185;-4.453991;-60.121418;41.25488;0.006402083;0.53137535;11.389779;13.763771;31.930029;871.3352;1145.06;-9.103402;2238.829;779.97;-31.047552;3067.9875;707.22797;-27.26966 +0.029191762;1.6968874;4.437199;0.054111898;0.026252687;0.0015393738;8.678506;-10.863869;6.894057;1.3336926;0.0;0.0;0.0;0.0;0.0;0.0;908.81525;1380.7125;-201.0;1898.3184;1424.5092;-201.0;2741.9568;961.8882;-201.0 +0.022100149;0.4230479;5.8805547;0.06934924;0.02512733;9.967835E-4;10.14873;-10.094604;-2.8439236;-2.6344588;0.0;0.0;0.0;0.0;0.0;0.0;894.1214;3884.294;-201.0;1569.6605;1410.0573;-201.0;2486.8098;1194.502;-201.0 +0.116896175;9.252997;6.81937;0.061621252;0.030310258;0.013793348;4.593529;-22.707052;14.583592;5.1832724;0.0;0.0;0.0;0.0;0.0;0.0;970.4422;912.435;-201.0;1879.5605;1192.4674;-201.0;2899.114;1610.8042;-201.0 +0.0073530213;-13.774846;25.932306;-0.015073277;0.034792144;4.4140904E-4;6.6957054;11.8042755;10.843484;14.914111;0.0;0.0;0.0;0.0;0.0;0.0;802.90356;1159.4495;-201.0;1743.0912;1122.9313;-201.0;2745.793;843.4555;-201.0 +0.15843202;18.428888;-14.341361;0.089913726;0.0015557468;0.018780546;-22.890528;-2.6676922;20.106733;-25.805824;0.0;0.0;0.0;0.0;0.0;0.0;1259.3541;356.14462;-201.0;2531.6785;1026.7328;-201.0;3234.0364;1961.1333;-201.0 +0.17036302;-23.774588;28.183731;0.005702526;-0.015715417;0.067695;27.791235;13.841952;30.18313;-6.075779;17.792229;0.0;4.310566;3.2463675;-122.8698;-106.78376;419.0989;1350.8535;-49.62473;1691.9008;1580.4882;-59.21355;2442.345;828.6836;-57.526257 +0.12163144;-0.3597773;3.358759;0.021870844;0.0070612542;0.018843556;-4.1139703;24.683708;35.545544;3.5108674;24.50529;0.0;0.0;3.9272368;0.32610425;19.301247;1250.3502;918.55634;-20.594294;2202.0032;2399.2102;-19.502113;2844.9397;1102.7935;-18.804077 +0.029371426;-2.6309881;6.9084477;0.06629554;0.012224029;0.001298874;4.5508347;-1.8079405;4.9466643;-13.695945;0.0;0.0;0.0;0.0;0.0;0.0;912.49365;1339.0531;-201.0;1861.8262;950.82324;-201.0;2892.3992;947.8316;-201.0 +1.84296;-2.5345752;14.369565;0.082751326;0.012011458;1.0494722;3.576126;-40.4947;-17.769049;-53.002583;42.858643;0.03699753;1.2733402;6.7420783;-8.316546;11.38631;916.74756;1036.225;0.0;1987.278;894.2703;6.2713733;2911.3054;755.9929;3.6224797 +0.01979561;0.74741334;6.0010724;0.109103836;0.05011857;7.0280425E-4;-1.4953872;-8.022257;15.840661;-6.631174;0.0;0.0;0.0;0.0;0.0;0.0;1033.1266;794.6206;-201.0;1913.1376;871.13165;-201.0;2904.947;772.00543;-201.0 +0.2239907;2.3141248;1.7428299;0.09638452;-0.010058285;0.0369017;-7.606672;-7.939005;15.8459425;-19.984331;41.58527;0.0;0.0;7.3747187;15.81073;13.668079;1298.6617;317.19992;-89.11716;2330.0725;954.9455;-80.85702;3203.2532;801.0334;-85.29744 +0.0029848013;10.5307;-5.562549;0.055888902;0.050377857;1.21056095E-4;-13.98891;7.5541835;0.27627897;-5.3577123;0.0;0.0;0.0;0.0;0.0;0.0;731.9941;949.81323;-201.0;1590.1649;1133.0153;-201.0;2565.2214;1306.5298;-201.0 +0.0023041824;1.8003116;3.810007;0.059494693;0.04242678;5.256146E-5;-3.1054056;5.2065043;-9.225654;0.7413612;0.0;0.0;0.0;0.0;0.0;0.0;794.52264;1364.2657;-201.0;1761.1094;1016.53955;-201.0;2515.2207;1140.3964;-201.0 +0.01758339;-37.168518;52.619343;-0.07830754;0.024256602;0.0024701299;17.006239;16.59898;17.06782;22.604887;0.0;0.0;0.0;0.0;0.0;0.0;1093.9397;1637.9849;-201.0;2171.8962;1754.4517;-201.0;3140.5745;1641.6816;-201.0 +0.24939843;-5.627451;20.31099;0.083459854;0.0022123551;0.033453275;50.480106;-20.015085;-10.738896;0.2937014;31.663412;0.0076564006;0.72235554;9.590936;3.3739166;17.673014;395.46396;1389.831;-0.5258002;1304.3546;1154.6976;-7.433515;2169.4055;1043.6752;-18.198814 +0.10954136;9.856645;-0.14962856;0.099841096;0.022202715;0.007954645;-17.722937;-7.235744;-3.781628;-11.882802;0.0;0.0;0.0;0.0;0.0;0.0;1065.9473;725.5871;-201.0;2091.3;1050.5978;-201.0;2901.2305;1078.5748;-201.0 +0.015191848;7.5845513;-0.99256974;0.030189184;0.037034344;3.7098056E-4;-16.656824;5.19531;2.295049;2.2272594;0.0;0.0;0.0;0.0;0.0;0.0;828.19604;1091.7915;-201.0;1515.2529;1536.1454;-201.0;2462.6177;1145.0718;-201.0 +0.031053724;3.320308;4.07737;0.014638622;0.029111668;0.001511205;-7.438259;-2.6573489;9.885077;-14.068255;0.0;0.0;0.0;0.0;0.0;0.0;568.0253;1206.0543;-201.0;1535.3864;1173.5767;-201.0;2496.1638;1023.4422;-201.0 +0.20653033;-18.298807;36.661587;0.08440628;-0.004812253;0.068264425;36.73898;5.645809;3.897913;-20.176329;37.620182;0.017390199;1.1787758;7.538037;-2.791138;23.526411;1071.269;1187.0962;-11.009689;2389.4177;1292.7211;-21.452318;3433.3992;1183.1946;-24.878489 +0.07226857;-19.306122;22.147278;0.084278546;0.019635245;0.03257663;28.662016;11.581443;28.587576;2.5276587;0.0;0.0;0.0;0.0;0.0;0.0;540.37335;1429.7384;-144.27141;1490.1504;961.105;-140.72809;2556.6555;523.15717;-140.59827 +0.34104005;-15.285057;19.810541;0.06554107;-0.01068253;0.065228485;16.26567;21.936722;48.231174;-37.902653;36.709866;0.007063704;0.56536585;13.279473;13.968963;17.510565;722.7532;1545.2177;-37.84665;1928.0991;651.5696;-38.74033;2842.7725;784.8254;-31.974272 +0.55163544;-16.172216;25.679358;0.1344682;-0.009012212;0.276111;20.311579;-24.188416;-23.579384;-71.41619;46.222775;0.02735273;0.62882704;12.574756;18.275034;28.21659;837.7465;1480.1908;3.7425098;1816.1783;1606.0765;-23.403437;2840.3408;665.25946;-24.474081 +0.0835092;-14.793342;41.993572;0.0012948097;0.0031304487;0.014812534;43.4527;17.801195;-15.763614;11.085728;19.705267;0.027987758;1.1741866;2.3380167;6.399698;45.091766;876.50604;1760.4365;-21.290174;1529.8092;1062.2728;-16.692377;3078.8506;806.50635;-45.526524 +0.010646005;-10.480473;23.056442;-0.0017928773;0.043317836;9.90515E-4;5.6902275;5.110989;0.84009904;9.323032;0.0;0.0;0.0;0.0;0.0;0.0;484.51932;1467.6718;-201.0;1268.4686;1233.9696;-201.0;2365.3105;979.73944;-201.0 +0.1791261;-9.990722;15.123656;0.07968916;-0.012531071;0.05101043;28.00492;-6.7335486;14.147061;-13.666355;34.81075;0.023983486;1.4849993;6.840279;-4.5814576;16.57449;682.4622;1564.8744;-3.2608917;1818.8932;1069.7311;-14.4749;2813.3987;977.5708;-21.132004 +0.7566164;-5.7808614;22.723562;0.064306386;-0.028675491;0.12272382;36.726974;-28.48104;-2.1236994;-57.38414;38.806263;0.0048698005;0.3195262;11.409;-6.0461335;19.664343;616.53735;1772.2655;3.9170122;1505.694;1635.3813;-8.6306305;2742.697;1040.1205;-21.922346 +0.0657209;-11.40453;28.383326;0.04975654;0.020374676;0.015444514;28.237734;5.4214115;9.281741;19.767195;0.0;0.0;0.0;0.0;0.0;0.0;1360.6503;1149.789;-201.0;1944.8607;1829.2887;-201.0;3462.806;924.8958;-201.0 +0.12988263;-1.8309517;11.184249;0.05187871;0.003419648;0.0254476;26.48335;-13.446751;-17.605455;-0.062948704;0.0;0.0;0.0;0.0;0.0;0.0;410.8755;1300.9615;-201.0;1402.0566;1192.5121;-201.0;2151.5266;1183.3798;-201.0 +0.9057393;-6.370336;10.273992;0.07957923;-0.041665103;0.44012475;-4.159159;-38.338665;4.7585673;-49.366394;52.666946;0.013965141;1.0915426;11.043653;-9.272332;-7.560289;1326.957;663.0088;-23.364134;2601.5273;605.55176;-12.905827;3294.413;1813.1752;-15.8038435 +0.0515081;-13.2345915;28.21427;0.085698746;-0.008172921;0.007367695;38.70222;-1.7120568;-18.585703;-8.960091;0.0;0.0;0.0;0.0;0.0;0.0;887.7752;1413.2362;-201.0;2095.9749;1269.3793;-201.0;3401.7327;1173.5862;-201.0 +0.042726874;0.92992395;5.145075;0.0954082;0.01701831;0.002082455;9.401113;-20.22358;5.7961984;-12.346707;0.0;0.0;0.0;0.0;0.0;0.0;1082.8842;1106.0428;-201.0;1804.4447;1171.1978;-201.0;2818.3982;784.54816;-201.0 +0.12878829;-13.159703;20.785608;0.049769316;-0.008637195;0.017951166;40.840103;-1.7746353;18.71411;-13.194547;22.874733;0.026303746;0.7616265;6.4216;4.7915936;22.05635;766.5439;1262.7931;-3.192166;1889.0817;1082.7133;-16.700298;2823.4385;793.7763;-19.607565 +0.10943758;15.558085;-11.799934;0.02798208;0.02617997;0.0141162425;-17.528196;14.316749;17.374577;-2.7058914;0.0;0.0;0.0;0.0;0.0;0.0;1078.191;716.4305;-201.0;2043.2944;2208.9822;-201.0;2742.3025;1582.9;-201.0 +0.19668613;-8.25993;25.27903;0.03424783;-0.008137139;0.045627743;34.829197;-0.540651;-19.919054;-6.3116517;0.0;0.0;0.0;0.0;0.0;0.0;634.42224;1592.2476;-201.0;1448.2284;1224.4259;-201.0;2618.769;578.12744;-201.0 +0.2260044;-13.991609;16.942778;0.08914721;-0.023153782;0.06713181;17.133383;1.504192;26.789751;-44.877674;40.349686;0.03484363;2.6812193;14.043026;23.138174;15.298278;738.84174;1206.4308;-22.771582;1989.8878;528.5743;-16.642015;2859.3484;766.1923;-14.931686 +0.0027234976;4.991366;-0.42395592;0.08218974;0.054852158;3.913752E-5;-7.0299554;-1.2388781;0.61564505;2.8428717;0.0;0.0;0.0;0.0;0.0;0.0;908.46106;1383.6377;-201.0;1735.7563;1356.6177;-201.0;2622.8452;1036.8729;-201.0 +0.0030061647;1.6042589;6.647797;0.0215042;0.052827865;8.969585E-5;-7.4009376;5.157402;1.7217659;7.6718554;0.0;0.0;0.0;0.0;0.0;0.0;935.545;1330.2858;-201.0;1814.7998;760.9048;-201.0;2696.4265;1193.353;-201.0 +0.0031869255;0.6387231;5.3348336;0.06680817;0.04204962;4.4969434E-5;-0.74908257;3.053982;-2.733647;-1.6741829;0.0;0.0;0.0;0.0;0.0;0.0;788.3584;1435.6449;-201.0;1728.7411;1317.763;-201.0;2429.785;2219.897;-201.0 +0.013628509;-10.329354;18.814707;-0.003739021;0.034730297;0.0014671757;13.62588;5.450005;12.392718;14.54335;0.0;0.0;0.0;0.0;0.0;0.0;858.11835;1247.4624;-201.0;1784.2855;1507.1205;-201.0;2535.8582;1133.1466;-201.0 +0.026172223;2.8108366;13.336007;0.06543142;0.02963385;0.0013616019;6.594728;-10.605045;-11.221127;-5.2785544;0.0;0.0;0.0;0.0;0.0;0.0;1127.3975;1336.5062;-201.0;1728.3794;2504.6877;-201.0;2584.1682;1646.1759;-201.0 +0.28897908;-21.493431;26.449554;0.09138968;-0.009009892;0.046106886;34.79462;6.0088196;25.537176;-19.309217;35.498108;0.009951085;1.8563975;8.798733;20.582512;30.4697;644.2759;1493.5898;-79.83065;1847.6162;854.4995;-87.226845;2895.4482;544.2797;-86.42211 +0.19403835;-17.107603;26.151518;0.07102043;-0.002455706;0.032401863;29.249054;15.356476;17.850115;3.1349633;31.158972;0.018672602;0.9055815;7.946732;-2.2279656;22.765541;381.12534;1104.2714;-6.19636;1377.2626;801.56464;-21.85782;2468.8552;710.5503;-28.961905 +0.025854388;-8.891786;32.090176;0.013830617;0.040924367;0.0028704975;31.596395;6.117538;-1.548399;12.318112;0.0;0.0;0.0;0.0;0.0;0.0;1100.3618;1200.3035;-201.0;1582.0991;2076.9414;-201.0;2864.9465;793.0317;-201.0 +0.15406264;-5.6314397;12.935908;0.06486855;0.0195885;0.028310617;12.035602;9.099758;5.413301;17.440817;0.0;0.0;0.0;0.0;0.0;0.0;1058.3376;969.69775;-201.0;1926.4752;3174.8486;-201.0;2743.6663;1007.9367;-201.0 +0.38289404;-15.337681;18.101677;0.04319754;-0.0035240257;0.1621799;23.784157;13.953687;35.12477;2.519345;34.078434;0.008883085;0.8998777;4.3743825;-1.5367731;16.079353;879.70966;1481.7863;-14.014969;1994.3033;791.24316;-29.267563;3009.3894;1025.9442;-21.870813 +0.076711036;-20.009552;30.463058;0.019860452;0.01293176;0.017909635;24.708206;12.417968;31.798088;12.589536;33.60442;0.023964144;0.9440215;5.031367;15.399989;17.927639;1151.9263;1342.9868;-27.931036;1845.6871;2270.4172;-20.499605;2866.1755;1266.1248;-24.800848 +0.29385242;0.2533398;16.079145;0.07053288;0.024552584;0.034510527;28.66832;-36.459274;-17.06306;-5.8905654;37.27165;0.0045255357;0.95650077;11.678429;-9.369567;5.6301274;987.37787;1468.2233;1.6770973;1934.0277;2008.6323;-1.1607498;2940.1267;1354.4554;-9.679521 +0.7494016;-2.441858;14.765381;0.157279;0.009784506;0.399471;12.770776;-37.214043;-25.446085;-56.58031;0.0;0.0;0.0;0.0;0.0;0.0;559.5286;1988.4725;-201.0;1293.5721;1117.428;-201.0;2654.163;674.9433;-201.0 +0.0109151555;-9.966499;17.063354;0.0030593406;0.029472085;9.15932E-4;10.189481;7.7328477;13.154854;12.148631;0.0;0.0;0.0;0.0;0.0;0.0;298.2854;1601.9868;-201.0;1295.8395;1044.8334;-201.0;2274.5684;859.94293;-201.0 +0.0059204362;-7.859965;18.168798;0.0070301495;0.03823345;2.545259E-4;2.5180933;9.157268;5.26451;11.461581;0.0;0.0;0.0;0.0;0.0;0.0;882.42365;1027.0502;-201.0;1831.6444;1012.1438;-201.0;2924.9949;819.0101;-201.0 +0.11095958;-20.344738;28.630949;0.043242503;0.016331475;0.03318515;11.915532;32.665882;39.17796;13.4168825;0.0;0.0;0.0;0.0;0.0;0.0;697.4199;1528.228;-201.0;1960.1108;727.02545;-201.0;3036.222;1059.4841;-201.0 +0.22538011;-14.188994;29.918268;0.1018661;0.0011883253;0.10753924;24.334055;-7.1944404;-14.208417;-26.98393;0.0;0.0;0.0;0.0;0.0;0.0;952.6623;1107.2467;-141.58888;1995.8549;1073.8407;-141.31519;3091.88;960.84375;-143.41913 +0.14879222;-6.5004754;24.963877;0.031408224;0.017616749;0.030664926;41.75893;-13.2868395;3.6992252;24.000908;0.0;0.0;0.0;0.0;0.0;0.0;1011.4637;1395.4775;-201.0;1731.6694;1202.9624;-201.0;3041.2148;1078.2676;-201.0 +0.0050957687;-4.3179336;12.582092;0.012243873;0.03810642;3.0046192E-4;0.15029983;5.6504683;7.9069595;5.2295885;0.0;0.0;0.0;0.0;0.0;0.0;584.7734;1598.9008;-201.0;1351.3112;1877.9979;-201.0;2177.39;995.58203;-201.0 +0.09498518;-9.106519;32.096493;0.07658074;0.014029277;0.032768037;33.23509;-4.145976;-17.865576;1.0009557;37.207825;0.01930676;2.0426297;4.072647;25.63471;34.646652;1051.2593;2262.3018;-77.12704;1914.4926;1243.2607;-68.16507;3254.7878;964.68976;-84.29308 +0.17053644;-11.098414;20.124414;0.07009532;0.014844245;0.026094874;9.597026;15.981219;-5.1298556;23.532188;0.0;0.0;0.0;0.0;0.0;0.0;1118.7794;1002.11206;-144.93268;2027.4683;998.7891;-141.90852;3302.7332;945.5005;-144.42218 +0.010089531;-5.3360085;16.447584;0.034092218;0.028262088;3.2376975E-4;12.059817;1.8127584;-7.6319847;0.58371776;0.0;0.0;0.0;0.0;0.0;0.0;430.2229;1429.8854;-201.0;1384.3927;1168.8358;-201.0;2395.7297;1006.6424;-201.0 +0.009058547;-13.458041;23.856506;0.023533145;0.019658258;7.6396886E-4;13.996834;14.0219;4.6605153;3.2679482;0.0;0.0;0.0;0.0;0.0;0.0;613.4617;1215.2804;-201.0;1646.0801;948.9537;-201.0;2702.3955;714.4777;-201.0 +0.20040025;14.344078;-10.851127;0.007528361;0.028244516;0.025043493;-25.236761;29.279282;8.974595;-0.94479924;0.0;0.0;0.0;0.0;0.0;0.0;718.5733;1075.3431;-201.0;1590.5406;1027.3202;-201.0;2560.1453;748.59454;-201.0 +0.0040417085;-11.86336;21.801092;-0.0109682875;0.045359086;2.7346986E-4;-2.2847226;12.659825;12.032955;11.390851;0.0;0.0;0.0;0.0;0.0;0.0;1090.4683;1173.3394;-201.0;2098.001;702.71924;-201.0;3004.5198;687.39044;-201.0 +1.8789425;-1.2820684;6.3122864;0.08974161;-0.033172786;0.99909735;19.598722;-34.43421;-8.154529;-29.6481;45.28175;0.06214277;3.3219407;-0.9392684;11.760755;16.497972;931.63544;1000.1043;-3.2250435;1951.7516;833.7424;-14.257828;2836.0908;1139.5221;-12.866604 +0.20906891;-6.178168;14.799083;0.0070448746;0.0015555575;0.027724845;-11.95188;11.645416;9.26024;-14.895463;0.0;0.0;0.0;0.0;0.0;0.0;455.621;1210.6847;-201.0;1511.9054;1174.104;-201.0;2250.532;710.0102;-201.0 +0.3165108;-8.456081;27.736359;0.016811917;0.006385444;0.115600534;32.92877;-1.032109;-8.463321;-0.5775337;0.0;0.0;0.0;0.0;0.0;0.0;790.10297;3291.8;-201.0;1475.8231;1245.4813;-201.0;2717.3948;821.12787;-201.0 +0.5251911;-18.822285;29.806595;0.1034477;-0.048567224;0.45746693;15.406121;5.79064;-31.747116;-53.68164;44.865906;0.0023309502;0.32973287;6.5492196;22.60877;38.952496;715.9902;1475.0702;-3.8360014;1984.1445;1004.58466;-20.411707;3161.0615;1359.6282;-30.187286 +0.2181422;-18.243265;25.95981;0.07716376;-0.039174635;0.080498725;35.297665;15.298505;-5.9986515;-29.528336;0.0;0.0;0.0;0.0;0.0;0.0;240.23131;1606.599;-201.0;1056.4612;1011.9099;-201.0;2349.1958;474.48917;-201.0 +0.17580378;10.574899;-6.169655;0.0021718475;0.027541198;0.0116151525;-29.85982;28.349625;-2.8572257;20.677885;0.0;0.0;0.0;0.0;0.0;0.0;669.1097;1256.883;-201.0;1561.5399;917.54614;-201.0;2619.0432;892.2129;-201.0 +0.010668144;1.4869426;6.8023276;0.07312255;0.04236068;3.9996416E-4;4.6847997;-6.858743;-6.325573;-0.23573458;0.0;0.0;0.0;0.0;0.0;0.0;767.1392;1167.4049;-201.0;1697.4196;1210.8033;-201.0;2595.6067;1224.2812;-201.0 +0.11522309;-28.342072;36.31817;0.033978637;-0.0045559313;0.077658504;47.094128;18.252314;20.602484;15.726216;25.834486;0.025981797;2.4896028;0.74744624;8.860865;39.817028;863.236;1776.9004;-11.495918;2116.6355;1562.0068;-31.057734;3352.6416;1931.958;-34.291153 +0.0042885127;-7.6361737;18.4648;-0.007955306;0.040989235;3.5062098E-4;-2.9140542;10.541525;5.5809293;9.509587;0.0;0.0;0.0;0.0;0.0;0.0;654.96387;1085.1707;-201.0;1751.081;993.0322;-201.0;2693.8167;1079.4933;-201.0 +0.26075402;-3.6931553;6.376147;0.14620249;0.004410612;0.078944154;-0.7874649;-11.740666;-0.84964556;-28.94678;49.913387;0.12923847;1.0207314;1.7477807;5.7709084;5.3050737;1065.5013;767.25977;5.366241;2085.423;741.79047;2.0579565;3012.25;760.8068;0.061167 +0.24845402;-15.946167;26.955084;0.09972665;-0.013433065;0.08387545;27.381216;5.1709065;18.610003;0.6798424;0.0;0.0;0.0;0.0;0.0;0.0;329.62326;1182.6102;-130.24416;1419.7305;673.1926;-135.67311;2521.8606;664.9947;-138.83025 +0.007308107;-10.082638;19.74755;0.012997288;0.03671461;7.774878E-4;7.358518;6.5247135;10.790962;7.543963;0.0;0.0;0.0;0.0;0.0;0.0;621.53735;1477.332;-201.0;1672.1085;1068.5009;-201.0;2466.855;2528.809;-201.0 +0.1174039;-4.151136;18.72329;-0.0010239132;0.02652706;0.0133313015;6.944429;-16.048445;-6.1459827;5.9969916;0.0;0.0;0.0;0.0;0.0;0.0;594.8999;1011.3425;-201.0;1407.7905;1144.7838;-201.0;2537.0852;757.3498;-201.0 +0.4339075;9.746174;8.570916;0.13390845;0.034242418;0.12763406;-0.55453473;-61.82257;-7.249555;-25.42959;48.21873;0.0051606274;0.70786065;5.7854514;0.40927124;1.6460289;1238.2972;875.4826;-2.1486716;2197.3254;951.94604;8.82359;3296.9187;807.4414;-3.3854294 +0.28214845;-21.755003;26.329086;0.07510253;-0.025017016;0.06864444;41.84009;7.1077905;17.38266;-3.9132674;33.049698;0.007824576;0.82381207;10.419005;9.699915;40.274563;682.37726;1830.5758;-11.996734;1757.0507;1096.315;-27.754211;3167.32;1249.4039;-36.605957 +0.16161029;-23.623734;29.56178;-0.016827786;-0.006387273;0.022785112;39.161663;10.764348;27.10808;-2.1112382;30.743223;0.012159442;0.8271799;10.968582;1.862774;21.113287;428.8883;1623.965;-5.9217644;1225.4318;1762.2266;-26.092085;2297.6418;821.2995;-26.103577 +0.097692154;-5.695345;15.86395;0.0529709;0.009430664;0.036984835;33.781433;-17.32357;-22.273132;-0.69166946;0.0;0.0;0.0;0.0;0.0;0.0;394.21854;1273.671;-201.0;1312.42;1137.8873;-201.0;2173.3484;857.4035;-201.0 +0.414387;-6.565495;9.294971;0.09229467;-0.014204529;0.11423483;17.620905;-15.955562;3.4521096;-26.388865;42.391407;0.021025669;1.7649454;4.83568;18.70079;11.998319;722.8903;1267.8646;0.0;1653.8756;828.59955;-17.84627;2725.92;634.8077;-15.015763 +0.023573792;-20.388063;36.009327;0.064523496;0.020652568;0.0034245625;31.92565;20.244658;2.916507;4.351742;0.0;0.0;0.0;0.0;0.0;0.0;744.3091;1571.8331;-201.0;2063.6309;1056.1031;-201.0;3328.2256;1239.2714;-201.0 +0.21983558;-8.291535;12.702117;0.055308808;0.019935874;0.021346452;32.122692;-12.810684;36.957077;14.829864;23.736292;0.008582718;0.4268819;3.6376731;3.268162;21.109385;1182.9088;932.2669;-19.742434;2169.8005;985.0647;-12.805966;3069.7908;674.67816;-21.736364 +0.18845423;-8.625916;11.905862;0.04934968;0.023037976;0.023529246;30.85494;-10.049197;34.722107;24.224867;0.0;0.0;0.0;0.0;0.0;0.0;1165.784;965.667;-138.6303;2093.0059;1058.4216;-138.06342;2981.6719;811.6358;-141.07454 +0.13702239;-18.504805;35.453262;0.07157726;0.0055142753;0.03508836;34.237564;6.6830764;0.7062858;-1.5371233;35.69272;0.023210892;1.4011093;9.525822;-1.46817;22.423574;294.6592;1599.4004;0.0;1316.6875;1140.9298;-12.148841;2642.195;1036.1139;-29.949137 +0.39773086;-1.3822079;14.623179;0.070394725;0.012752198;0.11807436;17.587555;-28.555582;-8.410094;-11.094326;39.485416;0.01680302;1.9905828;1.2810386;-0.7189374;15.392963;964.1231;1089.2739;1.3502346;1814.6803;976.5057;1.982831;2909.653;662.81964;-16.784277 +0.0013081752;4.036267;-2.588597E-7;0.088869445;0.0605928;7.886095E-6;-3.7581918;0.8723374;-1.4719639;0.34145704;0.0;0.0;0.0;0.0;0.0;0.0;873.73645;1824.6418;-201.0;1440.4491;724.4244;-201.0;2488.4385;1521.9338;-201.0 +0.005984556;-6.058767;13.8776865;0.040397175;0.034414638;1.5394593E-4;6.0980015;10.10743;4.332738;11.125955;0.0;0.0;0.0;0.0;0.0;0.0;762.7381;1553.9858;-201.0;1663.3851;1407.3832;-201.0;2560.5881;1098.1041;-201.0 +2.6505215;0.72314125;6.078939;0.055843193;-0.02519683;1.2014546;6.4365964;-23.341873;8.148853;-31.921522;40.115837;0.03426264;1.0360501;4.8680916;14.628224;8.760764;608.78534;1540.8246;0.0;1549.6699;1217.6235;-10.347201;2562.748;1249.0894;-10.080733 +0.019260207;-7.7062287;19.803827;0.043528426;0.03183751;0.0012366668;16.88575;-5.2230344;-7.810632;-3.604172;0.0;0.0;0.0;0.0;0.0;0.0;462.2849;1081.8339;-201.0;1422.6937;1163.5024;-201.0;2318.9646;1097.7728;-201.0 +0.10718056;-15.446197;21.919388;0.103415094;0.008634037;0.032552145;10.6212225;33.624096;-14.174571;-1.4714174;0.0;0.0;0.0;0.0;0.0;0.0;1054.0992;1310.251;-201.0;1916.4835;2056.4656;-201.0;2874.92;684.0424;-201.0 +2.5034857;-1.3372022;15.007022;0.06847548;-0.026659638;2.2601087;0.4195889;-44.142597;-14.362971;-49.246593;50.429058;0.050050955;1.2379481;2.528941;-3.4985268;10.032432;1166.8287;1082.4559;1.2770827;1844.5404;1633.4674;-2.9031534;2774.1218;810.4434;-8.755349 +0.081862785;-5.199286;26.02823;-0.017718399;0.024539717;0.022874482;25.47455;0.9873364;-17.074236;6.188562;0.0;0.0;0.0;0.0;0.0;0.0;654.7389;1457.3545;-201.0;1521.2572;1031.5948;-201.0;3009.3967;537.5061;-201.0 +0.09935626;-16.101343;21.07208;0.029861772;0.0034927141;0.008528393;35.680645;2.507542;25.679367;8.34362;21.557487;0.007904225;0.45404854;4.8648624;1.9798836;17.670172;393.98306;1475.6621;-8.409279;1326.0371;1568.597;-20.007574;2165.9028;823.0346;-22.824585 +0.19549304;-7.809328;23.665077;0.08960558;-0.02358883;0.039404172;39.478935;-24.739603;-21.913294;-27.24881;31.967142;0.012207776;0.7381585;6.4437084;-1.125671;22.202349;1099.9635;1112.3163;6.505413;2173.2388;824.3069;-4.8271847;3480.75;810.8802;-19.177973 +0.57745546;-19.365961;20.504963;0.06918785;-0.054157656;0.15174372;33.135254;14.041932;16.032593;-41.099777;31.557571;0.0043626274;0.7627589;10.703186;-0.69538945;20.00476;832.0988;1083.476;-1.5793772;2264.1118;375.2274;-15.920278;2988.3223;1753.9229;-16.43145 +0.00912129;-19.393875;31.856394;-0.016683975;0.02786844;8.3013094E-4;11.198963;9.617192;4.113243;7.8510284;0.0;0.0;0.0;0.0;0.0;0.0;688.4841;1239.2886;-201.0;1857.4254;856.62787;-201.0;2791.5186;1132.413;-201.0 +0.017019851;-13.235095;22.959936;-0.043402273;0.06056278;0.0017575622;-12.204015;0.14267267;17.48314;22.44102;0.0;0.0;0.0;0.0;0.0;0.0;989.1281;678.8474;-201.0;2010.559;626.81177;-201.0;3050.9343;546.56494;-201.0 +0.06021906;-16.287857;19.20779;0.09551689;0.028265147;0.020805033;27.781164;6.6622086;26.309341;5.938587;0.0;0.0;0.0;0.0;0.0;0.0;316.57236;1150.167;-201.0;1303.6625;730.10187;-201.0;2324.1863;490.45126;-201.0 +0.5679066;-9.157407;16.837086;0.08785384;-0.014426432;0.44036245;19.773756;-18.826338;-6.4387536;-35.272785;0.0;0.0;0.0;0.0;0.0;0.0;880.3281;1018.0508;-201.0;1949.2592;763.2247;-201.0;2963.3535;542.9489;-201.0 +0.0046826755;4.6358113;1.7687525;0.09031465;0.039257523;1.9229027E-4;-8.323863;-0.786187;-2.1814237;-7.826569;0.0;0.0;0.0;0.0;0.0;0.0;1039.3947;1223.2533;-201.0;1885.8898;1375.6984;-201.0;2703.029;1700.2499;-201.0 +0.25604716;-11.192229;16.123552;0.052675992;0.0108819185;0.06449109;35.22769;-6.8353667;9.242413;9.843576;34.910248;0.020494672;1.2896769;9.088562;22.898127;23.227884;585.9275;1210.1798;0.0;1485.291;1058.7836;-9.012954;2488.1367;732.92;-12.696744 +0.15902148;-5.2723293;12.1635275;0.039629262;0.02957645;0.03991062;4.2928395;19.638258;21.223673;6.0829034;23.615515;0.0;0.0;1.8483889;-5.1356173;18.8825;856.77686;889.0966;-68.04152;1944.6484;770.99097;-69.55947;2905.4521;654.1409;-73.86267 +0.8365666;0.19349194;14.812039;0.051565524;0.013831809;0.52235216;25.258781;-14.593457;-9.373094;17.195526;0.0;0.0;0.0;0.0;0.0;0.0;1091.815;1054.4413;-201.0;2042.244;1026.9572;-201.0;3130.7542;640.3382;-201.0 +0.24193864;-16.145098;19.527895;0.035820454;-0.02217347;0.03580266;37.00784;1.4730625;39.913467;2.5439608;29.942957;0.008346473;1.0426488;9.649405;5.898058;17.485775;454.7189;1392.691;-13.141187;1829.7999;1162.5171;-28.871277;2490.4282;1060.4004;-24.728903 +0.055582017;6.158521;2.8864114;0.066041976;0.036349054;0.00410266;-0.5056884;-14.4639435;2.7864354;-10.498115;0.0;0.0;0.0;0.0;0.0;0.0;872.9678;1055.5685;-201.0;1867.4883;1526.5065;-201.0;2738.3235;1070.5625;-201.0 +0.94787806;-1.8012911;11.665498;0.08863271;0.02073671;0.36940205;2.0466654;-16.64994;10.271761;-11.647666;45.920868;0.24096571;1.5350724;13.414393;-5.5146203;2.646207;1153.1313;727.78436;-5.526109;2173.4307;922.6631;-14.704516;2992.5176;1056.8944;-17.3626 +0.38631058;-7.643309;12.752254;0.08418122;-0.017182257;0.1904388;11.616038;5.117371;41.448063;-28.215193;38.860844;0.01914573;1.2805456;5.664428;29.827772;15.618435;484.64087;1410.0538;-4.504958;1769.3325;614.4544;-28.003815;2571.0486;1542.1925;-19.114878 +0.18277383;9.148051;-3.6092749;0.08565634;0.00967907;0.041720126;-14.604729;3.3692722;41.491405;-29.626429;0.0;0.0;0.0;0.0;0.0;0.0;1307.6056;498.48853;-201.0;2265.0635;1148.4238;-201.0;3186.64;1007.1735;-201.0 +0.0037549343;3.2661798;2.265244;0.057934325;0.041274574;8.559745E-5;-3.6122215;-1.0934466;6.7212543;0.48242664;0.0;0.0;0.0;0.0;0.0;0.0;724.8279;1475.2535;-201.0;1737.1722;1357.3553;-201.0;2586.2122;1300.2638;-201.0 +0.21136369;14.501797;-4.104301;0.058408573;0.010751641;0.022738194;-18.820082;-7.809927;2.2190208;-6.1369987;0.0;0.0;0.0;0.0;0.0;0.0;593.35004;910.6866;-201.0;1711.3766;771.34406;-201.0;2696.3997;737.84344;-201.0 +0.0035011563;2.3879635;2.8640614;0.060927015;0.04111297;4.851665E-5;-2.035616;-1.6601328;-2.1499956;-4.7588897;0.0;0.0;0.0;0.0;0.0;0.0;981.8708;1647.1201;-201.0;1938.7115;1348.331;-201.0;2816.0322;1031.9723;-201.0 +0.09366713;-22.739517;26.230131;0.009487421;0.0045047565;0.012576609;32.466423;16.550882;32.01777;22.495077;32.85704;0.006898038;0.7380144;12.145493;12.226288;35.29869;927.137;1383.6263;-35.634117;1921.0547;606.4272;-34.10782;3292.173;713.6712;-47.999985 +1.1198221;-2.662701;7.82073;0.015272704;-0.023171261;0.69718724;-4.4971356;-6.4135003;14.297755;-25.01208;53.825603;0.0;0.0;11.674905;2.6788845;0.955602;657.1182;1157.9872;0.0;1722.5638;1413.1793;0.0;2631.7651;996.05585;-25.028414 +2.1228619;11.524667;29.346907;0.06271297;0.0039871703;1.1027428;-5.791468;-21.4907;-49.9111;-15.059036;50.199726;0.0028807155;0.48904625;13.293304;15.343498;35.95651;814.9487;1578.0399;10.061507;1899.2867;1416.7362;1.3323884;3071.464;3029.289;-11.113446 +0.2367776;-15.009149;19.600824;0.009435762;-0.018016787;0.14506628;24.000252;6.5020185;39.6241;0.3980681;0.0;0.0;0.0;0.0;0.0;0.0;392.82413;1292.5825;-201.0;1643.6816;679.31946;-201.0;2740.1562;791.13354;-201.0 +0.28846347;-14.001473;22.194376;0.099553764;3.629426E-4;0.090488456;15.329295;13.560845;27.884096;1.7286376;34.416103;0.011057301;1.7143826;10.684049;10.317617;29.230759;330.9963;1311.706;0.0;1464.2311;848.7861;-8.854788;2440.8328;1172.6727;-21.265802 +0.28008965;-18.965086;22.21586;0.06646528;-0.035915237;0.07532531;30.001764;27.603264;33.35709;-42.67365;27.814667;0.009816862;0.7044046;6.715093;-6.6303077;23.289816;571.5623;1342.6039;8.050381;1375.9502;1762.4269;-17.624422;2612.8838;763.76855;-18.42119 +0.06492407;6.7687325;-4.2689166;0.004290068;0.031356096;0.010535754;-10.195014;23.006752;50.129086;-2.6935813;0.0;0.0;0.0;0.0;0.0;0.0;1260.7847;366.45435;-201.0;2265.4885;518.0479;-201.0;3226.831;1018.9441;-201.0 +0.02497542;-24.39299;37.32546;-0.039675727;0.0152950855;0.0050372537;19.36337;6.228417;10.325305;10.069213;0.0;0.0;0.0;0.0;0.0;0.0;672.84845;1643.6968;-201.0;1719.5479;1438.7885;-201.0;2798.6301;1301.4058;-201.0 +0.12000963;1.387345;3.0744216;0.07886475;0.0038643011;0.019602433;-11.222108;13.079183;16.54139;-18.69568;40.81703;0.0;0.0;9.379133;31.26504;15.454444;1225.1431;707.72833;-43.56497;2244.9324;977.5087;-30.918375;3008.097;1917.0918;-26.89035 +0.44043717;-6.383242;13.28243;0.09511641;-0.012954552;0.10648805;8.004741;-14.379209;26.67952;-62.42062;44.409153;0.06937157;2.0149431;11.8025055;7.688755;-1.0606284;736.3257;1600.6881;-9.961458;1844.3602;515.1213;-25.658564;2890.5188;707.7132;-8.900829 +0.0018717129;6.42293;0.079917856;0.07249845;0.05624571;1.6025782E-5;-7.7681236;1.9345824;0.3426741;3.5592804;0.0;0.0;0.0;0.0;0.0;0.0;763.85187;1506.1963;-201.0;1662.5853;1181.9972;-201.0;2705.8748;1284.0831;-201.0 +0.124430925;-11.432113;22.937216;-0.018689571;0.023045123;0.03397843;32.542526;-0.4673605;14.391846;8.188644;0.0;0.0;0.0;0.0;0.0;0.0;1112.3236;1123.73;-201.0;1897.9564;1316.3888;-201.0;3150.6443;496.1229;-201.0 +0.19436125;-1.6391929;9.3960905;0.059913527;0.008271162;0.03547095;14.652893;-17.677843;-3.0751493;-14.763535;35.12697;0.0;0.0;0.94260246;0.12380469;17.325153;1103.1859;928.75684;-69.42279;2149.93;854.9336;-68.273506;3190.2102;988.83716;-76.17983 +0.41641912;9.4001465;1.8431624;4.78358E-4;0.022553906;0.06539247;-11.252557;-13.861535;-3.9889648;-4.2165046;0.0;0.0;0.0;0.0;0.0;0.0;501.87875;765.93414;-201.0;1503.6509;988.0927;-140.34967;2395.4773;906.509;-140.76678 +0.7887247;-10.000572;26.404745;0.066649266;-0.027580267;0.1759339;22.068474;3.3187368;-25.091364;-53.81116;34.75537;0.0063215946;0.6790998;10.6664;-7.0266895;14.486752;597.01324;1560.7496;0.0;1672.0137;1001.0529;-1.1004196;3193.2012;852.9003;-13.963928 +0.01593644;-11.715133;22.228937;0.017623328;0.028607732;0.00241435;8.80206;10.035298;13.928296;6.876709;0.0;0.0;0.0;0.0;0.0;0.0;566.83514;1172.5526;-201.0;1532.8055;892.21045;-201.0;2557.5583;901.50336;-201.0 +0.0025236942;2.0710003;2.6422474;0.056939643;0.038931496;6.6079825E-5;1.3080696;-1.0912364;-0.57946587;2.705499;0.0;0.0;0.0;0.0;0.0;0.0;563.4582;933.12616;-201.0;1535.5625;825.429;-201.0;2485.2302;768.11304;-201.0 +0.39284572;0.5837352;6.0970054;0.11468043;0.012722059;0.07365871;-15.620231;6.6684146;-24.194807;-13.217461;49.75948;0.02657549;3.3877704;9.170886;-2.9465525;3.7800636;1090.6029;998.88336;-16.768396;2046.5621;1325.2096;-18.701933;2718.0796;1976.682;-20.548462 +0.008355456;-12.769788;23.024168;0.0020636208;0.01987824;3.6552688E-4;7.1120677;12.597442;5.2111354;2.4313788;0.0;0.0;0.0;0.0;0.0;0.0;514.72955;1389.6694;-201.0;1535.1426;1998.1688;-201.0;2150.0588;1037.077;-201.0 +0.64989465;-7.111466;12.127439;0.14483124;-0.017739173;0.31669703;6.9198327;-24.699707;10.101006;-50.07002;48.858624;0.03834757;2.5099366;5.577862;3.0778134;-5.101446;1262.247;1170.032;-19.921991;1998.916;1065.4288;-11.409999;3109.5908;564.6262;-11.0581255 +0.0050443686;-14.611862;26.421326;-0.02031542;0.04288369;5.013928E-4;-0.16669524;12.080592;12.965983;14.106468;0.0;0.0;0.0;0.0;0.0;0.0;785.4749;1031.0641;-201.0;1866.7568;693.46405;-201.0;2828.411;733.27277;-201.0 +0.102299005;-9.468442;17.108238;0.05222644;0.002225137;0.028572956;24.539642;-4.7687078;10.078824;16.42196;0.0;0.0;0.0;0.0;0.0;0.0;992.08545;1602.858;-78.06729;1797.06;1032.2754;-76.614426;2877.002;796.27997;-82.77968 +1.1715902;1.7664479;19.762253;0.042255204;0.0069395923;0.42034772;5.7643704;-29.181793;-40.114117;-49.938213;41.46577;0.013423434;1.0359324;13.34151;-6.970739;7.2088065;768.58136;2318.7366;9.128536;1464.3331;1228.5353;9.386868;2776.6838;735.3753;-2.3591692 +0.0047471807;1.7856255;3.7918777;0.062311932;0.033033535;7.026658E-5;-4.2808414;7.5605245;3.4549255;-4.569259;0.0;0.0;0.0;0.0;0.0;0.0;621.04156;1453.402;-201.0;1567.8179;1142.4948;-201.0;2483.1716;975.30804;-201.0 +0.579859;-6.145008;13.733571;0.07276849;-0.0032010928;0.16792722;25.511574;-11.2092285;4.685759;-1.6702958;29.8387;0.069109954;3.2253869;7.4787583;-0.4310008;14.469653;888.9919;1215.2207;-0.69733125;1854.627;973.4587;-7.6053047;2773.4617;668.1699;-15.928325 +0.2790275;-11.087485;19.20468;0.08666998;-0.011213817;0.059436295;21.687677;0.3398529;29.31222;-4.7556987;32.609818;0.06597146;0.38085207;4.932356;4.12498;19.209845;345.67465;1106.2915;-0.74005955;1480.7867;530.3999;-20.059519;2560.9705;631.7436;-19.949903 +0.4763787;-10.171699;13.466405;-9.559395E-4;0.0023948464;0.22431529;14.618362;2.144358;19.259573;11.533249;0.0;0.0;0.0;0.0;0.0;0.0;293.2624;1289.9423;-201.0;1401.2008;671.1757;-201.0;2371.2107;724.89435;-201.0 +0.011588558;-10.60868;19.220472;0.032526728;0.03578086;0.0016628681;15.866444;9.580657;11.954595;17.062805;0.0;0.0;0.0;0.0;0.0;0.0;947.88654;1290.8068;-201.0;1763.2982;1703.456;-201.0;2705.1345;2408.101;-201.0 +0.123519264;-17.370058;27.921759;-0.04081655;0.010289264;0.029564902;13.681031;-7.57572;10.337306;16.372946;0.0;0.0;0.0;0.0;0.0;0.0;989.4694;1353.3451;-201.0;1793.1583;1083.552;-201.0;2996.7156;935.57477;-201.0 +0.008023377;-2.7800121;7.7152686;0.044506714;0.039343845;4.1662133E-4;5.573012;4.455544;10.067011;14.482001;0.0;0.0;0.0;0.0;0.0;0.0;759.903;1496.626;-201.0;1499.1185;1296.3615;-201.0;2376.4167;1070.8981;-201.0 +0.0024303254;-2.713555;9.138511;0.05005609;0.054641098;2.8916792E-4;-0.5944182;6.432634;4.930479;5.152189;0.0;0.0;0.0;0.0;0.0;0.0;639.9315;1258.4058;-201.0;1554.9055;1025.8732;-201.0;2569.4062;807.9086;-201.0 +0.0072586103;-2.925373;11.630544;0.03570231;0.0315092;2.714611E-4;5.6199737;4.1445184;5.35333;2.4973032;0.0;0.0;0.0;0.0;0.0;0.0;854.02216;1214.8007;-201.0;1788.8516;1065.9562;-201.0;2626.5437;944.486;-201.0 +0.0056619775;-19.782755;30.703072;-0.036649723;0.031222342;3.870284E-4;2.6117692;19.494362;13.8681555;11.239842;0.0;0.0;0.0;0.0;0.0;0.0;582.2032;1572.6227;-201.0;1643.119;2199.8728;-201.0;2375.5352;1161.2445;-201.0 +0.114829846;-8.77189;19.9047;0.015566361;-0.0010102155;0.025936216;31.948912;-7.3361726;4.602766;-16.691633;0.0;0.0;0.0;0.0;0.0;0.0;494.3818;1414.7202;-138.37025;1234.9077;1636.5317;-137.443;2182.3857;1110.298;-142.42699 +0.005931817;-11.70739;23.409384;-0.008885365;0.03784747;2.8137036E-4;3.8242424;11.410565;10.644553;18.767605;0.0;0.0;0.0;0.0;0.0;0.0;385.55713;1435.2584;-201.0;1343.3644;927.4632;-201.0;2332.7734;1032.7296;-201.0 +0.03555548;-25.788347;37.98447;0.035498433;0.0023957717;0.009631208;34.777683;20.08309;22.06015;14.449009;0.0;0.0;0.0;0.0;0.0;0.0;713.386;1490.7744;-201.0;1804.2953;1206.5774;-201.0;2840.871;1162.4;-201.0 +0.090539455;-27.505777;39.191425;0.008378946;-0.011029339;0.037841216;42.394974;21.797476;14.266338;1.6258703;26.479927;0.019562362;1.2236282;2.8245983;1.1657103;31.262106;613.53876;1814.0192;-4.5742407;1532.4899;1341.8307;-19.260735;2734.0098;1100.2894;-30.568007 +0.041560654;-0.15088315;4.3638635;0.09187738;0.015996257;0.004562108;2.0876474;-0.7590101;9.42571;-21.907349;0.0;0.0;0.0;0.0;0.0;0.0;835.6203;1283.9971;-201.0;1784.3024;977.3784;-201.0;2767.8694;794.5789;-201.0 +0.25397715;-7.597464;27.993088;0.03514685;0.034421783;0.16413276;30.272543;-8.780004;-1.5228729;14.281535;0.0;0.0;0.0;0.0;0.0;0.0;1001.4907;998.3371;-201.0;1809.506;1062.515;-201.0;3024.9294;781.0778;-201.0 +0.0043831565;-1.6665798;11.956184;0.02944156;0.051186044;1.6256506E-4;-5.6949844;4.6659036;-0.5545705;1.104211;0.0;0.0;0.0;0.0;0.0;0.0;742.3858;1489.5171;-201.0;1712.6006;720.8132;-201.0;2461.9102;1521.6891;-201.0 +0.0019507371;4.561802;0.034770366;0.06659181;0.045492183;1.5137973E-5;-7.4995437;4.8926234;-6.8112693;-3.17049;0.0;0.0;0.0;0.0;0.0;0.0;881.22754;1607.1869;-201.0;1803.2877;1374.9884;-201.0;2881.4827;1150.8043;-201.0 +0.026078431;2.3685694;2.5343785;0.06549705;0.0123305125;0.0016822284;-7.341578;5.928839;13.017399;-15.1201105;0.0;0.0;0.0;0.0;0.0;0.0;951.65546;1717.7697;-201.0;1628.5918;790.57574;-201.0;2690.3447;1226.9354;-201.0 +0.033643935;-2.2460797;13.103948;-0.004750594;0.046582144;0.006983776;-12.881841;9.279385;32.623596;2.7437973;0.0;0.0;0.0;0.0;0.0;0.0;1095.2719;693.9427;-201.0;2185.5266;862.94476;-201.0;3221.1492;955.3226;-201.0 +0.03015448;-34.51325;47.675434;-0.05238672;0.026361495;0.0123682385;15.503116;9.015025;11.613406;11.196851;0.0;0.0;0.0;0.0;0.0;0.0;747.07306;1991.2588;-201.0;1861.784;1499.3561;-201.0;3100.7168;1304.3732;-201.0 +0.0046549947;1.3332121;4.695725;0.05309853;0.033124592;8.400532E-5;-1.8877245;1.8882297;4.0030994;-0.48511085;0.0;0.0;0.0;0.0;0.0;0.0;614.6697;1485.8844;-201.0;1518.7562;1131.2035;-201.0;2634.2158;816.7962;-201.0 +0.12622131;-33.495136;37.997204;0.031971157;-0.011680189;0.06904314;31.815247;23.385798;34.0245;6.7418003;36.797375;0.019945705;1.1023278;10.723905;8.601017;5.314659;594.93524;1512.3906;-45.665173;1779.4;1259.3647;-42.098465;2661.5027;1640.5542;-36.097534 +0.56978136;-12.354141;21.417831;0.022197818;0.0066487403;0.38438234;5.164542;15.3139925;19.774895;2.214245;41.912567;0.0;0.0;9.444363;22.181215;23.947496;589.98486;1129.5546;0.0;1661.8741;851.4045;-14.637944;2647.286;703.1714;-24.496557 +0.021387285;-33.992977;49.794796;-0.06422981;0.020424493;0.03835794;23.018042;13.788011;13.426753;21.151426;0.0;0.0;0.0;0.0;0.0;0.0;1164.7773;1371.0638;-201.0;2459.1428;1381.3885;-201.0;3637.4521;2131.8533;-201.0 +0.055499017;-7.023275;12.975465;0.050238427;0.028145283;0.0047446014;-8.906201;39.19026;-6.9901276;21.013657;0.0;0.0;0.0;0.0;0.0;0.0;1269.997;1927.9268;-201.0;2052.111;955.3785;-201.0;3092.3694;728.9946;-201.0 +0.0054832944;-10.899784;21.613558;0.01691907;0.028135305;4.8123402E-4;5.3898683;11.521305;5.867878;-1.3573109;0.0;0.0;0.0;0.0;0.0;0.0;351.99292;1690.0048;-201.0;1354.625;1283.2217;-201.0;2230.8386;1162.7897;-201.0 +0.3777049;-6.0822983;12.764964;0.10665238;0.0043337904;0.20529509;2.3238966;-2.5573242;11.131236;-29.036432;45.346813;0.20067877;1.1068249;10.521552;10.070113;-5.572312;776.67694;1090.2812;-28.410345;1814.9697;572.00397;-37.514805;2748.6726;889.85175;-17.605955 +0.027101735;-0.9194676;11.8661;0.113301836;0.018868295;0.0015658276;12.476501;-15.421516;-8.826106;-8.559424;0.0;0.0;0.0;0.0;0.0;0.0;1136.2843;1097.3458;-201.0;1985.0731;1852.2056;-201.0;2761.0652;1118.9609;-201.0 +0.589701;-9.23693;13.667854;0.058282286;-0.027655339;0.29084638;20.888939;-9.470496;14.433768;-1.6716417;40.25051;0.04736836;1.5882435;5.4899845;7.0659065;7.7740283;483.04312;1533.7026;0.0;1732.6162;1056.0461;-26.271797;2349.6934;1750.3075;-19.127226 +0.004004742;0.4584817;6.6041236;0.060998093;0.037599955;9.999572E-5;1.0783658;3.749893;-5.357763;-2.7155411;0.0;0.0;0.0;0.0;0.0;0.0;760.95264;1594.4232;-201.0;1432.8551;1703.3623;-201.0;2354.3115;1074.0372;-201.0 +0.0069589433;-8.395701;17.233335;0.0096518295;0.041265074;4.1495016E-4;5.7573676;11.055757;13.772222;13.204043;0.0;0.0;0.0;0.0;0.0;0.0;903.4266;1239.6061;-201.0;1834.9629;1299.8439;-201.0;2671.8635;1189.8558;-201.0 +0.271395;-0.8688648;3.2922676;0.10428676;-0.018128745;0.047670055;12.3890295;-10.214635;36.10101;-63.67841;38.390427;0.004636601;0.88150936;9.820207;12.209103;13.163026;591.264;1481.0192;-12.185246;1877.5162;1015.0612;-24.973671;2787.7644;1578.6127;-15.522868 +0.0017536344;2.4448671;0.47707245;0.0868363;0.055274945;2.1892543E-5;-0.8930871;1.1346142;1.9774632;-3.5000684;0.0;0.0;0.0;0.0;0.0;0.0;1025.4669;1579.0331;-201.0;1920.8733;549.0425;-201.0;2695.851;1559.5015;-201.0 +0.07302153;-2.3940778;9.006106;0.062738314;0.028661052;0.006537404;-19.414259;36.328598;-1.7055222;15.443118;0.0;0.0;0.0;0.0;0.0;0.0;1248.6799;2504.7551;-201.0;1953.3746;1016.0607;-201.0;2958.8604;720.89716;-201.0 +0.063835956;5.5968323;-3.6544971;0.04717678;0.013449463;0.004405994;-6.454471;6.095369;12.88184;-20.166481;0.0;0.0;0.0;0.0;0.0;0.0;792.6121;1340.2054;-201.0;1861.8695;748.1099;-201.0;2950.121;1030.4244;-201.0 +0.030422831;6.78422;5.4144287;0.083506584;0.04365456;0.0024638285;11.540749;-17.73859;-4.6073494;14.956439;0.0;0.0;0.0;0.0;0.0;0.0;1067.6586;976.2514;-201.0;2016.3558;1862.9264;-201.0;2787.5085;739.4597;-201.0 +0.17224844;-12.758404;15.732475;0.051603377;-0.021027222;0.02828408;29.126907;6.219715;40.400734;8.702255;26.937225;0.0;0.7834367;6.6422753;8.803336;24.00371;465.04935;1392.2178;-7.512005;1613.3203;560.8162;-22.86622;2536.9773;1013.63965;-17.234089 +0.14375566;-24.05854;33.348003;0.06867201;0.011666615;0.02097681;11.611873;29.594345;13.222389;20.90497;38.167942;0.017951084;0.5391912;11.036587;28.52942;20.436005;804.4385;1813.1543;0.0;1738.1641;1061.9937;-29.277039;2957.3567;948.20807;-26.342728 +0.014306876;-11.243809;26.967169;0.018643944;0.050341975;0.0015127645;12.4231;-7.0247726;-1.7017583;8.023529;0.0;0.0;0.0;0.0;0.0;0.0;858.63226;1105.9069;-201.0;1751.1644;1169.2184;-201.0;2839.303;1234.7816;-201.0 +0.009095943;-5.119072;12.186145;0.013437883;0.035999104;3.264927E-4;5.5116897;7.817103;6.8242455;11.972707;0.0;0.0;0.0;0.0;0.0;0.0;954.5259;1381.4452;-201.0;1659.8644;2034.5094;-201.0;2512.1843;1060.502;-201.0 +0.289263;-10.918466;25.338669;0.07638725;-7.501719E-4;0.09543028;27.385775;-15.564157;-12.38268;-48.88683;40.29712;0.020470286;1.0561372;6.572883;12.145553;24.513357;668.6563;1538.126;0.0;1511.4095;1137.4833;-24.617147;2638.4583;2475.1416;-32.06812 +0.33700833;-2.420372;20.471823;0.050194215;0.008233545;0.052767336;45.679684;-30.668001;1.0780874;14.644108;22.71879;0.007611212;0.63974404;2.8142102;-2.03157;5.317148;1072.0447;1190.1132;-10.365606;1631.07;2063.511;-5.49744;2746.4453;668.9006;-13.9289465 +0.41720298;1.7312307;6.504835;0.043306034;0.0025550534;0.11789139;7.4232965;-7.210096;32.524918;-7.453317;0.0;0.0;0.0;0.0;0.0;0.0;723.52765;1840.684;-201.0;1485.6615;1642.2203;-201.0;2336.022;965.11505;-201.0 +0.069290645;-15.745968;25.46858;0.062029053;0.0048114224;0.015824912;37.68521;6.0927467;19.79673;19.160334;0.0;0.0;0.0;0.0;0.0;0.0;398.94388;1256.1669;-201.0;1544.6709;739.9936;-201.0;2899.4744;990.92694;-201.0 +0.0049872445;0.5806279;6.1850047;0.069666125;0.045376465;9.5386524E-5;1.4445745;1.4466858;-3.136586;2.8266258;0.0;0.0;0.0;0.0;0.0;0.0;1006.103;1222.5977;-201.0;2009.1373;1167.9054;-201.0;2783.179;1274.9843;-201.0 +0.002430111;-3.4937017;8.048154;0.06047906;0.043184567;4.1550767E-5;2.4762337;8.289261;0.21085978;0.1063403;0.0;0.0;0.0;0.0;0.0;0.0;653.0075;1580.6124;-201.0;1676.8835;1262.4368;-201.0;2615.1846;1625.2675;-201.0 +2.628437;14.108211;6.2726874;0.086452775;0.04430273;1.661482;-10.770408;-53.266113;-18.706047;-16.244013;48.022106;0.005618468;0.5877299;11.464253;-13.048981;3.9971848;678.63495;1352.153;9.172173;1619.1284;1086.0643;21.487686;2724.3909;875.0844;5.846115 +0.3906323;-2.0128143;6.974735;0.09343928;-0.001375768;0.18881826;-9.227555;-0.44757175;-10.706632;-9.957532;50.774456;0.05538048;3.923804;11.911641;-4.238564;-7.7860923;794.4041;1424.9072;0.0;1601.7428;947.7337;-25.280169;2767.6711;810.32196;-21.732641 +0.0012958569;4.036262;0.0;0.08844409;0.060302794;1.28633355E-5;-5.1854396;0.9532736;-0.689482;0.38506338;0.0;0.0;0.0;0.0;0.0;0.0;874.65283;790.98755;-201.0;1423.8427;1796.1738;-201.0;2471.027;1439.8123;-201.0 +0.36303583;-14.075688;18.85995;0.105763234;-0.016599959;0.10744319;23.491064;1.3433113;23.239052;-27.838968;34.499954;0.0039942055;0.81562024;5.2519274;10.537517;28.20111;446.43222;1562.4237;-6.3754663;1691.8092;899.16425;-28.058153;2441.657;2242.148;-27.873253 +0.11920935;-0.30119762;14.623764;-0.0011822432;0.021398047;0.017120508;10.0767565;-17.65901;-0.5191728;-3.5595176;0.0;0.0;0.0;0.0;0.0;0.0;527.4093;973.6961;-201.0;1398.2198;1033.8236;-201.0;2371.5657;963.5455;-201.0 +0.043413967;-29.35514;40.64114;-0.059428383;0.01989151;0.043875825;9.562508;6.78138;13.414165;8.501082;0.0;0.0;0.0;0.0;0.0;0.0;872.05524;1632.9415;-201.0;1881.8389;1468.2534;-201.0;3047.5276;1391.4362;-201.0 +0.0013326285;3.1259892;0.8397564;0.08571297;0.05953856;5.8044665E-5;-3.4802735;0.5212664;-1.1262431;0.0055197924;0.0;0.0;0.0;0.0;0.0;0.0;877.8253;1381.8872;-201.0;1794.4652;1240.4137;-201.0;2695.5225;1357.5078;-201.0 +1.7864515;5.9408946;-2.9355977;0.07703959;-0.026586486;1.094773;5.4276233;-23.374601;40.686996;-24.852098;37.620285;0.012759197;0.69193095;6.861586;17.589075;1.5925193;1347.1329;1644.4479;-18.55642;2139.4524;816.6467;-1.6074748;3078.3723;805.2443;6.666331 +0.060464736;-19.270456;27.19584;0.049234886;0.018905895;0.011840626;11.575341;26.595942;17.987465;21.985506;0.0;0.0;0.0;0.0;0.0;0.0;650.1396;1149.4749;-201.0;1743.5631;763.34;-201.0;2745.0203;656.95776;-201.0 +2.524945;-3.9847116;16.67517;0.04079902;-0.008014152;1.7981335;3.441808;-28.439299;-29.24911;-47.004242;42.399426;0.010191624;1.084539;6.6473823;-3.0529375;13.63589;1071.0564;1117.0226;18.895533;1933.1172;2838.1445;3.540603;2710.0422;781.5625;2.2067068 +0.10266864;-5.527948;22.238485;0.088490665;0.014238282;0.017120188;24.542969;-11.009158;-7.503015;-19.760748;39.101307;0.0066558123;1.0066239;5.3682027;-0.7624545;22.787207;581.6208;1319.5314;0.0;1411.744;1173.7006;-10.154647;2422.8616;990.0249;-29.0832 +0.009344911;-6.8368835;14.51046;0.02957888;0.031368736;2.9609966E-4;6.9067;11.534551;10.400842;8.311393;0.0;0.0;0.0;0.0;0.0;0.0;950.18994;1317.398;-201.0;1886.3851;1086.49;-201.0;2543.1672;1892.7894;-201.0 +0.005410351;-6.7250047;17.035738;0.0151145;0.038279723;1.5931018E-4;-4.740644;9.715638;5.0558457;6.0189614;0.0;0.0;0.0;0.0;0.0;0.0;512.8313;1756.7822;-201.0;1567.7408;1089.285;-201.0;2411.5896;1827.1693;-201.0 +0.07581643;-25.052462;37.710094;0.009528586;-0.0037599746;0.026341712;32.59309;23.610903;26.313818;24.25074;23.445848;0.042895723;2.4086592;4.613877;16.874952;42.861984;366.12228;1199.1648;-13.493908;1472.4531;789.1402;-29.514221;2691.1335;963.6342;-39.641308 +0.003070121;-1.0556207;9.511985;0.02664282;0.05513525;2.4024882E-4;-2.576298;5.640779;7.3530297;11.486305;0.0;0.0;0.0;0.0;0.0;0.0;685.03467;1349.0599;-201.0;1379.9053;2323.6277;-201.0;2262.14;1259.7249;-201.0 +0.0665391;6.127346;-3.6681435;0.03124773;0.013192825;0.0063595106;-8.489868;6.847113;32.081577;-11.032532;26.679937;0.0;0.0;1.3301337;-2.4073987;9.495432;496.91895;1502.2723;-64.79277;1493.611;468.98816;-89.420494;2518.2356;927.0608;-71.98149 +0.052928656;-6.0903983;18.82756;0.0022971162;0.019541811;0.0056697316;31.641893;-8.857718;8.023976;22.726004;0.0;0.0;0.0;0.0;0.0;0.0;840.6975;1505.2281;-201.0;1715.7299;1345.5154;-201.0;2837.635;1154.9716;-201.0 +0.0052650855;-14.956738;25.800207;-0.019270422;0.0430751;4.8144205E-4;-1.5548416;12.837642;9.04008;13.346749;0.0;0.0;0.0;0.0;0.0;0.0;927.16986;1529.2628;-201.0;1950.1533;1540.9528;-201.0;2911.2092;1186.7134;-201.0 +1.083968;-11.059383;18.061136;0.104275905;-0.034066696;0.6706988;24.331934;5.2762856;-7.250908;-39.82344;35.45322;0.045291603;1.769392;5.094752;-1.3693213;17.929129;707.2217;1291.292;-10.684086;1684.5797;862.25195;-18.545637;2681.5593;590.2088;-17.3005 +0.07536897;16.006708;-10.958852;0.11767224;0.01771683;0.006329565;-20.55674;-9.537103;13.934177;-29.40982;0.0;0.0;0.0;0.0;0.0;0.0;1198.4614;615.97003;-201.0;2008.7152;1290.0898;-201.0;3001.786;981.40094;-201.0 +0.014950409;-7.379881;11.922256;0.042784292;0.022199884;8.3945674E-4;11.686313;10.592767;9.448503;-5.4802365;0.0;0.0;0.0;0.0;0.0;0.0;761.2747;1567.5707;-201.0;1750.1694;1212.7655;-201.0;2813.1602;848.3245;-201.0 +0.48644736;5.3087106;21.467016;0.088692255;0.01644846;0.1678502;21.938965;-40.11224;-20.73091;-32.958153;38.21897;0.020353243;0.50389594;8.899166;-9.315322;5.9007583;753.14355;1303.7772;4.963213;1842.3018;1394.0392;4.2013545;2761.8792;788.2241;-3.3123415 +0.044841137;-22.87884;24.63961;-0.0041429815;-0.00856096;0.0066431216;33.74788;16.642235;39.847355;8.065217;19.485672;0.022957565;0.9890979;4.328713;7.7884183;33.94975;616.9334;1447.0204;-22.16039;1523.6776;3873.2566;-35.251644;2517.0205;878.77264;-36.994827 +0.17940094;-4.698506;19.822302;0.11528654;-0.012000495;0.053057943;43.631287;-23.243113;-31.755953;-15.768035;0.0;0.0;0.0;0.0;0.0;0.0;381.1415;1473.8961;-201.0;1238.3671;1191.1764;-201.0;2177.5305;750.0351;-201.0 +0.004428088;1.4646872;4.6982803;0.05784623;0.039283928;9.7185104E-5;-0.47184196;1.2227488;-1.6549253;1.4760609;0.0;0.0;0.0;0.0;0.0;0.0;876.1953;1755.1719;-201.0;1594.5675;2097.3389;-201.0;2448.3047;1299.641;-201.0 +0.055584352;1.9453697;-0.29844633;-0.0018408248;0.029123241;0.007556841;-3.6856968;19.80246;49.876343;1.7340212;0.0;0.0;0.0;0.0;0.0;0.0;1368.0824;425.25696;-201.0;2489.0154;558.6793;-201.0;3163.004;1572.7887;-201.0 +0.05528559;-5.167497;21.9549;-0.003891248;0.03158903;0.0049761613;19.110903;-7.62089;20.689137;20.888794;0.0;0.0;0.0;0.0;0.0;0.0;1122.77;1383.8231;-201.0;1658.1027;1283.7545;-201.0;2862.8215;814.0019;-201.0 +0.30766895;8.87782;-7.9357333;0.06037092;5.2352465E-4;0.04398686;-19.12052;21.632696;-2.6414492;-6.2204404;0.0;0.0;0.0;0.0;0.0;0.0;531.0943;1354.6764;-141.58832;1521.7036;780.05695;-139.18645;2557.8389;937.4734;-140.79726 +0.0051795645;-17.79114;28.034323;-0.022024503;0.039935514;6.1217276E-4;1.7531811;17.44311;13.872383;15.778123;0.0;0.0;0.0;0.0;0.0;0.0;953.45734;1177.5098;-201.0;1858.9253;975.081;-201.0;2879.086;773.81476;-201.0 +0.35400984;-4.689925;10.995304;0.025655093;0.0048002857;0.073266625;-1.4115597;21.094797;-1.0563726;-0.84253216;0.0;0.0;0.0;0.0;0.0;0.0;937.70685;1120.18;-144.47539;2021.8666;889.06964;-142.59966;2961.0457;2910.8787;-142.53291 +0.19137426;-8.474963;27.596016;0.07015954;0.01109124;0.046063352;42.06636;-11.587602;7.0655084;-0.49584857;25.369543;0.0913882;1.4062214;3.0077026;2.8876772;25.743383;905.3877;1575.2158;-6.8443704;1397.5312;1660.4242;-3.6736658;2713.999;824.7707;-21.623444 +0.00866815;-6.4666343;17.53951;-0.0043885284;0.042064104;4.466124E-4;1.0877434;-0.028326571;6.983915;9.110545;0.0;0.0;0.0;0.0;0.0;0.0;643.73267;1274.3303;-201.0;1450.5243;1256.7926;-201.0;2411.7578;911.06573;-201.0 +0.008014885;-7.3590026;17.918306;0.019731458;0.03117951;4.808791E-4;3.463685;4.546841;8.388724;3.301054;0.0;0.0;0.0;0.0;0.0;0.0;809.8965;1457.6871;-201.0;1728.2758;1183.82;-201.0;2624.4841;1049.545;-201.0 +0.07729021;3.6101036;9.207305;0.039868552;0.028468003;0.0071207355;7.0184517;-16.427298;-9.906934;-0.9447096;0.0;0.0;0.0;0.0;0.0;0.0;810.6584;1168.8984;-201.0;1624.8656;1198.2902;-201.0;2662.1677;892.1247;-201.0 +0.046195865;-22.304817;30.789085;0.008618343;0.008236887;0.0094509255;34.330837;18.593967;21.581848;0.16046053;0.0;0.0;0.0;0.0;0.0;0.0;390.11435;1575.441;-201.0;1362.1415;1490.3646;-201.0;2321.6511;1148.9994;-201.0 +0.035370372;1.8095455;4.3928885;0.0882226;0.032035276;0.0017082733;-3.6447525;0.15500624;8.271159;-0.7125172;0.0;0.0;0.0;0.0;0.0;0.0;1006.7487;833.3588;-201.0;2000.9178;924.908;-201.0;2986.3826;1330.9431;-201.0 +0.85770863;-13.416611;23.822311;0.0993579;-0.009026941;0.47269568;20.706572;-16.1358;-43.50192;-54.47093;45.77441;0.001943483;0.5084616;10.563447;13.697475;29.310019;470.89114;1665.9423;0.0;1342.605;1678.4313;-16.128817;2616.2764;603.43774;-24.013062 +1.0206817;-8.131679;18.728767;0.01455101;0.005326696;0.5743796;4.9134173;13.887675;-3.8709831;-9.193629;42.364857;0.08206163;1.4202483;5.5455728;8.729537;21.459198;1181.7544;1010.596;-10.058802;2331.757;1187.3934;-25.236273;3228.5134;1301.7906;-25.630182 +0.19794786;1.3969413;1.9759798;0.018888528;0.014782257;0.032976832;-1.0650741;-4.2044134;6.0690665;-7.6766305;29.241072;0.0;0.0;2.851782;3.3546228;6.6698694;462.3611;932.41815;-76.878365;1411.0209;878.7413;-82.33321;2343.5222;704.9642;-79.08853 +0.2731922;-12.03642;24.675217;0.08743459;-0.027082255;0.09381407;39.11704;-9.241809;-9.623317;-15.771075;0.0;0.0;0.0;0.0;0.0;0.0;906.9951;1391.2653;-201.0;1826.9242;873.4753;-201.0;3197.1306;753.8732;-201.0 +0.2815794;1.0203463;9.995854;0.045876954;0.042298835;0.0408815;-1.7942529;-9.418178;-1.6629013;-3.16803;0.0;0.0;0.0;0.0;0.0;0.0;1066.8312;1022.22687;-136.27423;2271.1545;979.97687;-139.57402;3087.823;1501.5983;-141.53497 +0.036066916;-13.667157;20.55477;0.02644897;0.02408497;0.004739933;7.7110953;29.892685;16.897367;16.348175;0.0;0.0;0.0;0.0;0.0;0.0;548.1393;2200.3958;-201.0;1503.2369;1668.7819;-201.0;2338.6746;919.8814;-201.0 +0.023910195;-12.61324;26.405207;0.058264196;0.03051888;0.0028684437;22.669737;6.6497025;13.3961525;2.985614;0.0;0.0;0.0;0.0;0.0;0.0;1201.9916;1113.5331;-201.0;2215.716;1491.5741;-201.0;3015.5808;742.9444;-201.0 +0.424464;10.408939;1.6562023;-0.018423915;0.031760085;0.06291575;-10.550328;-17.08536;8.265286;-0.6447117;0.0;0.0;0.0;0.0;0.0;0.0;763.67035;903.687;-201.0;1524.5488;2246.838;-201.0;2318.0986;1097.8546;-201.0 +0.17768289;-6.3336644;15.423808;0.09517896;-0.0067179822;0.03563048;26.711699;-7.494184;22.993782;22.497824;0.0;0.0;0.0;0.0;0.0;0.0;272.77628;1336.3213;-132.79823;1370.068;648.15985;-141.67284;2378.1355;717.7193;-141.30415 +0.23815;-8.831864;14.001355;0.05801204;0.01606302;0.046095025;1.8799125;26.499044;-3.1689694;11.042626;35.924885;0.0;0.0;4.560699;19.407053;23.741829;1072.4004;1216.3287;-21.883554;1692.5093;1354.1569;-19.696093;2879.5232;688.0179;-28.76114 +0.13338684;4.1989574;0.8409793;0.059368163;0.01576195;0.021006564;14.276776;-23.439941;15.209228;15.238954;0.0;0.0;0.0;0.0;0.0;0.0;1075.3329;835.52783;-201.0;1920.6642;1284.0321;-201.0;2896.2004;1284.5026;-201.0 +0.053278547;-25.796257;31.487368;0.028530875;-0.025497762;0.0072713257;43.34961;20.295973;1.8967184;-3.0299504;18.639717;0.0052705696;1.0174525;4.58467;9.35628;32.10826;609.4389;1740.7389;-73.26945;1469.4144;1861.8202;-83.518456;2725.0955;1238.7096;-92.290306 +0.0065465285;2.5575316;3.8375618;0.05499165;0.04277858;1.6928448E-4;-3.6085103;1.4076024;0.09536914;3.4836934;0.0;0.0;0.0;0.0;0.0;0.0;661.0815;1484.6666;-201.0;1558.5751;1192.0597;-201.0;2484.4478;950.53296;-201.0 +0.033042062;-16.778719;34.046677;0.0038867688;0.023113174;0.0053823553;34.890446;9.718826;4.238156;24.517221;0.0;0.0;0.0;0.0;0.0;0.0;630.00336;1576.7524;-201.0;1809.2181;1220.4045;-201.0;3261.473;1607.9213;-201.0 +0.14849494;0.020125866;6.8082733;0.008026151;-1.1498047E-4;0.020702036;1.4362296;3.7020864;24.824907;1.9608841;0.0;0.0;0.0;0.0;0.0;0.0;936.3694;951.4056;-201.0;1722.0752;2132.18;-201.0;2712.066;844.90436;-201.0 +2.3250945;-2.170532;15.114329;0.05742045;-0.01792869;0.9971389;-2.100904;-16.637505;-32.891216;-67.31794;43.034336;0.0052293544;0.3980147;11.341435;-4.2208686;9.586064;1023.04156;974.5578;15.738281;2346.1074;350.85965;1.9313482;3195.0056;685.18805;1.9313482 +0.15491237;-11.800995;17.719164;0.086227246;-0.013748561;0.028678989;9.020627;9.190034;3.7834713;-8.35446;41.207508;0.029048158;2.251506;9.336835;17.126852;14.085111;312.99545;1457.0819;0.0;1502.5284;813.30743;-14.959457;2705.0745;621.3384;-7.391212 +1.3251647;9.026366;-8.319072;0.06611543;-0.026294619;0.3093247;-11.857791;-53.050217;10.645322;-30.787615;51.739285;0.0014977265;0.44473824;12.205592;-7.9603524;-13.780988;1125.4276;613.5397;-16.640244;1951.1439;1049.3612;5.7720146;2918.3313;1151.7993;-2.859256 From 196d16307c276a7aaa713c507289ac291a864931 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Tue, 17 Sep 2024 13:20:35 +0900 Subject: [PATCH 02/22] docs: update contributing guidelines for directory names and formatting instructions --- CONTRIBUTING.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5fe9f2f2..8699f428 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,7 +21,7 @@ The preferred way to contribute to nkululeko is to fork the [main repository](ht ```bash git clone https://github.com/YourLogin/nkululeko.git - cd spafe + cd nkululeko ``` 3. Remove any previously installed nkululeko versions, then install your local copy with testing dependencies: @@ -43,9 +43,11 @@ The preferred way to contribute to nkululeko is to fork the [main repository](ht -> Please never work directly on the `master` branch! ``` -6. Once you are done, make sure to format the code using black to fit spafe's codestyle. +6. Once you are done, make sure to format the code using black to fit Nkululeko's codestyle. - ```black nkululeko/``` + ```black nkululeko + ruff check --fix --output-format=full nkululeko + ``` 7. Make sure that the tests succeed and have enough coverage. From e8e02b04821e4c9f3dfa9d3e4dad86c61afbf6b8 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Tue, 17 Sep 2024 15:32:23 +0900 Subject: [PATCH 03/22] add balancing and comment auc code due to bug (self.preds should be self.score) --- nkululeko/models/model_tuned.py | 26 ++++++++++++++++++++++- nkululeko/reporting/reporter.py | 37 +++++++++++++++++---------------- 2 files changed, 44 insertions(+), 19 deletions(-) diff --git a/nkululeko/models/model_tuned.py b/nkululeko/models/model_tuned.py index e7215134..f5183073 100644 --- a/nkululeko/models/model_tuned.py +++ b/nkululeko/models/model_tuned.py @@ -23,7 +23,6 @@ from nkululeko.models.model import Model as BaseModel from nkululeko.reporting.reporter import Reporter - class TunedModel(BaseModel): def __init__(self, df_train, df_test, feats_train, feats_test): """Constructor taking the configuration and all dataframes.""" @@ -63,6 +62,7 @@ def __init__(self, df_train, df_test, feats_train, feats_test): self.drop = float(drop) self.util.debug(f"init: training with dropout: {self.drop}") self.push = eval(self.util.config_val("MODEL", "push_to_hub", "False")) + self.balancing = self.util.config_val("MODEL", "balancing", False) self._init_model() def _init_model(self): @@ -91,6 +91,29 @@ def _init_model(self): df = y.reset_index() df.start = df.start.dt.total_seconds() df.end = df.end.dt.total_seconds() + # ds = datasets.Dataset.from_pandas(df) + # dataset[split] = ds + + # self.dataset = datasets.DatasetDict(dataset) + if split == "train" and self.balancing: + if self.balancing == "ros": + from imblearn.over_sampling import RandomOverSampler + sampler = RandomOverSampler(random_state=42) + elif self.balancing == "smote": + from imblearn.over_sampling import SMOTE + sampler = SMOTE(random_state=42) + elif self.balancing == "adasyn": + from imblearn.over_sampling import ADASYN + sampler = ADASYN(random_state=42) + else: + self.util.error(f"Unknown balancing algorithm: {self.balancing}") + + X_resampled, y_resampled = sampler.fit_resample(df[['start', 'end']], df['targets']) + df = pd.DataFrame({'start': X_resampled['start'], 'end': X_resampled['end'], 'targets': y_resampled}) + + # print the before and after class distribution + self.util.debug(f"balanced with: {self.balancing}, new size: {len(df)}, was {len(data_sources[split])}") + ds = datasets.Dataset.from_pandas(df) dataset[split] = ds @@ -600,3 +623,4 @@ def forward(self, prediction, ground_truth): ccc = numerator / denominator return 1 - ccc + diff --git a/nkululeko/reporting/reporter.py b/nkululeko/reporting/reporter.py index c501648f..1cb1d093 100644 --- a/nkululeko/reporting/reporter.py +++ b/nkululeko/reporting/reporter.py @@ -419,24 +419,25 @@ def print_results(self, epoch=None): f1_per_class = ( f"result per class (F1 score): {c_ress} from epoch: {epoch}" ) - if len(np.unique(self.truths)) == 2: - fpr, tpr, _ = roc_curve(self.truths, self.preds) - auc_score = auc(fpr, tpr) - plot_path = f"{fig_dir}{self.util.get_exp_name()}_{epoch}{self.filenameadd}_roc.{self.format}" - plt.figure() - display = RocCurveDisplay( - fpr=fpr, - tpr=tpr, - roc_auc=auc_score, - estimator_name=f"{self.model_type} estimator", - ) - display.plot(ax=None) - plt.savefig(plot_path) - plt.close() - self.util.debug(f"Saved ROC curve to {plot_path}") - pauc_score = roc_auc_score(self.truths, self.preds, max_fpr=0.1) - auc_pauc = f"auc: {auc_score:.3f}, pauc: {pauc_score:.3f} from epoch: {epoch}" - self.util.debug(auc_pauc) + # the following auc is buggy, preds should be probabilities + # if len(np.unique(self.truths)) == 2: + # fpr, tpr, _ = roc_curve(self.truths, self.preds) + # auc_score = auc(fpr, tpr) + # plot_path = f"{fig_dir}{self.util.get_exp_name()}_{epoch}{self.filenameadd}_roc.{self.format}" + # plt.figure() + # display = RocCurveDisplay( + # fpr=fpr, + # tpr=tpr, + # roc_auc=auc_score, + # estimator_name=f"{self.model_type} estimator", + # ) + # display.plot(ax=None) + # plt.savefig(plot_path) + # plt.close() + # self.util.debug(f"Saved ROC curve to {plot_path}") + # pauc_score = roc_auc_score(self.truths, self.preds, max_fpr=0.1) + # auc_pauc = f"auc: {auc_score:.3f}, pauc: {pauc_score:.3f} from epoch: {epoch}" + # self.util.debug(auc_pauc) self.util.debug(f1_per_class) rpt_str = f"{json.dumps(rpt)}\n{f1_per_class}" # rpt_str += f"\n{auc_auc}" From 9c4e721c037827ebf927de3bc54bb418c83bbf71 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 12:38:32 +0900 Subject: [PATCH 04/22] modify make_readme.py --- data/README.md | 6 +++--- data/make_readme.py | 41 ++++++++++++++++++----------------------- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/data/README.md b/data/README.md index 603c9fac..bfbdcd9e 100644 --- a/data/README.md +++ b/data/README.md @@ -16,11 +16,9 @@ The column `access` in the table below indicates the database's accessability. T To support open science and reproducible research, we only accept PR and recipes for public dataset for now on. -## Databases - |Name|Target|Description|Access| | :--- | :--- | :--- | :--- | -|emorynlp|emotion|English, From Friends TV|public| +|emorynlp|emotion|English Emotion Dataset from Friends TV Show|public| |emns|emotion,intensity|British, singles peaker, UAR=.479|public| |test|none|Test data for nkululeko|public| |catsvsdogs|cats_dogs|kaggle test set|public| @@ -77,6 +75,8 @@ To support open science and reproducible research, we only accept PR and recipes |shemo|emotion|Persian|public| |esd|emotion|English,Chinese|public| + +This repository contains information about 56 datasets. ## Performance ![Nkululeko performance](../meta/images/nkululeko_ser_20240719.png) diff --git a/data/make_readme.py b/data/make_readme.py index a5aede7b..bbacc47f 100644 --- a/data/make_readme.py +++ b/data/make_readme.py @@ -38,33 +38,28 @@ "now on." ) -mdFile.new_header(level=2, title="Databases") -table_list = ["Name", "Target", "Description", "Access"] +# read all lines in yaml file +with open(os.path.join(root, "descr.yml")) as stream: + descr = yaml.safe_load(stream) -db_folders = os.scandir(root) +table_list = ["Name", "Target", "Description", "Access"] db_num = 0 -for f in db_folders: - if f.is_file(): - continue - dir = f.name - descr = None - try: - with open(os.path.join(root, dir, "descr.yml")) as stream: - try: - descr = yaml.safe_load(stream) - except yaml.YAMLError as exc: - print(exc) - except FileNotFoundError as fnf: - pass - if descr != None: - table_list.extend( - [descr["name"], descr["target"], descr["descr"], descr["access"]] - ) - db_num += 1 - else: - print(f"error on {dir}") + +for dataset_name in descr.keys(): + # print(dataset_name) + table_list.extend([ + descr[dataset_name][0]['name'], + descr[dataset_name][1]['target'], + descr[dataset_name][2]['descr'], + descr[dataset_name][3]['access'] + ]) + db_num += 1 + mdFile.new_table(columns=4, rows=db_num + 1, text=table_list, text_align="left") +# add information about number of datasets +mdFile.new_paragraph(f"This recipe contains information about {db_num} datasets.") + mdFile.new_header(level=2, title="Performance") mdFile.new_line( mdFile.new_inline_image( From 679e6579951c3e648f2e24f4665e23e8a13fc8e8 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 12:38:58 +0900 Subject: [PATCH 05/22] add descr.yml --- data/descr.yml | 391 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 391 insertions(+) create mode 100644 data/descr.yml diff --git a/data/descr.yml b/data/descr.yml new file mode 100644 index 00000000..dcd9411d --- /dev/null +++ b/data/descr.yml @@ -0,0 +1,391 @@ +# EMORYNLP Dataset +EMORYLP: +- name: emorynlp +- target: emotion +- descr: English Emotion Dataset from Friends TV Show +- access: public + +# EMNS Dataset +EMNS: +- name: emns +- target: emotion,intensity +- descr: British, singles peaker, UAR=.479 +- access: public + +# Test Dataset +TEST: +- name: test +- target: none +- descr: Test data for nkululeko +- access: public + +# Cats vs Dogs Dataset +CATSVSDOGS: +- name: catsvsdogs +- target: cats_dogs +- descr: kaggle test set +- access: public + +# CLAC Dataset +CLAC: +- name: clac +- target: healthyspeech,age,gender +- descr: English +- access: public + +# VIVAE Dataset +VIVAE: +- name: vivae +- target: emotion +- descr: English vocal bursts +- access: public + +# EmoFilm Dataset +EMOFILM: +- name: emofilm +- target: emotion +- descr: English, Spanish, Italian +- access: restricted + +# Emozionalmente Dataset +EMOZIONALMENTE: +- name: emozionalmente +- target: emotion +- descr: Italian +- access: public + +# Laughter Types Dataset +LAUGHTERTYPES: +- name: laughter-types +- target: laughter +- descr: Master Thesis from TUBerlin +- access: public + +# SAVEE Dataset +SAVEE: +- name: savee +- target: emotion +- descr: English, from tfds +- access: restricted + +# EMOVO Dataset +EMOVO: +- name: emovo +- target: emotion +- descr: Italian +- access: restricted + +# SUBESCO Dataset +SUBESCO: +- name: subesco +- target: emotion +- descr: Bangla +- access: public + +# OREAU2 Dataset +OREAU2: +- name: oreau2 +- target: emotion +- descr: French +- access: public + +# MESS Dataset +MESS: +- name: mess +- target: emotion +- descr: English +- access: public + +# EMOV-DB Dataset +EMOVDB: +- name: emov-db +- target: emotion +- descr: English +- access: public + +# Odyssey CAT 2024 Dataset +ODYSSEYCAT2024: +- name: odyssey-cat-2024 +- target: emotion +- descr: Data for Odyssey 2024 challenge, needs MSPPodcast +- access: restricted + +# RAVDESS Dataset +RAVDESS: +- name: ravdess +- target: emotion,speaker +- descr: English +- access: public + +# ERYSAC Dataset +ERYSAC: +- name: erysac +- target: emotion +- descr: Russian, children +- access: public + +# DEMOS Dataset +DEMOS: +- name: demos +- target: emotion +- descr: Italian +- access: restricted + +# EMO-DB Dataset +EMODB: +- name: emodb +- target: emotion +- descr: German +- access: public + +# JNV Dataset +JNV: +- name: jnv +- target: emotion +- descr: Japanese, non-verbals +- access: public + +# AESDD Dataset +AESDD: +- name: aesdd +- target: emotion +- descr: amharic language +- access: public + +# MSP-Podcast Dataset +MSPPODCAST: +- name: msp-podcast +- target: emotion,VAD +- descr: English +- access: restricted + +# BAVED Dataset +BAVED: +- name: baved +- target: emotion +- descr: Arabic +- access: public + +# ASVP-ESD Dataset +ASVPESD: +- name: asvp-esd +- target: emotion +- descr: Multilingual, also contain vocal bursts +- access: public + +# Estonian Emotional Speech Corpus Dataset +EKORPUS: +- name: ekorpus +- target: emotion +- descr: Estonian +- access: public + +# IEMOCAP Dataset +IEMOCAP: +- name: iemocap +- target: emotion,VAD +- descr: English +- access: restriced + +# JL Dataset +JL: +- name: jl +- target: emotion +- descr: English +- access: public + +# SYNTACT Dataset +SYNTACT: +- name: syntact +- target: emotion +- descr: Synthesized German speech +- access: public + +# KIA Dataset +KIA: +- name: kia +- target: emotion +- descr: Korean, wake-up word +- access: public + +# Portuguese Dataset +PORTUGUESE: +- name: portuguese +- target: emotion +- descr: Portuguese +- access: public + +# CREMA-D Dataset +CREMAD: +- name: crema-d +- target: emotion +- descr: English,adopted from tfds +- access: public + +# Thorsten Emotional Dataset +THORSTENEMOTIONAL: +- name: thorsten-emotional +- target: emotion +- descr: German +- access: public + +# JVNV Dataset +JVNV: +- name: jvnv +- target: emotion +- descr: Japanese, verbal and non-verbal +- access: public + +# MESD Dataset +MESD: +- name: mesd +- target: emotion +- descr: Mexican +- access: public + +# eNTERFACE Dataset +ENTERFACE: +- name: enterface +- target: emotion +- descr: Multilingual +- access: public + +# TUREV Dataset +TUREV: +- name: turev +- target: emotion +- descr: Turkish +- access: public + +# nEMO Dataset +NEMO: +- name: nEMO +- target: emotion,VAD +- descr: Polish +- access: public + +# EAED Dataset +EAED: +- name: eaed +- target: emotion +- descr: Arabic +- access: public + +# ASED Dataset +ASED: +- name: ased +- target: emotion +- descr: Greek +- access: public + +# CAFE Dataset +CAFE: +- name: cafe +- target: emotion +- descr: Childrenspeech, CanadianFrench +- access: public + +# BanglaSER Dataset +BANGLASER: +- name: banglaser +- target: emotion +- descr: Bengali +- access: public + +# MLENDSND Dataset +MLENDSND: +- name: mlendsnd +- target: emotion +- descr: English +- access: public + +# GERPARAS Dataset +GERPARAS: +- name: gerparas +- target: valence,arousal,dominance +- descr: German +- access: restricted + +# Androids Dataset +ANDROIDS: +- name: androids +- target: depression +- descr: English +- access: public + +# KBES Dataset +KBES: +- name: kbes +- target: emotion +- descr: Bengali +- access: public + +# TESS Dataset +TESS: +- name: tess +- target: emotion +- descr: British English (Toronto) +- access: public + +# JTES Dataset +JTES: +- name: jtes +- target: emotion +- descr: Japanese +- access: private + +# MELD Dataset +MELD: +- name: meld +- target: emotion +- descr: English, From Friends TV +- access: public + +# Urdu Dataset +URDU: +- name: urdu +- target: emotion +- descr: Urdu +- access: public + +# Polish Dataset +POLISH: +- name: polish +- target: emotion +- descr: Polish +- access: public + +# CMU-MOSEI Dataset +CMUMOSEI: +- name: cmu-mosei +- target: sentiment,emotion +- descr: English, original link dead +- access: public + +# SVD Dataset +SVD: +- name: SVD +- target: pathologicalspeech +- descr: German +- access: public + +# MSP-IMPROV Dataset +MSPIMPROV: +- name: msp-improv +- target: emotion,VAD,naturalness +- descr: English +- access: restricted + +# ShEMO Dataset +SHEMO: +- name: shemo +- target: emotion +- descr: Persian +- access: public + +# ESD Dataset +ESD: +- name: esd +- target: emotion +- descr: English,Chinese +- access: public \ No newline at end of file From fa42e3ed6b0caac0a9f6d66ab360dbbaf2ee9001 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:01:14 +0900 Subject: [PATCH 06/22] modified: README.md modified: descr.yml modified: ../ini_file.md --- data/README.md | 4 ++-- data/descr.yml | 6 ++++++ ini_file.md | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/data/README.md b/data/README.md index bfbdcd9e..c2f4a1be 100644 --- a/data/README.md +++ b/data/README.md @@ -70,13 +70,13 @@ To support open science and reproducible research, we only accept PR and recipes |urdu|emotion|Urdu|public| |polish|emotion|Polish|public| |cmu-mosei|sentiment,emotion|English, original link dead|public| -|SVD|pathologicalspeech|German|public| +|svd|pahtological speech|German speech data for detecting various pathological voices|public| |msp-improv|emotion,VAD,naturalness|English|restricted| |shemo|emotion|Persian|public| |esd|emotion|English,Chinese|public| -This repository contains information about 56 datasets. +This recipe contains information about 56 datasets. ## Performance ![Nkululeko performance](../meta/images/nkululeko_ser_20240719.png) diff --git a/data/descr.yml b/data/descr.yml index dcd9411d..047f9edf 100644 --- a/data/descr.yml +++ b/data/descr.yml @@ -388,4 +388,10 @@ ESD: - name: esd - target: emotion - descr: English,Chinese +- access: public + +SVD: +- name: svd +- target: pahtological speech +- descr: German speech data for detecting various pathological voices - access: public \ No newline at end of file diff --git a/ini_file.md b/ini_file.md index f62435ab..c9c9a826 100644 --- a/ini_file.md +++ b/ini_file.md @@ -284,6 +284,8 @@ * **tree_reg**: Classification tree regressor * **xgb**: XG-Boost * **xgr**: XG-Boost Regression +* **balancing**: balancing for **finetune** type; for other than finetune, set balancing in [FEATS]. + * possible values: [ros, smote, adasyn] * **tuning_params**: possible tuning parameters for x-fold optimization (for Bayes, KNN, KNN_reg, Tree, Tree_reg, SVM, SVR, XGB and XGR) * tuning_params = ['subsample', 'n_estimators', 'max_depth'] * subsample = [.5, .7] From f6a54c15fdbbb3999776a9501e3f4cc6a6af4c64 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:04:43 +0900 Subject: [PATCH 07/22] rm ococosda dir --- cocosda_2024/exp.ini | 29 ----------- cocosda_2024/exp_agedb_class_agender.ini | 31 ------------ cocosda_2024/exp_agedb_class_os_praat.ini | 27 ---------- cocosda_2024/exp_agedb_class_os_svm.ini | 27 ---------- cocosda_2024/exp_agedb_class_os_xgb.ini | 26 ---------- cocosda_2024/exp_agedb_class_praat_svm.ini | 27 ---------- cocosda_2024/exp_emns_audmodel.ini | 26 ---------- cocosda_2024/exp_emns_finetuning.ini | 25 ---------- cocosda_2024/exp_emns_hubert.ini | 26 ---------- cocosda_2024/exp_emns_os.ini | 26 ---------- cocosda_2024/exp_emns_wavlm.ini | 26 ---------- cocosda_2024/exp_iemocap_audmodel_svm.ini | 28 ----------- cocosda_2024/exp_iemocap_hubert_svm.ini | 28 ----------- cocosda_2024/exp_iemocap_wavlm_svm.ini | 28 ----------- cocosda_2024/exp_jnv_audmodel.ini | 31 ------------ cocosda_2024/exp_jnv_hubert.ini | 31 ------------ cocosda_2024/exp_jnv_wavlm.ini | 31 ------------ cocosda_2024/exp_jtes_audmodel.ini | 41 --------------- cocosda_2024/exp_jtes_hubert.ini | 41 --------------- cocosda_2024/exp_jtes_wavlm.ini | 41 --------------- cocosda_2024/exp_kbes_audmodel.ini | 30 ----------- cocosda_2024/exp_kbes_hubert.ini | 30 ----------- cocosda_2024/exp_kbes_wavlm.ini | 30 ----------- cocosda_2024/exp_laughter_os.ini | 55 --------------------- cocosda_2024/exp_laughter_praat.ini | 55 --------------------- cocosda_2024/exp_podcast_audmodel_svm.ini | 28 ----------- cocosda_2024/exp_podcast_hubert_svm.ini | 28 ----------- cocosda_2024/exp_podcast_wavlm_svm.ini | 28 ----------- cocosda_2024/exp_polish_audmodel.ini | 34 ------------- cocosda_2024/exp_polish_hubert.ini | 33 ------------- cocosda_2024/exp_polish_wavlm.ini | 33 ------------- cocosda_2024/exp_ravdess_gender_agender.ini | 35 ------------- cocosda_2024/exp_ravdess_gender_os.ini | 35 ------------- cocosda_2024/exp_ravdess_gender_praat.ini | 35 ------------- cocosda_2024/exp_ravdess_speaker.ini | 36 -------------- cocosda_2024/exp_ravdess_speaker_os.ini | 36 -------------- cocosda_2024/exp_ravdess_speaker_praat.ini | 36 -------------- cocosda_2024/exp_tth_audmodel.ini | 35 ------------- cocosda_2024/exp_tth_hubert.ini | 34 ------------- cocosda_2024/exp_tth_wavlm.ini | 35 ------------- cocosda_2024/exp_turev_audmodel.ini | 33 ------------- cocosda_2024/exp_turev_hubert.ini | 32 ------------ cocosda_2024/exp_turev_wavlm.ini | 33 ------------- cocosda_2024/exp_vivae_audmodel.ini | 31 ------------ cocosda_2024/exp_vivae_hubert.ini | 31 ------------ cocosda_2024/exp_vivae_wavlm.ini | 31 ------------ 46 files changed, 1488 deletions(-) delete mode 100644 cocosda_2024/exp.ini delete mode 100644 cocosda_2024/exp_agedb_class_agender.ini delete mode 100644 cocosda_2024/exp_agedb_class_os_praat.ini delete mode 100644 cocosda_2024/exp_agedb_class_os_svm.ini delete mode 100644 cocosda_2024/exp_agedb_class_os_xgb.ini delete mode 100644 cocosda_2024/exp_agedb_class_praat_svm.ini delete mode 100644 cocosda_2024/exp_emns_audmodel.ini delete mode 100644 cocosda_2024/exp_emns_finetuning.ini delete mode 100644 cocosda_2024/exp_emns_hubert.ini delete mode 100644 cocosda_2024/exp_emns_os.ini delete mode 100644 cocosda_2024/exp_emns_wavlm.ini delete mode 100644 cocosda_2024/exp_iemocap_audmodel_svm.ini delete mode 100644 cocosda_2024/exp_iemocap_hubert_svm.ini delete mode 100644 cocosda_2024/exp_iemocap_wavlm_svm.ini delete mode 100644 cocosda_2024/exp_jnv_audmodel.ini delete mode 100644 cocosda_2024/exp_jnv_hubert.ini delete mode 100644 cocosda_2024/exp_jnv_wavlm.ini delete mode 100644 cocosda_2024/exp_jtes_audmodel.ini delete mode 100644 cocosda_2024/exp_jtes_hubert.ini delete mode 100644 cocosda_2024/exp_jtes_wavlm.ini delete mode 100644 cocosda_2024/exp_kbes_audmodel.ini delete mode 100644 cocosda_2024/exp_kbes_hubert.ini delete mode 100644 cocosda_2024/exp_kbes_wavlm.ini delete mode 100644 cocosda_2024/exp_laughter_os.ini delete mode 100644 cocosda_2024/exp_laughter_praat.ini delete mode 100644 cocosda_2024/exp_podcast_audmodel_svm.ini delete mode 100644 cocosda_2024/exp_podcast_hubert_svm.ini delete mode 100644 cocosda_2024/exp_podcast_wavlm_svm.ini delete mode 100644 cocosda_2024/exp_polish_audmodel.ini delete mode 100644 cocosda_2024/exp_polish_hubert.ini delete mode 100644 cocosda_2024/exp_polish_wavlm.ini delete mode 100644 cocosda_2024/exp_ravdess_gender_agender.ini delete mode 100644 cocosda_2024/exp_ravdess_gender_os.ini delete mode 100644 cocosda_2024/exp_ravdess_gender_praat.ini delete mode 100644 cocosda_2024/exp_ravdess_speaker.ini delete mode 100644 cocosda_2024/exp_ravdess_speaker_os.ini delete mode 100644 cocosda_2024/exp_ravdess_speaker_praat.ini delete mode 100644 cocosda_2024/exp_tth_audmodel.ini delete mode 100644 cocosda_2024/exp_tth_hubert.ini delete mode 100644 cocosda_2024/exp_tth_wavlm.ini delete mode 100644 cocosda_2024/exp_turev_audmodel.ini delete mode 100644 cocosda_2024/exp_turev_hubert.ini delete mode 100644 cocosda_2024/exp_turev_wavlm.ini delete mode 100644 cocosda_2024/exp_vivae_audmodel.ini delete mode 100644 cocosda_2024/exp_vivae_hubert.ini delete mode 100644 cocosda_2024/exp_vivae_wavlm.ini diff --git a/cocosda_2024/exp.ini b/cocosda_2024/exp.ini deleted file mode 100644 index 67abf819..00000000 --- a/cocosda_2024/exp.ini +++ /dev/null @@ -1,29 +0,0 @@ -[EXP] -root = ./ -name = results/exp_vivae_wavlm1 -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/vivae/vivae_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -test = ./data/vivae/vivae_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -no_reuse = True -; labels = ["achievement", "anger", "fear", "pain", "pleasure", "surprise"] -labels = ["anger", "fear", "pleasure", "surprise"] -min_duration_of_samples = 1 -check_size = 1000 -[RESAMPLE] -# which of the data splits to re-sample: train, test or all (both) -sample_selection = all -[FEATS] -type = ['wavlm-large'] -scale = standard -[MODEL] -type = svm -; device = cuda diff --git a/cocosda_2024/exp_agedb_class_agender.ini b/cocosda_2024/exp_agedb_class_agender.ini deleted file mode 100644 index dd12047e..00000000 --- a/cocosda_2024/exp_agedb_class_agender.ini +++ /dev/null @@ -1,31 +0,0 @@ -[EXP] -root = ./cocosda_2024/results/ -name = exp_agedb_agender_1 -type = classification -runs = 1 -epochs = 1 -save = True -[DATA] -type = continuous -databases = ['emodb'] -emodb = ./data/emodb/emodb -emodb.split_strategy = specified -emodb.test_tables = ['emotion.categories.test.gold_standard'] -emodb.train_tables = ['emotion.categories.train.gold_standard'] -target = age -; labels = ['21','25','26','30', '31', '32', '34', '35'] -labels = ['u30', 'ü30'] -bins = [-100000, 30, 100000] -[EXPL] -; value_counts = [['age']] -value_counts = [['gender', 'duration']] -sample_selection = all -[FEATS] -type = ['agender_agender'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -kernel = linear -[PLOT] -; combine_per_speaker = mode diff --git a/cocosda_2024/exp_agedb_class_os_praat.ini b/cocosda_2024/exp_agedb_class_os_praat.ini deleted file mode 100644 index 3d021fc1..00000000 --- a/cocosda_2024/exp_agedb_class_os_praat.ini +++ /dev/null @@ -1,27 +0,0 @@ -[EXP] -root = ./cocosda_2024/results/ -name = exp_agedb_praat -type = classification -runs = 1 -epochs = 1 -save = True -[DATA] -type = continuous -databases = ['emodb'] -emodb = ./data/emodb/emodb -emodb.split_strategy = specified -emodb.test_tables = ['emotion.categories.test.gold_standard'] -emodb.train_tables = ['emotion.categories.train.gold_standard'] -target = age -; labels = ['21','25','26','30', '31', '32', '34', '35'] -labels = ['u24', '25_29', '30_34', 'a34'] -bins = [-100000, 24, 29, 34, 100000] -[FEATS] -type = ['praat'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; kernel = linear -[PLOT] -; combine_per_speaker = mode diff --git a/cocosda_2024/exp_agedb_class_os_svm.ini b/cocosda_2024/exp_agedb_class_os_svm.ini deleted file mode 100644 index 20ad7a89..00000000 --- a/cocosda_2024/exp_agedb_class_os_svm.ini +++ /dev/null @@ -1,27 +0,0 @@ -[EXP] -root = ./cocosda_2024/results/ -name = exp_agedb_os_svm -type = classification -runs = 1 -epochs = 1 -save = True -[DATA] -type = continuous -databases = ['emodb'] -emodb = ./data/emodb/emodb -emodb.split_strategy = specified -emodb.test_tables = ['emotion.categories.test.gold_standard'] -emodb.train_tables = ['emotion.categories.train.gold_standard'] -target = age -; labels = ['21','25','26','30', '31', '32', '34', '35'] -labels = ['u30', 'ü30'] -bins = [-100000, 30, 100000] -[FEATS] -type = ['os'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -kernel = linear -[PLOT] -; combine_per_speaker = mode diff --git a/cocosda_2024/exp_agedb_class_os_xgb.ini b/cocosda_2024/exp_agedb_class_os_xgb.ini deleted file mode 100644 index d407e207..00000000 --- a/cocosda_2024/exp_agedb_class_os_xgb.ini +++ /dev/null @@ -1,26 +0,0 @@ -[EXP] -root = ./cocosda_2024/results/ -name = exp_agedb_svm -type = classification -runs = 1 -epochs = 1 -save = True -[DATA] -type = continuous -databases = ['emodb'] -emodb = ./data/emodb/emodb -emodb.split_strategy = specified -emodb.test_tables = ['emotion.categories.test.gold_standard'] -emodb.train_tables = ['emotion.categories.train.gold_standard'] -target = age -; labels = ['21','25','26','30', '31', '32', '34', '35'] -labels = ['u24', 'u29', 'u34'] -bins = [-100000, 24, 29, 100000] -[FEATS] -type = ['os'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -[PLOT] -; combine_per_speaker = mode diff --git a/cocosda_2024/exp_agedb_class_praat_svm.ini b/cocosda_2024/exp_agedb_class_praat_svm.ini deleted file mode 100644 index 87f2d4e3..00000000 --- a/cocosda_2024/exp_agedb_class_praat_svm.ini +++ /dev/null @@ -1,27 +0,0 @@ -[EXP] -root = ./cocosda_2024/results/ -name = exp_agedb_praat_svm_1 -type = classification -runs = 1 -epochs = 1 -save = True -[DATA] -type = continuous -databases = ['emodb'] -emodb = ./data/emodb/emodb -emodb.split_strategy = specified -emodb.test_tables = ['emotion.categories.test.gold_standard'] -emodb.train_tables = ['emotion.categories.train.gold_standard'] -target = age -; labels = ['21','25','26','30', '31', '32', '34', '35'] -labels = ['u30', 'ü30'] -bins = [-100000, 30, 100000] -[FEATS] -type = ['praat'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -kernel = linear -[PLOT] -; combine_per_speaker = mode diff --git a/cocosda_2024/exp_emns_audmodel.ini b/cocosda_2024/exp_emns_audmodel.ini deleted file mode 100644 index 225d7f55..00000000 --- a/cocosda_2024/exp_emns_audmodel.ini +++ /dev/null @@ -1,26 +0,0 @@ -[EXP] -root = ./apsipa_2024/results -name = exp_emns_aud -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/emns/emns_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -train.audio_path = EMNS -test = ./data/emns/emns_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -test.audio_path = EMNS -target = emotion -no_reuse = True -labels =['sadness', 'happiness', 'anger', 'neutral'] -[FEATS] -type = ['audmodel'] -scale = standard -balancing = smote -[MODEL] -type = xgb -; C_val = 0.001 diff --git a/cocosda_2024/exp_emns_finetuning.ini b/cocosda_2024/exp_emns_finetuning.ini deleted file mode 100644 index 5ad82f67..00000000 --- a/cocosda_2024/exp_emns_finetuning.ini +++ /dev/null @@ -1,25 +0,0 @@ -[EXP] -root = ./apsipa_2024/results -name = exp_emns_wavlm_finetuning -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/emns/emns_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -train.audio_path = EMNS -test = ./data/emns/emns_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -test.audio_path = EMNS -target = emotion -no_reuse = True -labels =['sadness', 'happiness', 'anger', 'neutral'] -[FEATS] -type = [] -; scale = standard -[MODEL] -type = finetune -pretrained_model = microsoft/wavlm-large diff --git a/cocosda_2024/exp_emns_hubert.ini b/cocosda_2024/exp_emns_hubert.ini deleted file mode 100644 index 24f022a1..00000000 --- a/cocosda_2024/exp_emns_hubert.ini +++ /dev/null @@ -1,26 +0,0 @@ -[EXP] -root = ./apsipa_2024/results -name = exp_emns_hubert -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/emns/emns_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -train.audio_path = EMNS -test = ./data/emns/emns_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -test.audio_path = EMNS -target = emotion -no_reuse = True -labels =['sadness', 'happiness', 'anger', 'neutral'] -[FEATS] -type = ['hubert-large-ll60k'] -scale = standard -balancing = smote -[MODEL] -type = svm -C_val = 1.0 diff --git a/cocosda_2024/exp_emns_os.ini b/cocosda_2024/exp_emns_os.ini deleted file mode 100644 index 89a77c13..00000000 --- a/cocosda_2024/exp_emns_os.ini +++ /dev/null @@ -1,26 +0,0 @@ -[EXP] -root = ./apsipa_2024/results -name = exp_emns_os -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/emns/emns_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -train.audio_path = EMNS -test = ./data/emns/emns_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -test.audio_path = EMNS -target = emotion -no_reuse = True -labels =['sadness', 'happiness', 'anger', 'neutral'] -[FEATS] -type = ['os'] -scale = standard -balancing = smote -[MODEL] -type = svm -C_val = 1.0 diff --git a/cocosda_2024/exp_emns_wavlm.ini b/cocosda_2024/exp_emns_wavlm.ini deleted file mode 100644 index d14c8d18..00000000 --- a/cocosda_2024/exp_emns_wavlm.ini +++ /dev/null @@ -1,26 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = exp_emns_wavlm -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/emns/emns_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -train.audio_path = EMNS -test = ./data/emns/emns_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -test.audio_path = EMNS -target = emotion -no_reuse = True -labels =['sadness', 'happiness', 'anger', 'neutral'] -[FEATS] -type = ['wavlm-large'] -scale = standard -balancing = smote -[MODEL] -type = svm -C_val = 1.0 diff --git a/cocosda_2024/exp_iemocap_audmodel_svm.ini b/cocosda_2024/exp_iemocap_audmodel_svm.ini deleted file mode 100644 index 6a687641..00000000 --- a/cocosda_2024/exp_iemocap_audmodel_svm.ini +++ /dev/null @@ -1,28 +0,0 @@ -[EXP] -root = ./bagus_tests/results -name = iemocap_aud -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test', 'dev'] -train = ./data/iemocap/iemocap_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/iemocap/iemocap_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/iemocap/iemocap_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['ang', 'hap', 'neu', 'sad'] -[FEATS] -type = ['audmodel'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 diff --git a/cocosda_2024/exp_iemocap_hubert_svm.ini b/cocosda_2024/exp_iemocap_hubert_svm.ini deleted file mode 100644 index 500967af..00000000 --- a/cocosda_2024/exp_iemocap_hubert_svm.ini +++ /dev/null @@ -1,28 +0,0 @@ -[EXP] -root = ./bagus_tests/results -name = iemocap_hubert -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test', 'dev'] -train = ./data/iemocap/iemocap_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/iemocap/iemocap_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/iemocap/iemocap_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['ang', 'hap', 'neu', 'sad'] -[FEATS] -type = ['hubert-large-ll60k'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_iemocap_wavlm_svm.ini b/cocosda_2024/exp_iemocap_wavlm_svm.ini deleted file mode 100644 index 52bf3a3f..00000000 --- a/cocosda_2024/exp_iemocap_wavlm_svm.ini +++ /dev/null @@ -1,28 +0,0 @@ -[EXP] -root = ./apsipa_2024/results -name = iemocap_wavlm_svm -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test', 'dev'] -train = ./data/iemocap/iemocap_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/iemocap/iemocap_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/iemocap/iemocap_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['ang', 'hap', 'neu', 'sad'] -[FEATS] -type = ['wavlm-large'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_jnv_audmodel.ini b/cocosda_2024/exp_jnv_audmodel.ini deleted file mode 100644 index f8d2ef8c..00000000 --- a/cocosda_2024/exp_jnv_audmodel.ini +++ /dev/null @@ -1,31 +0,0 @@ -[EXP] -root = ./cocosda_2024/results -name = exp_jnv_audmodel -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/jnv/jnv_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/jnv/jnv_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/jnv/jnv_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['angry', 'disgust', 'surprise', 'sad'] -[FEATS] -type = ['audmodel'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jnv_hubert.ini b/cocosda_2024/exp_jnv_hubert.ini deleted file mode 100644 index ae050854..00000000 --- a/cocosda_2024/exp_jnv_hubert.ini +++ /dev/null @@ -1,31 +0,0 @@ -[EXP] -root = ./cocosda_2024/results -name = exp_jnv_hubert -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/jnv/jnv_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/jnv/jnv_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/jnv/jnv_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['angry', 'disgust', 'surprise', 'sad'] -[FEATS] -type = ['hubert-large-ll60k'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jnv_wavlm.ini b/cocosda_2024/exp_jnv_wavlm.ini deleted file mode 100644 index 0daf46c3..00000000 --- a/cocosda_2024/exp_jnv_wavlm.ini +++ /dev/null @@ -1,31 +0,0 @@ -[EXP] -root = ./cocosda_2024/results -name = exp_jnv_wavlm -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/jnv/jnv_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/jnv/jnv_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/jnv/jnv_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['angry', 'disgust', 'surprise', 'sad'] -[FEATS] -type = ['wavlm-large'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jtes_audmodel.ini b/cocosda_2024/exp_jtes_audmodel.ini deleted file mode 100644 index e3fade57..00000000 --- a/cocosda_2024/exp_jtes_audmodel.ini +++ /dev/null @@ -1,41 +0,0 @@ -[EXP] -root = ./iemocap_2024/results/ -name = jtes-sti_audmodel -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/jtes-sti/jtes_sti_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train - -dev = ./data/jtes-sti/jtes_sti_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train - -; augment = ./data/jtes/augment.csv -; augment.type = csv -; augment.absolute_path = False -; augment.split_strategy = train - -test = ./data/jtes-sti/jtes_sti_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; augment = train -; augment_result = augment.csv -target = emotion -labels = ['ang', 'joy', 'neu', 'sad'] -[FEATS] -type = ['audmodel'] -scale = standard -[MODEL] -type = svm -; scale = standard -; device = cuda -C_val = 1.0 -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jtes_hubert.ini b/cocosda_2024/exp_jtes_hubert.ini deleted file mode 100644 index 4152a65f..00000000 --- a/cocosda_2024/exp_jtes_hubert.ini +++ /dev/null @@ -1,41 +0,0 @@ -[EXP] -root = ./iemocap_2024/results/ -name = jtes-sti_hubert -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/jtes-sti/jtes_sti_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train - -dev = ./data/jtes-sti/jtes_sti_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train - -; augment = ./data/jtes/augment.csv -; augment.type = csv -; augment.absolute_path = False -; augment.split_strategy = train - -test = ./data/jtes-sti/jtes_sti_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; augment = train -; augment_result = augment.csv -target = emotion -labels = ['ang', 'joy', 'neu', 'sad'] -[FEATS] -type = ['hubert-large-ll60k'] -; scale = standard -[MODEL] -type = svm -scale = standard -; device = cuda -C_val = 1.0 -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_jtes_wavlm.ini b/cocosda_2024/exp_jtes_wavlm.ini deleted file mode 100644 index 74558fa8..00000000 --- a/cocosda_2024/exp_jtes_wavlm.ini +++ /dev/null @@ -1,41 +0,0 @@ -[EXP] -root = ./iemocap_2024/results/ -name = jtes-sti_wavlm -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/jtes-sti/jtes_sti_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train - -dev = ./data/jtes-sti/jtes_sti_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train - -; augment = ./data/jtes/augment.csv -; augment.type = csv -; augment.absolute_path = False -; augment.split_strategy = train - -test = ./data/jtes-sti/jtes_sti_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; augment = train -; augment_result = augment.csv -target = emotion -labels = ['ang', 'joy', 'neu', 'sad'] -[FEATS] -type = ['wavlm-large'] -; scale = standard -[MODEL] -type = svm -; scale = standard -; device = cuda -C_val = 1.0 -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_kbes_audmodel.ini b/cocosda_2024/exp_kbes_audmodel.ini deleted file mode 100644 index 386cf090..00000000 --- a/cocosda_2024/exp_kbes_audmodel.ini +++ /dev/null @@ -1,30 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = kbes_audomodel -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/kbes/kbes_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/kbes/kbes_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/kbes/kbes_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['angry', 'neutral', 'sad', 'happy'] -; get the number of classes from the target column automatically -[FEATS] -type = ['audmodel'] -; no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_kbes_hubert.ini b/cocosda_2024/exp_kbes_hubert.ini deleted file mode 100644 index 54b97d54..00000000 --- a/cocosda_2024/exp_kbes_hubert.ini +++ /dev/null @@ -1,30 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = kbes_hubert -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/kbes/kbes_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/kbes/kbes_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/kbes/kbes_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['angry', 'neutral', 'sad', 'happy'] -; get the number of classes from the target column automatically -[FEATS] -type = ['hubert-large-ll60k'] -; no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_kbes_wavlm.ini b/cocosda_2024/exp_kbes_wavlm.ini deleted file mode 100644 index 733cb68a..00000000 --- a/cocosda_2024/exp_kbes_wavlm.ini +++ /dev/null @@ -1,30 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = kbes_wavlm -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/kbes/kbes_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/kbes/kbes_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/kbes/kbes_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['angry', 'neutral', 'sad', 'happy'] -; get the number of classes from the target column automatically -[FEATS] -type = ['wavlm-large'] -; no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_laughter_os.ini b/cocosda_2024/exp_laughter_os.ini deleted file mode 100644 index 53ebb2a8..00000000 --- a/cocosda_2024/exp_laughter_os.ini +++ /dev/null @@ -1,55 +0,0 @@ -[EXP] -root = ./cocosda_2024/ -name = exp_laughter_os -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['data'] -data = ./data/laughter-types/EvilLaughter/data.csv -data.type = csv -data.absolute_path = False -#data.split_strategy = reuse -data.split_strategy = speaker_split -data.testsplit = 30 -target = type -labels = ['laugh at', 'laugh with'] -[FEATS] -#type = trill -#model = ../trill -#type = xbow -#xbow = ../openXBOW/ -#size = 1000 -#assignments = 20 -#type = mld -#with_os = True -min_syls = 4 -type = ['os'] -; type = ['praat'] -#set = ComParE_2016 -#type = wav2vec -#model = /home/felix/data/research/wav2vec2-large-robust-ft-swbd-300h -; scale = standard -#needs_feature_extraction = True -[MODEL] -; type = xgb -type = svm -C_val = 1.0 -kernel = linear -#C_val = 10 for w2v, .1 for trill, .01 for os -; C_val = .001 -#tuning_params = ['C'] -; C = [20, 10, 1, .1, .01, .001] -; scoring = recall_macro -#loso = True -#logo = 10 -#k_fold_cross = 10 -save = True -[EXPL] -#value_counts = True -#max_feats = 5 -#feature_distributions = True -#model = tree -; scatter = ['pca'] -[PLOT] -#tsne = True \ No newline at end of file diff --git a/cocosda_2024/exp_laughter_praat.ini b/cocosda_2024/exp_laughter_praat.ini deleted file mode 100644 index a1f83630..00000000 --- a/cocosda_2024/exp_laughter_praat.ini +++ /dev/null @@ -1,55 +0,0 @@ -[EXP] -root = ./cocosda_2024/ -name = exp_laughter_praat -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['data'] -data = ./data/laughter-types/EvilLaughter/data.csv -data.type = csv -data.absolute_path = False -#data.split_strategy = reuse -data.split_strategy = speaker_split -data.testsplit = 30 -target = type -labels = ['laugh at', 'laugh with'] -[FEATS] -#type = trill -#model = ../trill -#type = xbow -#xbow = ../openXBOW/ -#size = 1000 -#assignments = 20 -#type = mld -#with_os = True -min_syls = 4 -; type = ['os'] -type = ['praat'] -#set = ComParE_2016 -#type = wav2vec -#model = /home/felix/data/research/wav2vec2-large-robust-ft-swbd-300h -scale = standard -#needs_feature_extraction = True -[MODEL] -; type = xgb -type = svm -C_val = 1.0 -; kernel = linear -#C_val = 10 for w2v, .1 for trill, .01 for os -; C_val = .001 -; tuning_params = ['C'] -; C = [20, 10, 1, .1, .01, .001] -scoring = recall_macro -#loso = True -#logo = 10 -#k_fold_cross = 10 -save = True -[EXPL] -#value_counts = True -#max_feats = 5 -#feature_distributions = True -#model = tree -scatter = ['pca'] -[PLOT] -#tsne = True \ No newline at end of file diff --git a/cocosda_2024/exp_podcast_audmodel_svm.ini b/cocosda_2024/exp_podcast_audmodel_svm.ini deleted file mode 100644 index 63c7183e..00000000 --- a/cocosda_2024/exp_podcast_audmodel_svm.ini +++ /dev/null @@ -1,28 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = podcast_audmodel -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test', 'dev'] -train = ./data/msp-podcast/podcast_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/msp-podcast/podcast_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/msp-podcast/podcast_test2.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['ang', 'hap', 'neu', 'sad'] -[FEATS] -type = ['audmodel'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_podcast_hubert_svm.ini b/cocosda_2024/exp_podcast_hubert_svm.ini deleted file mode 100644 index 33d4dd5c..00000000 --- a/cocosda_2024/exp_podcast_hubert_svm.ini +++ /dev/null @@ -1,28 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = podcast_audmodel -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test', 'dev'] -train = ./data/msp-podcast/podcast_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/msp-podcast/podcast_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/msp-podcast/podcast_test2.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['ang', 'hap', 'neu', 'sad'] -[FEATS] -type = ['hubert-large-ll60k'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_podcast_wavlm_svm.ini b/cocosda_2024/exp_podcast_wavlm_svm.ini deleted file mode 100644 index 0f75df62..00000000 --- a/cocosda_2024/exp_podcast_wavlm_svm.ini +++ /dev/null @@ -1,28 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = podcast_audmodel -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test', 'dev'] -train = ./data/msp-podcast/podcast_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/msp-podcast/podcast_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/msp-podcast/podcast_test2.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -labels = ['ang', 'hap', 'neu', 'sad'] -[FEATS] -type = ['wavlm-large'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 \ No newline at end of file diff --git a/cocosda_2024/exp_polish_audmodel.ini b/cocosda_2024/exp_polish_audmodel.ini deleted file mode 100644 index 6116fa2b..00000000 --- a/cocosda_2024/exp_polish_audmodel.ini +++ /dev/null @@ -1,34 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = exp_polish_audmodel -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/polish/polish_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.audio_path = ./POLISH -dev = ./data/polish/polish_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -; dev.audio_path = ./POLISH -test = ./data/polish/polish_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.audio_path = ./nEMO/samples -target = emotion -labels = ['anger', 'neutral', 'fear'] -; get the number of classes from the target column automatically -[FEATS] -type = ['audmodel'] -; type = ['hubert-xlarge-ll60k'] -; no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_polish_hubert.ini b/cocosda_2024/exp_polish_hubert.ini deleted file mode 100644 index d7b9ed40..00000000 --- a/cocosda_2024/exp_polish_hubert.ini +++ /dev/null @@ -1,33 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = exp_polish_hubert -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/polish/polish_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.audio_path = ./POLISH -dev = ./data/polish/polish_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -; dev.audio_path = ./POLISH -test = ./data/polish/polish_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.audio_path = ./nEMO/samples -target = emotion -labels = ['anger', 'neutral', 'fear'] -; get the number of classes from the target column automatically -[FEATS] -type = ['hubert-large-ll60k'] -; no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_polish_wavlm.ini b/cocosda_2024/exp_polish_wavlm.ini deleted file mode 100644 index 03ea9405..00000000 --- a/cocosda_2024/exp_polish_wavlm.ini +++ /dev/null @@ -1,33 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = exp_polish_wavlm -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/polish/polish_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.audio_path = ./POLISH -dev = ./data/polish/polish_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -; dev.audio_path = ./POLISH -test = ./data/polish/polish_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.audio_path = ./nEMO/samples -target = emotion -labels = ['anger', 'neutral', 'fear'] -; get the number of classes from the target column automatically -[FEATS] -type = ['wavlm-large'] -; no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_gender_agender.ini b/cocosda_2024/exp_ravdess_gender_agender.ini deleted file mode 100644 index 6d44a19c..00000000 --- a/cocosda_2024/exp_ravdess_gender_agender.ini +++ /dev/null @@ -1,35 +0,0 @@ -[EXP] -root = ./cocosda_2024 -name = exp_ravdess_agender -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/ravdess/ravdess_speaker_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.rename_speakers = True -test = ./data/ravdess/ravdess_speaker_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.rename_speakers = True -; target = speaker -; target = emotion -target = gender -; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -; labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] -; labels = ['angry', 'happy', 'neutral', 'sad'] -labels = ['male', 'female'] -[FEATS] -type = ['agender'] -no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -[RESAMPLE] -replace = True -sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_gender_os.ini b/cocosda_2024/exp_ravdess_gender_os.ini deleted file mode 100644 index 00514d22..00000000 --- a/cocosda_2024/exp_ravdess_gender_os.ini +++ /dev/null @@ -1,35 +0,0 @@ - [EXP] -root = ./ -name = results/exp_ravdess_speaker -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/ravdess/ravdess_speaker_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.rename_speakers = True -test = ./data/ravdess/ravdess_speaker_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.rename_speakers = True -; target = speaker -; target = emotion -target = gender -; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -; labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] -; labels = ['angry', 'happy', 'neutral', 'sad'] -labels = ['male', 'female'] -[FEATS] -type = ['os'] -no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -[RESAMPLE] -replace = True -sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_gender_praat.ini b/cocosda_2024/exp_ravdess_gender_praat.ini deleted file mode 100644 index af6f4252..00000000 --- a/cocosda_2024/exp_ravdess_gender_praat.ini +++ /dev/null @@ -1,35 +0,0 @@ -[EXP] -root = ./cocosda_2024/results -name = exp_ravdess_speaker -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/ravdess/ravdess_speaker_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.rename_speakers = True -test = ./data/ravdess/ravdess_speaker_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.rename_speakers = True -; target = speaker -; target = emotion -target = gender -; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -; labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] -; labels = ['angry', 'happy', 'neutral', 'sad'] -labels = ['male', 'female'] -[FEATS] -type = ['praat'] -no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -[RESAMPLE] -replace = True -sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_speaker.ini b/cocosda_2024/exp_ravdess_speaker.ini deleted file mode 100644 index a703bfbc..00000000 --- a/cocosda_2024/exp_ravdess_speaker.ini +++ /dev/null @@ -1,36 +0,0 @@ -[EXP] -root = ./cocosda_2024 -name = exp_ravdess_speaker -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/ravdess/ravdess_speaker_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.rename_speakers = True -test = ./data/ravdess/ravdess_speaker_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.rename_speakers = True -target = speaker -; target = emotion -; target = gender -; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] -; labels = ['angry', 'happy', 'neutral', 'sad'] -; labels = ['male', 'female'] -no_reuse = True -[FEATS] -type = ['spkrec-ecapa-voxceleb'] -no_reuse = True -scale = standard -[MODEL] -type = svm -C_val = 1.0 -[RESAMPLE] -replace = True -sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_speaker_os.ini b/cocosda_2024/exp_ravdess_speaker_os.ini deleted file mode 100644 index 1656c8e7..00000000 --- a/cocosda_2024/exp_ravdess_speaker_os.ini +++ /dev/null @@ -1,36 +0,0 @@ -[EXP] -root = ./cocosda_2024 -name = exp_ravdess_speaker_os -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/ravdess/ravdess_speaker_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.rename_speakers = True -test = ./data/ravdess/ravdess_speaker_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.rename_speakers = True -target = speaker -; target = emotion -; target = gender -; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] -; labels = ['angry', 'happy', 'neutral', 'sad'] -; labels = ['male', 'female'] -; no_reuse = True -[FEATS] -type = ['os'] -; no_reuse = True -scale = standard -[MODEL] -type = svm -C_val = 1.0 -[RESAMPLE] -replace = True -sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_ravdess_speaker_praat.ini b/cocosda_2024/exp_ravdess_speaker_praat.ini deleted file mode 100644 index 84ec0c0c..00000000 --- a/cocosda_2024/exp_ravdess_speaker_praat.ini +++ /dev/null @@ -1,36 +0,0 @@ -[EXP] -root = ./cocosda_2024 -name = exp_ravdess_speaker_praat -runs = 1 -epochs = 1 -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/ravdess/ravdess_speaker_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -; train.rename_speakers = True -test = ./data/ravdess/ravdess_speaker_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -; test.rename_speakers = True -target = speaker -; target = emotion -; target = gender -; labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -labels = ['spk01', 'spk02', 'spk03', 'spk04', 'spk05', 'spk06', 'spk07', 'spk08', 'spk09', 'spk10', 'spk11', 'spk12', 'spk13', 'spk14', 'spk15', 'spk16', 'spk17', 'spk18', 'spk19', 'spk20', 'spk21', 'spk22', 'spk23', 'spk24'] -; labels = ['angry', 'happy', 'neutral', 'sad'] -; labels = ['male', 'female'] -; no_reuse = True -[FEATS] -type = ['praat'] -; no_reuse = True -scale = standard -[MODEL] -type = svm -C_val = 1.0 -[RESAMPLE] -replace = True -sample_selection = all \ No newline at end of file diff --git a/cocosda_2024/exp_tth_audmodel.ini b/cocosda_2024/exp_tth_audmodel.ini deleted file mode 100644 index e4fc08c8..00000000 --- a/cocosda_2024/exp_tth_audmodel.ini +++ /dev/null @@ -1,35 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = exp_tth_audmodel -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/tth/tth_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -train.audio_path = ./TTH_final/wav_segment -dev = ./data/tth/tth_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -dev.audio_path = ./TTH_final/wav_segment -test = ./data/tth/tth_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -test.audio_path = ./TTH_final/wav_segment -target = emotion -labels = ['neutral', 'happy', 'angry', 'sad'] -; get the number of classes from the target column automatically -[FEATS] -; type = ['os'] -type = ['audmodel'] -; no_reuse = False -scale = standard -; balancing = smote -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_tth_hubert.ini b/cocosda_2024/exp_tth_hubert.ini deleted file mode 100644 index 4026e482..00000000 --- a/cocosda_2024/exp_tth_hubert.ini +++ /dev/null @@ -1,34 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = exp_tth_hubert -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/tth/tth_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -train.audio_path = ./TTH_final/wav_segment -dev = ./data/tth/tth_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -dev.audio_path = ./TTH_final/wav_segment -test = ./data/tth/tth_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -test.audio_path = ./TTH_final/wav_segment -target = emotion -labels = ['neutral', 'happy', 'angry', 'sad'] -; get the number of classes from the target column automatically -[FEATS] -; type = ['os'] -type = ['hubert-large-ll60k'] -; no_reuse = False -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_tth_wavlm.ini b/cocosda_2024/exp_tth_wavlm.ini deleted file mode 100644 index 010309ad..00000000 --- a/cocosda_2024/exp_tth_wavlm.ini +++ /dev/null @@ -1,35 +0,0 @@ -[EXP] -root = ./ococosda_2024/results/ -name = exp_tth_wavlm -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/tth/tth_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -train.audio_path = ./TTH_final/wav_segment -dev = ./data/tth/tth_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -dev.audio_path = ./TTH_final/wav_segment -test = ./data/tth/tth_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -test.audio_path = ./TTH_final/wav_segment -target = emotion -labels = ['neutral', 'happy', 'angry', 'sad'] -; get the number of classes from the target column automatically -; no_reuse = True -[FEATS] -; type = ['os'] -type = ['wavlm-large'] -; no_reuse = True -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_turev_audmodel.ini b/cocosda_2024/exp_turev_audmodel.ini deleted file mode 100644 index af991db9..00000000 --- a/cocosda_2024/exp_turev_audmodel.ini +++ /dev/null @@ -1,33 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = exp_turev_svm -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/turev/turev_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/turev/turev_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/turev/turev_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -; no_reuse = True -labels = ['angry', 'calm', 'happy', 'sad'] -; get the number of classes from the target column automatically -[FEATS] -type = ['audmodel'] -; type = ['hubert-large-ll60k'] -; type = ['os'] -scale = standard -; no_reuse = True -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_turev_hubert.ini b/cocosda_2024/exp_turev_hubert.ini deleted file mode 100644 index cbde4d72..00000000 --- a/cocosda_2024/exp_turev_hubert.ini +++ /dev/null @@ -1,32 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = exp_turev_svm -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/turev/turev_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/turev/turev_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/turev/turev_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -; no_reuse = True -labels = ['angry', 'calm', 'happy', 'sad'] -; get the number of classes from the target column automatically -[FEATS] -type = ['hubert-large-ll60k'] -; type = ['os'] -scale = standard -; no_reuse = True -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_turev_wavlm.ini b/cocosda_2024/exp_turev_wavlm.ini deleted file mode 100644 index 5b1e65fc..00000000 --- a/cocosda_2024/exp_turev_wavlm.ini +++ /dev/null @@ -1,33 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = exp_turev_svm -[DATA] -databases = ['train', 'dev', 'test'] -train = ./data/turev/turev_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -dev = ./data/turev/turev_dev.csv -dev.type = csv -dev.absolute_path = False -dev.split_strategy = train -test = ./data/turev/turev_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -no_reuse = True -labels = ['angry', 'calm', 'happy', 'sad'] -; get the number of classes from the target column automatically -[FEATS] -type = ['wavlm-large'] -; type = ['hubert-large-ll60k'] -; type = ['os'] -scale = standard -; no_reuse = True -[MODEL] -type = svm -C_val = 1.0 -; save = True -[RESAMPLE] -replace = True \ No newline at end of file diff --git a/cocosda_2024/exp_vivae_audmodel.ini b/cocosda_2024/exp_vivae_audmodel.ini deleted file mode 100644 index 12a95e89..00000000 --- a/cocosda_2024/exp_vivae_audmodel.ini +++ /dev/null @@ -1,31 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = exp_vivae_audmodel -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/vivae/vivae_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -test = ./data/vivae/vivae_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -no_reuse = True -; labels = ["achievement", "anger", "fear", "pain", "pleasure", "surprise"] -labels = ["anger", "fear", "pleasure", "surprise"] -; min_duration_of_samples = 1 -; check_size = 1000 -[RESAMPLE] -# which of the data splits to re-sample: train, test or all (both) -sample_selection = all -replace = True -[FEATS] -type = ['audmodel'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; device = cuda diff --git a/cocosda_2024/exp_vivae_hubert.ini b/cocosda_2024/exp_vivae_hubert.ini deleted file mode 100644 index 1607c19b..00000000 --- a/cocosda_2024/exp_vivae_hubert.ini +++ /dev/null @@ -1,31 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = exp_vivae_hubert -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/vivae/vivae_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -test = ./data/vivae/vivae_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -no_reuse = True -; labels = ["achievement", "anger", "fear", "pain", "pleasure", "surprise"] -labels = ["anger", "fear", "pleasure", "surprise"] -; min_duration_of_samples = 1 -; check_size = 1000 -[RESAMPLE] -# which of the data splits to re-sample: train, test or all (both) -sample_selection = all -replace = True -[FEATS] -type = ['hubert-large-ll60k'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; device = cuda diff --git a/cocosda_2024/exp_vivae_wavlm.ini b/cocosda_2024/exp_vivae_wavlm.ini deleted file mode 100644 index c0be620c..00000000 --- a/cocosda_2024/exp_vivae_wavlm.ini +++ /dev/null @@ -1,31 +0,0 @@ -[EXP] -root = ./ococosda_2024/results -name = exp_vivae_wavlm -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/vivae/vivae_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -test = ./data/vivae/vivae_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -no_reuse = True -; labels = ["achievement", "anger", "fear", "pain", "pleasure", "surprise"] -labels = ["anger", "fear", "pleasure", "surprise"] -; min_duration_of_samples = 1 -; check_size = 1000 -[RESAMPLE] -# which of the data splits to re-sample: train, test or all (both) -sample_selection = all -replace = True -[FEATS] -type = ['wavlm-large'] -scale = standard -[MODEL] -type = svm -C_val = 1.0 -; device = cuda From d0d93d0e139b3ade5ac2e41f7fe233d512c72b72 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:07:49 +0900 Subject: [PATCH 08/22] rm unnecessary files/folders --- openXBOW | 1 - output.txt | 37 ---- voice-disorder.bib | 1 - xbow_codebook | 503 --------------------------------------------- 4 files changed, 542 deletions(-) delete mode 160000 openXBOW delete mode 100644 output.txt delete mode 120000 voice-disorder.bib delete mode 100644 xbow_codebook diff --git a/openXBOW b/openXBOW deleted file mode 160000 index 01b54185..00000000 --- a/openXBOW +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 01b54185a09d66a35da0bc8011d26cd3173d1419 diff --git a/output.txt b/output.txt deleted file mode 100644 index 371ffd81..00000000 --- a/output.txt +++ /dev/null @@ -1,37 +0,0 @@ -DEBUG nkululeko: running results/exp_emodb_os_svm from config data/emodb/exp_os_svm.ini, nkululeko version 0.66.12 -DEBUG experiment: value for type not found, using default: audformat -DEBUG dataset: emodb: loading from ./data/emodb/emodb -DEBUG dataset: emodb: reusing previously stored file ./results/exp_emodb_os_svm/./store/emodb.pkl -DEBUG dataset: emodb: loaded with 535 samples: got targets: True, got speakers: True (10), got sexes: True -DEBUG experiment: target: emotion -DEBUG experiment: Target labels (user defined): ['angry', 'happy', 'neutral', 'sad'] -DEBUG experiment: loaded databases emodb -DEBUG experiment: reusing previously stored ./results/exp_emodb_os_svm/./store/testdf.csv and ./results/exp_emodb_os_svm/./store/traindf.csv -DEBUG experiment: value for filter.sample_selection not found, using default: all -DEBUG experiment: value for type not found, using default: dummy -DEBUG experiment: Categories test (nd.array): ['happy' 'neutral' 'angry' 'sad'] -DEBUG experiment: Categories train (nd.array): ['happy' 'neutral' 'angry' 'sad'] -DEBUG experiment: 4 speakers in test and 6 speakers in train -DEBUG nkululeko: train shape : (203, 6), test shape:(136, 6) -DEBUG featureset: value for set not found, using default: eGeMAPSv02 -DEBUG featureset: value for level not found, using default: functionals -DEBUG featureset: value for store_format not found, using default: pkl -DEBUG featureset: reusing extracted OS features: ./results/exp_emodb_os_svm/./store/emodb_os_train.pkl. -DEBUG feature_extractor: os: shape : (203, 88) -DEBUG featureset: value for set not found, using default: eGeMAPSv02 -DEBUG featureset: value for level not found, using default: functionals -DEBUG featureset: value for store_format not found, using default: pkl -DEBUG featureset: reusing extracted OS features: ./results/exp_emodb_os_svm/./store/emodb_os_test.pkl. -DEBUG feature_extractor: os: shape : (136, 88) -DEBUG experiment: All features: train shape : (203, 88), test shape:(136, 88) -DEBUG scaler: scaling features based on training set -DEBUG runmanager: run 0 -DEBUG model: value for C_val not found, using default: 0.001 -DEBUG modelrunner: run: 0 epoch: 0: result: test: 0.681 UAR -DEBUG modelrunner: plotting confusion matrix to emodb_svm_os__0_000_cnf -DEBUG reporter: epoch: 0, UAR: 0.6808080808080808, ACC: 0.7352941176470589 -DEBUG runmanager: value for measure not found, using default: uar -DEBUG reporter: labels: ['angry', 'happy', 'neutral', 'sad'] -DEBUG reporter: result per class (F1 score): [0.794, 0.0, 0.812, 0.88] -DEBUG experiment: Done, used 1.659 seconds -DONE diff --git a/voice-disorder.bib b/voice-disorder.bib deleted file mode 120000 index 0f6b69f2..00000000 --- a/voice-disorder.bib +++ /dev/null @@ -1 +0,0 @@ -/home/bagus/Documents/bib/voice-disorder.bib \ No newline at end of file diff --git a/xbow_codebook b/xbow_codebook deleted file mode 100644 index 5bb4fb2a..00000000 --- a/xbow_codebook +++ /dev/null @@ -1,503 +0,0 @@ -log -codebookNumeric -500;25;10;0.0;0.0 -0.21978395;-4.33896;14.128907;0.10038653;-1.413634E-4;0.052169874;23.244234;-18.877434;7.1137977;2.9039972;39.269543;0.03618;1.0568339;2.014624;8.736433;5.285682;534.4556;1309.6403;0.0;1552.5472;984.6031;-19.133478;2485.1575;822.8496;-17.486681 -0.0010339657;0.0;0.0;0.11200001;0.07636364;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0;-201.0;0.0;0.0;-201.0;0.0;0.0;-201.0 -0.39115325;-1.6035528;5.4387355;0.016302004;-0.011569287;0.1931662;-1.4472059;7.0866246;17.885477;-9.426082;38.987087;0.0;0.0;5.252252;14.324527;2.7829392;451.96048;902.6853;-12.452242;1568.1556;487.5662;-31.089907;2512.4856;1113.7628;-13.7132225 -0.004766719;-12.155108;23.587053;-0.0135693075;0.04738536;6.2957156E-4;-3.15507;7.363344;11.688762;16.251793;0.0;0.0;0.0;0.0;0.0;0.0;1091.186;1035.0461;-201.0;1909.8529;1078.2463;-201.0;2885.2031;721.7006;-201.0 -0.0059815;-8.616739;17.793694;0.015284414;0.029883452;2.3886557E-4;2.5775945;15.905022;10.599924;5.497069;0.0;0.0;0.0;0.0;0.0;0.0;685.64813;1061.775;-201.0;1618.5536;1273.2512;-201.0;2419.0098;1065.9927;-201.0 -0.004808624;-12.70253;24.432722;-0.0062058023;0.047854755;2.940738E-4;-0.75852424;13.72062;10.269783;11.689147;0.0;0.0;0.0;0.0;0.0;0.0;1048.0049;1016.26666;-201.0;2198.1982;938.53265;-201.0;3018.3975;3332.8242;-201.0 -2.4493759;10.240928;-0.9837412;0.08109618;0.007895938;1.3690118;-4.7486243;-26.191233;0.7568572;18.24196;43.78891;0.03613854;2.119139;-0.6708386;14.256343;-7.9642487;1222.8243;727.57794;-22.761673;2214.8113;4945.012;-1.1202606;2536.0894;996.9839;-0.76979715 -0.2268659;-12.022839;31.649963;0.12011593;0.024866415;0.045537636;12.79687;7.9512734;-32.021862;-2.8547046;41.432194;0.044155564;2.101384;5.4454827;17.98017;25.024279;1127.7103;1024.2384;-18.621183;1945.9281;1946.2203;-26.791582;3216.861;1013.02997;-37.74725 -1.3143958;-14.44222;14.5796995;0.02458092;-0.054816082;0.35847273;27.193474;2.024324;13.7497835;-60.111954;39.462185;0.0068270527;0.46371874;11.988602;10.384137;19.667353;840.3623;981.4256;-7.8502083;2285.639;321.89722;-26.917738;3111.794;652.6773;-17.133423 -0.18478973;-16.748026;20.670778;0.06964468;-0.020154491;0.034863204;32.443356;1.6126628;32.474438;-4.9081473;31.45165;0.011441442;1.2729572;7.094421;11.160926;31.346384;527.6169;1410.5582;-13.275443;1733.4572;760.56976;-28.73449;2785.7761;814.56683;-33.888096 -0.0063661453;-0.48841634;8.674914;0.055961713;0.036747303;1.2799422E-4;3.1610057;-0.30989894;-3.8736756;4.8965;0.0;0.0;0.0;0.0;0.0;0.0;935.407;1655.4122;-201.0;1735.6227;1483.4205;-201.0;2638.8135;1202.9357;-201.0 -0.05609995;-3.9770393;18.668957;0.08057729;0.01206405;0.0071638785;25.407501;-11.703861;-15.534889;-3.3040545;0.0;0.0;0.0;0.0;0.0;0.0;435.9966;2032.1636;-201.0;1351.1464;1231.4622;-201.0;2358.2747;1051.1268;-201.0 -0.29994437;-24.081182;34.487217;0.082633324;-0.030936465;0.0923359;44.122517;7.611263;14.198171;-16.525244;34.977432;0.029146353;0.67027324;10.127206;15.667603;45.348145;1011.40265;1587.8818;-21.76539;2279.64;836.5391;-40.0689;3691.048;1060.1637;-44.85536 -0.15768524;15.2058115;-10.63255;0.090432584;3.5954337E-4;0.017618112;-22.642744;-0.95957476;14.96656;-21.008177;0.0;0.0;0.0;0.0;0.0;0.0;1294.4971;537.8259;-201.0;1954.4877;1974.1385;-201.0;2871.3477;1044.0159;-201.0 -0.15420501;-13.469504;26.712103;0.058642447;0.0026224696;0.041986216;32.120224;2.189267;9.369642;-7.094649;32.40447;0.028479012;3.4122734;7.454557;3.9590166;23.031569;733.2016;1364.491;-8.014882;1510.0146;1252.399;-13.387703;2617.6602;733.7207;-26.874374 -1.0392073;-6.9653397;10.172703;0.10458217;-0.0024224385;0.49623442;16.22887;-40.779213;-16.056837;-27.180506;44.82362;0.034963753;1.6636357;8.429916;18.242039;13.207413;828.7342;1531.0443;-6.718541;1916.4879;902.69775;0.31910467;2971.7039;595.5923;-1.2045422 -0.39306465;-7.78192;15.674961;0.07434588;-0.027533686;0.066508695;36.707478;-14.444107;8.793794;-49.530197;31.043198;0.0058386303;0.5432424;6.825235;-1.7118177;14.475173;382.66296;1270.3672;0.21326129;1191.7661;981.9119;4.683024;2517.3691;449.80884;-14.26191 -0.2814366;-21.05043;20.931646;0.08034086;-0.0446782;0.04885518;46.221752;4.7665763;-2.9672043;-7.716255;26.239756;0.004437809;0.55508614;5.330963;1.5618529;32.727825;861.8929;1080.9731;1.5545268;2104.4514;615.89154;-16.016867;3317.804;1215.6813;-29.9841 -0.22445035;-30.570793;41.993973;0.07594266;-0.008643702;0.020896653;41.91315;26.94134;12.392143;-2.3292558;35.259007;0.0013043092;0.10575498;13.378278;23.831015;42.106613;413.291;1493.8231;-3.1348944;1544.4259;1464.061;-41.6797;2786.9158;1589.1562;-45.241512 -0.10085728;-22.235641;23.346588;0.070544325;-0.039340872;0.021072345;43.50485;11.582286;19.927732;-27.231836;0.0;0.0;0.0;0.0;0.0;0.0;800.4694;1023.5955;-201.0;2229.9856;579.887;-201.0;2928.8386;787.0268;-201.0 -0.101289846;-16.953873;22.078903;0.015428814;0.0133112995;0.03452708;25.750402;10.829182;40.186172;19.002138;0.0;0.0;0.0;0.0;0.0;0.0;363.21994;1184.2639;-201.0;1397.8822;920.7312;-201.0;2300.572;648.404;-201.0 -0.008602311;-13.606753;24.336695;-0.011997473;0.03220704;8.699687E-4;6.6948495;14.442554;10.482455;9.874404;0.0;0.0;0.0;0.0;0.0;0.0;622.7077;1416.7148;-201.0;1624.3102;1067.1902;-201.0;2655.2246;998.1873;-201.0 -0.34944746;2.4668114;1.1628904;0.110187076;-0.008344889;0.10757584;-11.425628;3.9612749;8.535754;-42.145176;47.98448;0.0;2.2649367;7.341305;21.73983;3.3236873;1275.2175;1084.8774;-37.95451;2038.2539;1185.0514;-27.13502;2734.3079;2400.574;-22.762888 -0.0072130933;-2.5345356;11.063573;0.054147284;0.028692752;1.8372077E-4;0.9020837;5.016578;-1.405601;-4.0483565;0.0;0.0;0.0;0.0;0.0;0.0;444.36868;1520.7455;-201.0;1391.0292;1129.4191;-201.0;2458.3745;1107.4362;-201.0 -0.10655153;-19.61119;29.045961;0.0950385;-0.04443948;0.019768944;43.60695;-0.7622714;10.728645;-22.877878;23.993683;0.024201808;1.2255216;0.95940095;2.5147026;23.919962;875.7949;1064.5898;8.512262;1995.0947;908.03937;-3.95605;2804.0325;875.93414;-7.8774796 -0.037244927;6.1097245;5.5454154;0.06308642;0.022793444;0.0022845562;4.746444;-26.98926;7.5041127;-13.935303;0.0;0.0;0.0;0.0;0.0;0.0;1143.5751;966.7647;-201.0;2077.7058;1331.6954;-201.0;2903.3994;956.3803;-201.0 -0.268945;-25.222418;32.632507;0.07771603;-0.03767538;0.11781434;41.267155;19.574532;9.434993;-28.917648;29.423681;0.013841818;0.63849217;6.269296;-4.9663043;32.52767;288.90527;1758.6163;-0.06768942;1054.392;1215.6914;-21.898539;2270.3015;710.7503;-34.295246 -0.64849144;-6.185541;13.035153;0.09863093;-0.008893616;0.14981599;9.45443;-20.10939;6.3447385;-8.140331;42.52789;0.00539935;0.4483243;11.246766;10.0966215;8.81665;1399.6152;578.4548;-22.072393;2548.495;984.5537;-16.486898;3423.8972;1478.736;-23.373133 -0.2202353;-15.49034;27.134499;0.10220104;-0.03305262;0.05256051;33.576015;-3.646733;-8.561938;-63.51013;34.680946;0.006186852;0.25909114;1.9861475;-12.027053;20.06505;848.2941;1530.1139;-64.71719;1927.3422;1303.8407;-75.21839;3207.8948;1070.3405;-77.94431 -0.14764063;-19.30958;28.15911;0.012339336;-6.690266E-4;0.07727175;35.08017;4.9774966;32.14236;23.774008;26.918152;0.030228028;1.956889;4.573076;11.250478;30.631262;322.38535;1238.4291;-4.218833;1426.4766;686.0351;-20.393461;2515.75;684.2031;-26.82044 -0.20211387;-11.073249;27.847136;0.087667905;-0.0043932004;0.0378215;32.359756;-6.9541316;-7.3688483;-9.940985;35.680393;0.0120405005;0.8874504;8.556825;1.5698906;20.576574;723.8081;1448.2217;-11.07124;1656.504;938.5566;-16.69854;2853.264;794.9515;-30.490698 -0.006908973;-11.342384;21.336563;0.005579663;0.02453777;5.3231587E-4;7.566942;11.933867;2.1881084;5.3992887;0.0;0.0;0.0;0.0;0.0;0.0;698.38446;1289.8309;-201.0;1646.9535;1319.109;-201.0;2585.8457;929.9377;-201.0 -0.0033370724;-2.8513346;11.051353;0.041509792;0.040427733;1.3185933E-4;1.0757166;8.3120165;-3.0612106;4.94546;0.0;0.0;0.0;0.0;0.0;0.0;613.6187;1271.9585;-201.0;1610.4517;1047.1412;-201.0;2623.2725;707.09424;-201.0 -0.60470146;3.5503829;9.980251;0.103224784;0.0057605803;0.2985275;5.0982738;-37.241512;-28.460615;-21.173254;48.88747;0.20691688;2.0617166;-0.031695683;-13.051411;3.6920693;973.09576;1225.905;-4.9723167;1892.2621;1094.3615;-2.37424;2667.1345;1877.9766;-10.262191 -0.004324283;-2.926748;12.031133;0.03371496;0.038103383;2.7005305E-4;-0.1029582;8.096603;0.34743643;2.1253278;0.0;0.0;0.0;0.0;0.0;0.0;873.2368;1399.7782;-201.0;1855.836;1182.2052;-201.0;2774.2444;918.4495;-201.0 -0.031129405;-23.806887;29.431223;0.021753991;0.022325426;0.012667869;27.017876;19.263918;24.614204;19.09006;0.0;0.0;0.0;0.0;0.0;0.0;380.9587;1253.2797;-201.0;1580.5096;979.96747;-201.0;2483.0974;1065.0637;-201.0 -0.015355532;-34.058613;48.635773;-0.06317778;0.026540704;0.01290454;17.22687;14.520888;13.073968;13.633064;0.0;0.0;0.0;0.0;0.0;0.0;1018.27216;1294.7845;-201.0;2073.205;1258.4928;-201.0;3013.3477;1046.2805;-201.0 -0.018016651;2.094509;19.289053;0.039285485;0.040315356;0.0015174891;16.01689;-8.350558;-3.6785176;18.38362;0.0;0.0;0.0;0.0;0.0;0.0;1017.42413;1161.7716;-201.0;1823.287;1535.1254;-201.0;2799.7512;1000.7652;-201.0 -0.48636493;-11.371625;22.497032;0.10272917;-0.010070327;0.118574016;35.478252;-11.771213;1.3439509;-30.536516;36.06348;0.004862969;0.7540517;10.312531;8.704209;25.655764;379.17996;1273.4886;1.8491888;1257.1797;1011.6758;-11.084512;2309.117;737.5669;-24.136366 -0.0073584975;10.771461;-4.4661803;0.047163785;0.048792657;5.691365E-4;-15.570464;2.4844208;6.6843033;-5.2473464;0.0;0.0;0.0;0.0;0.0;0.0;852.5828;1094.9672;-201.0;1818.6655;1101.9467;-201.0;2719.6355;936.98315;-201.0 -0.0022258542;4.6931;1.5903473;0.07203683;0.05070649;2.050942E-5;-5.5747857;-0.24551539;-1.8802338;3.370682;0.0;0.0;0.0;0.0;0.0;0.0;627.6501;1174.4647;-201.0;1519.2041;1186.3529;-201.0;2378.6184;1087.8525;-201.0 -0.39869633;-4.1382318;22.640596;0.048305858;0.008356598;0.12619658;50.06952;-24.999063;-8.99234;21.260948;31.609903;0.12147502;2.549485;0.7041494;6.713859;18.721449;867.5214;1495.0883;-12.660667;1607.1876;1125.9017;-9.445728;2717.5645;733.1841;-22.210632 -0.24115415;-12.6943865;20.166586;0.10848632;-0.013476512;0.11599054;29.63001;-15.673702;24.170822;-16.61809;0.0;0.0;0.0;0.0;0.0;0.0;416.09473;1502.7985;-201.0;1543.1898;852.27277;-201.0;2530.659;1075.3009;-201.0 -0.21585377;-15.869815;20.61101;0.09591911;-0.018590638;0.054876547;23.381617;6.338894;33.401;-18.458502;34.128246;0.008576239;0.98158693;6.857975;15.308456;26.780146;481.33206;1710.2831;-0.22244866;1760.7643;509.0966;-21.548933;2926.8977;480.6089;-22.422333 -0.0063157105;-1.2330389;9.241332;0.049470406;0.032575708;1.1914601E-4;2.3093717;5.1876254;9.426665;2.9900792;0.0;0.0;0.0;0.0;0.0;0.0;627.71814;1316.2716;-201.0;1613.5958;1041.7264;-201.0;2536.5337;2299.2754;-201.0 -0.0034692485;0.17073815;7.114937;0.03953944;0.037701085;9.0527195E-5;-5.3731556;8.1700945;-0.6568503;-0.63735324;0.0;0.0;0.0;0.0;0.0;0.0;773.4681;1247.8486;-201.0;1808.6769;2325.2346;-201.0;2418.4434;997.4306;-201.0 -0.0025553082;-3.1389306;9.1207285;0.049657926;0.06307397;1.4291679E-4;0.7266279;6.1085143;6.0783386;4.9585443;0.0;0.0;0.0;0.0;0.0;0.0;851.3048;1220.5059;-201.0;1866.2542;1139.3569;-201.0;2664.279;1423.0208;-201.0 -0.9548922;-10.159908;22.513193;0.0089154905;-0.04084072;0.3050906;22.672174;-10.3729105;-14.373611;-57.94128;34.145817;0.008677135;0.69676757;8.955217;-5.3922095;15.630723;811.987;1382.9164;11.818799;1900.7552;1053.0914;-2.5184348;3032.0334;936.1458;-8.570354 -0.07318713;-7.800244;13.979497;0.03611389;0.010517004;0.01244691;32.733913;-5.6180077;5.6168594;13.040278;0.0;0.0;0.0;0.0;0.0;0.0;906.11523;1152.4629;-201.0;1861.5453;818.82404;-201.0;2885.2634;555.2195;-201.0 -0.048963923;8.613066;0.6762428;0.092267;0.028178336;0.0029218178;-8.094735;-14.170936;9.525054;-7.9514832;0.0;0.0;0.0;0.0;0.0;0.0;1146.6301;833.1187;-201.0;2278.589;995.78436;-201.0;3020.9333;2491.68;-201.0 -0.67733544;-11.82698;20.67202;0.08994267;-0.020757245;0.26458177;23.569258;-24.362322;-10.820465;-47.688595;43.841595;0.030614235;0.6132674;9.811009;14.062851;25.360153;725.6035;1514.2816;-16.785606;1651.9525;1853.3842;-29.358469;2396.5012;903.25604;-34.579884 -2.320362;14.368617;12.018714;0.10054183;0.05556372;1.7387751;-12.307284;-52.743984;-18.858335;-17.353952;49.939617;0.001907364;0.59906393;3.1665313;-6.421454;7.319781;1042.9502;1101.4261;0.0;2124.0034;1193.0614;7.3376503;2936.2239;980.92145;5.917297 -0.010966285;-15.751187;27.51583;-0.010579552;0.032236185;0.001105448;16.406385;16.823908;9.457127;11.843425;0.0;0.0;0.0;0.0;0.0;0.0;764.4095;1498.0219;-201.0;1707.8722;1536.7213;-201.0;2646.516;1005.9012;-201.0 -0.19211634;-9.18129;16.96351;0.052089203;0.0021164233;0.030880846;5.4704247;14.530464;7.345612;-7.7648864;0.0;0.0;0.0;0.0;0.0;0.0;1025.2296;1180.2189;-201.0;2106.7285;876.9328;-201.0;3135.963;767.14795;-201.0 -0.13558854;-13.542226;26.199667;0.075572155;0.009558101;0.031830247;25.662115;-0.9717426;7.032228;-10.834601;36.567318;0.03036423;2.2165263;6.785565;0.045441706;25.856733;1151.9441;1351.4552;-11.361221;2042.2482;955.27344;-25.512062;3223.4167;905.4809;-33.11682 -0.004393495;2.8630621;5.0049615;0.05557735;0.04804941;1.01051315E-4;1.3241062;-7.3908725;0.41624752;3.6901922;0.0;0.0;0.0;0.0;0.0;0.0;615.5423;1261.9032;-201.0;1508.807;1288.9144;-201.0;2427.0388;1256.4761;-201.0 -1.5135452;-7.767851;14.877597;0.1009201;-0.011414832;1.0339144;6.3333697;-32.900074;-5.680447;-57.286556;37.872437;0.1712691;1.5459017;4.7501273;-33.596703;-7.2039948;732.53436;1240.0153;0.0;1838.7084;890.2409;38.30525;2819.7776;748.98444;26.41387 -0.04567753;-22.559423;28.118402;0.018894246;0.022785379;0.013137107;28.679619;20.889223;32.356163;16.204824;0.0;0.0;0.0;0.0;0.0;0.0;314.12894;1375.0726;-201.0;1420.143;1010.9595;-201.0;2490.0088;773.36456;-201.0 -0.4963596;-5.029226;8.363036;0.106799625;-0.008034551;0.22574723;6.192323;-13.129626;16.00922;-33.78002;43.117725;0.029196644;1.7880821;7.695908;22.10311;4.155862;863.2669;2360.436;0.0;1606.7389;960.02344;-23.620544;2537.0352;1860.7197;-13.678956 -0.7335246;-5.422743;12.706074;0.08388234;-0.01708665;0.2933443;12.494657;-29.216467;0.68217343;-25.181839;0.0;0.0;0.0;0.0;0.0;0.0;401.02078;1689.936;-201.0;1548.7194;896.5508;-138.52217;2609.658;791.60474;-136.39595 -0.006790971;-28.461054;39.894608;-0.045872938;0.033383638;0.0036990384;4.2920566;18.697199;18.153849;16.128584;0.0;0.0;0.0;0.0;0.0;0.0;1095.3048;1436.8285;-201.0;2143.591;1312.051;-201.0;3205.1125;1102.9458;-201.0 -0.051895052;-27.140701;43.270336;-0.052223384;0.036498334;0.013576552;22.80664;-0.023493728;15.964722;31.784857;0.0;0.0;0.0;0.0;0.0;0.0;946.5778;2262.1135;-201.0;1577.9581;1247.037;-201.0;2881.503;1017.3566;-201.0 -0.17170377;13.535842;-5.416849;0.06493988;0.0067577213;0.014654171;-22.098791;-5.300494;1.890776;-9.561163;0.0;0.0;0.0;0.0;0.0;0.0;1225.2075;674.5523;-201.0;2397.5635;1014.45575;-201.0;3013.8562;2057.1907;-201.0 -0.0058496334;-6.2574806;17.483648;-0.010337514;0.039401982;1.3718386E-4;-5.357746;9.207035;5.5652213;7.767305;0.0;0.0;0.0;0.0;0.0;0.0;534.50134;1341.9159;-201.0;1417.6958;1146.4517;-201.0;2494.61;931.4992;-201.0 -0.22274743;-17.25952;29.546091;0.040723924;-0.011350696;0.051278394;30.511831;0.33574626;-10.668007;-10.832054;38.56757;0.011987396;0.74954605;6.8898664;19.162106;36.94243;406.44226;1389.4706;0.0;1434.2863;1392.7203;-28.28415;2339.8142;1327.2345;-32.01977 -0.0030489136;-2.7555287;9.612282;0.05888872;0.054382075;1.2891315E-4;0.7384634;4.6249127;-1.4159633;-1.0094265;0.0;0.0;0.0;0.0;0.0;0.0;682.0985;2296.7336;-201.0;1352.2394;1081.4165;-201.0;2515.0044;458.50806;-201.0 -0.11629897;-16.74581;22.809568;0.051252615;0.0022244474;0.05646174;32.995575;2.1072242;35.98942;18.93133;0.0;0.0;0.0;0.0;0.0;0.0;355.09705;1122.3275;-201.0;1468.0768;642.89026;-201.0;2498.3792;834.47296;-201.0 -0.8151174;-0.3773845;12.663037;0.062086213;0.003235706;0.31239077;19.32979;-45.237354;-7.109014;-21.962927;39.67003;0.035888534;1.6065506;6.265927;-7.4353695;4.667682;667.41205;1369.8947;6.6254387;1617.5889;1084.6207;1.5558791;2651.6292;1090.606;-5.092716 -0.0019287532;4.2955737;-0.10565961;0.07873502;0.07024228;2.051916E-5;-6.5880527;0.14766367;-0.48841444;2.4922488;0.0;0.0;0.0;0.0;0.0;0.0;588.04376;1754.0767;-201.0;1087.4332;2859.1877;-201.0;1964.5906;1512.4603;-201.0 -0.075277604;4.1960173;7.30955;0.08269906;0.041948125;0.0059002857;-4.479235;-3.305611;10.819168;15.963776;0.0;0.0;0.0;0.0;0.0;0.0;1079.0526;858.74097;-201.0;2055.582;1286.0121;-201.0;2756.3132;2474.578;-201.0 -0.31289563;-0.9606059;11.4038515;0.09245434;-0.010185152;0.07489253;37.858593;-29.037283;4.074365;-9.332776;31.0736;0.024717078;1.1228939;-1.6839689;0.07147709;3.1018875;348.32935;1249.0427;-2.9419107;1344.792;956.40625;-10.705285;2152.6487;896.6916;-6.043798 -0.009630865;-17.164293;28.205877;-0.017368764;0.031600095;0.0014875792;3.3837802;13.593387;13.27353;11.6455965;0.0;0.0;0.0;0.0;0.0;0.0;698.7979;1985.71;-201.0;1604.0059;988.36743;-201.0;2693.1868;936.02545;-201.0 -0.9435937;2.4431002;1.7690605;0.14490077;-6.204086E-4;0.6102409;-5.4697685;-34.576782;9.412004;-54.840435;48.420456;0.036684386;1.9018942;4.4116864;15.852032;-8.467081;1096.4733;929.7107;-77.8498;1945.6035;1145.6682;-80.355064;2893.5203;1018.31366;-68.82308 -0.0066938903;-2.2828057;10.793949;0.034653578;0.03210747;1.5438847E-4;3.2542849;5.352856;2.8912938;5.6442375;0.0;0.0;0.0;0.0;0.0;0.0;494.88632;1647.9219;-201.0;1338.919;1735.899;-201.0;2137.7253;2137.9807;-201.0 -0.0026565818;1.6329898;3.0904539;0.07786518;0.0450632;8.5060536E-5;4.341614;-6.863157;0.14469059;2.464753;0.0;0.0;0.0;0.0;0.0;0.0;627.93475;1459.5458;-201.0;1591.5787;1233.4893;-201.0;2297.7256;1011.3945;-201.0 -0.313768;-24.94242;33.549892;0.08873805;-0.033910137;0.109048165;45.67169;9.222514;9.05285;-4.5105524;35.406094;0.081394;1.3221332;10.705132;21.60195;38.58581;827.1328;1504.0797;-25.493294;2111.0898;2314.15;-44.090885;2514.6296;963.97705;-41.17597 -0.23348391;-25.964285;32.110622;0.09191248;-0.05341394;0.05794623;48.343502;7.416355;-5.779204;-26.5652;33.47851;0.018558921;0.6771515;9.570857;-5.657679;42.092556;808.1089;1251.9305;-3.200222;1993.7335;918.64777;-23.909172;3249.4597;965.7925;-36.78614 -0.13847077;-17.355417;20.059977;0.11406347;-0.024512729;0.05248748;17.739618;15.732437;18.365032;-25.690155;35.55778;0.07195572;1.5978409;3.4922743;17.987303;27.930784;703.8072;1369.18;-11.717668;1858.1792;554.2834;-21.99771;2944.235;549.9797;-21.559387 -1.1151867;-5.9386673;14.882148;-0.010624289;-0.033408526;0.37749788;29.106447;-17.712372;2.2989736;-41.200405;31.562311;0.009809456;2.051157;10.149839;2.1709387;3.6876001;586.06036;1411.5201;0.0;1492.1481;1078.9185;2.9607172;2644.2668;460.0709;-4.3206058 -0.007957544;-3.4310703;12.3783045;0.057369363;0.039144736;2.3800426E-4;7.0593762;4.3893394;3.0625813;1.5434319;0.0;0.0;0.0;0.0;0.0;0.0;762.4235;1363.8949;-201.0;1662.5739;1383.9225;-201.0;2491.622;1174.827;-201.0 -0.12783991;-10.397313;28.309525;-0.04603972;0.021041406;0.020850623;26.146578;-11.903603;3.2645235;0.09092665;0.0;0.0;0.0;0.0;0.0;0.0;702.35596;1242.0741;-201.0;1762.6602;1313.7744;-201.0;2962.5222;1166.9681;-201.0 -0.72770804;2.5547674;18.38082;0.058892626;0.008075266;0.301451;26.484756;-46.887722;-38.229416;-10.393608;42.30219;0.004468299;0.8413346;8.428897;18.242704;27.637056;1046.9219;924.44464;-5.287084;2057.09;1036.8722;-2.5339613;2992.505;1311.8926;-14.6814375 -0.021584818;-21.312157;32.518074;-0.048462186;0.030163648;0.0073501016;7.9702744;6.856317;17.359194;14.07643;0.0;0.0;0.0;0.0;0.0;0.0;1009.8809;1278.1552;-201.0;2058.3982;1013.4543;-201.0;3187.5637;1352.8644;-201.0 -0.36544022;-10.842525;20.771454;0.09202277;0.0036348824;0.086332925;33.306156;-8.064171;-0.66058874;4.045883;29.53482;0.0105032;1.0488695;4.6400514;-9.525218;17.174637;818.9108;1068.9591;-3.31933;1694.6984;1007.56805;-4.240648;2781.3477;673.0472;-15.085013 -0.7752599;-3.4259202;17.89734;0.07769803;-0.02229082;0.19219673;26.848394;-16.386095;-13.576538;-22.649452;31.554405;0.010842516;0.95982194;5.6223063;-2.8063061;10.234401;999.383;1010.2588;7.6184897;2153.5608;783.7285;-6.3663583;3197.0315;991.32;-9.862994 -0.01094085;2.3312194;9.019928;0.07851147;0.021706333;3.5947585E-4;3.9363081;-6.477246;-0.46089697;3.122504;0.0;0.0;0.0;0.0;0.0;0.0;367.8563;1921.6425;-201.0;1372.6947;969.85443;-201.0;2476.674;1224.0411;-201.0 -0.42783198;2.4149573;23.21271;0.08545085;0.005582189;0.021411167;30.419672;-28.73587;-29.623339;-25.265062;39.214176;0.0016084426;0.18336932;13.154429;-9.392093;19.454885;455.65332;1309.4043;-6.9603996;1385.1061;1100.2964;2.4252949;2809.2493;2019.3086;-26.80631 -0.0066476553;-4.3630013;10.761807;0.013961475;0.031299602;3.389232E-4;-0.2471544;12.933259;10.326785;0.14868481;0.0;0.0;0.0;0.0;0.0;0.0;731.8964;1133.2714;-201.0;1695.2456;973.5717;-201.0;2637.4348;953.1792;-201.0 -0.0054869135;-5.747621;14.384309;0.009942462;0.03926711;1.3432204E-4;2.0971968;9.847552;12.769524;9.738663;0.0;0.0;0.0;0.0;0.0;0.0;876.80206;1503.0148;-201.0;1862.8453;1350.9767;-201.0;2551.3552;2728.0403;-201.0 -0.16664742;1.4511995;5.3802714;0.026264424;0.022806533;0.024237229;-6.748127;13.731591;23.682907;4.02722;0.0;0.0;0.0;0.0;0.0;0.0;1102.0781;1096.8579;-201.0;1845.4147;1539.4609;-201.0;2710.722;853.4217;-201.0 -1.1828039;-6.0712304;13.193202;0.08105373;0.002005088;1.3833338;19.79954;-27.241053;33.915096;-23.995062;46.487915;0.046608016;1.6559626;6.1456122;6.23197;-4.935516;1205.9635;758.429;-31.354546;2193.732;1152.82;-17.355566;3005.9143;665.12646;-20.187061 -0.15693171;-5.552668;12.764613;0.09328437;-0.010566344;0.061257694;37.449738;-27.820791;-11.031094;-4.060516;0.0;0.0;0.0;0.0;0.0;0.0;284.77042;1516.2943;-201.0;1417.8646;1082.6688;-201.0;2078.8167;1378.0663;-201.0 -0.016147794;-38.263165;52.786255;-0.06130736;0.022146022;0.009476662;18.23194;12.54589;9.965999;11.417899;0.0;0.0;0.0;0.0;0.0;0.0;1042.5007;1639.7367;-201.0;2100.1707;1540.1361;-201.0;3135.7898;1496.6587;-201.0 -0.011420866;-22.587523;35.757114;-0.008603306;0.0278014;9.023957E-4;11.86481;12.196788;8.243375;2.6569798;0.0;0.0;0.0;0.0;0.0;0.0;761.1574;1459.0675;-201.0;1916.4713;935.98956;-201.0;3052.2434;891.98145;-201.0 -1.2448673;-1.5030594;13.440948;0.06719432;-0.0047110366;0.72076935;-3.407778;-8.108308;6.8370337;1.455922;41.743713;0.012536682;1.8166459;4.2944264;15.962379;9.142168;1301.8042;679.6701;-14.281265;2361.03;924.47504;-3.2981853;3280.5603;615.30365;-11.552783 -0.11522845;-9.16796;22.345732;0.029097527;6.047543E-4;0.035749823;22.877447;7.609753;-2.4627426;-15.323288;0.0;0.0;0.0;0.0;0.0;0.0;813.09717;1575.4747;-201.0;1738.6554;1447.9979;-201.0;2992.1648;986.9577;-201.0 -1.7699394;-14.365218;19.145954;0.056959804;-0.033813767;0.80041474;9.994205;-22.306879;-3.8016307;-47.11566;50.075832;0.10195401;0.3753531;12.209598;7.601359;2.9668014;975.1657;1077.0697;-17.696056;2015.9874;431.08463;-31.500338;3033.8142;553.75244;-20.14128 -0.112641476;-12.139202;28.583185;0.0705275;0.005214045;0.003495941;41.39992;-5.048124;-9.917237;-12.78408;34.86467;0.0020644672;0.17481051;13.089313;-0.49378577;32.15683;668.86926;1530.7543;-1.1984602;1625.0365;982.314;-10.342553;2846.695;1034.8989;-33.849075 -0.012247632;-4.7260957;13.650479;0.028502755;0.03576592;4.6701278E-4;6.5253224;3.260999;7.415381;4.827518;0.0;0.0;0.0;0.0;0.0;0.0;445.39615;2580.7595;-201.0;1269.6029;1442.4132;-201.0;2239.0173;1272.2184;-201.0 -0.0056343977;1.6861008;5.786381;0.07511565;0.034502532;1.02623686E-4;-0.543209;-0.36147162;-1.3772434;-0.216057;0.0;0.0;0.0;0.0;0.0;0.0;915.5484;3101.511;-201.0;1581.2529;1191.9869;-201.0;2517.7627;1082.5333;-201.0 -0.04891933;-22.27265;26.016708;0.0063301274;-0.007047105;0.011224256;33.68684;17.647112;33.698048;0.56569076;0.0;0.0;0.0;0.0;0.0;0.0;711.3442;1336.6904;-138.43692;1758.7231;1002.4737;-147.0142;2876.1436;878.33984;-144.84189 -0.19336659;-7.4986434;13.268842;0.008218586;-0.005809276;0.080940254;14.42957;5.203809;26.304525;7.658899;30.061728;0.0;0.56977075;2.3494394;1.3461876;5.637284;532.49066;1385.6334;-9.027346;1596.9077;930.1656;-15.207776;2423.2236;1248.2949;-9.65464 -0.21223448;-28.322271;36.05897;0.04393436;-0.0134174125;0.038318425;35.847107;22.56958;31.175444;-6.8460655;34.54822;0.015742311;0.5142268;13.098846;13.187538;30.897669;413.37222;2147.086;0.0;1711.1725;1451.7114;-38.872684;2727.9866;2008.9257;-38.117085 -0.41217923;-13.667403;16.637735;0.08566469;-0.019949498;0.15965001;19.905096;-8.498809;10.433385;-16.174599;39.98439;0.046876132;0.9377759;6.8411236;14.057395;5.364993;554.5472;1450.0293;0.0;1716.8584;1235.4062;-82.10608;2456.512;1211.1182;-79.694725 -0.33870044;-12.180043;27.200968;0.04420294;0.009274974;0.17122966;35.818226;-5.6954613;4.566477;22.386866;36.713455;0.014098649;2.783392;7.4907646;13.324425;26.96012;853.7452;1367.6952;-26.465157;1821.5298;1186.098;-20.649714;2862.3418;1391.3802;-37.9725 -0.003058656;0.83103865;5.608495;0.043239105;0.049479652;5.9816743E-5;-4.9443674;10.745457;9.804942;7.28826;0.0;0.0;0.0;0.0;0.0;0.0;359.70825;2146.1697;-201.0;1472.4698;999.64185;-201.0;2562.4248;3730.335;-201.0 -0.7406326;-20.702307;23.887175;0.06663323;-0.066849224;0.5351898;32.14634;10.529904;5.362635;-44.24716;0.0;0.0;0.0;0.0;0.0;0.0;774.0698;1125.8053;-201.0;2174.5872;587.7576;-201.0;2910.119;2206.9775;-201.0 -0.010631596;-19.765638;32.992607;-0.001879467;0.009353573;0.001654741;8.691654;1.4908857;0.57548946;-0.68216777;0.0;0.0;0.0;0.0;0.0;0.0;455.83826;1041.6564;-201.0;1538.9795;791.14764;-201.0;2696.9436;894.1364;-201.0 -0.004814872;-2.6566815;12.0590925;0.021598766;0.037723925;1.1005241E-4;-0.95388025;-0.6012705;-9.364533;0.375911;0.0;0.0;0.0;0.0;0.0;0.0;584.0235;910.45074;-201.0;1739.4769;985.06006;-201.0;2794.4968;3079.3997;-201.0 -0.013922195;-23.37988;38.591164;-0.02771377;0.014596888;0.005344864;16.749977;7.636322;5.2584014;11.346238;0.0;0.0;0.0;0.0;0.0;0.0;818.8303;1988.1959;-201.0;1805.1393;1435.6005;-201.0;2559.6624;2378.6582;-201.0 -0.21626739;-4.83544;8.393247;0.07523667;-0.017540911;0.07866796;25.320564;-10.780961;49.215183;5.207555;0.0;0.0;0.0;0.0;0.0;0.0;620.183;892.7554;-201.0;1722.5077;566.9373;-201.0;2643.3425;722.88696;-201.0 -0.0060401116;-10.63329;20.890907;0.0068702064;0.03393655;3.1105513E-4;6.9592648;14.25602;11.5391035;12.847974;0.0;0.0;0.0;0.0;0.0;0.0;951.5455;1111.8898;-201.0;1947.087;906.8501;-201.0;3030.4426;897.6873;-201.0 -0.007352819;-30.495651;42.13489;-0.0576801;0.03060405;0.0036327995;9.091;21.147802;18.768705;17.755484;0.0;0.0;0.0;0.0;0.0;0.0;1117.9648;1263.0239;-201.0;2176.1104;2098.4016;-201.0;2967.1895;1104.3486;-201.0 -0.07486615;-13.646985;23.908554;-0.024564305;0.009567286;0.018111244;8.787599;-3.1864846;-0.16169651;5.101419;0.0;0.0;0.0;0.0;0.0;0.0;519.91797;1168.6421;-201.0;1537.653;1117.211;-201.0;2473.5632;911.80206;-201.0 -0.648464;1.2345935;0.46411;0.10017028;-0.025933402;0.43583977;3.868307;-37.52464;10.526465;-54.9734;51.99323;0.007924898;1.469285;2.3923008;3.4100106;-9.178602;1251.6201;927.7698;-14.500829;2166.1707;770.145;-9.626327;3109.904;717.88556;-2.8146255 -0.13325953;-13.431946;21.209162;0.0074865236;0.017435277;0.018727517;-9.726013;50.843784;6.1412807;40.30136;0.0;0.0;0.0;0.0;0.0;0.0;647.9134;1109.8451;-201.0;1741.3138;641.31537;-201.0;2751.1975;846.95264;-201.0 -0.15356034;-9.261985;17.525984;0.14635898;0.017009111;0.023602583;-8.946229;14.019961;-27.2518;-9.094269;0.0;0.0;0.0;0.0;0.0;0.0;1114.2393;1067.2797;-201.0;2007.9266;1205.5587;-201.0;2929.2576;770.29486;-201.0 -0.07884733;0.87657064;1.7294289;0.07032312;0.0051481323;0.005944434;-4.4405627;5.905129;11.409179;-6.9079766;0.0;0.0;0.0;0.0;0.0;0.0;567.58856;1205.8771;-201.0;1714.3602;817.7478;-201.0;2681.2122;738.554;-201.0 -0.3007455;-12.686078;16.27636;0.056721013;-0.007222729;0.095065676;23.538248;1.6748853;32.33827;5.460695;35.296318;0.025035562;0.45507923;8.748337;18.285593;14.170532;342.79578;1265.9921;-5.81279;1578.8278;753.99896;-33.336926;2275.3203;1437.642;-20.64106 -0.5356297;-17.937618;29.103224;0.08672914;-0.048612073;0.17172082;33.25283;6.898769;-16.281282;-60.413208;40.162994;0.00451157;0.20188493;9.755397;18.640724;30.321404;888.3343;1491.4103;-7.1981525;1797.1387;1189.5377;-35.279743;2934.0623;543.0297;-18.878832 -0.36845073;8.084366;-0.8805203;0.061133992;0.01329891;0.062368054;-18.504488;-22.227285;-11.897881;-22.464903;60.427998;0.051580276;2.7841415;-4.866469;7.357555;4.889582;1311.7352;819.9182;0.0;2392.2988;738.43677;-9.062628;2998.2605;3122.3984;-6.5946555 -0.15704465;-1.1289023;9.65366;-0.017565012;0.017604023;0.020775082;-6.499906;9.660039;8.642299;3.3849041;0.0;0.0;0.0;0.0;0.0;0.0;735.1895;1328.3676;-201.0;1711.5103;1171.2975;-201.0;2398.908;2854.6143;-201.0 -0.30453834;-16.35824;32.992477;0.06625921;-0.024952605;0.05870502;42.573868;10.240172;0.47913823;-12.810306;30.474092;0.0044029043;0.19924831;8.76047;-6.6445255;31.38939;567.53766;1395.9639;-4.274694;1464.3032;2937.5833;-17.547865;2476.4006;790.6165;-32.323536 -0.20275487;19.3539;-16.11709;0.028407281;0.016155394;0.03836818;-28.438065;15.194282;-1.8270941;-8.077244;0.0;0.0;0.0;0.0;0.0;0.0;428.56458;1374.232;-137.20186;1303.7789;959.70123;-145.68233;2342.495;860.7895;-144.37938 -0.008303343;-8.725763;18.4393;0.009134832;0.036243413;3.9172443E-4;8.933838;11.461228;13.203728;12.770779;0.0;0.0;0.0;0.0;0.0;0.0;1051.1827;1376.5345;-201.0;1842.4448;1903.1383;-201.0;2736.3708;1011.15234;-201.0 -0.03166333;-1.7662816;9.36538;0.056002665;0.023908457;0.0020992253;17.91275;-10.824776;2.2699564;7.827521;0.0;0.0;0.0;0.0;0.0;0.0;847.08466;1498.3239;-201.0;1703.6122;1611.3317;-201.0;2508.481;1517.7745;-201.0 -0.19850999;-9.562558;31.142786;0.054279923;-0.0011926278;0.017510345;43.4805;-6.1299834;-7.5642333;-1.094083;24.502539;0.004236366;1.0025393;5.6313;4.821862;21.976076;692.59515;1582.233;-5.7146225;1435.4178;1395.5248;-9.423603;2369.5938;1061.8307;-23.302628 -0.0016352516;5.2015686;0.19913292;0.070385896;0.0469861;3.2726482E-5;-3.1884615;1.4600945;2.406497;5.2668242;0.0;0.0;0.0;0.0;0.0;0.0;542.7933;5136.2017;-201.0;1437.3853;1914.0967;-201.0;2180.5479;988.39984;-201.0 -0.43463954;-6.0312867;25.867998;0.104100846;-0.004442996;0.08951521;34.310673;-13.258306;-24.58539;-20.082144;37.456158;0.002458699;0.54408115;9.186309;-2.8197346;15.927451;733.9915;1323.1577;-0.06300449;1762.3326;1264.4625;-18.264753;2903.596;833.0925;-27.368248 -1.3016492;-6.7734313;10.373912;0.08736817;0.0034162204;0.6843469;15.916699;-44.04184;-10.029592;-26.766138;44.546463;0.03727294;1.5881995;8.307866;21.368052;9.061074;1017.084;1638.9844;-6.9275174;1925.3232;951.7032;1.8301958;2965.0735;787.062;5.3794594 -0.20337965;19.580212;-16.006342;0.0886701;0.022112206;0.031232782;-22.651932;-4.381067;37.91544;-29.925772;0.0;0.0;0.0;0.0;0.0;0.0;1174.3007;177.65028;-201.0;2402.2214;2043.0443;-201.0;3094.3372;933.032;-201.0 -0.0016309953;2.9207432;0.4584601;0.088062994;0.059800062;1.7457074E-5;-0.21423171;-2.978474;1.9424291;-2.4490979;0.0;0.0;0.0;0.0;0.0;0.0;1043.2181;1583.656;-201.0;1882.7056;714.91864;-201.0;2677.217;1469.2874;-201.0 -0.11473528;11.85434;1.7557226;0.09383882;0.02555356;0.011371847;-0.74775964;-30.641678;9.519326;-0.052541096;0.0;0.0;0.0;0.0;0.0;0.0;800.48114;1441.9409;-201.0;1796.5698;1983.3163;-201.0;2489.8818;1259.1241;-201.0 -0.2372452;-14.555295;24.188858;0.089838386;-0.04155985;0.094532214;44.284317;-3.0775769;6.6319165;-31.877016;0.0;0.0;0.0;0.0;0.0;0.0;705.9553;1213.8461;-201.0;1709.6302;795.90717;-201.0;2953.4192;547.21716;-201.0 -0.002318297;3.754956;2.1592424;0.05938563;0.043169778;4.137411E-5;-4.1275654;-1.1700646;-5.0035453;2.4650073;0.0;0.0;0.0;0.0;0.0;0.0;676.6611;1579.0703;-201.0;1561.7067;1509.293;-201.0;2392.7346;1297.8063;-201.0 -0.08685073;-11.18092;34.334015;0.01641609;0.007143947;0.023527443;46.06436;0.9378862;-10.404456;14.949638;21.031988;0.018280469;2.1087232;3.5756989;-4.528612;27.793264;574.6138;1674.0264;-16.492632;1455.0326;1144.34;-21.082144;2684.3367;930.0552;-37.58639 -0.0014014547;4.036266;5.1771934E-7;0.09129077;0.062243715;2.029081E-5;-3.0113223;-0.023218216;-0.7501607;-0.038488556;0.0;0.0;0.0;0.0;0.0;0.0;417.2656;1810.1726;-201.0;1197.3853;1696.0927;-201.0;2027.94;1423.5862;-201.0 -0.085991405;-18.00712;25.613379;0.038313244;-0.020633463;0.020591263;40.265804;10.291882;21.973738;-19.96102;0.0;0.0;0.0;0.0;0.0;0.0;727.7154;1490.974;-133.17978;1810.8505;1121.8177;-139.76631;2852.5098;635.41205;-143.16327 -0.12195897;4.489878;4.2290998;0.011435212;0.01306015;0.013377451;-10.945079;-4.2446146;23.48583;-16.265566;48.412273;0.06578268;0.7594447;11.432868;12.763283;10.013774;758.33795;1243.5616;0.0;1502.4595;879.11237;-30.930176;2484.6738;1192.55;-30.110481 -0.037330966;0.6591289;8.903522;0.030102128;0.025668746;0.0023984106;6.295564;-22.726282;7.371138;-5.9812317;0.0;0.0;0.0;0.0;0.0;0.0;590.1962;1338.5552;-201.0;1534.0928;1130.6736;-201.0;2581.632;1572.3295;-201.0 -0.0064833933;-14.471345;27.397589;0.007821686;0.025525244;3.4270438E-4;7.5510726;13.044148;3.5318527;8.534495;0.0;0.0;0.0;0.0;0.0;0.0;362.28235;1547.1674;-201.0;1357.3876;1055.9132;-201.0;2466.8801;986.2644;-201.0 -0.37908256;-4.9731174;17.545494;0.12609868;0.0029750261;0.22632153;-0.5470211;-6.5881906;-15.454749;-9.546512;45.562313;0.07307849;3.7008865;10.403011;13.129277;12.038414;1196.3348;952.2205;-21.624868;2272.7952;1174.5015;-20.899508;2947.1487;1547.4594;-22.137007 -0.027272603;7.850445;1.1230394;0.01825711;0.05386292;0.0011374216;-22.670609;-3.2367208;12.451435;8.562446;0.0;0.0;0.0;0.0;0.0;0.0;764.1307;536.85614;-201.0;1745.4395;2017.2719;-201.0;2419.6587;1381.1729;-201.0 -0.1889295;-2.7566578;8.212753;0.10778985;0.0035861267;0.03302334;16.853569;-44.3978;10.318696;-22.82612;41.000927;0.0062352773;0.9713289;9.840545;15.650945;12.692677;940.8669;1123.8937;0.0;1924.4281;990.3633;-2.9700282;2836.305;799.7603;-6.6150784 -0.011506123;-3.674075;15.167752;0.015208229;0.037397943;6.479044E-4;3.6806715;1.5124019;-0.011690696;3.160155;0.0;0.0;0.0;0.0;0.0;0.0;650.36395;1344.7686;-201.0;1298.8555;2764.9597;-201.0;2157.2727;1304.6161;-201.0 -0.00505751;-0.3566686;7.312822;0.045839716;0.032069292;1.4793941E-4;2.5823839;0.6277558;-4.8038096;-0.5429506;0.0;0.0;0.0;0.0;0.0;0.0;705.2164;1308.2245;-201.0;1680.9073;1121.6136;-201.0;2644.628;959.65436;-201.0 -0.13128416;-19.704485;29.826082;0.06256165;-0.034333896;0.012918826;43.55772;16.399498;0.27775535;-17.48578;22.660925;0.0072388686;0.5582808;3.6711543;6.695791;28.52391;925.8974;1218.8158;-6.2343197;2360.8508;828.57587;-21.454187;3345.4033;1210.4083;-24.633013 -0.5590515;-1.2454524;9.5862;0.05259684;0.015451853;0.12408785;-9.876472;15.92471;-6.9870987;-4.4914775;43.445225;0.0;0.0;4.19897;9.637312;7.492525;960.292;962.71173;-77.532684;1986.3663;909.5339;-73.14149;2857.411;901.4834;-76.10282 -0.27869853;-12.376045;23.326227;0.06680464;-0.028819032;0.04080394;44.31476;-13.542792;4.1528745;-25.025263;26.459787;0.008021477;0.62055063;7.494346;-3.220422;18.646929;501.21533;1503.2792;3.7005744;1518.3667;926.7813;-5.755104;2694.8018;731.41705;-14.978663 -0.017276125;-2.3643658;14.639671;0.023211598;0.03148668;0.0010945387;12.038003;-5.518336;6.630878;16.722809;0.0;0.0;0.0;0.0;0.0;0.0;1024.0438;1198.4509;-201.0;1893.9155;1355.352;-201.0;2500.0154;2095.9421;-201.0 -0.24586682;7.6846695;-2.7743523;0.02059521;0.026942981;0.058003023;-11.334869;1.5288731;27.550024;-3.7477262;0.0;0.0;0.0;0.0;0.0;0.0;1048.3916;720.6905;-201.0;2009.645;1021.022;-201.0;2735.3645;1316.1743;-201.0 -0.10212767;9.87573;-6.353695;0.07231833;0.007895975;0.011339922;-19.658699;9.244672;0.14018314;-26.064253;0.0;0.0;0.0;0.0;0.0;0.0;1237.3335;1251.6035;-201.0;1909.2574;997.6077;-201.0;2822.3105;1148.3185;-201.0 -0.00544009;-14.993224;26.59464;-0.043500047;0.047279403;3.2773768E-4;-2.4977686;10.964278;12.242737;18.64884;0.0;0.0;0.0;0.0;0.0;0.0;990.63995;941.03046;-201.0;2040.3717;776.5166;-201.0;3038.9631;714.4069;-201.0 -0.9659689;-6.8141837;20.907068;0.09045472;-0.022413401;0.34700844;24.936478;-6.601797;-16.834427;-35.57703;36.892483;0.011071123;0.4746141;11.554248;-10.537942;12.786171;262.6299;1452.7887;0.0;1156.3666;1006.76337;3.232072;2457.6912;437.0387;-13.760722 -0.29554555;-6.4082828;15.169942;0.10554394;0.005577348;0.09341252;25.116468;-33.260338;6.3505044;-45.450592;39.5744;0.010870452;1.12642;6.1523957;-1.5026884;15.820596;487.7999;1825.2164;0.0;1376.5695;1239.5342;-11.216854;2379.0908;906.939;-23.36905 -0.27202067;-15.198845;23.930756;0.07751379;-0.01984683;0.1663044;24.010149;3.3464491;13.744573;-17.316689;38.180584;0.022817457;3.5768127;11.033467;8.675626;34.05589;608.28143;1722.2803;-15.529232;1866.87;1146.2104;-38.357365;2597.6438;1248.5798;-42.190235 -0.013366985;8.050103;-4.643242;0.05533101;0.03726548;7.166777E-4;-6.7483993;-2.0536664;19.41064;1.8700489;0.0;0.0;0.0;0.0;0.0;0.0;1022.2925;1209.183;-201.0;2064.5735;1216.6826;-201.0;2776.5056;1919.2826;-201.0 -0.71431226;8.54097;-4.068085;0.035755347;-0.008411128;0.1707799;-3.086114;-17.328098;12.865764;-2.2091331;0.0;0.0;0.0;0.0;0.0;0.0;1189.9575;1434.5557;-201.0;1906.5546;1391.9014;-201.0;2801.0989;1115.3477;-201.0 -0.10497892;-7.6965585;18.239939;0.08491287;0.0089722825;0.016684039;14.985778;1.5108243;-0.2407875;-8.649481;33.677124;0.0;0.0;-0.8623401;-4.028101;3.1833863;369.06754;1107.2028;-64.859604;1315.9995;753.8899;-58.756348;2411.6116;582.0513;-66.98186 -0.028313665;-19.338472;42.819706;-0.030500965;0.02464225;0.0048053493;31.218506;7.09522;14.113231;32.215775;0.0;0.0;0.0;0.0;0.0;0.0;1244.3883;1813.6835;-201.0;1673.0753;1212.0293;-201.0;3054.6296;749.5256;-201.0 -0.6436165;-17.663786;18.939074;0.0651421;-0.05625686;0.24128865;31.340631;5.039765;11.855937;-48.159622;33.997543;0.014177629;0.5645171;10.72969;4.4753075;27.080015;864.99176;1065.6642;0.12994003;2235.1494;368.79544;-13.558808;3259.3398;976.965;-15.033591 -0.8295415;-12.300847;26.040024;0.08239321;-0.04999247;0.39493263;31.053991;-3.8696682;-13.871715;-75.25154;38.753025;0.004541649;0.35528192;9.043689;1.3070936;24.023428;993.4687;1116.8203;8.682935;1691.3517;3125.6191;-19.83818;2694.5645;437.41702;-16.636053 -0.6766967;-0.47634783;14.137599;0.085329704;-0.006781014;0.2074645;20.763529;-35.392277;-3.898676;-29.742815;38.220844;0.013724471;1.0463973;10.685287;-9.726174;0.071281396;425.01187;1298.3087;-1.8907856;1531.1573;1086.2305;9.101453;2266.6067;1817.0929;-1.380488 -0.012696911;6.210607;-3.0806086;0.013249456;0.041449714;0.0022468718;-7.955698;2.4455984;28.356956;-4.8356752;0.0;0.0;0.0;0.0;0.0;0.0;884.7139;1260.8463;-201.0;1731.3273;1405.663;-201.0;2590.5088;1885.9762;-201.0 -0.024867048;15.898295;-12.25367;0.082303084;0.018392652;0.001512421;-12.600635;-17.3686;30.85079;-16.12132;0.0;0.0;0.0;0.0;0.0;0.0;1190.4694;336.16284;-201.0;2191.612;1736.7858;-201.0;2745.1091;2424.8037;-201.0 -0.010240136;-11.997807;27.502768;-0.0012631273;0.04166193;5.796183E-4;5.476546;1.7876396;-1.8122045;11.288175;0.0;0.0;0.0;0.0;0.0;0.0;745.11224;1922.1832;-201.0;1329.3549;1430.3885;-201.0;2454.717;1139.4233;-201.0 -0.0050353534;-4.0647483;13.560382;0.015916508;0.048415754;1.2388905E-4;-4.1999564;10.578763;7.1189957;10.59893;0.0;0.0;0.0;0.0;0.0;0.0;781.1779;1532.7894;-201.0;1535.788;1140.0674;-201.0;2504.621;970.42773;-201.0 -0.32969484;-9.547673;11.243858;0.123189546;-0.0126445005;0.046782497;23.458008;-8.013105;30.124315;-51.875057;37.616688;0.007551569;0.46172166;13.327704;16.827047;17.632708;889.89307;1460.9828;-16.957159;2090.0388;654.56866;-25.274313;3093.5427;1226.5615;-17.551764 -0.74167544;-4.572111;11.237004;0.06817967;0.0030532398;0.46675014;-6.764225;-1.085331;-10.481137;-27.948694;50.394867;0.041129425;1.4814177;9.460673;9.801589;7.27343;1010.76154;980.6509;-9.866768;2040.6997;1244.2222;-20.68196;2778.8704;702.63885;-19.789965 -0.11845402;-4.892386;11.176925;0.06621062;0.019125888;0.011775841;-18.94545;34.844204;-15.664731;-1.4247704;0.0;0.0;0.0;0.0;0.0;0.0;1409.68;1306.3491;-201.0;2150.1619;1514.2833;-201.0;2933.9443;3082.1628;-201.0 -1.3169045;0.16732566;11.382889;0.07400114;0.002645906;0.72774744;7.1612334;-18.86099;4.0433645;-0.6397845;0.0;0.0;0.0;0.0;0.0;0.0;165.34673;1639.8066;-201.0;1292.3248;846.2995;-201.0;2358.5913;885.38885;-201.0 -0.24264283;-25.381552;39.90633;0.09564572;-0.053803127;0.06590467;37.783596;21.986029;-17.67365;-45.503235;38.439457;0.0105572445;0.82382375;8.89886;7.5932508;45.517956;681.134;1433.5029;-5.8238354;1910.9799;1482.9175;-32.634808;2920.4036;1281.1648;-44.6775 -0.12734757;13.818757;-2.181388;0.08004127;0.0065760836;0.012854991;-19.113327;-8.690547;6.9037933;-9.254928;0.0;0.0;0.0;0.0;0.0;0.0;1149.9335;538.55597;-201.0;2129.8953;1512.022;-201.0;2754.8643;1229.6622;-201.0 -0.33124986;-8.573731;22.160177;0.055309743;-0.0026268195;0.1506588;25.810984;-11.7407875;-0.57689995;-11.022487;40.21994;0.03430732;1.9609829;5.334408;-4.722255;12.877808;1014.4266;1187.7682;-13.927072;1703.1339;2920.202;-22.419168;2821.9043;1291.4316;-30.647385 -0.047069173;13.733592;-9.64605;0.061567012;0.03472354;0.004448664;-15.710574;1.3115643;24.311686;-15.07857;0.0;0.0;0.0;0.0;0.0;0.0;1292.3839;1007.23444;-201.0;2261.1707;1502.6025;-201.0;2835.388;1125.4993;-201.0 -0.2586994;-17.99954;33.72501;0.07410806;-0.023093255;0.09562904;35.713535;13.897255;-3.2357693;8.7211275;34.11635;0.0095337825;1.0797071;6.267119;9.395447;36.86619;383.86716;1224.8912;-0.48266277;1476.027;857.00854;-20.129438;2694.5857;1160.4865;-37.34885 -0.018958883;-34.517437;46.459015;-0.048483554;0.028471872;0.008473269;12.794032;12.075173;13.756715;12.559509;0.0;0.0;0.0;0.0;0.0;0.0;1094.8148;1592.7432;-201.0;2151.2173;1405.2606;-201.0;3348.2415;1305.3181;-201.0 -0.2836994;6.9615364;4.619759;0.04793306;0.007173373;0.046045568;-16.96958;-13.889789;-10.884171;-15.06643;53.598873;0.014599694;0.71823764;2.5648396;-4.5712857;2.6119225;1178.0806;722.9107;-18.340271;2295.0496;1303.1385;-28.107641;2861.5664;1586.6747;-20.952194 -0.56960994;-7.6261373;14.12233;0.04012248;0.0076014623;0.24962354;8.582706;13.774353;21.020674;4.2413707;34.55232;0.0;4.195941;8.104455;-0.05412491;22.062347;591.3599;1001.3367;-2.557297;1533.5742;673.83;-9.883263;2542.6238;600.4991;-19.020962 -0.009114138;-12.534907;25.511108;6.0523238E-5;0.018024752;3.9681283E-4;2.9827464;5.180922;-3.5775995;-5.609794;0.0;0.0;0.0;0.0;0.0;0.0;497.5005;939.4854;-201.0;1556.6558;869.31445;-201.0;2526.1824;1698.8114;-201.0 -0.34756204;-16.84461;17.065393;-0.016862445;-0.022600388;0.18234074;34.97988;8.603839;29.852903;8.4243555;0.0;0.0;0.0;0.0;0.0;0.0;436.0121;1129.077;-133.62718;1877.211;698.12946;-143.93953;2518.9797;2286.6677;-139.33417 -0.0065041264;1.1676579;4.9765515;0.05329505;0.03984678;1.8474345E-4;1.1885695;2.9406822;4.9495234;-8.929954;0.0;0.0;0.0;0.0;0.0;0.0;732.2403;1417.2042;-201.0;1584.9137;1135.9247;-201.0;2637.2327;797.6831;-201.0 -0.2137401;-10.972749;12.011043;0.08781657;-0.02604019;0.021698559;12.447223;-2.2147934;20.839277;-36.222694;0.0;0.0;0.0;0.0;0.0;0.0;557.69916;1270.6139;-132.86041;1888.2201;417.609;-139.69612;2873.5068;1026.2747;-137.64586 -0.03640124;1.3632039;4.5951447;0.016321382;0.01843021;0.0020428803;8.45461;-13.643397;15.162992;-2.0755281;0.0;0.0;0.0;0.0;0.0;0.0;591.3311;1092.4467;-201.0;1570.607;945.04474;-201.0;2508.1138;1137.6085;-201.0 -0.008016239;-8.460616;19.51552;6.518541E-4;0.03237694;3.9518182E-4;2.405011;6.5898323;5.9587626;7.328879;0.0;0.0;0.0;0.0;0.0;0.0;711.4714;1320.0444;-201.0;1783.723;1098.2816;-201.0;2743.1443;917.43146;-201.0 -0.002881391;1.3329134;4.4676156;0.06219451;0.041819096;8.77676E-5;0.074560486;1.776838;-6.1440234;-2.3858416;0.0;0.0;0.0;0.0;0.0;0.0;589.6615;1359.1749;-201.0;1459.6744;1273.9418;-201.0;2372.8445;1042.7305;-201.0 -0.0023414067;5.512959;-0.059339494;0.09318627;0.057427082;2.623423E-5;-7.603559;-0.40235755;-0.14762555;-0.48368382;0.0;0.0;0.0;0.0;0.0;0.0;1203.0894;1030.6227;-201.0;2169.513;1047.5431;-201.0;3095.568;975.1626;-201.0 -0.005499081;1.7266906;3.239949;0.051170673;0.037772063;1.20997836E-4;-0.5047829;-1.5153519;3.7336853;4.3053575;0.0;0.0;0.0;0.0;0.0;0.0;620.5914;3627.702;-201.0;1387.3224;1453.1432;-201.0;2317.6199;1356.3021;-201.0 -1.3951145;-5.467438;11.722362;0.04851583;-0.022952406;1.1348472;16.323853;-16.322786;-7.3749866;-12.029012;40.17306;0.12170977;2.8062937;4.0953355;8.507356;12.2051325;679.1143;1533.6576;4.7040424;1950.495;890.0386;-5.9011917;3010.863;2728.4026;-3.1701412 -0.05646171;-1.1020776;18.654661;0.0062061124;0.038993493;0.0070516677;26.44278;-12.92669;-2.0987966;30.02372;0.0;0.0;0.0;0.0;0.0;0.0;796.2896;1417.5684;-201.0;1636.4082;1246.0194;-201.0;2786.2874;1417.8212;-201.0 -0.27874652;1.8734785;3.6132565;3.3909455E-4;0.0017478421;0.052088827;-14.869906;23.210848;3.5843995;0.12412834;36.679443;0.0;0.0;6.984371;17.024597;21.681269;1010.73114;1079.102;-13.349294;1791.9395;2230.4507;-9.992364;2614.8037;910.446;-21.40425 -0.5763068;-6.8139777;12.418965;0.069812864;-0.01920066;0.17881908;6.978102;-7.014439;23.318323;-27.305542;42.08919;0.01700324;1.8476967;7.0732174;22.07616;6.9060783;1211.5902;1568.2975;-83.056;2055.6392;699.46075;-77.80679;3449.3096;944.92896;-77.89458 -0.002702824;5.836272;0.5604479;0.04937796;0.060740937;3.633588E-5;-8.044979;0.43044028;0.5443754;5.262807;0.0;0.0;0.0;0.0;0.0;0.0;713.2895;1171.5713;-201.0;1645.4066;1230.5526;-201.0;2437.6433;1046.0947;-201.0 -0.008272021;-3.2239873;12.650905;0.02242046;0.035569478;2.30777E-4;4.7167463;3.665268;5.032188;5.9966664;0.0;0.0;0.0;0.0;0.0;0.0;657.1413;1527.6913;-201.0;1602.1693;1184.2251;-201.0;2500.252;848.79364;-201.0 -0.0017270589;3.6733973;0.1971488;0.08829131;0.059075058;1.9477544E-5;-1.7074088;-1.893037;-0.18508725;-1.3938936;0.0;0.0;0.0;0.0;0.0;0.0;825.30194;1850.1039;-201.0;1499.2885;810.3722;-201.0;2493.897;1684.1523;-201.0 -0.0064422465;-16.834036;29.726568;-0.005739825;0.03740571;3.3312754E-4;-1.3202378;7.1406493;4.504725;7.273145;0.0;0.0;0.0;0.0;0.0;0.0;820.154;2193.1895;-201.0;1562.6217;1225.2012;-201.0;2786.9407;727.7678;-201.0 -0.62903553;-14.206466;16.785444;0.15246809;-0.0068294373;0.084054865;9.7831745;-15.649446;-36.780415;-84.81448;46.378162;0.0032928865;0.286056;14.689349;16.273077;30.509363;660.49286;1337.673;5.741736;1666.5332;1197.7587;-27.698639;2731.911;541.1047;-24.653666 -0.37424836;-6.2620316;9.775994;0.06905558;-0.004361225;0.12318229;22.335207;-11.063483;21.314056;22.801474;37.190434;0.007919227;0.91050774;8.842069;15.377776;11.934056;331.79288;1229.253;0.0;1448.0919;657.0197;-41.266087;2310.2146;966.6086;-21.425919 -0.15975761;-12.2372055;31.613264;0.08062374;-0.0018708367;0.006329125;43.010548;-4.9300246;-14.778607;-21.434381;34.585613;0.0024741562;0.18231082;12.840249;-2.6739838;16.184538;565.65686;1992.8539;2.2145493;1307.7015;2352.748;-6.4424305;2054.4856;1319.0194;-15.716633 -0.0037587557;-5.0715427;15.186382;0.0023834333;0.039212734;1.9731035E-4;-2.6862476;6.5617447;8.572238;9.8131895;0.0;0.0;0.0;0.0;0.0;0.0;809.16254;1297.848;-201.0;1769.3912;1151.4049;-201.0;2522.6565;726.4033;-201.0 -0.006469472;-8.75427;16.571863;0.018399106;0.022163028;1.91255E-4;9.701238;10.249837;3.1122284;2.3836842;0.0;0.0;0.0;0.0;0.0;0.0;500.0607;1415.7109;-201.0;1527.3925;1160.4265;-201.0;2415.7883;1178.2496;-201.0 -0.0032302989;0.04959321;6.7877727;0.03267325;0.046315458;1.3636782E-4;-4.189516;9.293431;5.1470203;2.7978127;0.0;0.0;0.0;0.0;0.0;0.0;906.2031;892.1006;-201.0;1822.3881;1453.0382;-201.0;2532.8342;1167.2848;-201.0 -0.08643737;-32.342026;37.32757;0.0014598122;-0.007154882;0.0119744195;39.545956;26.459436;28.03987;17.118166;23.619612;0.0039695813;0.16963534;5.0669284;16.145094;48.071625;613.79376;2029.0272;-18.40231;1790.1876;1621.9106;-38.258495;2999.927;1109.1798;-41.651066 -0.85198706;-3.9121158;5.423801;0.110951684;-0.006602788;0.39856735;15.565178;-20.03451;19.080126;-8.94347;38.38952;0.013367223;1.0065091;3.939622;16.636354;14.361847;970.88043;1344.5924;0.0;1553.1234;1296.8278;-78.12243;2628.584;973.0007;-78.6171 -0.09354388;-14.424904;17.899836;0.034320135;-0.011774485;0.022000598;23.854815;12.543072;43.91817;-2.6794097;0.0;0.0;0.0;0.0;0.0;0.0;383.0732;1061.0079;-136.19409;1601.557;711.8409;-139.86009;2299.1267;1029.609;-137.4638 -0.008866929;-4.8961205;12.665906;0.037633996;0.031377744;3.246528E-4;9.699994;5.439176;3.5461166;7.9653187;0.0;0.0;0.0;0.0;0.0;0.0;857.37256;1554.7052;-201.0;1706.8341;1260.3163;-201.0;2747.1445;957.0305;-201.0 -0.06237236;-14.620706;20.049227;0.06517952;0.023837686;0.018045174;25.485853;4.360627;25.743185;16.331404;0.0;0.0;0.0;0.0;0.0;0.0;941.8943;1274.1558;-201.0;1786.4908;1781.8392;-201.0;2585.2957;1942.2709;-201.0 -0.014357671;2.5110137;4.9735584;0.010219269;0.05710557;5.935672E-4;-10.450738;-3.9812317;10.229474;12.08799;0.0;0.0;0.0;0.0;0.0;0.0;769.5867;791.66925;-201.0;1930.0923;897.13043;-201.0;2826.1584;1892.0306;-201.0 -0.048594996;-10.182079;27.82966;0.033179957;0.009114742;0.008190404;34.291874;-1.6553774;-5.158678;14.644524;0.0;0.0;0.0;0.0;0.0;0.0;687.5423;1717.4489;-201.0;1508.1276;1129.3375;-201.0;2755.5574;1062.7069;-201.0 -0.07577273;-0.050777275;3.976964;0.09558296;-0.006053828;0.018604187;-5.756909;-6.4313865;-12.27493;-19.598349;42.94301;0.0;0.0;0.12183422;0.61334586;13.367519;564.6324;1005.582;0.0;1805.7373;756.6121;-67.872894;2783.7468;910.42755;-71.31863 -0.008222777;-3.1943321;11.262582;0.011388287;0.03960273;4.5937346E-4;-7.295613;8.552479;10.36404;5.7224565;0.0;0.0;0.0;0.0;0.0;0.0;689.7126;1109.8225;-201.0;1521.8964;1208.5438;-201.0;2405.1575;861.0544;-201.0 -1.9731716;9.893506;-0.28453827;0.0679095;-0.013250883;1.1846251;-19.81348;-35.854607;-13.872826;-36.05955;51.988483;0.010058861;1.0598923;12.925624;5.061358;15.93764;818.4594;1115.547;9.962409;1832.3848;999.0983;2.6349738;2819.0107;2388.7034;-3.7097044 -0.51957184;-7.999492;12.532121;0.074705616;-0.006647073;0.2108845;12.082341;-20.272308;25.318094;-33.35327;45.5313;0.032298703;0.6712473;5.532528;17.246595;11.139283;1199.7179;1651.3248;-31.66893;1822.8324;1072.7711;-24.59315;2962.5588;1256.3094;-25.56162 -1.4873346;-3.6677234;13.137492;0.12007919;-0.02171038;1.044764;25.11402;-35.465862;-8.163743;-44.855213;36.872498;0.011239603;0.79470354;0.23423362;-5.627643;9.7865715;1095.8807;1071.6112;0.77738243;2126.0496;767.59155;-3.3350697;3227.0605;441.25928;-4.9758015 -0.17539859;-16.443926;26.309198;0.107702754;-0.010098338;0.028187366;29.131083;-2.74141;9.740882;-7.587444;36.88136;0.007722053;0.44477394;11.348815;9.092156;24.70246;477.03677;1350.5201;-5.1943784;1664.6302;852.58795;-25.43981;2772.7668;3027.1453;-29.896837 -0.010084207;-19.149622;35.26726;-2.9488964E-4;0.027676744;7.197913E-4;16.078962;12.031974;-2.4709775;-0.046973407;0.0;0.0;0.0;0.0;0.0;0.0;370.45224;1816.8115;-201.0;1317.7448;1352.208;-201.0;2614.7168;1016.42096;-201.0 -0.009275884;-3.2811038;13.863609;-6.472091E-4;0.041035865;3.4964024E-4;-0.8991266;-5.8662133;7.1078353;11.387489;0.0;0.0;0.0;0.0;0.0;0.0;665.9102;1462.459;-201.0;1403.4808;1387.836;-201.0;2317.719;2203.8662;-201.0 -0.118884705;0.059410095;1.9872674;0.04599941;0.004804064;0.012361597;2.3311872;2.2955747;12.428662;-16.249235;0.0;0.0;0.0;0.0;0.0;0.0;644.95184;1263.3712;-201.0;1702.6893;807.7879;-201.0;2729.2517;465.10596;-201.0 -0.029234478;-21.598837;35.32015;-0.03743719;0.020992799;0.00587013;29.865644;13.942677;11.668655;11.974507;0.0;0.0;0.0;0.0;0.0;0.0;1120.2765;1176.1378;-201.0;2321.3655;1196.2734;-201.0;3464.4436;1297.9414;-201.0 -0.0076770354;1.7284884;4.1371307;0.045681477;0.036613;2.0593319E-4;1.3388573;-3.5508068;-0.752341;7.8563952;0.0;0.0;0.0;0.0;0.0;0.0;603.3841;1342.108;-201.0;1489.9122;1346.9282;-201.0;2315.6091;1281.042;-201.0 -1.7255214;-6.776891;8.222774;0.026874527;-0.013726161;1.1595849;-2.513357;-42.74243;-7.1615205;-44.342255;57.288006;0.003969256;0.42684153;14.013218;-5.884928;0.7906806;842.50323;1059.5687;0.0;1786.2631;796.39886;-16.279947;2755.3206;599.1242;-21.214888 -0.0034445154;2.5911353;5.622518;0.050191227;0.051400214;7.2500196E-5;-5.9693913;3.1285136;1.4320136;3.0466812;0.0;0.0;0.0;0.0;0.0;0.0;953.08185;1335.0978;-201.0;1665.43;1020.82715;-201.0;2662.404;1196.682;-201.0 -0.0024972816;7.2855163;-3.5499566;0.09056916;0.055917263;5.0067963E-5;-8.978034;-1.3894666;7.633583;-7.3373337;0.0;0.0;0.0;0.0;0.0;0.0;1079.407;863.13745;-201.0;2047.0574;1087.9775;-201.0;2743.7395;1473.8975;-201.0 -0.5628312;-6.86643;15.8504305;0.10222786;-0.023020765;0.15042496;23.554724;-30.028048;-4.373224;-31.618607;38.84558;0.004441814;1.0651646;5.579775;3.446909;13.087361;549.3637;1513.4845;-7.2527494;1477.722;1833.7808;-13.267716;2549.2434;1779.0865;-18.439753 -0.010528483;-22.337076;36.080784;-0.018252151;0.029478736;0.0010979805;6.310702;11.913163;6.580466;7.0032105;0.0;0.0;0.0;0.0;0.0;0.0;791.9182;1464.8102;-201.0;1704.9191;1265.5697;-201.0;2788.875;986.64136;-201.0 -0.008708578;-6.406534;15.738106;0.044878855;0.018937213;2.74254E-4;10.135711;6.636543;-4.988004;-4.3827057;0.0;0.0;0.0;0.0;0.0;0.0;571.1212;1523.945;-201.0;1511.349;1292.4775;-201.0;2459.5422;1039.6069;-201.0 -0.007236684;-8.807111;18.056618;0.012923635;0.043286365;5.4460013E-4;1.6665064;6.312977;10.533328;12.926599;0.0;0.0;0.0;0.0;0.0;0.0;873.4808;1134.0837;-201.0;1887.0265;1056.1615;-201.0;2865.8884;1084.6066;-201.0 -0.25523612;-10.038449;21.11579;0.053335518;-0.017435445;0.060923487;47.53519;-7.52565;-20.511604;1.5128584;25.336477;0.059791803;2.6343675;4.980541;4.4750457;24.853151;573.2402;1470.8043;1.6641804;1531.0875;1309.7372;-4.4754524;2813.2913;1562.66;-23.35634 -0.1424157;-21.179895;26.6168;-0.027004356;-0.018781196;0.112229586;33.80927;3.2034862;34.582596;2.0392067;0.0;0.0;0.0;0.0;0.0;0.0;629.6107;1328.7142;-201.0;1848.7803;654.5716;-201.0;3011.8196;838.6622;-201.0 -0.08064175;4.934526;6.2139153;0.007458001;0.033388626;0.006144551;-6.60548;-14.163646;5.2863555;6.185762;0.0;0.0;0.0;0.0;0.0;0.0;725.3904;1068.333;-201.0;1338.6935;1743.5215;-201.0;2425.0461;973.95;-201.0 -0.0055776364;-0.21677248;9.340279;0.041970566;0.04262502;1.5088235E-4;-2.1523404;2.4034727;0.58007807;1.413623;0.0;0.0;0.0;0.0;0.0;0.0;746.8122;1258.6454;-201.0;1676.8602;1157.3888;-201.0;2592.0012;885.60565;-201.0 -0.26693055;-23.035463;26.390833;0.1036269;-0.0403178;0.04812169;40.919804;9.66435;15.466797;-19.07676;30.476587;0.013146731;0.522209;9.178497;-7.3295383;25.75799;283.7413;1969.0625;0.0;1132.1266;1729.8195;-32.504322;2303.9065;808.8237;-25.44686 -0.26680112;12.345075;-6.5305657;0.07911836;0.0018188054;0.041723;-13.690036;-15.138265;17.048952;-19.663698;0.0;0.0;0.0;0.0;0.0;0.0;1153.2803;605.9034;-201.0;2122.1863;1231.8833;-201.0;2937.5593;1459.393;-201.0 -0.28370765;-6.5772;13.916199;0.042204816;0.008118483;0.027451614;-5.5568795;26.286179;-13.628571;15.866633;0.0;0.0;0.0;0.0;0.0;0.0;913.9715;1271.2216;-201.0;1716.4166;1841.5464;-201.0;2601.1367;841.53143;-201.0 -0.020149387;-15.886336;27.348928;-0.03239451;0.043562025;0.0030634857;-0.33930373;12.81195;13.074393;13.732034;0.0;0.0;0.0;0.0;0.0;0.0;1132.6403;1185.7672;-201.0;2032.8441;1578.4911;-201.0;2907.1123;1067.931;-201.0 -0.07512037;-1.9281725;29.888021;0.056979287;0.014890741;0.013859597;37.09905;-10.33355;-24.190237;7.1795425;0.0;0.0;0.0;0.0;0.0;0.0;798.5335;1466.4525;-201.0;1579.3063;1147.3027;-201.0;2875.9143;1000.85895;-201.0 -0.19638212;-16.442392;18.965536;0.017008377;-0.012626144;0.09839999;35.891773;2.7917922;32.67833;12.764187;0.0;0.0;0.0;0.0;0.0;0.0;866.0554;1343.7394;-201.0;1893.9951;627.0705;-201.0;3072.203;1291.3026;-201.0 -0.035394404;-19.415773;35.65571;0.0015002508;0.019901074;0.009189355;34.54771;13.549057;8.851219;15.744622;0.0;0.0;0.0;0.0;0.0;0.0;722.5613;1395.7474;-201.0;1649.6678;985.8255;-201.0;2987.2266;710.4705;-201.0 -0.78519917;-7.8402;13.62309;0.102142565;-0.013352868;0.7965212;12.858426;-18.022219;20.418793;-23.848633;46.262836;0.007827304;1.8996931;12.077779;-0.13741112;-19.343365;439.3965;1991.4198;0.0;1479.6727;716.48114;-23.794756;2574.7688;889.23236;-12.303238 -0.31028327;-5.444216;13.351776;0.09954796;-0.006605988;0.06778409;-7.2198615;13.137829;1.7213169;-30.559286;43.761536;0.03198051;1.4184903;-0.9216251;11.606682;3.9811637;851.97754;1418.2666;-29.714613;1889.3268;757.0467;-27.274298;2872.348;941.25665;-22.769629 -0.14986086;-9.819922;23.354004;0.061923876;0.026568957;0.044683244;26.099123;4.6509395;0.0012728771;19.461815;0.0;0.0;0.0;0.0;0.0;0.0;1133.2505;1285.3906;-201.0;2114.887;1350.4381;-201.0;3287.378;2565.739;-201.0 -0.0040886467;-7.175072;16.3431;0.013244835;0.051775172;2.8321022E-4;-4.165739;7.1347795;6.392184;12.097031;0.0;0.0;0.0;0.0;0.0;0.0;915.4443;2250.0557;-201.0;1458.4899;1388.0347;-201.0;2482.3918;1448.1283;-201.0 -1.4386095;-9.805566;14.699638;0.127999;-0.009472276;1.1403046;11.9397;-24.770498;-1.3409568;-24.015656;45.848324;0.06508147;2.1386487;4.106113;9.168387;6.4611893;1121.5831;1205.9994;-21.307144;1921.3447;1024.901;-14.843658;2895.4746;842.76056;-21.10823 -0.0021162361;-0.5341163;3.562526;0.073054254;0.043083716;3.0956955E-5;0.1929503;6.7520084;4.6530805;-6.0892315;0.0;0.0;0.0;0.0;0.0;0.0;1072.3844;1734.5775;-201.0;2257.846;739.2371;-201.0;2539.7112;1340.937;-201.0 -0.006442146;-3.921939;11.679093;0.028482521;0.029567137;2.1887159E-4;2.7923813;6.8592973;2.7804863;3.7872188;0.0;0.0;0.0;0.0;0.0;0.0;636.3441;1636.1862;-201.0;1397.4977;1487.8414;-201.0;2256.3752;1285.4293;-201.0 -0.51235384;-18.38098;34.898743;0.109967224;-0.020584429;0.2435729;39.09043;-0.6726002;0.42902932;-23.669046;38.925037;0.071401656;3.2564633;5.954281;9.940282;27.678833;528.6652;1454.1976;-27.791653;1577.248;943.62695;-33.69522;2882.1055;803.0215;-45.840893 -0.15817864;-10.584493;16.471832;0.09632433;-0.024620866;0.04369064;2.6997492;20.776747;19.706295;-42.06616;43.03561;0.016989393;1.4625568;11.150416;25.438194;14.042216;662.02057;1105.8788;-23.448109;1986.8867;359.5096;-28.669443;2781.319;936.499;-24.5241 -0.5188463;-7.9538293;13.555023;0.07415121;-0.011961666;0.14927469;32.250694;-19.251226;8.65331;-4.8570557;28.28103;0.063650005;2.7479887;5.5638022;3.9098663;14.297469;1158.119;1142.3402;1.3947397;2144.215;997.2529;-4.5107627;2984.1223;846.305;-9.571116 -1.1003743;-0.50956345;12.0123415;0.073599935;0.019578742;0.71168756;6.00296;-20.082975;12.395123;3.2593088;0.0;0.0;0.0;0.0;0.0;0.0;1075.4066;591.16846;-201.0;2090.5251;885.3813;-201.0;3008.4697;675.8234;-201.0 -0.22655748;-5.7037106;31.87707;0.06250804;-0.0062127714;0.0413021;42.20339;-9.275229;-20.406397;-12.341252;0.0;0.0;0.0;0.0;0.0;0.0;1018.67773;1230.6444;-201.0;1810.2129;790.2248;-201.0;3167.8965;322.47946;-201.0 -0.30644912;-8.0720415;17.928717;0.06312607;-0.019399168;0.098998584;21.991945;-16.463139;22.510813;-3.1849365;38.906757;0.02468423;1.4089984;5.464178;3.4477608;13.16122;330.79233;1267.5922;0.0;1472.8657;640.4719;-26.548357;2653.538;814.46436;-39.477528 -0.029801039;-13.90229;36.90617;-0.011770432;0.030980445;0.0032309256;31.88737;5.284292;1.7435379;21.89862;0.0;0.0;0.0;0.0;0.0;0.0;860.37665;1362.1099;-201.0;1486.6691;1584.7515;-201.0;2954.0527;898.6661;-201.0 -0.2279306;-13.547379;24.727882;0.038728915;0.0020516813;0.043935988;24.131607;5.6437936;17.281067;18.002872;32.240566;0.02016922;1.0755497;6.9346905;12.875781;21.50141;792.7446;1786.2476;-24.109491;1598.5653;1140.6061;-16.542566;2757.5378;1736.7534;-25.180258 -0.35968807;-5.4060154;7.3277516;0.121772826;-0.0259095;0.117016084;15.518571;-26.740982;11.730962;-45.504715;0.0;0.0;0.0;0.0;0.0;0.0;860.6233;1602.3213;-201.0;1791.3837;948.986;-201.0;2823.3145;901.98627;-201.0 -0.0031948264;2.483173;3.4649096;0.08983797;0.041184515;9.1999325E-5;-1.5045477;-2.8985386;-2.8168285;-5.078669;0.0;0.0;0.0;0.0;0.0;0.0;1009.41876;912.3057;-201.0;1659.0815;1399.0961;-201.0;2591.661;1348.625;-201.0 -0.118861;-17.541748;26.195925;0.057983544;0.0021163134;0.049695242;31.694525;9.734479;24.20283;28.291956;27.862696;0.010428273;1.1597489;3.1566043;5.998802;28.143204;369.84216;1068.7339;-69.28131;1402.4596;711.636;-83.30343;2311.2283;803.56525;-84.04424 -0.17220414;4.318197;0.28761038;0.013931795;0.022828162;0.033683673;-8.227757;20.858362;6.0764747;3.6439247;30.376734;0.0;0.0;3.998924;-3.2784903;21.930288;747.08124;1114.9298;-18.460129;1925.207;838.91504;-20.65985;2904.9531;874.3791;-24.761358 -0.100869745;-16.990881;24.983606;0.0036720939;-0.0034828323;0.0217314;29.436783;12.28485;11.721728;5.972401;24.795937;0.0;3.0725083;4.0096183;12.051646;22.189928;545.65454;1592.8678;-10.272236;1525.2217;1702.1361;-13.739091;2277.8123;1051.7101;-19.477163 -0.6453853;2.1614122;17.709608;0.094872534;0.014235471;0.28905416;25.818026;-42.134808;-19.531546;-36.053524;39.363342;0.03899659;1.0464039;3.182211;-5.8815227;12.06203;668.8625;1727.152;0.0;1457.7788;1246.0177;3.7424667;2779.3625;529.43274;-13.171496 -0.4847647;-7.2064767;10.100998;0.03031229;-0.014912342;0.22843003;19.865786;-17.833656;37.20183;-10.566403;38.28541;0.030431421;0.619126;8.871128;6.825523;6.082332;782.366;1206.1493;0.0;1982.4335;887.41876;-32.481804;2703.4229;1220.1617;-28.511978 -0.91587704;-8.205616;12.086909;0.04242145;-0.026186304;0.31666356;22.276926;-15.100395;-0.5141184;-57.901657;34.993954;0.027129516;2.2849004;4.913832;-9.491155;4.9189067;543.2822;1329.1631;0.0;1510.7574;848.0063;-3.4501941;2649.7366;497.16275;-5.9448485 -0.021514336;-1.5153761;11.813538;0.013914786;0.04287063;0.0012311718;2.8216457;-12.202111;13.002364;5.642203;0.0;0.0;0.0;0.0;0.0;0.0;635.92596;1462.5776;-201.0;1172.7188;1717.3495;-201.0;2152.863;1336.9337;-201.0 -0.39981616;-10.569817;13.011622;0.11294779;-0.01886004;0.19124953;19.041193;-11.335194;30.868752;-44.145874;41.13599;0.056497145;1.9797901;10.30033;10.3477;15.094388;1012.27045;1210.3479;-28.466217;2085.4502;678.6169;-26.08786;3283.8308;2467.5774;-28.199957 -0.009445556;-2.3247645;6.9816246;0.058332413;0.017438518;2.1979694E-4;4.562103;0.96037364;9.015667;-3.3125947;0.0;0.0;0.0;0.0;0.0;0.0;395.67856;1332.8522;-201.0;1401.8495;1025.2838;-201.0;2319.3494;978.81085;-201.0 -0.10324069;-3.9639637;10.483929;-0.016987057;0.01766807;0.01800681;-3.7635853;9.684512;10.286202;15.780604;36.262512;0.0;0.0;0.23926315;0.7584362;25.077785;597.3145;1375.1791;-66.81615;1535.5841;978.2083;-81.481514;2517.015;985.74115;-79.846794 -0.0060208426;2.925741;3.242957;0.07491938;0.0376313;2.1363975E-4;-0.04320693;-6.3722897;0.33707747;-1.9872904;0.0;0.0;0.0;0.0;0.0;0.0;1132.1444;1440.6869;-201.0;1914.2511;1708.5944;-201.0;2701.412;1160.9441;-201.0 -0.6749928;-20.349043;27.646904;0.061240252;-0.04230058;0.2658643;31.452143;-9.27185;-4.453991;-60.121418;41.25488;0.006402083;0.53137535;11.389779;13.763771;31.930029;871.3352;1145.06;-9.103402;2238.829;779.97;-31.047552;3067.9875;707.22797;-27.26966 -0.029191762;1.6968874;4.437199;0.054111898;0.026252687;0.0015393738;8.678506;-10.863869;6.894057;1.3336926;0.0;0.0;0.0;0.0;0.0;0.0;908.81525;1380.7125;-201.0;1898.3184;1424.5092;-201.0;2741.9568;961.8882;-201.0 -0.022100149;0.4230479;5.8805547;0.06934924;0.02512733;9.967835E-4;10.14873;-10.094604;-2.8439236;-2.6344588;0.0;0.0;0.0;0.0;0.0;0.0;894.1214;3884.294;-201.0;1569.6605;1410.0573;-201.0;2486.8098;1194.502;-201.0 -0.116896175;9.252997;6.81937;0.061621252;0.030310258;0.013793348;4.593529;-22.707052;14.583592;5.1832724;0.0;0.0;0.0;0.0;0.0;0.0;970.4422;912.435;-201.0;1879.5605;1192.4674;-201.0;2899.114;1610.8042;-201.0 -0.0073530213;-13.774846;25.932306;-0.015073277;0.034792144;4.4140904E-4;6.6957054;11.8042755;10.843484;14.914111;0.0;0.0;0.0;0.0;0.0;0.0;802.90356;1159.4495;-201.0;1743.0912;1122.9313;-201.0;2745.793;843.4555;-201.0 -0.15843202;18.428888;-14.341361;0.089913726;0.0015557468;0.018780546;-22.890528;-2.6676922;20.106733;-25.805824;0.0;0.0;0.0;0.0;0.0;0.0;1259.3541;356.14462;-201.0;2531.6785;1026.7328;-201.0;3234.0364;1961.1333;-201.0 -0.17036302;-23.774588;28.183731;0.005702526;-0.015715417;0.067695;27.791235;13.841952;30.18313;-6.075779;17.792229;0.0;4.310566;3.2463675;-122.8698;-106.78376;419.0989;1350.8535;-49.62473;1691.9008;1580.4882;-59.21355;2442.345;828.6836;-57.526257 -0.12163144;-0.3597773;3.358759;0.021870844;0.0070612542;0.018843556;-4.1139703;24.683708;35.545544;3.5108674;24.50529;0.0;0.0;3.9272368;0.32610425;19.301247;1250.3502;918.55634;-20.594294;2202.0032;2399.2102;-19.502113;2844.9397;1102.7935;-18.804077 -0.029371426;-2.6309881;6.9084477;0.06629554;0.012224029;0.001298874;4.5508347;-1.8079405;4.9466643;-13.695945;0.0;0.0;0.0;0.0;0.0;0.0;912.49365;1339.0531;-201.0;1861.8262;950.82324;-201.0;2892.3992;947.8316;-201.0 -1.84296;-2.5345752;14.369565;0.082751326;0.012011458;1.0494722;3.576126;-40.4947;-17.769049;-53.002583;42.858643;0.03699753;1.2733402;6.7420783;-8.316546;11.38631;916.74756;1036.225;0.0;1987.278;894.2703;6.2713733;2911.3054;755.9929;3.6224797 -0.01979561;0.74741334;6.0010724;0.109103836;0.05011857;7.0280425E-4;-1.4953872;-8.022257;15.840661;-6.631174;0.0;0.0;0.0;0.0;0.0;0.0;1033.1266;794.6206;-201.0;1913.1376;871.13165;-201.0;2904.947;772.00543;-201.0 -0.2239907;2.3141248;1.7428299;0.09638452;-0.010058285;0.0369017;-7.606672;-7.939005;15.8459425;-19.984331;41.58527;0.0;0.0;7.3747187;15.81073;13.668079;1298.6617;317.19992;-89.11716;2330.0725;954.9455;-80.85702;3203.2532;801.0334;-85.29744 -0.0029848013;10.5307;-5.562549;0.055888902;0.050377857;1.21056095E-4;-13.98891;7.5541835;0.27627897;-5.3577123;0.0;0.0;0.0;0.0;0.0;0.0;731.9941;949.81323;-201.0;1590.1649;1133.0153;-201.0;2565.2214;1306.5298;-201.0 -0.0023041824;1.8003116;3.810007;0.059494693;0.04242678;5.256146E-5;-3.1054056;5.2065043;-9.225654;0.7413612;0.0;0.0;0.0;0.0;0.0;0.0;794.52264;1364.2657;-201.0;1761.1094;1016.53955;-201.0;2515.2207;1140.3964;-201.0 -0.01758339;-37.168518;52.619343;-0.07830754;0.024256602;0.0024701299;17.006239;16.59898;17.06782;22.604887;0.0;0.0;0.0;0.0;0.0;0.0;1093.9397;1637.9849;-201.0;2171.8962;1754.4517;-201.0;3140.5745;1641.6816;-201.0 -0.24939843;-5.627451;20.31099;0.083459854;0.0022123551;0.033453275;50.480106;-20.015085;-10.738896;0.2937014;31.663412;0.0076564006;0.72235554;9.590936;3.3739166;17.673014;395.46396;1389.831;-0.5258002;1304.3546;1154.6976;-7.433515;2169.4055;1043.6752;-18.198814 -0.10954136;9.856645;-0.14962856;0.099841096;0.022202715;0.007954645;-17.722937;-7.235744;-3.781628;-11.882802;0.0;0.0;0.0;0.0;0.0;0.0;1065.9473;725.5871;-201.0;2091.3;1050.5978;-201.0;2901.2305;1078.5748;-201.0 -0.015191848;7.5845513;-0.99256974;0.030189184;0.037034344;3.7098056E-4;-16.656824;5.19531;2.295049;2.2272594;0.0;0.0;0.0;0.0;0.0;0.0;828.19604;1091.7915;-201.0;1515.2529;1536.1454;-201.0;2462.6177;1145.0718;-201.0 -0.031053724;3.320308;4.07737;0.014638622;0.029111668;0.001511205;-7.438259;-2.6573489;9.885077;-14.068255;0.0;0.0;0.0;0.0;0.0;0.0;568.0253;1206.0543;-201.0;1535.3864;1173.5767;-201.0;2496.1638;1023.4422;-201.0 -0.20653033;-18.298807;36.661587;0.08440628;-0.004812253;0.068264425;36.73898;5.645809;3.897913;-20.176329;37.620182;0.017390199;1.1787758;7.538037;-2.791138;23.526411;1071.269;1187.0962;-11.009689;2389.4177;1292.7211;-21.452318;3433.3992;1183.1946;-24.878489 -0.07226857;-19.306122;22.147278;0.084278546;0.019635245;0.03257663;28.662016;11.581443;28.587576;2.5276587;0.0;0.0;0.0;0.0;0.0;0.0;540.37335;1429.7384;-144.27141;1490.1504;961.105;-140.72809;2556.6555;523.15717;-140.59827 -0.34104005;-15.285057;19.810541;0.06554107;-0.01068253;0.065228485;16.26567;21.936722;48.231174;-37.902653;36.709866;0.007063704;0.56536585;13.279473;13.968963;17.510565;722.7532;1545.2177;-37.84665;1928.0991;651.5696;-38.74033;2842.7725;784.8254;-31.974272 -0.55163544;-16.172216;25.679358;0.1344682;-0.009012212;0.276111;20.311579;-24.188416;-23.579384;-71.41619;46.222775;0.02735273;0.62882704;12.574756;18.275034;28.21659;837.7465;1480.1908;3.7425098;1816.1783;1606.0765;-23.403437;2840.3408;665.25946;-24.474081 -0.0835092;-14.793342;41.993572;0.0012948097;0.0031304487;0.014812534;43.4527;17.801195;-15.763614;11.085728;19.705267;0.027987758;1.1741866;2.3380167;6.399698;45.091766;876.50604;1760.4365;-21.290174;1529.8092;1062.2728;-16.692377;3078.8506;806.50635;-45.526524 -0.010646005;-10.480473;23.056442;-0.0017928773;0.043317836;9.90515E-4;5.6902275;5.110989;0.84009904;9.323032;0.0;0.0;0.0;0.0;0.0;0.0;484.51932;1467.6718;-201.0;1268.4686;1233.9696;-201.0;2365.3105;979.73944;-201.0 -0.1791261;-9.990722;15.123656;0.07968916;-0.012531071;0.05101043;28.00492;-6.7335486;14.147061;-13.666355;34.81075;0.023983486;1.4849993;6.840279;-4.5814576;16.57449;682.4622;1564.8744;-3.2608917;1818.8932;1069.7311;-14.4749;2813.3987;977.5708;-21.132004 -0.7566164;-5.7808614;22.723562;0.064306386;-0.028675491;0.12272382;36.726974;-28.48104;-2.1236994;-57.38414;38.806263;0.0048698005;0.3195262;11.409;-6.0461335;19.664343;616.53735;1772.2655;3.9170122;1505.694;1635.3813;-8.6306305;2742.697;1040.1205;-21.922346 -0.0657209;-11.40453;28.383326;0.04975654;0.020374676;0.015444514;28.237734;5.4214115;9.281741;19.767195;0.0;0.0;0.0;0.0;0.0;0.0;1360.6503;1149.789;-201.0;1944.8607;1829.2887;-201.0;3462.806;924.8958;-201.0 -0.12988263;-1.8309517;11.184249;0.05187871;0.003419648;0.0254476;26.48335;-13.446751;-17.605455;-0.062948704;0.0;0.0;0.0;0.0;0.0;0.0;410.8755;1300.9615;-201.0;1402.0566;1192.5121;-201.0;2151.5266;1183.3798;-201.0 -0.9057393;-6.370336;10.273992;0.07957923;-0.041665103;0.44012475;-4.159159;-38.338665;4.7585673;-49.366394;52.666946;0.013965141;1.0915426;11.043653;-9.272332;-7.560289;1326.957;663.0088;-23.364134;2601.5273;605.55176;-12.905827;3294.413;1813.1752;-15.8038435 -0.0515081;-13.2345915;28.21427;0.085698746;-0.008172921;0.007367695;38.70222;-1.7120568;-18.585703;-8.960091;0.0;0.0;0.0;0.0;0.0;0.0;887.7752;1413.2362;-201.0;2095.9749;1269.3793;-201.0;3401.7327;1173.5862;-201.0 -0.042726874;0.92992395;5.145075;0.0954082;0.01701831;0.002082455;9.401113;-20.22358;5.7961984;-12.346707;0.0;0.0;0.0;0.0;0.0;0.0;1082.8842;1106.0428;-201.0;1804.4447;1171.1978;-201.0;2818.3982;784.54816;-201.0 -0.12878829;-13.159703;20.785608;0.049769316;-0.008637195;0.017951166;40.840103;-1.7746353;18.71411;-13.194547;22.874733;0.026303746;0.7616265;6.4216;4.7915936;22.05635;766.5439;1262.7931;-3.192166;1889.0817;1082.7133;-16.700298;2823.4385;793.7763;-19.607565 -0.10943758;15.558085;-11.799934;0.02798208;0.02617997;0.0141162425;-17.528196;14.316749;17.374577;-2.7058914;0.0;0.0;0.0;0.0;0.0;0.0;1078.191;716.4305;-201.0;2043.2944;2208.9822;-201.0;2742.3025;1582.9;-201.0 -0.19668613;-8.25993;25.27903;0.03424783;-0.008137139;0.045627743;34.829197;-0.540651;-19.919054;-6.3116517;0.0;0.0;0.0;0.0;0.0;0.0;634.42224;1592.2476;-201.0;1448.2284;1224.4259;-201.0;2618.769;578.12744;-201.0 -0.2260044;-13.991609;16.942778;0.08914721;-0.023153782;0.06713181;17.133383;1.504192;26.789751;-44.877674;40.349686;0.03484363;2.6812193;14.043026;23.138174;15.298278;738.84174;1206.4308;-22.771582;1989.8878;528.5743;-16.642015;2859.3484;766.1923;-14.931686 -0.0027234976;4.991366;-0.42395592;0.08218974;0.054852158;3.913752E-5;-7.0299554;-1.2388781;0.61564505;2.8428717;0.0;0.0;0.0;0.0;0.0;0.0;908.46106;1383.6377;-201.0;1735.7563;1356.6177;-201.0;2622.8452;1036.8729;-201.0 -0.0030061647;1.6042589;6.647797;0.0215042;0.052827865;8.969585E-5;-7.4009376;5.157402;1.7217659;7.6718554;0.0;0.0;0.0;0.0;0.0;0.0;935.545;1330.2858;-201.0;1814.7998;760.9048;-201.0;2696.4265;1193.353;-201.0 -0.0031869255;0.6387231;5.3348336;0.06680817;0.04204962;4.4969434E-5;-0.74908257;3.053982;-2.733647;-1.6741829;0.0;0.0;0.0;0.0;0.0;0.0;788.3584;1435.6449;-201.0;1728.7411;1317.763;-201.0;2429.785;2219.897;-201.0 -0.013628509;-10.329354;18.814707;-0.003739021;0.034730297;0.0014671757;13.62588;5.450005;12.392718;14.54335;0.0;0.0;0.0;0.0;0.0;0.0;858.11835;1247.4624;-201.0;1784.2855;1507.1205;-201.0;2535.8582;1133.1466;-201.0 -0.026172223;2.8108366;13.336007;0.06543142;0.02963385;0.0013616019;6.594728;-10.605045;-11.221127;-5.2785544;0.0;0.0;0.0;0.0;0.0;0.0;1127.3975;1336.5062;-201.0;1728.3794;2504.6877;-201.0;2584.1682;1646.1759;-201.0 -0.28897908;-21.493431;26.449554;0.09138968;-0.009009892;0.046106886;34.79462;6.0088196;25.537176;-19.309217;35.498108;0.009951085;1.8563975;8.798733;20.582512;30.4697;644.2759;1493.5898;-79.83065;1847.6162;854.4995;-87.226845;2895.4482;544.2797;-86.42211 -0.19403835;-17.107603;26.151518;0.07102043;-0.002455706;0.032401863;29.249054;15.356476;17.850115;3.1349633;31.158972;0.018672602;0.9055815;7.946732;-2.2279656;22.765541;381.12534;1104.2714;-6.19636;1377.2626;801.56464;-21.85782;2468.8552;710.5503;-28.961905 -0.025854388;-8.891786;32.090176;0.013830617;0.040924367;0.0028704975;31.596395;6.117538;-1.548399;12.318112;0.0;0.0;0.0;0.0;0.0;0.0;1100.3618;1200.3035;-201.0;1582.0991;2076.9414;-201.0;2864.9465;793.0317;-201.0 -0.15406264;-5.6314397;12.935908;0.06486855;0.0195885;0.028310617;12.035602;9.099758;5.413301;17.440817;0.0;0.0;0.0;0.0;0.0;0.0;1058.3376;969.69775;-201.0;1926.4752;3174.8486;-201.0;2743.6663;1007.9367;-201.0 -0.38289404;-15.337681;18.101677;0.04319754;-0.0035240257;0.1621799;23.784157;13.953687;35.12477;2.519345;34.078434;0.008883085;0.8998777;4.3743825;-1.5367731;16.079353;879.70966;1481.7863;-14.014969;1994.3033;791.24316;-29.267563;3009.3894;1025.9442;-21.870813 -0.076711036;-20.009552;30.463058;0.019860452;0.01293176;0.017909635;24.708206;12.417968;31.798088;12.589536;33.60442;0.023964144;0.9440215;5.031367;15.399989;17.927639;1151.9263;1342.9868;-27.931036;1845.6871;2270.4172;-20.499605;2866.1755;1266.1248;-24.800848 -0.29385242;0.2533398;16.079145;0.07053288;0.024552584;0.034510527;28.66832;-36.459274;-17.06306;-5.8905654;37.27165;0.0045255357;0.95650077;11.678429;-9.369567;5.6301274;987.37787;1468.2233;1.6770973;1934.0277;2008.6323;-1.1607498;2940.1267;1354.4554;-9.679521 -0.7494016;-2.441858;14.765381;0.157279;0.009784506;0.399471;12.770776;-37.214043;-25.446085;-56.58031;0.0;0.0;0.0;0.0;0.0;0.0;559.5286;1988.4725;-201.0;1293.5721;1117.428;-201.0;2654.163;674.9433;-201.0 -0.0109151555;-9.966499;17.063354;0.0030593406;0.029472085;9.15932E-4;10.189481;7.7328477;13.154854;12.148631;0.0;0.0;0.0;0.0;0.0;0.0;298.2854;1601.9868;-201.0;1295.8395;1044.8334;-201.0;2274.5684;859.94293;-201.0 -0.0059204362;-7.859965;18.168798;0.0070301495;0.03823345;2.545259E-4;2.5180933;9.157268;5.26451;11.461581;0.0;0.0;0.0;0.0;0.0;0.0;882.42365;1027.0502;-201.0;1831.6444;1012.1438;-201.0;2924.9949;819.0101;-201.0 -0.11095958;-20.344738;28.630949;0.043242503;0.016331475;0.03318515;11.915532;32.665882;39.17796;13.4168825;0.0;0.0;0.0;0.0;0.0;0.0;697.4199;1528.228;-201.0;1960.1108;727.02545;-201.0;3036.222;1059.4841;-201.0 -0.22538011;-14.188994;29.918268;0.1018661;0.0011883253;0.10753924;24.334055;-7.1944404;-14.208417;-26.98393;0.0;0.0;0.0;0.0;0.0;0.0;952.6623;1107.2467;-141.58888;1995.8549;1073.8407;-141.31519;3091.88;960.84375;-143.41913 -0.14879222;-6.5004754;24.963877;0.031408224;0.017616749;0.030664926;41.75893;-13.2868395;3.6992252;24.000908;0.0;0.0;0.0;0.0;0.0;0.0;1011.4637;1395.4775;-201.0;1731.6694;1202.9624;-201.0;3041.2148;1078.2676;-201.0 -0.0050957687;-4.3179336;12.582092;0.012243873;0.03810642;3.0046192E-4;0.15029983;5.6504683;7.9069595;5.2295885;0.0;0.0;0.0;0.0;0.0;0.0;584.7734;1598.9008;-201.0;1351.3112;1877.9979;-201.0;2177.39;995.58203;-201.0 -0.09498518;-9.106519;32.096493;0.07658074;0.014029277;0.032768037;33.23509;-4.145976;-17.865576;1.0009557;37.207825;0.01930676;2.0426297;4.072647;25.63471;34.646652;1051.2593;2262.3018;-77.12704;1914.4926;1243.2607;-68.16507;3254.7878;964.68976;-84.29308 -0.17053644;-11.098414;20.124414;0.07009532;0.014844245;0.026094874;9.597026;15.981219;-5.1298556;23.532188;0.0;0.0;0.0;0.0;0.0;0.0;1118.7794;1002.11206;-144.93268;2027.4683;998.7891;-141.90852;3302.7332;945.5005;-144.42218 -0.010089531;-5.3360085;16.447584;0.034092218;0.028262088;3.2376975E-4;12.059817;1.8127584;-7.6319847;0.58371776;0.0;0.0;0.0;0.0;0.0;0.0;430.2229;1429.8854;-201.0;1384.3927;1168.8358;-201.0;2395.7297;1006.6424;-201.0 -0.009058547;-13.458041;23.856506;0.023533145;0.019658258;7.6396886E-4;13.996834;14.0219;4.6605153;3.2679482;0.0;0.0;0.0;0.0;0.0;0.0;613.4617;1215.2804;-201.0;1646.0801;948.9537;-201.0;2702.3955;714.4777;-201.0 -0.20040025;14.344078;-10.851127;0.007528361;0.028244516;0.025043493;-25.236761;29.279282;8.974595;-0.94479924;0.0;0.0;0.0;0.0;0.0;0.0;718.5733;1075.3431;-201.0;1590.5406;1027.3202;-201.0;2560.1453;748.59454;-201.0 -0.0040417085;-11.86336;21.801092;-0.0109682875;0.045359086;2.7346986E-4;-2.2847226;12.659825;12.032955;11.390851;0.0;0.0;0.0;0.0;0.0;0.0;1090.4683;1173.3394;-201.0;2098.001;702.71924;-201.0;3004.5198;687.39044;-201.0 -1.8789425;-1.2820684;6.3122864;0.08974161;-0.033172786;0.99909735;19.598722;-34.43421;-8.154529;-29.6481;45.28175;0.06214277;3.3219407;-0.9392684;11.760755;16.497972;931.63544;1000.1043;-3.2250435;1951.7516;833.7424;-14.257828;2836.0908;1139.5221;-12.866604 -0.20906891;-6.178168;14.799083;0.0070448746;0.0015555575;0.027724845;-11.95188;11.645416;9.26024;-14.895463;0.0;0.0;0.0;0.0;0.0;0.0;455.621;1210.6847;-201.0;1511.9054;1174.104;-201.0;2250.532;710.0102;-201.0 -0.3165108;-8.456081;27.736359;0.016811917;0.006385444;0.115600534;32.92877;-1.032109;-8.463321;-0.5775337;0.0;0.0;0.0;0.0;0.0;0.0;790.10297;3291.8;-201.0;1475.8231;1245.4813;-201.0;2717.3948;821.12787;-201.0 -0.5251911;-18.822285;29.806595;0.1034477;-0.048567224;0.45746693;15.406121;5.79064;-31.747116;-53.68164;44.865906;0.0023309502;0.32973287;6.5492196;22.60877;38.952496;715.9902;1475.0702;-3.8360014;1984.1445;1004.58466;-20.411707;3161.0615;1359.6282;-30.187286 -0.2181422;-18.243265;25.95981;0.07716376;-0.039174635;0.080498725;35.297665;15.298505;-5.9986515;-29.528336;0.0;0.0;0.0;0.0;0.0;0.0;240.23131;1606.599;-201.0;1056.4612;1011.9099;-201.0;2349.1958;474.48917;-201.0 -0.17580378;10.574899;-6.169655;0.0021718475;0.027541198;0.0116151525;-29.85982;28.349625;-2.8572257;20.677885;0.0;0.0;0.0;0.0;0.0;0.0;669.1097;1256.883;-201.0;1561.5399;917.54614;-201.0;2619.0432;892.2129;-201.0 -0.010668144;1.4869426;6.8023276;0.07312255;0.04236068;3.9996416E-4;4.6847997;-6.858743;-6.325573;-0.23573458;0.0;0.0;0.0;0.0;0.0;0.0;767.1392;1167.4049;-201.0;1697.4196;1210.8033;-201.0;2595.6067;1224.2812;-201.0 -0.11522309;-28.342072;36.31817;0.033978637;-0.0045559313;0.077658504;47.094128;18.252314;20.602484;15.726216;25.834486;0.025981797;2.4896028;0.74744624;8.860865;39.817028;863.236;1776.9004;-11.495918;2116.6355;1562.0068;-31.057734;3352.6416;1931.958;-34.291153 -0.0042885127;-7.6361737;18.4648;-0.007955306;0.040989235;3.5062098E-4;-2.9140542;10.541525;5.5809293;9.509587;0.0;0.0;0.0;0.0;0.0;0.0;654.96387;1085.1707;-201.0;1751.081;993.0322;-201.0;2693.8167;1079.4933;-201.0 -0.26075402;-3.6931553;6.376147;0.14620249;0.004410612;0.078944154;-0.7874649;-11.740666;-0.84964556;-28.94678;49.913387;0.12923847;1.0207314;1.7477807;5.7709084;5.3050737;1065.5013;767.25977;5.366241;2085.423;741.79047;2.0579565;3012.25;760.8068;0.061167 -0.24845402;-15.946167;26.955084;0.09972665;-0.013433065;0.08387545;27.381216;5.1709065;18.610003;0.6798424;0.0;0.0;0.0;0.0;0.0;0.0;329.62326;1182.6102;-130.24416;1419.7305;673.1926;-135.67311;2521.8606;664.9947;-138.83025 -0.007308107;-10.082638;19.74755;0.012997288;0.03671461;7.774878E-4;7.358518;6.5247135;10.790962;7.543963;0.0;0.0;0.0;0.0;0.0;0.0;621.53735;1477.332;-201.0;1672.1085;1068.5009;-201.0;2466.855;2528.809;-201.0 -0.1174039;-4.151136;18.72329;-0.0010239132;0.02652706;0.0133313015;6.944429;-16.048445;-6.1459827;5.9969916;0.0;0.0;0.0;0.0;0.0;0.0;594.8999;1011.3425;-201.0;1407.7905;1144.7838;-201.0;2537.0852;757.3498;-201.0 -0.4339075;9.746174;8.570916;0.13390845;0.034242418;0.12763406;-0.55453473;-61.82257;-7.249555;-25.42959;48.21873;0.0051606274;0.70786065;5.7854514;0.40927124;1.6460289;1238.2972;875.4826;-2.1486716;2197.3254;951.94604;8.82359;3296.9187;807.4414;-3.3854294 -0.28214845;-21.755003;26.329086;0.07510253;-0.025017016;0.06864444;41.84009;7.1077905;17.38266;-3.9132674;33.049698;0.007824576;0.82381207;10.419005;9.699915;40.274563;682.37726;1830.5758;-11.996734;1757.0507;1096.315;-27.754211;3167.32;1249.4039;-36.605957 -0.16161029;-23.623734;29.56178;-0.016827786;-0.006387273;0.022785112;39.161663;10.764348;27.10808;-2.1112382;30.743223;0.012159442;0.8271799;10.968582;1.862774;21.113287;428.8883;1623.965;-5.9217644;1225.4318;1762.2266;-26.092085;2297.6418;821.2995;-26.103577 -0.097692154;-5.695345;15.86395;0.0529709;0.009430664;0.036984835;33.781433;-17.32357;-22.273132;-0.69166946;0.0;0.0;0.0;0.0;0.0;0.0;394.21854;1273.671;-201.0;1312.42;1137.8873;-201.0;2173.3484;857.4035;-201.0 -0.414387;-6.565495;9.294971;0.09229467;-0.014204529;0.11423483;17.620905;-15.955562;3.4521096;-26.388865;42.391407;0.021025669;1.7649454;4.83568;18.70079;11.998319;722.8903;1267.8646;0.0;1653.8756;828.59955;-17.84627;2725.92;634.8077;-15.015763 -0.023573792;-20.388063;36.009327;0.064523496;0.020652568;0.0034245625;31.92565;20.244658;2.916507;4.351742;0.0;0.0;0.0;0.0;0.0;0.0;744.3091;1571.8331;-201.0;2063.6309;1056.1031;-201.0;3328.2256;1239.2714;-201.0 -0.21983558;-8.291535;12.702117;0.055308808;0.019935874;0.021346452;32.122692;-12.810684;36.957077;14.829864;23.736292;0.008582718;0.4268819;3.6376731;3.268162;21.109385;1182.9088;932.2669;-19.742434;2169.8005;985.0647;-12.805966;3069.7908;674.67816;-21.736364 -0.18845423;-8.625916;11.905862;0.04934968;0.023037976;0.023529246;30.85494;-10.049197;34.722107;24.224867;0.0;0.0;0.0;0.0;0.0;0.0;1165.784;965.667;-138.6303;2093.0059;1058.4216;-138.06342;2981.6719;811.6358;-141.07454 -0.13702239;-18.504805;35.453262;0.07157726;0.0055142753;0.03508836;34.237564;6.6830764;0.7062858;-1.5371233;35.69272;0.023210892;1.4011093;9.525822;-1.46817;22.423574;294.6592;1599.4004;0.0;1316.6875;1140.9298;-12.148841;2642.195;1036.1139;-29.949137 -0.39773086;-1.3822079;14.623179;0.070394725;0.012752198;0.11807436;17.587555;-28.555582;-8.410094;-11.094326;39.485416;0.01680302;1.9905828;1.2810386;-0.7189374;15.392963;964.1231;1089.2739;1.3502346;1814.6803;976.5057;1.982831;2909.653;662.81964;-16.784277 -0.0013081752;4.036267;-2.588597E-7;0.088869445;0.0605928;7.886095E-6;-3.7581918;0.8723374;-1.4719639;0.34145704;0.0;0.0;0.0;0.0;0.0;0.0;873.73645;1824.6418;-201.0;1440.4491;724.4244;-201.0;2488.4385;1521.9338;-201.0 -0.005984556;-6.058767;13.8776865;0.040397175;0.034414638;1.5394593E-4;6.0980015;10.10743;4.332738;11.125955;0.0;0.0;0.0;0.0;0.0;0.0;762.7381;1553.9858;-201.0;1663.3851;1407.3832;-201.0;2560.5881;1098.1041;-201.0 -2.6505215;0.72314125;6.078939;0.055843193;-0.02519683;1.2014546;6.4365964;-23.341873;8.148853;-31.921522;40.115837;0.03426264;1.0360501;4.8680916;14.628224;8.760764;608.78534;1540.8246;0.0;1549.6699;1217.6235;-10.347201;2562.748;1249.0894;-10.080733 -0.019260207;-7.7062287;19.803827;0.043528426;0.03183751;0.0012366668;16.88575;-5.2230344;-7.810632;-3.604172;0.0;0.0;0.0;0.0;0.0;0.0;462.2849;1081.8339;-201.0;1422.6937;1163.5024;-201.0;2318.9646;1097.7728;-201.0 -0.10718056;-15.446197;21.919388;0.103415094;0.008634037;0.032552145;10.6212225;33.624096;-14.174571;-1.4714174;0.0;0.0;0.0;0.0;0.0;0.0;1054.0992;1310.251;-201.0;1916.4835;2056.4656;-201.0;2874.92;684.0424;-201.0 -2.5034857;-1.3372022;15.007022;0.06847548;-0.026659638;2.2601087;0.4195889;-44.142597;-14.362971;-49.246593;50.429058;0.050050955;1.2379481;2.528941;-3.4985268;10.032432;1166.8287;1082.4559;1.2770827;1844.5404;1633.4674;-2.9031534;2774.1218;810.4434;-8.755349 -0.081862785;-5.199286;26.02823;-0.017718399;0.024539717;0.022874482;25.47455;0.9873364;-17.074236;6.188562;0.0;0.0;0.0;0.0;0.0;0.0;654.7389;1457.3545;-201.0;1521.2572;1031.5948;-201.0;3009.3967;537.5061;-201.0 -0.09935626;-16.101343;21.07208;0.029861772;0.0034927141;0.008528393;35.680645;2.507542;25.679367;8.34362;21.557487;0.007904225;0.45404854;4.8648624;1.9798836;17.670172;393.98306;1475.6621;-8.409279;1326.0371;1568.597;-20.007574;2165.9028;823.0346;-22.824585 -0.19549304;-7.809328;23.665077;0.08960558;-0.02358883;0.039404172;39.478935;-24.739603;-21.913294;-27.24881;31.967142;0.012207776;0.7381585;6.4437084;-1.125671;22.202349;1099.9635;1112.3163;6.505413;2173.2388;824.3069;-4.8271847;3480.75;810.8802;-19.177973 -0.57745546;-19.365961;20.504963;0.06918785;-0.054157656;0.15174372;33.135254;14.041932;16.032593;-41.099777;31.557571;0.0043626274;0.7627589;10.703186;-0.69538945;20.00476;832.0988;1083.476;-1.5793772;2264.1118;375.2274;-15.920278;2988.3223;1753.9229;-16.43145 -0.00912129;-19.393875;31.856394;-0.016683975;0.02786844;8.3013094E-4;11.198963;9.617192;4.113243;7.8510284;0.0;0.0;0.0;0.0;0.0;0.0;688.4841;1239.2886;-201.0;1857.4254;856.62787;-201.0;2791.5186;1132.413;-201.0 -0.017019851;-13.235095;22.959936;-0.043402273;0.06056278;0.0017575622;-12.204015;0.14267267;17.48314;22.44102;0.0;0.0;0.0;0.0;0.0;0.0;989.1281;678.8474;-201.0;2010.559;626.81177;-201.0;3050.9343;546.56494;-201.0 -0.06021906;-16.287857;19.20779;0.09551689;0.028265147;0.020805033;27.781164;6.6622086;26.309341;5.938587;0.0;0.0;0.0;0.0;0.0;0.0;316.57236;1150.167;-201.0;1303.6625;730.10187;-201.0;2324.1863;490.45126;-201.0 -0.5679066;-9.157407;16.837086;0.08785384;-0.014426432;0.44036245;19.773756;-18.826338;-6.4387536;-35.272785;0.0;0.0;0.0;0.0;0.0;0.0;880.3281;1018.0508;-201.0;1949.2592;763.2247;-201.0;2963.3535;542.9489;-201.0 -0.0046826755;4.6358113;1.7687525;0.09031465;0.039257523;1.9229027E-4;-8.323863;-0.786187;-2.1814237;-7.826569;0.0;0.0;0.0;0.0;0.0;0.0;1039.3947;1223.2533;-201.0;1885.8898;1375.6984;-201.0;2703.029;1700.2499;-201.0 -0.25604716;-11.192229;16.123552;0.052675992;0.0108819185;0.06449109;35.22769;-6.8353667;9.242413;9.843576;34.910248;0.020494672;1.2896769;9.088562;22.898127;23.227884;585.9275;1210.1798;0.0;1485.291;1058.7836;-9.012954;2488.1367;732.92;-12.696744 -0.15902148;-5.2723293;12.1635275;0.039629262;0.02957645;0.03991062;4.2928395;19.638258;21.223673;6.0829034;23.615515;0.0;0.0;1.8483889;-5.1356173;18.8825;856.77686;889.0966;-68.04152;1944.6484;770.99097;-69.55947;2905.4521;654.1409;-73.86267 -0.8365666;0.19349194;14.812039;0.051565524;0.013831809;0.52235216;25.258781;-14.593457;-9.373094;17.195526;0.0;0.0;0.0;0.0;0.0;0.0;1091.815;1054.4413;-201.0;2042.244;1026.9572;-201.0;3130.7542;640.3382;-201.0 -0.24193864;-16.145098;19.527895;0.035820454;-0.02217347;0.03580266;37.00784;1.4730625;39.913467;2.5439608;29.942957;0.008346473;1.0426488;9.649405;5.898058;17.485775;454.7189;1392.691;-13.141187;1829.7999;1162.5171;-28.871277;2490.4282;1060.4004;-24.728903 -0.055582017;6.158521;2.8864114;0.066041976;0.036349054;0.00410266;-0.5056884;-14.4639435;2.7864354;-10.498115;0.0;0.0;0.0;0.0;0.0;0.0;872.9678;1055.5685;-201.0;1867.4883;1526.5065;-201.0;2738.3235;1070.5625;-201.0 -0.94787806;-1.8012911;11.665498;0.08863271;0.02073671;0.36940205;2.0466654;-16.64994;10.271761;-11.647666;45.920868;0.24096571;1.5350724;13.414393;-5.5146203;2.646207;1153.1313;727.78436;-5.526109;2173.4307;922.6631;-14.704516;2992.5176;1056.8944;-17.3626 -0.38631058;-7.643309;12.752254;0.08418122;-0.017182257;0.1904388;11.616038;5.117371;41.448063;-28.215193;38.860844;0.01914573;1.2805456;5.664428;29.827772;15.618435;484.64087;1410.0538;-4.504958;1769.3325;614.4544;-28.003815;2571.0486;1542.1925;-19.114878 -0.18277383;9.148051;-3.6092749;0.08565634;0.00967907;0.041720126;-14.604729;3.3692722;41.491405;-29.626429;0.0;0.0;0.0;0.0;0.0;0.0;1307.6056;498.48853;-201.0;2265.0635;1148.4238;-201.0;3186.64;1007.1735;-201.0 -0.0037549343;3.2661798;2.265244;0.057934325;0.041274574;8.559745E-5;-3.6122215;-1.0934466;6.7212543;0.48242664;0.0;0.0;0.0;0.0;0.0;0.0;724.8279;1475.2535;-201.0;1737.1722;1357.3553;-201.0;2586.2122;1300.2638;-201.0 -0.21136369;14.501797;-4.104301;0.058408573;0.010751641;0.022738194;-18.820082;-7.809927;2.2190208;-6.1369987;0.0;0.0;0.0;0.0;0.0;0.0;593.35004;910.6866;-201.0;1711.3766;771.34406;-201.0;2696.3997;737.84344;-201.0 -0.0035011563;2.3879635;2.8640614;0.060927015;0.04111297;4.851665E-5;-2.035616;-1.6601328;-2.1499956;-4.7588897;0.0;0.0;0.0;0.0;0.0;0.0;981.8708;1647.1201;-201.0;1938.7115;1348.331;-201.0;2816.0322;1031.9723;-201.0 -0.09366713;-22.739517;26.230131;0.009487421;0.0045047565;0.012576609;32.466423;16.550882;32.01777;22.495077;32.85704;0.006898038;0.7380144;12.145493;12.226288;35.29869;927.137;1383.6263;-35.634117;1921.0547;606.4272;-34.10782;3292.173;713.6712;-47.999985 -1.1198221;-2.662701;7.82073;0.015272704;-0.023171261;0.69718724;-4.4971356;-6.4135003;14.297755;-25.01208;53.825603;0.0;0.0;11.674905;2.6788845;0.955602;657.1182;1157.9872;0.0;1722.5638;1413.1793;0.0;2631.7651;996.05585;-25.028414 -2.1228619;11.524667;29.346907;0.06271297;0.0039871703;1.1027428;-5.791468;-21.4907;-49.9111;-15.059036;50.199726;0.0028807155;0.48904625;13.293304;15.343498;35.95651;814.9487;1578.0399;10.061507;1899.2867;1416.7362;1.3323884;3071.464;3029.289;-11.113446 -0.2367776;-15.009149;19.600824;0.009435762;-0.018016787;0.14506628;24.000252;6.5020185;39.6241;0.3980681;0.0;0.0;0.0;0.0;0.0;0.0;392.82413;1292.5825;-201.0;1643.6816;679.31946;-201.0;2740.1562;791.13354;-201.0 -0.28846347;-14.001473;22.194376;0.099553764;3.629426E-4;0.090488456;15.329295;13.560845;27.884096;1.7286376;34.416103;0.011057301;1.7143826;10.684049;10.317617;29.230759;330.9963;1311.706;0.0;1464.2311;848.7861;-8.854788;2440.8328;1172.6727;-21.265802 -0.28008965;-18.965086;22.21586;0.06646528;-0.035915237;0.07532531;30.001764;27.603264;33.35709;-42.67365;27.814667;0.009816862;0.7044046;6.715093;-6.6303077;23.289816;571.5623;1342.6039;8.050381;1375.9502;1762.4269;-17.624422;2612.8838;763.76855;-18.42119 -0.06492407;6.7687325;-4.2689166;0.004290068;0.031356096;0.010535754;-10.195014;23.006752;50.129086;-2.6935813;0.0;0.0;0.0;0.0;0.0;0.0;1260.7847;366.45435;-201.0;2265.4885;518.0479;-201.0;3226.831;1018.9441;-201.0 -0.02497542;-24.39299;37.32546;-0.039675727;0.0152950855;0.0050372537;19.36337;6.228417;10.325305;10.069213;0.0;0.0;0.0;0.0;0.0;0.0;672.84845;1643.6968;-201.0;1719.5479;1438.7885;-201.0;2798.6301;1301.4058;-201.0 -0.12000963;1.387345;3.0744216;0.07886475;0.0038643011;0.019602433;-11.222108;13.079183;16.54139;-18.69568;40.81703;0.0;0.0;9.379133;31.26504;15.454444;1225.1431;707.72833;-43.56497;2244.9324;977.5087;-30.918375;3008.097;1917.0918;-26.89035 -0.44043717;-6.383242;13.28243;0.09511641;-0.012954552;0.10648805;8.004741;-14.379209;26.67952;-62.42062;44.409153;0.06937157;2.0149431;11.8025055;7.688755;-1.0606284;736.3257;1600.6881;-9.961458;1844.3602;515.1213;-25.658564;2890.5188;707.7132;-8.900829 -0.0018717129;6.42293;0.079917856;0.07249845;0.05624571;1.6025782E-5;-7.7681236;1.9345824;0.3426741;3.5592804;0.0;0.0;0.0;0.0;0.0;0.0;763.85187;1506.1963;-201.0;1662.5853;1181.9972;-201.0;2705.8748;1284.0831;-201.0 -0.124430925;-11.432113;22.937216;-0.018689571;0.023045123;0.03397843;32.542526;-0.4673605;14.391846;8.188644;0.0;0.0;0.0;0.0;0.0;0.0;1112.3236;1123.73;-201.0;1897.9564;1316.3888;-201.0;3150.6443;496.1229;-201.0 -0.19436125;-1.6391929;9.3960905;0.059913527;0.008271162;0.03547095;14.652893;-17.677843;-3.0751493;-14.763535;35.12697;0.0;0.0;0.94260246;0.12380469;17.325153;1103.1859;928.75684;-69.42279;2149.93;854.9336;-68.273506;3190.2102;988.83716;-76.17983 -0.41641912;9.4001465;1.8431624;4.78358E-4;0.022553906;0.06539247;-11.252557;-13.861535;-3.9889648;-4.2165046;0.0;0.0;0.0;0.0;0.0;0.0;501.87875;765.93414;-201.0;1503.6509;988.0927;-140.34967;2395.4773;906.509;-140.76678 -0.7887247;-10.000572;26.404745;0.066649266;-0.027580267;0.1759339;22.068474;3.3187368;-25.091364;-53.81116;34.75537;0.0063215946;0.6790998;10.6664;-7.0266895;14.486752;597.01324;1560.7496;0.0;1672.0137;1001.0529;-1.1004196;3193.2012;852.9003;-13.963928 -0.01593644;-11.715133;22.228937;0.017623328;0.028607732;0.00241435;8.80206;10.035298;13.928296;6.876709;0.0;0.0;0.0;0.0;0.0;0.0;566.83514;1172.5526;-201.0;1532.8055;892.21045;-201.0;2557.5583;901.50336;-201.0 -0.0025236942;2.0710003;2.6422474;0.056939643;0.038931496;6.6079825E-5;1.3080696;-1.0912364;-0.57946587;2.705499;0.0;0.0;0.0;0.0;0.0;0.0;563.4582;933.12616;-201.0;1535.5625;825.429;-201.0;2485.2302;768.11304;-201.0 -0.39284572;0.5837352;6.0970054;0.11468043;0.012722059;0.07365871;-15.620231;6.6684146;-24.194807;-13.217461;49.75948;0.02657549;3.3877704;9.170886;-2.9465525;3.7800636;1090.6029;998.88336;-16.768396;2046.5621;1325.2096;-18.701933;2718.0796;1976.682;-20.548462 -0.008355456;-12.769788;23.024168;0.0020636208;0.01987824;3.6552688E-4;7.1120677;12.597442;5.2111354;2.4313788;0.0;0.0;0.0;0.0;0.0;0.0;514.72955;1389.6694;-201.0;1535.1426;1998.1688;-201.0;2150.0588;1037.077;-201.0 -0.64989465;-7.111466;12.127439;0.14483124;-0.017739173;0.31669703;6.9198327;-24.699707;10.101006;-50.07002;48.858624;0.03834757;2.5099366;5.577862;3.0778134;-5.101446;1262.247;1170.032;-19.921991;1998.916;1065.4288;-11.409999;3109.5908;564.6262;-11.0581255 -0.0050443686;-14.611862;26.421326;-0.02031542;0.04288369;5.013928E-4;-0.16669524;12.080592;12.965983;14.106468;0.0;0.0;0.0;0.0;0.0;0.0;785.4749;1031.0641;-201.0;1866.7568;693.46405;-201.0;2828.411;733.27277;-201.0 -0.102299005;-9.468442;17.108238;0.05222644;0.002225137;0.028572956;24.539642;-4.7687078;10.078824;16.42196;0.0;0.0;0.0;0.0;0.0;0.0;992.08545;1602.858;-78.06729;1797.06;1032.2754;-76.614426;2877.002;796.27997;-82.77968 -1.1715902;1.7664479;19.762253;0.042255204;0.0069395923;0.42034772;5.7643704;-29.181793;-40.114117;-49.938213;41.46577;0.013423434;1.0359324;13.34151;-6.970739;7.2088065;768.58136;2318.7366;9.128536;1464.3331;1228.5353;9.386868;2776.6838;735.3753;-2.3591692 -0.0047471807;1.7856255;3.7918777;0.062311932;0.033033535;7.026658E-5;-4.2808414;7.5605245;3.4549255;-4.569259;0.0;0.0;0.0;0.0;0.0;0.0;621.04156;1453.402;-201.0;1567.8179;1142.4948;-201.0;2483.1716;975.30804;-201.0 -0.579859;-6.145008;13.733571;0.07276849;-0.0032010928;0.16792722;25.511574;-11.2092285;4.685759;-1.6702958;29.8387;0.069109954;3.2253869;7.4787583;-0.4310008;14.469653;888.9919;1215.2207;-0.69733125;1854.627;973.4587;-7.6053047;2773.4617;668.1699;-15.928325 -0.2790275;-11.087485;19.20468;0.08666998;-0.011213817;0.059436295;21.687677;0.3398529;29.31222;-4.7556987;32.609818;0.06597146;0.38085207;4.932356;4.12498;19.209845;345.67465;1106.2915;-0.74005955;1480.7867;530.3999;-20.059519;2560.9705;631.7436;-19.949903 -0.4763787;-10.171699;13.466405;-9.559395E-4;0.0023948464;0.22431529;14.618362;2.144358;19.259573;11.533249;0.0;0.0;0.0;0.0;0.0;0.0;293.2624;1289.9423;-201.0;1401.2008;671.1757;-201.0;2371.2107;724.89435;-201.0 -0.011588558;-10.60868;19.220472;0.032526728;0.03578086;0.0016628681;15.866444;9.580657;11.954595;17.062805;0.0;0.0;0.0;0.0;0.0;0.0;947.88654;1290.8068;-201.0;1763.2982;1703.456;-201.0;2705.1345;2408.101;-201.0 -0.123519264;-17.370058;27.921759;-0.04081655;0.010289264;0.029564902;13.681031;-7.57572;10.337306;16.372946;0.0;0.0;0.0;0.0;0.0;0.0;989.4694;1353.3451;-201.0;1793.1583;1083.552;-201.0;2996.7156;935.57477;-201.0 -0.008023377;-2.7800121;7.7152686;0.044506714;0.039343845;4.1662133E-4;5.573012;4.455544;10.067011;14.482001;0.0;0.0;0.0;0.0;0.0;0.0;759.903;1496.626;-201.0;1499.1185;1296.3615;-201.0;2376.4167;1070.8981;-201.0 -0.0024303254;-2.713555;9.138511;0.05005609;0.054641098;2.8916792E-4;-0.5944182;6.432634;4.930479;5.152189;0.0;0.0;0.0;0.0;0.0;0.0;639.9315;1258.4058;-201.0;1554.9055;1025.8732;-201.0;2569.4062;807.9086;-201.0 -0.0072586103;-2.925373;11.630544;0.03570231;0.0315092;2.714611E-4;5.6199737;4.1445184;5.35333;2.4973032;0.0;0.0;0.0;0.0;0.0;0.0;854.02216;1214.8007;-201.0;1788.8516;1065.9562;-201.0;2626.5437;944.486;-201.0 -0.0056619775;-19.782755;30.703072;-0.036649723;0.031222342;3.870284E-4;2.6117692;19.494362;13.8681555;11.239842;0.0;0.0;0.0;0.0;0.0;0.0;582.2032;1572.6227;-201.0;1643.119;2199.8728;-201.0;2375.5352;1161.2445;-201.0 -0.114829846;-8.77189;19.9047;0.015566361;-0.0010102155;0.025936216;31.948912;-7.3361726;4.602766;-16.691633;0.0;0.0;0.0;0.0;0.0;0.0;494.3818;1414.7202;-138.37025;1234.9077;1636.5317;-137.443;2182.3857;1110.298;-142.42699 -0.005931817;-11.70739;23.409384;-0.008885365;0.03784747;2.8137036E-4;3.8242424;11.410565;10.644553;18.767605;0.0;0.0;0.0;0.0;0.0;0.0;385.55713;1435.2584;-201.0;1343.3644;927.4632;-201.0;2332.7734;1032.7296;-201.0 -0.03555548;-25.788347;37.98447;0.035498433;0.0023957717;0.009631208;34.777683;20.08309;22.06015;14.449009;0.0;0.0;0.0;0.0;0.0;0.0;713.386;1490.7744;-201.0;1804.2953;1206.5774;-201.0;2840.871;1162.4;-201.0 -0.090539455;-27.505777;39.191425;0.008378946;-0.011029339;0.037841216;42.394974;21.797476;14.266338;1.6258703;26.479927;0.019562362;1.2236282;2.8245983;1.1657103;31.262106;613.53876;1814.0192;-4.5742407;1532.4899;1341.8307;-19.260735;2734.0098;1100.2894;-30.568007 -0.041560654;-0.15088315;4.3638635;0.09187738;0.015996257;0.004562108;2.0876474;-0.7590101;9.42571;-21.907349;0.0;0.0;0.0;0.0;0.0;0.0;835.6203;1283.9971;-201.0;1784.3024;977.3784;-201.0;2767.8694;794.5789;-201.0 -0.25397715;-7.597464;27.993088;0.03514685;0.034421783;0.16413276;30.272543;-8.780004;-1.5228729;14.281535;0.0;0.0;0.0;0.0;0.0;0.0;1001.4907;998.3371;-201.0;1809.506;1062.515;-201.0;3024.9294;781.0778;-201.0 -0.0043831565;-1.6665798;11.956184;0.02944156;0.051186044;1.6256506E-4;-5.6949844;4.6659036;-0.5545705;1.104211;0.0;0.0;0.0;0.0;0.0;0.0;742.3858;1489.5171;-201.0;1712.6006;720.8132;-201.0;2461.9102;1521.6891;-201.0 -0.0019507371;4.561802;0.034770366;0.06659181;0.045492183;1.5137973E-5;-7.4995437;4.8926234;-6.8112693;-3.17049;0.0;0.0;0.0;0.0;0.0;0.0;881.22754;1607.1869;-201.0;1803.2877;1374.9884;-201.0;2881.4827;1150.8043;-201.0 -0.026078431;2.3685694;2.5343785;0.06549705;0.0123305125;0.0016822284;-7.341578;5.928839;13.017399;-15.1201105;0.0;0.0;0.0;0.0;0.0;0.0;951.65546;1717.7697;-201.0;1628.5918;790.57574;-201.0;2690.3447;1226.9354;-201.0 -0.033643935;-2.2460797;13.103948;-0.004750594;0.046582144;0.006983776;-12.881841;9.279385;32.623596;2.7437973;0.0;0.0;0.0;0.0;0.0;0.0;1095.2719;693.9427;-201.0;2185.5266;862.94476;-201.0;3221.1492;955.3226;-201.0 -0.03015448;-34.51325;47.675434;-0.05238672;0.026361495;0.0123682385;15.503116;9.015025;11.613406;11.196851;0.0;0.0;0.0;0.0;0.0;0.0;747.07306;1991.2588;-201.0;1861.784;1499.3561;-201.0;3100.7168;1304.3732;-201.0 -0.0046549947;1.3332121;4.695725;0.05309853;0.033124592;8.400532E-5;-1.8877245;1.8882297;4.0030994;-0.48511085;0.0;0.0;0.0;0.0;0.0;0.0;614.6697;1485.8844;-201.0;1518.7562;1131.2035;-201.0;2634.2158;816.7962;-201.0 -0.12622131;-33.495136;37.997204;0.031971157;-0.011680189;0.06904314;31.815247;23.385798;34.0245;6.7418003;36.797375;0.019945705;1.1023278;10.723905;8.601017;5.314659;594.93524;1512.3906;-45.665173;1779.4;1259.3647;-42.098465;2661.5027;1640.5542;-36.097534 -0.56978136;-12.354141;21.417831;0.022197818;0.0066487403;0.38438234;5.164542;15.3139925;19.774895;2.214245;41.912567;0.0;0.0;9.444363;22.181215;23.947496;589.98486;1129.5546;0.0;1661.8741;851.4045;-14.637944;2647.286;703.1714;-24.496557 -0.021387285;-33.992977;49.794796;-0.06422981;0.020424493;0.03835794;23.018042;13.788011;13.426753;21.151426;0.0;0.0;0.0;0.0;0.0;0.0;1164.7773;1371.0638;-201.0;2459.1428;1381.3885;-201.0;3637.4521;2131.8533;-201.0 -0.055499017;-7.023275;12.975465;0.050238427;0.028145283;0.0047446014;-8.906201;39.19026;-6.9901276;21.013657;0.0;0.0;0.0;0.0;0.0;0.0;1269.997;1927.9268;-201.0;2052.111;955.3785;-201.0;3092.3694;728.9946;-201.0 -0.0054832944;-10.899784;21.613558;0.01691907;0.028135305;4.8123402E-4;5.3898683;11.521305;5.867878;-1.3573109;0.0;0.0;0.0;0.0;0.0;0.0;351.99292;1690.0048;-201.0;1354.625;1283.2217;-201.0;2230.8386;1162.7897;-201.0 -0.3777049;-6.0822983;12.764964;0.10665238;0.0043337904;0.20529509;2.3238966;-2.5573242;11.131236;-29.036432;45.346813;0.20067877;1.1068249;10.521552;10.070113;-5.572312;776.67694;1090.2812;-28.410345;1814.9697;572.00397;-37.514805;2748.6726;889.85175;-17.605955 -0.027101735;-0.9194676;11.8661;0.113301836;0.018868295;0.0015658276;12.476501;-15.421516;-8.826106;-8.559424;0.0;0.0;0.0;0.0;0.0;0.0;1136.2843;1097.3458;-201.0;1985.0731;1852.2056;-201.0;2761.0652;1118.9609;-201.0 -0.589701;-9.23693;13.667854;0.058282286;-0.027655339;0.29084638;20.888939;-9.470496;14.433768;-1.6716417;40.25051;0.04736836;1.5882435;5.4899845;7.0659065;7.7740283;483.04312;1533.7026;0.0;1732.6162;1056.0461;-26.271797;2349.6934;1750.3075;-19.127226 -0.004004742;0.4584817;6.6041236;0.060998093;0.037599955;9.999572E-5;1.0783658;3.749893;-5.357763;-2.7155411;0.0;0.0;0.0;0.0;0.0;0.0;760.95264;1594.4232;-201.0;1432.8551;1703.3623;-201.0;2354.3115;1074.0372;-201.0 -0.0069589433;-8.395701;17.233335;0.0096518295;0.041265074;4.1495016E-4;5.7573676;11.055757;13.772222;13.204043;0.0;0.0;0.0;0.0;0.0;0.0;903.4266;1239.6061;-201.0;1834.9629;1299.8439;-201.0;2671.8635;1189.8558;-201.0 -0.271395;-0.8688648;3.2922676;0.10428676;-0.018128745;0.047670055;12.3890295;-10.214635;36.10101;-63.67841;38.390427;0.004636601;0.88150936;9.820207;12.209103;13.163026;591.264;1481.0192;-12.185246;1877.5162;1015.0612;-24.973671;2787.7644;1578.6127;-15.522868 -0.0017536344;2.4448671;0.47707245;0.0868363;0.055274945;2.1892543E-5;-0.8930871;1.1346142;1.9774632;-3.5000684;0.0;0.0;0.0;0.0;0.0;0.0;1025.4669;1579.0331;-201.0;1920.8733;549.0425;-201.0;2695.851;1559.5015;-201.0 -0.07302153;-2.3940778;9.006106;0.062738314;0.028661052;0.006537404;-19.414259;36.328598;-1.7055222;15.443118;0.0;0.0;0.0;0.0;0.0;0.0;1248.6799;2504.7551;-201.0;1953.3746;1016.0607;-201.0;2958.8604;720.89716;-201.0 -0.063835956;5.5968323;-3.6544971;0.04717678;0.013449463;0.004405994;-6.454471;6.095369;12.88184;-20.166481;0.0;0.0;0.0;0.0;0.0;0.0;792.6121;1340.2054;-201.0;1861.8695;748.1099;-201.0;2950.121;1030.4244;-201.0 -0.030422831;6.78422;5.4144287;0.083506584;0.04365456;0.0024638285;11.540749;-17.73859;-4.6073494;14.956439;0.0;0.0;0.0;0.0;0.0;0.0;1067.6586;976.2514;-201.0;2016.3558;1862.9264;-201.0;2787.5085;739.4597;-201.0 -0.17224844;-12.758404;15.732475;0.051603377;-0.021027222;0.02828408;29.126907;6.219715;40.400734;8.702255;26.937225;0.0;0.7834367;6.6422753;8.803336;24.00371;465.04935;1392.2178;-7.512005;1613.3203;560.8162;-22.86622;2536.9773;1013.63965;-17.234089 -0.14375566;-24.05854;33.348003;0.06867201;0.011666615;0.02097681;11.611873;29.594345;13.222389;20.90497;38.167942;0.017951084;0.5391912;11.036587;28.52942;20.436005;804.4385;1813.1543;0.0;1738.1641;1061.9937;-29.277039;2957.3567;948.20807;-26.342728 -0.014306876;-11.243809;26.967169;0.018643944;0.050341975;0.0015127645;12.4231;-7.0247726;-1.7017583;8.023529;0.0;0.0;0.0;0.0;0.0;0.0;858.63226;1105.9069;-201.0;1751.1644;1169.2184;-201.0;2839.303;1234.7816;-201.0 -0.009095943;-5.119072;12.186145;0.013437883;0.035999104;3.264927E-4;5.5116897;7.817103;6.8242455;11.972707;0.0;0.0;0.0;0.0;0.0;0.0;954.5259;1381.4452;-201.0;1659.8644;2034.5094;-201.0;2512.1843;1060.502;-201.0 -0.289263;-10.918466;25.338669;0.07638725;-7.501719E-4;0.09543028;27.385775;-15.564157;-12.38268;-48.88683;40.29712;0.020470286;1.0561372;6.572883;12.145553;24.513357;668.6563;1538.126;0.0;1511.4095;1137.4833;-24.617147;2638.4583;2475.1416;-32.06812 -0.33700833;-2.420372;20.471823;0.050194215;0.008233545;0.052767336;45.679684;-30.668001;1.0780874;14.644108;22.71879;0.007611212;0.63974404;2.8142102;-2.03157;5.317148;1072.0447;1190.1132;-10.365606;1631.07;2063.511;-5.49744;2746.4453;668.9006;-13.9289465 -0.41720298;1.7312307;6.504835;0.043306034;0.0025550534;0.11789139;7.4232965;-7.210096;32.524918;-7.453317;0.0;0.0;0.0;0.0;0.0;0.0;723.52765;1840.684;-201.0;1485.6615;1642.2203;-201.0;2336.022;965.11505;-201.0 -0.069290645;-15.745968;25.46858;0.062029053;0.0048114224;0.015824912;37.68521;6.0927467;19.79673;19.160334;0.0;0.0;0.0;0.0;0.0;0.0;398.94388;1256.1669;-201.0;1544.6709;739.9936;-201.0;2899.4744;990.92694;-201.0 -0.0049872445;0.5806279;6.1850047;0.069666125;0.045376465;9.5386524E-5;1.4445745;1.4466858;-3.136586;2.8266258;0.0;0.0;0.0;0.0;0.0;0.0;1006.103;1222.5977;-201.0;2009.1373;1167.9054;-201.0;2783.179;1274.9843;-201.0 -0.002430111;-3.4937017;8.048154;0.06047906;0.043184567;4.1550767E-5;2.4762337;8.289261;0.21085978;0.1063403;0.0;0.0;0.0;0.0;0.0;0.0;653.0075;1580.6124;-201.0;1676.8835;1262.4368;-201.0;2615.1846;1625.2675;-201.0 -2.628437;14.108211;6.2726874;0.086452775;0.04430273;1.661482;-10.770408;-53.266113;-18.706047;-16.244013;48.022106;0.005618468;0.5877299;11.464253;-13.048981;3.9971848;678.63495;1352.153;9.172173;1619.1284;1086.0643;21.487686;2724.3909;875.0844;5.846115 -0.3906323;-2.0128143;6.974735;0.09343928;-0.001375768;0.18881826;-9.227555;-0.44757175;-10.706632;-9.957532;50.774456;0.05538048;3.923804;11.911641;-4.238564;-7.7860923;794.4041;1424.9072;0.0;1601.7428;947.7337;-25.280169;2767.6711;810.32196;-21.732641 -0.0012958569;4.036262;0.0;0.08844409;0.060302794;1.28633355E-5;-5.1854396;0.9532736;-0.689482;0.38506338;0.0;0.0;0.0;0.0;0.0;0.0;874.65283;790.98755;-201.0;1423.8427;1796.1738;-201.0;2471.027;1439.8123;-201.0 -0.36303583;-14.075688;18.85995;0.105763234;-0.016599959;0.10744319;23.491064;1.3433113;23.239052;-27.838968;34.499954;0.0039942055;0.81562024;5.2519274;10.537517;28.20111;446.43222;1562.4237;-6.3754663;1691.8092;899.16425;-28.058153;2441.657;2242.148;-27.873253 -0.11920935;-0.30119762;14.623764;-0.0011822432;0.021398047;0.017120508;10.0767565;-17.65901;-0.5191728;-3.5595176;0.0;0.0;0.0;0.0;0.0;0.0;527.4093;973.6961;-201.0;1398.2198;1033.8236;-201.0;2371.5657;963.5455;-201.0 -0.043413967;-29.35514;40.64114;-0.059428383;0.01989151;0.043875825;9.562508;6.78138;13.414165;8.501082;0.0;0.0;0.0;0.0;0.0;0.0;872.05524;1632.9415;-201.0;1881.8389;1468.2534;-201.0;3047.5276;1391.4362;-201.0 -0.0013326285;3.1259892;0.8397564;0.08571297;0.05953856;5.8044665E-5;-3.4802735;0.5212664;-1.1262431;0.0055197924;0.0;0.0;0.0;0.0;0.0;0.0;877.8253;1381.8872;-201.0;1794.4652;1240.4137;-201.0;2695.5225;1357.5078;-201.0 -1.7864515;5.9408946;-2.9355977;0.07703959;-0.026586486;1.094773;5.4276233;-23.374601;40.686996;-24.852098;37.620285;0.012759197;0.69193095;6.861586;17.589075;1.5925193;1347.1329;1644.4479;-18.55642;2139.4524;816.6467;-1.6074748;3078.3723;805.2443;6.666331 -0.060464736;-19.270456;27.19584;0.049234886;0.018905895;0.011840626;11.575341;26.595942;17.987465;21.985506;0.0;0.0;0.0;0.0;0.0;0.0;650.1396;1149.4749;-201.0;1743.5631;763.34;-201.0;2745.0203;656.95776;-201.0 -2.524945;-3.9847116;16.67517;0.04079902;-0.008014152;1.7981335;3.441808;-28.439299;-29.24911;-47.004242;42.399426;0.010191624;1.084539;6.6473823;-3.0529375;13.63589;1071.0564;1117.0226;18.895533;1933.1172;2838.1445;3.540603;2710.0422;781.5625;2.2067068 -0.10266864;-5.527948;22.238485;0.088490665;0.014238282;0.017120188;24.542969;-11.009158;-7.503015;-19.760748;39.101307;0.0066558123;1.0066239;5.3682027;-0.7624545;22.787207;581.6208;1319.5314;0.0;1411.744;1173.7006;-10.154647;2422.8616;990.0249;-29.0832 -0.009344911;-6.8368835;14.51046;0.02957888;0.031368736;2.9609966E-4;6.9067;11.534551;10.400842;8.311393;0.0;0.0;0.0;0.0;0.0;0.0;950.18994;1317.398;-201.0;1886.3851;1086.49;-201.0;2543.1672;1892.7894;-201.0 -0.005410351;-6.7250047;17.035738;0.0151145;0.038279723;1.5931018E-4;-4.740644;9.715638;5.0558457;6.0189614;0.0;0.0;0.0;0.0;0.0;0.0;512.8313;1756.7822;-201.0;1567.7408;1089.285;-201.0;2411.5896;1827.1693;-201.0 -0.07581643;-25.052462;37.710094;0.009528586;-0.0037599746;0.026341712;32.59309;23.610903;26.313818;24.25074;23.445848;0.042895723;2.4086592;4.613877;16.874952;42.861984;366.12228;1199.1648;-13.493908;1472.4531;789.1402;-29.514221;2691.1335;963.6342;-39.641308 -0.003070121;-1.0556207;9.511985;0.02664282;0.05513525;2.4024882E-4;-2.576298;5.640779;7.3530297;11.486305;0.0;0.0;0.0;0.0;0.0;0.0;685.03467;1349.0599;-201.0;1379.9053;2323.6277;-201.0;2262.14;1259.7249;-201.0 -0.0665391;6.127346;-3.6681435;0.03124773;0.013192825;0.0063595106;-8.489868;6.847113;32.081577;-11.032532;26.679937;0.0;0.0;1.3301337;-2.4073987;9.495432;496.91895;1502.2723;-64.79277;1493.611;468.98816;-89.420494;2518.2356;927.0608;-71.98149 -0.052928656;-6.0903983;18.82756;0.0022971162;0.019541811;0.0056697316;31.641893;-8.857718;8.023976;22.726004;0.0;0.0;0.0;0.0;0.0;0.0;840.6975;1505.2281;-201.0;1715.7299;1345.5154;-201.0;2837.635;1154.9716;-201.0 -0.0052650855;-14.956738;25.800207;-0.019270422;0.0430751;4.8144205E-4;-1.5548416;12.837642;9.04008;13.346749;0.0;0.0;0.0;0.0;0.0;0.0;927.16986;1529.2628;-201.0;1950.1533;1540.9528;-201.0;2911.2092;1186.7134;-201.0 -1.083968;-11.059383;18.061136;0.104275905;-0.034066696;0.6706988;24.331934;5.2762856;-7.250908;-39.82344;35.45322;0.045291603;1.769392;5.094752;-1.3693213;17.929129;707.2217;1291.292;-10.684086;1684.5797;862.25195;-18.545637;2681.5593;590.2088;-17.3005 -0.07536897;16.006708;-10.958852;0.11767224;0.01771683;0.006329565;-20.55674;-9.537103;13.934177;-29.40982;0.0;0.0;0.0;0.0;0.0;0.0;1198.4614;615.97003;-201.0;2008.7152;1290.0898;-201.0;3001.786;981.40094;-201.0 -0.014950409;-7.379881;11.922256;0.042784292;0.022199884;8.3945674E-4;11.686313;10.592767;9.448503;-5.4802365;0.0;0.0;0.0;0.0;0.0;0.0;761.2747;1567.5707;-201.0;1750.1694;1212.7655;-201.0;2813.1602;848.3245;-201.0 -0.48644736;5.3087106;21.467016;0.088692255;0.01644846;0.1678502;21.938965;-40.11224;-20.73091;-32.958153;38.21897;0.020353243;0.50389594;8.899166;-9.315322;5.9007583;753.14355;1303.7772;4.963213;1842.3018;1394.0392;4.2013545;2761.8792;788.2241;-3.3123415 -0.044841137;-22.87884;24.63961;-0.0041429815;-0.00856096;0.0066431216;33.74788;16.642235;39.847355;8.065217;19.485672;0.022957565;0.9890979;4.328713;7.7884183;33.94975;616.9334;1447.0204;-22.16039;1523.6776;3873.2566;-35.251644;2517.0205;878.77264;-36.994827 -0.17940094;-4.698506;19.822302;0.11528654;-0.012000495;0.053057943;43.631287;-23.243113;-31.755953;-15.768035;0.0;0.0;0.0;0.0;0.0;0.0;381.1415;1473.8961;-201.0;1238.3671;1191.1764;-201.0;2177.5305;750.0351;-201.0 -0.004428088;1.4646872;4.6982803;0.05784623;0.039283928;9.7185104E-5;-0.47184196;1.2227488;-1.6549253;1.4760609;0.0;0.0;0.0;0.0;0.0;0.0;876.1953;1755.1719;-201.0;1594.5675;2097.3389;-201.0;2448.3047;1299.641;-201.0 -0.055584352;1.9453697;-0.29844633;-0.0018408248;0.029123241;0.007556841;-3.6856968;19.80246;49.876343;1.7340212;0.0;0.0;0.0;0.0;0.0;0.0;1368.0824;425.25696;-201.0;2489.0154;558.6793;-201.0;3163.004;1572.7887;-201.0 -0.05528559;-5.167497;21.9549;-0.003891248;0.03158903;0.0049761613;19.110903;-7.62089;20.689137;20.888794;0.0;0.0;0.0;0.0;0.0;0.0;1122.77;1383.8231;-201.0;1658.1027;1283.7545;-201.0;2862.8215;814.0019;-201.0 -0.30766895;8.87782;-7.9357333;0.06037092;5.2352465E-4;0.04398686;-19.12052;21.632696;-2.6414492;-6.2204404;0.0;0.0;0.0;0.0;0.0;0.0;531.0943;1354.6764;-141.58832;1521.7036;780.05695;-139.18645;2557.8389;937.4734;-140.79726 -0.0051795645;-17.79114;28.034323;-0.022024503;0.039935514;6.1217276E-4;1.7531811;17.44311;13.872383;15.778123;0.0;0.0;0.0;0.0;0.0;0.0;953.45734;1177.5098;-201.0;1858.9253;975.081;-201.0;2879.086;773.81476;-201.0 -0.35400984;-4.689925;10.995304;0.025655093;0.0048002857;0.073266625;-1.4115597;21.094797;-1.0563726;-0.84253216;0.0;0.0;0.0;0.0;0.0;0.0;937.70685;1120.18;-144.47539;2021.8666;889.06964;-142.59966;2961.0457;2910.8787;-142.53291 -0.19137426;-8.474963;27.596016;0.07015954;0.01109124;0.046063352;42.06636;-11.587602;7.0655084;-0.49584857;25.369543;0.0913882;1.4062214;3.0077026;2.8876772;25.743383;905.3877;1575.2158;-6.8443704;1397.5312;1660.4242;-3.6736658;2713.999;824.7707;-21.623444 -0.00866815;-6.4666343;17.53951;-0.0043885284;0.042064104;4.466124E-4;1.0877434;-0.028326571;6.983915;9.110545;0.0;0.0;0.0;0.0;0.0;0.0;643.73267;1274.3303;-201.0;1450.5243;1256.7926;-201.0;2411.7578;911.06573;-201.0 -0.008014885;-7.3590026;17.918306;0.019731458;0.03117951;4.808791E-4;3.463685;4.546841;8.388724;3.301054;0.0;0.0;0.0;0.0;0.0;0.0;809.8965;1457.6871;-201.0;1728.2758;1183.82;-201.0;2624.4841;1049.545;-201.0 -0.07729021;3.6101036;9.207305;0.039868552;0.028468003;0.0071207355;7.0184517;-16.427298;-9.906934;-0.9447096;0.0;0.0;0.0;0.0;0.0;0.0;810.6584;1168.8984;-201.0;1624.8656;1198.2902;-201.0;2662.1677;892.1247;-201.0 -0.046195865;-22.304817;30.789085;0.008618343;0.008236887;0.0094509255;34.330837;18.593967;21.581848;0.16046053;0.0;0.0;0.0;0.0;0.0;0.0;390.11435;1575.441;-201.0;1362.1415;1490.3646;-201.0;2321.6511;1148.9994;-201.0 -0.035370372;1.8095455;4.3928885;0.0882226;0.032035276;0.0017082733;-3.6447525;0.15500624;8.271159;-0.7125172;0.0;0.0;0.0;0.0;0.0;0.0;1006.7487;833.3588;-201.0;2000.9178;924.908;-201.0;2986.3826;1330.9431;-201.0 -0.85770863;-13.416611;23.822311;0.0993579;-0.009026941;0.47269568;20.706572;-16.1358;-43.50192;-54.47093;45.77441;0.001943483;0.5084616;10.563447;13.697475;29.310019;470.89114;1665.9423;0.0;1342.605;1678.4313;-16.128817;2616.2764;603.43774;-24.013062 -1.0206817;-8.131679;18.728767;0.01455101;0.005326696;0.5743796;4.9134173;13.887675;-3.8709831;-9.193629;42.364857;0.08206163;1.4202483;5.5455728;8.729537;21.459198;1181.7544;1010.596;-10.058802;2331.757;1187.3934;-25.236273;3228.5134;1301.7906;-25.630182 -0.19794786;1.3969413;1.9759798;0.018888528;0.014782257;0.032976832;-1.0650741;-4.2044134;6.0690665;-7.6766305;29.241072;0.0;0.0;2.851782;3.3546228;6.6698694;462.3611;932.41815;-76.878365;1411.0209;878.7413;-82.33321;2343.5222;704.9642;-79.08853 -0.2731922;-12.03642;24.675217;0.08743459;-0.027082255;0.09381407;39.11704;-9.241809;-9.623317;-15.771075;0.0;0.0;0.0;0.0;0.0;0.0;906.9951;1391.2653;-201.0;1826.9242;873.4753;-201.0;3197.1306;753.8732;-201.0 -0.2815794;1.0203463;9.995854;0.045876954;0.042298835;0.0408815;-1.7942529;-9.418178;-1.6629013;-3.16803;0.0;0.0;0.0;0.0;0.0;0.0;1066.8312;1022.22687;-136.27423;2271.1545;979.97687;-139.57402;3087.823;1501.5983;-141.53497 -0.036066916;-13.667157;20.55477;0.02644897;0.02408497;0.004739933;7.7110953;29.892685;16.897367;16.348175;0.0;0.0;0.0;0.0;0.0;0.0;548.1393;2200.3958;-201.0;1503.2369;1668.7819;-201.0;2338.6746;919.8814;-201.0 -0.023910195;-12.61324;26.405207;0.058264196;0.03051888;0.0028684437;22.669737;6.6497025;13.3961525;2.985614;0.0;0.0;0.0;0.0;0.0;0.0;1201.9916;1113.5331;-201.0;2215.716;1491.5741;-201.0;3015.5808;742.9444;-201.0 -0.424464;10.408939;1.6562023;-0.018423915;0.031760085;0.06291575;-10.550328;-17.08536;8.265286;-0.6447117;0.0;0.0;0.0;0.0;0.0;0.0;763.67035;903.687;-201.0;1524.5488;2246.838;-201.0;2318.0986;1097.8546;-201.0 -0.17768289;-6.3336644;15.423808;0.09517896;-0.0067179822;0.03563048;26.711699;-7.494184;22.993782;22.497824;0.0;0.0;0.0;0.0;0.0;0.0;272.77628;1336.3213;-132.79823;1370.068;648.15985;-141.67284;2378.1355;717.7193;-141.30415 -0.23815;-8.831864;14.001355;0.05801204;0.01606302;0.046095025;1.8799125;26.499044;-3.1689694;11.042626;35.924885;0.0;0.0;4.560699;19.407053;23.741829;1072.4004;1216.3287;-21.883554;1692.5093;1354.1569;-19.696093;2879.5232;688.0179;-28.76114 -0.13338684;4.1989574;0.8409793;0.059368163;0.01576195;0.021006564;14.276776;-23.439941;15.209228;15.238954;0.0;0.0;0.0;0.0;0.0;0.0;1075.3329;835.52783;-201.0;1920.6642;1284.0321;-201.0;2896.2004;1284.5026;-201.0 -0.053278547;-25.796257;31.487368;0.028530875;-0.025497762;0.0072713257;43.34961;20.295973;1.8967184;-3.0299504;18.639717;0.0052705696;1.0174525;4.58467;9.35628;32.10826;609.4389;1740.7389;-73.26945;1469.4144;1861.8202;-83.518456;2725.0955;1238.7096;-92.290306 -0.0065465285;2.5575316;3.8375618;0.05499165;0.04277858;1.6928448E-4;-3.6085103;1.4076024;0.09536914;3.4836934;0.0;0.0;0.0;0.0;0.0;0.0;661.0815;1484.6666;-201.0;1558.5751;1192.0597;-201.0;2484.4478;950.53296;-201.0 -0.033042062;-16.778719;34.046677;0.0038867688;0.023113174;0.0053823553;34.890446;9.718826;4.238156;24.517221;0.0;0.0;0.0;0.0;0.0;0.0;630.00336;1576.7524;-201.0;1809.2181;1220.4045;-201.0;3261.473;1607.9213;-201.0 -0.14849494;0.020125866;6.8082733;0.008026151;-1.1498047E-4;0.020702036;1.4362296;3.7020864;24.824907;1.9608841;0.0;0.0;0.0;0.0;0.0;0.0;936.3694;951.4056;-201.0;1722.0752;2132.18;-201.0;2712.066;844.90436;-201.0 -2.3250945;-2.170532;15.114329;0.05742045;-0.01792869;0.9971389;-2.100904;-16.637505;-32.891216;-67.31794;43.034336;0.0052293544;0.3980147;11.341435;-4.2208686;9.586064;1023.04156;974.5578;15.738281;2346.1074;350.85965;1.9313482;3195.0056;685.18805;1.9313482 -0.15491237;-11.800995;17.719164;0.086227246;-0.013748561;0.028678989;9.020627;9.190034;3.7834713;-8.35446;41.207508;0.029048158;2.251506;9.336835;17.126852;14.085111;312.99545;1457.0819;0.0;1502.5284;813.30743;-14.959457;2705.0745;621.3384;-7.391212 -1.3251647;9.026366;-8.319072;0.06611543;-0.026294619;0.3093247;-11.857791;-53.050217;10.645322;-30.787615;51.739285;0.0014977265;0.44473824;12.205592;-7.9603524;-13.780988;1125.4276;613.5397;-16.640244;1951.1439;1049.3612;5.7720146;2918.3313;1151.7993;-2.859256 From 4c9fd2d569e1248f567b8db4ebb96bd8ca5d9baf Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:13:42 +0900 Subject: [PATCH 09/22] update data readme --- data/README.md | 4 ++-- data/make_readme.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data/README.md b/data/README.md index c2f4a1be..0effab7c 100644 --- a/data/README.md +++ b/data/README.md @@ -5,7 +5,7 @@ Nkululeko database repository # Data -This is the default top directory for Nkululeko data import.Each database should be in its own subfolder (you can also use `ln -sf`` to soft link original database path to these subfolders) and contain a README how to import the data to Nkululeko CSV or audformat. +This is the default top directory for Nkululeko data import. Each database should be in its own subfolder (you can also use `ln -sf` to soft link original database path to these subfolders) and contain a README how to import the data to Nkululeko CSV or audformat. ## Accessibility @@ -15,7 +15,7 @@ The column `access` in the table below indicates the database's accessability. T - `private`: the database is not publicly available on the internet and requires the private information of the owner of the dataset. -To support open science and reproducible research, we only accept PR and recipes for public dataset for now on. +To support open science and reproducible research, we encourage to submit PR and recipes for public dataset for now on. |Name|Target|Description|Access| | :--- | :--- | :--- | :--- | |emorynlp|emotion|English Emotion Dataset from Friends TV Show|public| diff --git a/data/make_readme.py b/data/make_readme.py index bbacc47f..bc6a193b 100644 --- a/data/make_readme.py +++ b/data/make_readme.py @@ -11,9 +11,9 @@ mdFile.create_md_file() mdFile.new_header(level=1, title="Data") mdFile.new_paragraph( - "This is the default top directory for Nkululeko data import." + "This is the default top directory for Nkululeko data import. " "Each database should be in its own subfolder " - "(you can also use `ln -sf`` to soft link original database " + "(you can also use `ln -sf` to soft link original database " "path to these subfolders) " "and contain a README how to import the data to Nkululeko CSV or audformat." ) @@ -34,7 +34,7 @@ ) mdFile.new_paragraph( "To support open science and reproducible research, " - "we only accept PR and recipes for public dataset for " + "we encourage to submit PR and recipes for public dataset for " "now on." ) From 10caeebf4f1aa89f5f17eb49ec9449f2ea7e0a3e Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:18:11 +0900 Subject: [PATCH 10/22] rm *_bta files --- nkululeko/models/model_tuned_bta.py | 482 ---------------------------- 1 file changed, 482 deletions(-) delete mode 100644 nkululeko/models/model_tuned_bta.py diff --git a/nkululeko/models/model_tuned_bta.py b/nkululeko/models/model_tuned_bta.py deleted file mode 100644 index 8ed65f08..00000000 --- a/nkululeko/models/model_tuned_bta.py +++ /dev/null @@ -1,482 +0,0 @@ -""" -Code based on @jwagner. -""" - -import dataclasses -import json -import os -import pickle -import typing - -import audeer -import audiofile -import audmetric -import datasets -import numpy as np -import pandas as pd -import torch -import transformers -from transformers.models.wav2vec2.modeling_wav2vec2 import ( - Wav2Vec2Model, - Wav2Vec2PreTrainedModel, -) - -import nkululeko.glob_conf as glob_conf -from nkululeko.models.model import Model as BaseModel -from nkululeko.reporting.reporter import Reporter - - -class TunedModel(BaseModel): - is_classifier = True - - def __init__(self, df_train, df_test, feats_train, feats_test): - """Constructor taking the configuration and all dataframes.""" - super().__init__(df_train, df_test, feats_train, feats_test) - super().set_model_type("finetuned") - self.name = "finetuned_wav2vec2" - self.target = glob_conf.config["DATA"]["target"] - labels = glob_conf.labels - self.class_num = len(labels) - # device = self.util.config_val("MODEL", "device", "cpu") - self.device = "cuda" if torch.cuda.is_available() else "cpu" - self.batch_size = int(self.util.config_val("MODEL", "batch_size", "8")) - # self.device_id = self.util.config_val("MODEL", "device_id", "0") - if self.device != "cpu": - self.util.debug(f"running on device {self.device}") - os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" - os.environ["CUDA_VISIBLE_DEVICES"] = self.device # self.device - self.df_train, self.df_test = df_train, df_test - self.epoch_num = int(self.util.config_val("EXP", "epochs", 1)) - - self._init_model() - - def _init_model(self): - model_path = "facebook/wav2vec2-large-robust-ft-swbd-300h" - pretrained_model = self.util.config_val("MODEL", "pretrained_model", model_path) - self.num_layers = None - self.sampling_rate = 16000 - self.max_duration_sec = 8.0 - self.accumulation_steps = 4 - - # print finetuning information via debug - self.util.debug(f"Finetuning from model: {pretrained_model}") - - # create dataset - dataset = {} - target_name = glob_conf.target - data_sources = { - "train": pd.DataFrame(self.df_train[target_name]), - "dev": pd.DataFrame(self.df_test[target_name]), - } - - for split in ["train", "dev"]: - df = data_sources[split] - y = df[target_name].astype("float") - y.name = "targets" - df = y.reset_index() - df.start = df.start.dt.total_seconds() - df.end = df.end.dt.total_seconds() - ds = datasets.Dataset.from_pandas(df) - dataset[split] = ds - - self.dataset = datasets.DatasetDict(dataset) - - # load pre-trained model - le = glob_conf.label_encoder - mapping = dict(zip(le.classes_, range(len(le.classes_)))) - target_mapping = {k: int(v) for k, v in mapping.items()} - target_mapping_reverse = {value: key for key, value in target_mapping.items()} - - self.config = transformers.AutoConfig.from_pretrained( - pretrained_model, - num_labels=len(target_mapping), - label2id=target_mapping, - id2label=target_mapping_reverse, - finetuning_task=target_name, - ) - - if self.num_layers is not None: - self.config.num_hidden_layers = self.num_layers - setattr(self.config, "sampling_rate", self.sampling_rate) - setattr(self.config, "data", self.util.get_data_name()) - - vocab_dict = {} - with open("vocab.json", "w") as vocab_file: - json.dump(vocab_dict, vocab_file) - tokenizer = transformers.Wav2Vec2CTCTokenizer("./vocab.json") - tokenizer.save_pretrained(".") - - feature_extractor = transformers.Wav2Vec2FeatureExtractor( - feature_size=1, - sampling_rate=16000, - padding_value=0.0, - do_normalize=True, - return_attention_mask=True, - ) - self.processor = transformers.Wav2Vec2Processor( - feature_extractor=feature_extractor, - tokenizer=tokenizer, - ) - assert self.processor.feature_extractor.sampling_rate == self.sampling_rate - - self.model = Model.from_pretrained( - pretrained_model, - config=self.config, - ) - self.model.freeze_feature_extractor() - self.model.train() - self.model_initialized = True - - def set_model_type(self, type): - self.model_type = type - - def set_testdata(self, data_df, feats_df): - self.df_test, self.feats_test = data_df, feats_df - - def reset_test(self, df_test, feats_test): - self.df_test, self.feats_test = df_test, feats_test - - def set_id(self, run, epoch): - self.run = run - self.epoch = epoch - dir = self.util.get_path("model_dir") - name = f"{self.util.get_exp_name(only_train=True)}_{self.run}_{self.epoch:03d}.model" - self.store_path = dir + name - - def data_collator(self, data): - files = [d["file"] for d in data] - starts = [d["start"] for d in data] - ends = [d["end"] for d in data] - targets = [d["targets"] for d in data] - - signals = [] - for file, start, end in zip( - files, - starts, - ends, - ): - offset = start - duration = end - offset - if self.max_duration_sec is not None: - duration = min(duration, self.max_duration_sec) - signal, _ = audiofile.read( - file, - offset=offset, - duration=duration, - ) - signals.append(signal.squeeze()) - - input_values = self.processor( - signals, - sampling_rate=self.sampling_rate, - padding=True, - ) - batch = self.processor.pad( - input_values, - padding=True, - return_tensors="pt", - ) - - batch["labels"] = torch.tensor(targets) - - return batch - - def compute_metrics(self, p: transformers.EvalPrediction): - metrics = { - "UAR": audmetric.unweighted_average_recall, - "ACC": audmetric.accuracy, - } - - # truth = p.label_ids[:, 0].astype(int) - truth = p.label_ids - preds = p.predictions - preds = np.argmax(preds, axis=1) - scores = {} - for name, metric in metrics.items(): - scores[f"{name}"] = metric(truth, preds) - return scores - - def train(self): - """Train the model.""" - model_root = self.util.get_path("model_dir") - log_root = os.path.join(self.util.get_exp_dir(), "log") - audeer.mkdir(log_root) - self.torch_root = audeer.path(model_root, "torch") - conf_file = os.path.join(self.torch_root, "config.json") - if os.path.isfile(conf_file): - self.util.debug(f"reusing finetuned model: {conf_file}") - self.load(self.run, self.epoch_num) - return - targets = pd.DataFrame(self.dataset["train"]["targets"]) - counts = targets[0].value_counts().sort_index() - train_weights = 1 / counts - train_weights /= train_weights.sum() - self.util.debug("train weights: {train_weights}") - criterion = torch.nn.CrossEntropyLoss( - weight=torch.Tensor(train_weights).to(self.device), - ) - # criterion = torch.nn.CrossEntropyLoss() - - # set push_to_hub value, default false - push = self.util.config_val("MODEL", "push_to_hub", False) - - class Trainer(transformers.Trainer): - def compute_loss( - self, - model, - inputs, - return_outputs=False, - ): - targets = inputs.pop("labels").squeeze() - targets = targets.type(torch.long) - - outputs = model(**inputs) - logits = outputs[0].squeeze() - - loss = criterion(logits, targets) - - return (loss, outputs) if return_outputs else loss - - num_steps = ( - len(self.dataset["train"]) - // (self.batch_size * self.accumulation_steps) - // 5 - ) - num_steps = max(1, num_steps) - # print(num_steps) - - training_args = transformers.TrainingArguments( - output_dir=model_root, - logging_dir=log_root, - per_device_train_batch_size=self.batch_size, - per_device_eval_batch_size=self.batch_size, - gradient_accumulation_steps=self.accumulation_steps, - evaluation_strategy="steps", - num_train_epochs=self.epoch_num, - fp16=self.device == "cuda", - save_steps=num_steps, - eval_steps=num_steps, - logging_steps=num_steps, - learning_rate=1e-4, - save_total_limit=2, - metric_for_best_model="UAR", - greater_is_better=True, - load_best_model_at_end=True, - remove_unused_columns=False, - report_to="none", - push_to_hub=push, - hub_model_id=f"{self.util.get_name()}", - ) - - trainer = Trainer( - model=self.model, - data_collator=self.data_collator, - args=training_args, - compute_metrics=self.compute_metrics, - train_dataset=self.dataset["train"], - eval_dataset=self.dataset["dev"], - tokenizer=self.processor.feature_extractor, - callbacks=[transformers.integrations.TensorBoardCallback()], - ) - trainer.train() - trainer.save_model(self.torch_root) - self.load(self.run, self.epoch) - - def get_predictions(self): - results = [] - for (file, start, end), _ in audeer.progress_bar( - self.df_test.iterrows(), - total=len(self.df_test), - desc=f"Predicting {len(self.df_test)} audiofiles", - ): - if end == pd.NaT: - signal, sr = audiofile.read(file, offset=start) - else: - signal, sr = audiofile.read( - file, duration=end - start, offset=start, always_2d=True - ) - assert sr == self.sampling_rate - predictions = self.model.predict(signal) - results.append(predictions.argmax()) - return results - - def predict(self): - """Predict the whole eval feature set""" - predictions = self.get_predictions() - report = Reporter( - self.df_test[self.target].to_numpy().astype(float), - predictions, - self.run, - self.epoch_num, - ) - return report - - def predict_sample(self, signal): - """Predict one sample""" - prediction = {} - if self.util.exp_is_classification(): - # get the class probabilities - predictions = self.model.predict(signal) - # pred = self.clf.predict(features) - for i in range(len(self.labels)): - cat = self.labels[i] - prediction[cat] = predictions[i] - else: - predictions = self.model.predict(signal) - prediction = predictions - return prediction - - def store(self): - self.util.debug("stored: ") - - def load(self, run, epoch): - self.set_id(run, epoch) - self.model = Model.from_pretrained( - self.torch_root, - config=self.config, - ) - # print(f"loaded model type {type(self.model)}") - - def load_path(self, path, run, epoch): - self.set_id(run, epoch) - with open(path, "rb") as handle: - self.clf = pickle.load(handle) - - -@dataclasses.dataclass -class ModelOutput(transformers.file_utils.ModelOutput): - logits_cat: torch.FloatTensor = None - hidden_states: typing.Tuple[torch.FloatTensor] = None - cnn_features: torch.FloatTensor = None - - -class ModelHead(torch.nn.Module): - def __init__(self, config): - super().__init__() - - self.dense = torch.nn.Linear(config.hidden_size, config.hidden_size) - self.dropout = torch.nn.Dropout(config.final_dropout) - self.out_proj = torch.nn.Linear(config.hidden_size, config.num_labels) - - def forward(self, features, **kwargs): - x = features - x = self.dropout(x) - x = self.dense(x) - x = torch.tanh(x) - x = self.dropout(x) - x = self.out_proj(x) - - return x - - -class Model(Wav2Vec2PreTrainedModel): - def __init__(self, config): - if not hasattr(config, "add_adapter"): - setattr(config, "add_adapter", False) - - super().__init__(config) - - self.wav2vec2 = Wav2Vec2Model(config) - self.cat = ModelHead(config) - self.init_weights() - - def freeze_feature_extractor(self): - self.wav2vec2.feature_extractor._freeze_parameters() - - def pooling( - self, - hidden_states, - attention_mask, - ): - if attention_mask is None: # For evaluation with batch_size==1 - outputs = torch.mean(hidden_states, dim=1) - else: - attention_mask = self._get_feature_vector_attention_mask( - hidden_states.shape[1], - attention_mask, - ) - hidden_states = hidden_states * torch.reshape( - attention_mask, - (-1, attention_mask.shape[-1], 1), - ) - outputs = torch.sum(hidden_states, dim=1) - attention_sum = torch.sum(attention_mask, dim=1) - outputs = outputs / torch.reshape(attention_sum, (-1, 1)) - - return outputs - - def forward( - self, - input_values, - attention_mask=None, - labels=None, - return_hidden=False, - ): - outputs = self.wav2vec2( - input_values, - attention_mask=attention_mask, - ) - - cnn_features = outputs.extract_features - hidden_states_framewise = outputs.last_hidden_state - hidden_states = self.pooling( - hidden_states_framewise, - attention_mask, - ) - logits_cat = self.cat(hidden_states) - - if not self.training: - logits_cat = torch.softmax(logits_cat, dim=1) - - if return_hidden: - # make time last axis - cnn_features = torch.transpose(cnn_features, 1, 2) - - return ModelOutput( - logits_cat=logits_cat, - hidden_states=hidden_states, - cnn_features=cnn_features, - ) - - else: - return ModelOutput( - logits_cat=logits_cat, - ) - - def predict(self, signal): - result = self(torch.from_numpy(signal)) - result = result[0].detach().numpy()[0] - return result - - -class ModelWithPreProcessing(Model): - def __init__(self, config): - super().__init__(config) - - def forward( - self, - input_values, - ): - # Wav2Vec2FeatureExtractor.zero_mean_unit_var_norm(): - # normed_slice = (vector - vector[:length].mean()) / np.sqrt(vector[:length].var() + 1e-7) - - mean = input_values.mean() - - # var = input_values.var() - # raises: onnxruntime.capi.onnxruntime_pybind11_state.NotImplemented: - # [ONNXRuntimeError] : 9 : NOT_IMPLEMENTED : Could not find an - # implementation for the node ReduceProd_3:ReduceProd(11) - - var = torch.square(input_values - mean).mean() - input_values = (input_values - mean) / torch.sqrt(var + 1e-7) - - output = super().forward( - input_values, - return_hidden=True, - ) - - return ( - output.hidden_states, - output.logits_cat, - output.cnn_features, - ) From ed18a431ad2687fdb520332b4db3fd4fcfb7bfc4 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:22:01 +0900 Subject: [PATCH 11/22] new file: .github/workflows/format_code.yml new file: .github/workflows/isort.yaml --- .github/workflows/format_code.yml | 10 ++++++++++ .github/workflows/isort.yaml | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 .github/workflows/format_code.yml create mode 100644 .github/workflows/isort.yaml diff --git a/.github/workflows/format_code.yml b/.github/workflows/format_code.yml new file mode 100644 index 00000000..20ee4c2c --- /dev/null +++ b/.github/workflows/format_code.yml @@ -0,0 +1,10 @@ +name: Check code formatting + +on: [push, pull_request] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: psf/black@stable \ No newline at end of file diff --git a/.github/workflows/isort.yaml b/.github/workflows/isort.yaml new file mode 100644 index 00000000..4a3f88ca --- /dev/null +++ b/.github/workflows/isort.yaml @@ -0,0 +1,10 @@ +name: Run isort + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: isort/isort-action@v1 \ No newline at end of file From 1601066667763ff6852f26f504c4365889566ddc Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:25:25 +0900 Subject: [PATCH 12/22] try to fix black and isort --- data/make_readme.py | 14 ++++--- nkululeko/aug_train.py | 10 +++-- nkululeko/augment.py | 10 +++-- nkululeko/augmenting/augmenter.py | 6 ++- nkululeko/augmenting/randomsplicer.py | 10 +++-- nkululeko/augmenting/randomsplicing.py | 3 +- nkululeko/augmenting/resampler.py | 2 + nkululeko/autopredict/ap_age.py | 6 ++- nkululeko/autopredict/ap_arousal.py | 6 ++- nkululeko/autopredict/ap_dominance.py | 5 ++- nkululeko/autopredict/ap_gender.py | 6 ++- nkululeko/autopredict/ap_mos.py | 7 +++- nkululeko/autopredict/ap_pesq.py | 7 +++- nkululeko/autopredict/ap_sdr.py | 7 +++- nkululeko/autopredict/ap_snr.py | 7 +++- nkululeko/autopredict/ap_stoi.py | 7 +++- nkululeko/autopredict/ap_valence.py | 6 ++- nkululeko/cacheddataset.py | 2 +- nkululeko/data/dataset.py | 7 ++-- nkululeko/data/dataset_csv.py | 6 ++- nkululeko/demo-ft.py | 5 ++- nkululeko/demo_feats.py | 9 ++-- nkululeko/demo_predictor.py | 5 +-- nkululeko/ensemble.py | 9 ++-- nkululeko/experiment.py | 10 ++--- nkululeko/experiment_felix.py | 10 ++--- nkululeko/explore.py | 1 + nkululeko/export.py | 12 +++--- nkululeko/feat_extract/feats_agender.py | 7 ++-- .../feat_extract/feats_agender_agender.py | 8 ++-- nkululeko/feat_extract/feats_analyser.py | 18 ++++---- nkululeko/feat_extract/feats_ast.py | 2 +- nkululeko/feat_extract/feats_auddim.py | 7 ++-- nkululeko/feat_extract/feats_audmodel.py | 3 +- nkululeko/feat_extract/feats_clap.py | 8 ++-- nkululeko/feat_extract/feats_hubert.py | 5 +-- nkululeko/feat_extract/feats_import.py | 4 +- nkululeko/feat_extract/feats_mld.py | 5 ++- nkululeko/feat_extract/feats_mos.py | 6 ++- nkululeko/feat_extract/feats_opensmile.py | 6 ++- nkululeko/feat_extract/feats_oxbow.py | 6 ++- nkululeko/feat_extract/feats_praat.py | 4 +- nkululeko/feat_extract/feats_snr.py | 1 + nkululeko/feat_extract/feats_spectra.py | 15 +++---- nkululeko/feat_extract/feats_spkrec.py | 5 ++- nkululeko/feat_extract/feats_squim.py | 5 +-- nkululeko/feat_extract/feats_trill.py | 6 +-- nkululeko/feat_extract/feats_wav2vec2.py | 8 ++-- nkululeko/feat_extract/feats_wavlm.py | 5 +-- nkululeko/feat_extract/feats_whisper.py | 10 ++--- nkululeko/feat_extract/featureset.py | 6 ++- nkululeko/feat_extract/feinberg_praat.py | 4 +- .../transformer_feature_extractor.py | 4 +- nkululeko/file_checker.py | 3 +- nkululeko/filter_data.py | 4 +- nkululeko/fixedsegment.py | 5 ++- nkululeko/models/model.py | 7 ++-- nkululeko/models/model_bayes.py | 1 + nkululeko/models/model_cnn.py | 6 +-- nkululeko/models/model_gmm.py | 3 +- nkululeko/models/model_knn.py | 1 + nkululeko/models/model_knn_reg.py | 1 + nkululeko/models/model_lin_reg.py | 1 + nkululeko/models/model_mlp.py | 2 +- nkululeko/models/model_mlp_regression.py | 5 +-- nkululeko/models/model_svm.py | 1 + nkululeko/models/model_svr.py | 1 + nkululeko/models/model_tree.py | 1 + nkululeko/models/model_tree_reg.py | 1 + nkululeko/models/model_tuned.py | 42 ++++++++++++------- nkululeko/models/model_xgb.py | 1 + nkululeko/models/model_xgr.py | 1 + nkululeko/multidb.py | 1 + nkululeko/nkululeko.py | 2 +- nkululeko/reporting/latex_writer.py | 3 +- nkululeko/reporting/report.py | 3 +- nkululeko/reporting/reporter.py | 24 +++-------- nkululeko/resample.py | 7 ++-- nkululeko/resample_cli.py | 7 ++-- nkululeko/scaler.py | 2 +- nkululeko/segment.py | 10 +++-- .../segmenting/seg_inaspeechsegmenter.py | 6 +-- nkululeko/segmenting/seg_silero.py | 7 ++-- nkululeko/syllable_nuclei.py | 6 +-- nkululeko/test_pretrain.py | 13 +++--- nkululeko/utils/util.py | 5 +-- 86 files changed, 302 insertions(+), 234 deletions(-) diff --git a/data/make_readme.py b/data/make_readme.py index bc6a193b..f5b16e7a 100644 --- a/data/make_readme.py +++ b/data/make_readme.py @@ -47,12 +47,14 @@ for dataset_name in descr.keys(): # print(dataset_name) - table_list.extend([ - descr[dataset_name][0]['name'], - descr[dataset_name][1]['target'], - descr[dataset_name][2]['descr'], - descr[dataset_name][3]['access'] - ]) + table_list.extend( + [ + descr[dataset_name][0]["name"], + descr[dataset_name][1]["target"], + descr[dataset_name][2]["descr"], + descr[dataset_name][3]["access"], + ] + ) db_num += 1 mdFile.new_table(columns=4, rows=db_num + 1, text=table_list, text_align="left") diff --git a/nkululeko/aug_train.py b/nkululeko/aug_train.py index 7318478d..4b42c95e 100644 --- a/nkululeko/aug_train.py +++ b/nkululeko/aug_train.py @@ -1,15 +1,17 @@ # aug_train.py # train with augmentations +import argparse import ast +import configparser import os.path + import numpy as np -import configparser -import argparse + import nkululeko.experiment as exp -from nkululeko.utils.util import Util -from nkululeko.constants import VERSION import nkululeko.glob_conf as glob_conf from nkululeko.augment import doit as augment +from nkululeko.constants import VERSION +from nkululeko.utils.util import Util def doit(config_file): diff --git a/nkululeko/augment.py b/nkululeko/augment.py index 32ce249f..72f872cd 100644 --- a/nkululeko/augment.py +++ b/nkululeko/augment.py @@ -2,13 +2,15 @@ # augment the training sets import argparse -import pandas as pd -import os import ast -from nkululeko.experiment import Experiment import configparser -from nkululeko.utils.util import Util +import os + +import pandas as pd + from nkululeko.constants import VERSION +from nkululeko.experiment import Experiment +from nkululeko.utils.util import Util def doit(config_file): diff --git a/nkululeko/augmenting/augmenter.py b/nkululeko/augmenting/augmenter.py index a3067b06..5ecb480d 100644 --- a/nkululeko/augmenting/augmenter.py +++ b/nkululeko/augmenting/augmenter.py @@ -1,10 +1,12 @@ # augmenter.py import os + +import audeer +import audiofile import pandas as pd from audiomentations import * from tqdm import tqdm -import audeer -import audiofile + from nkululeko.utils.util import Util diff --git a/nkululeko/augmenting/randomsplicer.py b/nkululeko/augmenting/randomsplicer.py index 6763927b..b52b19b1 100644 --- a/nkululeko/augmenting/randomsplicer.py +++ b/nkululeko/augmenting/randomsplicer.py @@ -13,13 +13,15 @@ """ -import pandas as pd -from tqdm import tqdm import os -import audiofile as af + import audeer -from nkululeko.utils.util import Util +import audiofile as af +import pandas as pd +from tqdm import tqdm + import nkululeko.augmenting.randomsplicing as rsp +from nkululeko.utils.util import Util class Randomsplicer: diff --git a/nkululeko/augmenting/randomsplicing.py b/nkululeko/augmenting/randomsplicing.py index d88eaaf8..cd0a7112 100644 --- a/nkululeko/augmenting/randomsplicing.py +++ b/nkululeko/augmenting/randomsplicing.py @@ -10,8 +10,9 @@ F. Burkhardt, Anna Derington, Matthias Kahlau, Klaus Scherer, Florian Eyben and Björn Schuller: Masking Speech Contents by Random Splicing: is Emotional Expression Preserved?, Proc. ICASSP, 2023 """ -import numpy as np + import librosa +import numpy as np def random_splicing( diff --git a/nkululeko/augmenting/resampler.py b/nkululeko/augmenting/resampler.py index 7e75e25a..58d8d340 100644 --- a/nkululeko/augmenting/resampler.py +++ b/nkululeko/augmenting/resampler.py @@ -2,12 +2,14 @@ resample a data frame """ + import os import shutil import audformat import pandas as pd import torchaudio + from nkululeko.utils.util import Util diff --git a/nkululeko/autopredict/ap_age.py b/nkululeko/autopredict/ap_age.py index d407cfdf..a92743f7 100644 --- a/nkululeko/autopredict/ap_age.py +++ b/nkululeko/autopredict/ap_age.py @@ -2,10 +2,12 @@ A predictor for age. Currently based on audEERING's agender model. """ -from nkululeko.utils.util import Util -from nkululeko.feature_extractor import FeatureExtractor + import ast + import nkululeko.glob_conf as glob_conf +from nkululeko.feature_extractor import FeatureExtractor +from nkululeko.utils.util import Util class AgePredictor: diff --git a/nkululeko/autopredict/ap_arousal.py b/nkululeko/autopredict/ap_arousal.py index 8dab9f95..c61b4440 100644 --- a/nkululeko/autopredict/ap_arousal.py +++ b/nkululeko/autopredict/ap_arousal.py @@ -2,10 +2,12 @@ A predictor for emotional arousal. Currently based on audEERING's emotional dimension model. """ -from nkululeko.utils.util import Util -from nkululeko.feature_extractor import FeatureExtractor + import ast + import nkululeko.glob_conf as glob_conf +from nkululeko.feature_extractor import FeatureExtractor +from nkululeko.utils.util import Util class ArousalPredictor: diff --git a/nkululeko/autopredict/ap_dominance.py b/nkululeko/autopredict/ap_dominance.py index ad4babae..62c66d89 100644 --- a/nkululeko/autopredict/ap_dominance.py +++ b/nkululeko/autopredict/ap_dominance.py @@ -3,10 +3,11 @@ Currently based on audEERING's emotional dimension model. """ -from nkululeko.utils.util import Util -from nkululeko.feature_extractor import FeatureExtractor import ast + import nkululeko.glob_conf as glob_conf +from nkululeko.feature_extractor import FeatureExtractor +from nkululeko.utils.util import Util class DominancePredictor: diff --git a/nkululeko/autopredict/ap_gender.py b/nkululeko/autopredict/ap_gender.py index ee32b6c0..04916f8e 100644 --- a/nkululeko/autopredict/ap_gender.py +++ b/nkululeko/autopredict/ap_gender.py @@ -2,10 +2,12 @@ A predictor for biological sex. Currently based on audEERING's agender model. """ -from nkululeko.utils.util import Util -from nkululeko.feature_extractor import FeatureExtractor + import ast + import nkululeko.glob_conf as glob_conf +from nkululeko.feature_extractor import FeatureExtractor +from nkululeko.utils.util import Util class GenderPredictor: diff --git a/nkululeko/autopredict/ap_mos.py b/nkululeko/autopredict/ap_mos.py index 701bc039..f74e3485 100644 --- a/nkululeko/autopredict/ap_mos.py +++ b/nkululeko/autopredict/ap_mos.py @@ -1,11 +1,14 @@ """" A predictor for MOS - mean opinion score. """ -from nkululeko.utils.util import Util + import ast + +import numpy as np + import nkululeko.glob_conf as glob_conf from nkululeko.feature_extractor import FeatureExtractor -import numpy as np +from nkululeko.utils.util import Util class MOSPredictor: diff --git a/nkululeko/autopredict/ap_pesq.py b/nkululeko/autopredict/ap_pesq.py index 72e939ed..6bddd7ba 100644 --- a/nkululeko/autopredict/ap_pesq.py +++ b/nkululeko/autopredict/ap_pesq.py @@ -1,11 +1,14 @@ """" A predictor for PESQ - Perceptual Evaluation of Speech Quality. """ -from nkululeko.utils.util import Util + import ast + +import numpy as np + import nkululeko.glob_conf as glob_conf from nkululeko.feature_extractor import FeatureExtractor -import numpy as np +from nkululeko.utils.util import Util class PESQPredictor: diff --git a/nkululeko/autopredict/ap_sdr.py b/nkululeko/autopredict/ap_sdr.py index 1e4c983e..88a9f161 100644 --- a/nkululeko/autopredict/ap_sdr.py +++ b/nkululeko/autopredict/ap_sdr.py @@ -2,11 +2,14 @@ A predictor for SDR - Signal to Distortion Ratio. as estimated by Scale-Invariant Signal-to-Distortion Ratio (SI-SDR) """ -from nkululeko.utils.util import Util + import ast + +import numpy as np + import nkululeko.glob_conf as glob_conf from nkululeko.feature_extractor import FeatureExtractor -import numpy as np +from nkululeko.utils.util import Util class SDRPredictor: diff --git a/nkululeko/autopredict/ap_snr.py b/nkululeko/autopredict/ap_snr.py index 9fc0dab5..35dcd0a7 100644 --- a/nkululeko/autopredict/ap_snr.py +++ b/nkululeko/autopredict/ap_snr.py @@ -1,11 +1,14 @@ """" A predictor for SNR - signal-to-noise ratio. """ -from nkululeko.utils.util import Util + import ast + +import numpy as np + import nkululeko.glob_conf as glob_conf from nkululeko.feature_extractor import FeatureExtractor -import numpy as np +from nkululeko.utils.util import Util class SNRPredictor: diff --git a/nkululeko/autopredict/ap_stoi.py b/nkululeko/autopredict/ap_stoi.py index 3ca40b2c..bfc972d4 100644 --- a/nkululeko/autopredict/ap_stoi.py +++ b/nkululeko/autopredict/ap_stoi.py @@ -1,11 +1,14 @@ """" A predictor for STOI - Short-Time Objective Intelligibility (STOI) """ -from nkululeko.utils.util import Util + import ast + +import numpy as np + import nkululeko.glob_conf as glob_conf from nkululeko.feature_extractor import FeatureExtractor -import numpy as np +from nkululeko.utils.util import Util class STOIPredictor: diff --git a/nkululeko/autopredict/ap_valence.py b/nkululeko/autopredict/ap_valence.py index edbc96c9..2349d2e5 100644 --- a/nkululeko/autopredict/ap_valence.py +++ b/nkululeko/autopredict/ap_valence.py @@ -2,10 +2,12 @@ A predictor for emotional valence. Currently based on audEERING's emotional dimension model. """ -from nkululeko.utils.util import Util -from nkululeko.feature_extractor import FeatureExtractor + import ast + import nkululeko.glob_conf as glob_conf +from nkululeko.feature_extractor import FeatureExtractor +from nkululeko.utils.util import Util class ValencePredictor: diff --git a/nkululeko/cacheddataset.py b/nkululeko/cacheddataset.py index 93f29ca2..237b337b 100644 --- a/nkululeko/cacheddataset.py +++ b/nkululeko/cacheddataset.py @@ -1,5 +1,5 @@ -import torch import numpy as np +import torch class CachedDataset(torch.utils.data.Dataset): diff --git a/nkululeko/data/dataset.py b/nkululeko/data/dataset.py index 36c096b9..326b7e7f 100644 --- a/nkululeko/data/dataset.py +++ b/nkululeko/data/dataset.py @@ -3,10 +3,10 @@ import os import os.path from random import sample -import numpy as np -import pandas as pd import audformat +import numpy as np +import pandas as pd import nkululeko.glob_conf as glob_conf from nkululeko.filter_data import DataFilter @@ -461,8 +461,7 @@ def finish_up(self, df, storage): def balanced_split(self): """One way to split train and eval sets: Generate split dataframes for some balancing criterion""" - from splitutils import binning - from splitutils import optimize_traintest_split + from splitutils import binning, optimize_traintest_split seed = 42 k = 30 diff --git a/nkululeko/data/dataset_csv.py b/nkululeko/data/dataset_csv.py index 42ef898e..a1cb6e92 100644 --- a/nkululeko/data/dataset_csv.py +++ b/nkululeko/data/dataset_csv.py @@ -2,10 +2,12 @@ import ast import os import os.path -import pandas as pd + import audformat.utils -from nkululeko.data.dataset import Dataset +import pandas as pd + import nkululeko.glob_conf as glob_conf +from nkululeko.data.dataset import Dataset from nkululeko.reporting.report_item import ReportItem diff --git a/nkululeko/demo-ft.py b/nkululeko/demo-ft.py index f465cd5a..752a05ed 100644 --- a/nkululeko/demo-ft.py +++ b/nkululeko/demo-ft.py @@ -1,9 +1,10 @@ -from sklearn import pipeline -from transformers import pipelines import argparse import configparser import os +from sklearn import pipeline +from transformers import pipelines + from nkululeko.utils.util import get_exp_dir parser = argparse.ArgumentParser() diff --git a/nkululeko/demo_feats.py b/nkululeko/demo_feats.py index d5fc822d..2431b9f9 100644 --- a/nkululeko/demo_feats.py +++ b/nkululeko/demo_feats.py @@ -1,13 +1,14 @@ # demo_feats.py # Test some features extracted -from nkululeko.experiment import Experiment -import configparser -from nkululeko.utils.util import Util -from nkululeko.constants import VERSION import argparse +import configparser import os +from nkululeko.constants import VERSION +from nkululeko.experiment import Experiment +from nkululeko.utils.util import Util + def main(src_dir): parser = argparse.ArgumentParser(description="Call the nkululeko framework.") diff --git a/nkululeko/demo_predictor.py b/nkululeko/demo_predictor.py index 879ad7fe..634b8d14 100644 --- a/nkululeko/demo_predictor.py +++ b/nkululeko/demo_predictor.py @@ -1,11 +1,10 @@ # demo_predictor.py import os -import numpy as np -import pandas as pd - import audformat import audiofile +import numpy as np +import pandas as pd import nkululeko.glob_conf as glob_conf from nkululeko.utils.util import Util diff --git a/nkululeko/ensemble.py b/nkululeko/ensemble.py index 3a62cf87..c0fe8fdb 100644 --- a/nkululeko/ensemble.py +++ b/nkululeko/ensemble.py @@ -15,23 +15,20 @@ ValueError: If an unknown ensemble method is provided. AssertionError: If the number of config files is less than 2 for majority voting. """ + #!/usr/bin/env python # -*- coding: utf-8 -*- -from typing import List import configparser import time from argparse import ArgumentParser from pathlib import Path +from typing import List import numpy as np import pandas as pd - -from sklearn.metrics import ( - balanced_accuracy_score, - classification_report, -) +from sklearn.metrics import balanced_accuracy_score, classification_report from nkululeko.constants import VERSION from nkululeko.experiment import Experiment diff --git a/nkululeko/experiment.py b/nkululeko/experiment.py index 92a00da2..df0e66c1 100644 --- a/nkululeko/experiment.py +++ b/nkululeko/experiment.py @@ -5,13 +5,13 @@ import random import time +import audeer +import audformat import numpy as np import pandas as pd from sklearn.preprocessing import LabelEncoder -import audeer -import audformat - +import nkululeko.glob_conf as glob_conf from nkululeko.data.dataset import Dataset from nkululeko.data.dataset_csv import Dataset_CSV from nkululeko.demo_predictor import Demo_predictor @@ -19,7 +19,6 @@ from nkululeko.feature_extractor import FeatureExtractor from nkululeko.file_checker import FileChecker from nkululeko.filter_data import DataFilter -import nkululeko.glob_conf as glob_conf from nkululeko.plots import Plots from nkululeko.reporting.report import Report from nkululeko.runmanager import Runmanager @@ -478,7 +477,8 @@ def autopredict(self): predictor = ValencePredictor(df) df = predictor.predict(sample_selection) elif target == "dominance": - from nkululeko.autopredict.ap_dominance import DominancePredictor + from nkululeko.autopredict.ap_dominance import \ + DominancePredictor predictor = DominancePredictor(df) df = predictor.predict(sample_selection) diff --git a/nkululeko/experiment_felix.py b/nkululeko/experiment_felix.py index 92b3d5b7..898546e7 100644 --- a/nkululeko/experiment_felix.py +++ b/nkululeko/experiment_felix.py @@ -5,13 +5,13 @@ import random import time +import audeer +import audformat import numpy as np import pandas as pd from sklearn.preprocessing import LabelEncoder -import audeer -import audformat - +import nkululeko.glob_conf as glob_conf from nkululeko.data.dataset import Dataset from nkululeko.data.dataset_csv import Dataset_CSV from nkululeko.demo_predictor import Demo_predictor @@ -19,7 +19,6 @@ from nkululeko.feature_extractor import FeatureExtractor from nkululeko.file_checker import FileChecker from nkululeko.filter_data import DataFilter -import nkululeko.glob_conf as glob_conf from nkululeko.plots import Plots from nkululeko.reporting.report import Report from nkululeko.runmanager import Runmanager @@ -458,7 +457,8 @@ def autopredict(self): predictor = ValencePredictor(df) df = predictor.predict(sample_selection) elif target == "dominance": - from nkululeko.autopredict.ap_dominance import DominancePredictor + from nkululeko.autopredict.ap_dominance import \ + DominancePredictor predictor = DominancePredictor(df) df = predictor.predict(sample_selection) diff --git a/nkululeko/explore.py b/nkululeko/explore.py index 06dc21c8..919ce254 100644 --- a/nkululeko/explore.py +++ b/nkululeko/explore.py @@ -19,6 +19,7 @@ the configuration file to use. If no configuration file is provided, it will look for an `exp.ini` file in the same directory as the script. """ + # explore.py # explore the feature sets diff --git a/nkululeko/export.py b/nkululeko/export.py index 0fb76970..43834626 100644 --- a/nkululeko/export.py +++ b/nkululeko/export.py @@ -1,16 +1,18 @@ # export.py # export the loaded training and test sets to it's own folder -import os -import pandas as pd +import argparse import configparser +import os +import shutil + import audeer -import argparse import audiofile +import pandas as pd + +from nkululeko.constants import VERSION from nkululeko.experiment import Experiment from nkululeko.utils.util import Util -from nkululeko.constants import VERSION -import shutil def main(src_dir): diff --git a/nkululeko/feat_extract/feats_agender.py b/nkululeko/feat_extract/feats_agender.py index 619c904f..b91ad5bf 100644 --- a/nkululeko/feat_extract/feats_agender.py +++ b/nkululeko/feat_extract/feats_agender.py @@ -1,16 +1,17 @@ # feats_agender.py -from nkululeko.feat_extract.featureset import Featureset import os # import pandas as pd import audeer -import nkululeko.glob_conf as glob_conf +import audinterface import audonnx import numpy as np -import audinterface import torch +import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset + class AgenderSet(Featureset): """ diff --git a/nkululeko/feat_extract/feats_agender_agender.py b/nkululeko/feat_extract/feats_agender_agender.py index 9d758c5c..5c495925 100644 --- a/nkululeko/feat_extract/feats_agender_agender.py +++ b/nkululeko/feat_extract/feats_agender_agender.py @@ -1,13 +1,15 @@ # feats_audmodel_dim.py -from nkululeko.feat_extract.featureset import Featureset import os + import audeer -import nkululeko.glob_conf as glob_conf +import audinterface import audonnx import numpy as np -import audinterface import torch +import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset + class Agender_agenderSet(Featureset): """ diff --git a/nkululeko/feat_extract/feats_analyser.py b/nkululeko/feat_extract/feats_analyser.py index 2fcf7217..809d9da4 100644 --- a/nkululeko/feat_extract/feats_analyser.py +++ b/nkululeko/feat_extract/feats_analyser.py @@ -1,18 +1,18 @@ # feats_analyser.py import ast + +import matplotlib.pyplot as plt import pandas as pd from sklearn.inspection import permutation_importance -from sklearn.linear_model import LogisticRegression -from sklearn.tree import DecisionTreeClassifier -from sklearn.linear_model import LinearRegression -from sklearn.tree import DecisionTreeRegressor -import matplotlib.pyplot as plt -from nkululeko.utils.util import Util -from nkululeko.utils.stats import normalize -from nkululeko.plots import Plots +from sklearn.linear_model import LinearRegression, LogisticRegression +from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor + import nkululeko.glob_conf as glob_conf -from nkululeko.reporting.report_item import ReportItem +from nkululeko.plots import Plots from nkululeko.reporting.defines import Header +from nkululeko.reporting.report_item import ReportItem +from nkululeko.utils.stats import normalize +from nkululeko.utils.util import Util class FeatureAnalyser: diff --git a/nkululeko/feat_extract/feats_ast.py b/nkululeko/feat_extract/feats_ast.py index 46f53327..132806a7 100644 --- a/nkululeko/feat_extract/feats_ast.py +++ b/nkululeko/feat_extract/feats_ast.py @@ -6,7 +6,7 @@ import torch import torchaudio from tqdm import tqdm -from transformers import AutoProcessor, ASTModel +from transformers import ASTModel, AutoProcessor import nkululeko.glob_conf as glob_conf from nkululeko.feat_extract.featureset import Featureset diff --git a/nkululeko/feat_extract/feats_auddim.py b/nkululeko/feat_extract/feats_auddim.py index eaface98..389f758f 100644 --- a/nkululeko/feat_extract/feats_auddim.py +++ b/nkululeko/feat_extract/feats_auddim.py @@ -1,15 +1,14 @@ # feats_audmodel_dim.py import os -import numpy as np -import torch - import audeer import audinterface import audonnx +import numpy as np +import torch -from nkululeko.feat_extract.featureset import Featureset import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset class AuddimSet(Featureset): diff --git a/nkululeko/feat_extract/feats_audmodel.py b/nkululeko/feat_extract/feats_audmodel.py index 8f298612..856969d8 100644 --- a/nkululeko/feat_extract/feats_audmodel.py +++ b/nkululeko/feat_extract/feats_audmodel.py @@ -4,9 +4,10 @@ import audeer import audinterface import audonnx -import nkululeko.glob_conf as glob_conf import numpy as np import torch + +import nkululeko.glob_conf as glob_conf from nkululeko.feat_extract.featureset import Featureset diff --git a/nkululeko/feat_extract/feats_clap.py b/nkululeko/feat_extract/feats_clap.py index 298cc7b5..dbe84af6 100644 --- a/nkululeko/feat_extract/feats_clap.py +++ b/nkululeko/feat_extract/feats_clap.py @@ -1,12 +1,14 @@ # feats_clap.py -from nkululeko.feat_extract.featureset import Featureset import os + +import audiofile +import laion_clap import pandas as pd from tqdm import tqdm + import nkululeko.glob_conf as glob_conf -import laion_clap -import audiofile +from nkululeko.feat_extract.featureset import Featureset class ClapSet(Featureset): diff --git a/nkululeko/feat_extract/feats_hubert.py b/nkululeko/feat_extract/feats_hubert.py index 99c07b94..101081f9 100644 --- a/nkululeko/feat_extract/feats_hubert.py +++ b/nkululeko/feat_extract/feats_hubert.py @@ -10,11 +10,10 @@ import torch import torchaudio from tqdm import tqdm -from transformers import HubertModel -from transformers import Wav2Vec2FeatureExtractor +from transformers import HubertModel, Wav2Vec2FeatureExtractor -from nkululeko.feat_extract.featureset import Featureset import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset class Hubert(Featureset): diff --git a/nkululeko/feat_extract/feats_import.py b/nkululeko/feat_extract/feats_import.py index d10dbd4c..5e939daf 100644 --- a/nkululeko/feat_extract/feats_import.py +++ b/nkululeko/feat_extract/feats_import.py @@ -1,9 +1,11 @@ # feats_import.py -import os import ast +import os + import audformat import pandas as pd + from nkululeko.feat_extract.featureset import Featureset diff --git a/nkululeko/feat_extract/feats_mld.py b/nkululeko/feat_extract/feats_mld.py index 96d9e06b..97208fbc 100644 --- a/nkululeko/feat_extract/feats_mld.py +++ b/nkululeko/feat_extract/feats_mld.py @@ -1,8 +1,9 @@ # mld_fset.py -from nkululeko.feat_extract.featureset import Featureset -import sys import os +import sys + import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset class MLD_set(Featureset): diff --git a/nkululeko/feat_extract/feats_mos.py b/nkululeko/feat_extract/feats_mos.py index 9db6be11..b804f0af 100644 --- a/nkululeko/feat_extract/feats_mos.py +++ b/nkululeko/feat_extract/feats_mos.py @@ -12,13 +12,15 @@ """ import os + +import audiofile import pandas as pd -from tqdm import tqdm import torch import torchaudio from torchaudio.pipelines import SQUIM_SUBJECTIVE from torchaudio.utils import download_asset -import audiofile +from tqdm import tqdm + import nkululeko.glob_conf as glob_conf from nkululeko.feat_extract.featureset import Featureset diff --git a/nkululeko/feat_extract/feats_opensmile.py b/nkululeko/feat_extract/feats_opensmile.py index aadaf8ed..49b5e3a9 100644 --- a/nkululeko/feat_extract/feats_opensmile.py +++ b/nkululeko/feat_extract/feats_opensmile.py @@ -1,9 +1,11 @@ # opensmileset.py -from nkululeko.feat_extract.featureset import Featureset import os + +import opensmile import pandas as pd + import nkululeko.glob_conf as glob_conf -import opensmile +from nkululeko.feat_extract.featureset import Featureset class Opensmileset(Featureset): diff --git a/nkululeko/feat_extract/feats_oxbow.py b/nkululeko/feat_extract/feats_oxbow.py index 8d1850ee..6a3d875f 100644 --- a/nkululeko/feat_extract/feats_oxbow.py +++ b/nkululeko/feat_extract/feats_oxbow.py @@ -1,9 +1,11 @@ # feats_oxbow.py -from nkululeko.feat_extract.featureset import Featureset import os -import pandas as pd + import opensmile +import pandas as pd + +from nkululeko.feat_extract.featureset import Featureset class Openxbow(Featureset): diff --git a/nkululeko/feat_extract/feats_praat.py b/nkululeko/feat_extract/feats_praat.py index d56178e4..972a5681 100644 --- a/nkululeko/feat_extract/feats_praat.py +++ b/nkululeko/feat_extract/feats_praat.py @@ -4,9 +4,9 @@ import numpy as np import pandas as pd +import nkululeko.glob_conf as glob_conf from nkululeko.feat_extract import feinberg_praat from nkululeko.feat_extract.featureset import Featureset -import nkululeko.glob_conf as glob_conf class PraatSet(Featureset): @@ -51,8 +51,8 @@ def extract(self): self.df = self.df.astype(float) def extract_sample(self, signal, sr): - import audiofile import audformat + import audiofile tmp_audio_names = ["praat_audio_tmp.wav"] audiofile.write(tmp_audio_names[0], signal, sr) diff --git a/nkululeko/feat_extract/feats_snr.py b/nkululeko/feat_extract/feats_snr.py index 73242d23..fb1dad79 100644 --- a/nkululeko/feat_extract/feats_snr.py +++ b/nkululeko/feat_extract/feats_snr.py @@ -2,6 +2,7 @@ SNR (signal to noise ratio) is extracted as acoustic features. """ + import os import audiofile diff --git a/nkululeko/feat_extract/feats_spectra.py b/nkululeko/feat_extract/feats_spectra.py index f4afece4..036b45bf 100644 --- a/nkululeko/feat_extract/feats_spectra.py +++ b/nkululeko/feat_extract/feats_spectra.py @@ -6,19 +6,20 @@ """ import os +import pathlib + +import audeer +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd import torchaudio import torchaudio.transforms as T from PIL import Image, ImageOps -import pandas as pd -import numpy as np -import matplotlib.pyplot as plt from tqdm import tqdm -import pathlib -import audeer -from nkululeko.feat_extract.featureset import Featureset -from nkululeko.constants import SAMPLING_RATE import nkululeko.glob_conf as glob_conf +from nkululeko.constants import SAMPLING_RATE +from nkululeko.feat_extract.featureset import Featureset class Spectraloader(Featureset): diff --git a/nkululeko/feat_extract/feats_spkrec.py b/nkululeko/feat_extract/feats_spkrec.py index 9ee267a1..a3b971df 100644 --- a/nkululeko/feat_extract/feats_spkrec.py +++ b/nkululeko/feat_extract/feats_spkrec.py @@ -7,14 +7,15 @@ import os -import nkululeko.glob_conf as glob_conf import pandas as pd import torch import torchaudio -from nkululeko.feat_extract.featureset import Featureset from speechbrain.inference import EncoderClassifier from tqdm import tqdm +import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset + # from transformers import HubertModel, Wav2Vec2FeatureExtractor diff --git a/nkululeko/feat_extract/feats_squim.py b/nkululeko/feat_extract/feats_squim.py index 1375b3d2..c7e326bf 100644 --- a/nkululeko/feat_extract/feats_squim.py +++ b/nkululeko/feat_extract/feats_squim.py @@ -14,16 +14,15 @@ import os +import audiofile import pandas as pd import torch import torchaudio from torchaudio.pipelines import SQUIM_OBJECTIVE from tqdm import tqdm -import audiofile - -from nkululeko.feat_extract.featureset import Featureset import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset class SquimSet(Featureset): diff --git a/nkululeko/feat_extract/feats_trill.py b/nkululeko/feat_extract/feats_trill.py index 2271da2f..f6aafeca 100644 --- a/nkululeko/feat_extract/feats_trill.py +++ b/nkululeko/feat_extract/feats_trill.py @@ -1,16 +1,14 @@ # feats_trill.py import os +import audiofile as af import pandas as pd import tensorflow as tf import tensorflow_hub as hub from tqdm import tqdm -import audiofile as af - -from nkululeko.feat_extract.featureset import Featureset import nkululeko.glob_conf as glob_conf - +from nkululeko.feat_extract.featureset import Featureset # Import TF 2.X and make sure we're running eager. assert tf.executing_eagerly() diff --git a/nkululeko/feat_extract/feats_wav2vec2.py b/nkululeko/feat_extract/feats_wav2vec2.py index 07db886a..f22c770b 100644 --- a/nkululeko/feat_extract/feats_wav2vec2.py +++ b/nkululeko/feat_extract/feats_wav2vec2.py @@ -7,14 +7,16 @@ """ import os -from tqdm import tqdm + import pandas as pd import torch import torchaudio -from transformers import Wav2Vec2FeatureExtractor, Wav2Vec2Model import transformers -from nkululeko.feat_extract.featureset import Featureset +from tqdm import tqdm +from transformers import Wav2Vec2FeatureExtractor, Wav2Vec2Model + import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset class Wav2vec2(Featureset): diff --git a/nkululeko/feat_extract/feats_wavlm.py b/nkululeko/feat_extract/feats_wavlm.py index e09d0d80..ab841db1 100644 --- a/nkululeko/feat_extract/feats_wavlm.py +++ b/nkululeko/feat_extract/feats_wavlm.py @@ -8,11 +8,10 @@ import torch import torchaudio from tqdm import tqdm -from transformers import Wav2Vec2FeatureExtractor -from transformers import WavLMModel +from transformers import Wav2Vec2FeatureExtractor, WavLMModel -from nkululeko.feat_extract.featureset import Featureset import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset class Wavlm(Featureset): diff --git a/nkululeko/feat_extract/feats_whisper.py b/nkululeko/feat_extract/feats_whisper.py index b0333bec..cda5a8ea 100644 --- a/nkululeko/feat_extract/feats_whisper.py +++ b/nkululeko/feat_extract/feats_whisper.py @@ -1,16 +1,14 @@ # feats_whisper.py import os -import pandas as pd -import torch -from transformers import AutoFeatureExtractor -from transformers import WhisperModel - import audeer import audiofile +import pandas as pd +import torch +from transformers import AutoFeatureExtractor, WhisperModel -from nkululeko.feat_extract.featureset import Featureset import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset class Whisper(Featureset): diff --git a/nkululeko/feat_extract/featureset.py b/nkululeko/feat_extract/featureset.py index c797fdc8..fd0d3dde 100644 --- a/nkululeko/feat_extract/featureset.py +++ b/nkululeko/feat_extract/featureset.py @@ -1,8 +1,10 @@ # featureset.py +import ast + import pandas as pd -from nkululeko.utils.util import Util + import nkululeko.glob_conf as glob_conf -import ast +from nkululeko.utils.util import Util class Featureset: diff --git a/nkululeko/feat_extract/feinberg_praat.py b/nkululeko/feat_extract/feinberg_praat.py index cc166207..502e6963 100644 --- a/nkululeko/feat_extract/feinberg_praat.py +++ b/nkululeko/feat_extract/feinberg_praat.py @@ -7,6 +7,7 @@ import math import statistics +import audiofile import numpy as np import pandas as pd import parselmouth @@ -15,9 +16,6 @@ from sklearn.decomposition import PCA from tqdm import tqdm -import audiofile - - # This is the function to measure source acoustics using default male parameters. diff --git a/nkululeko/feat_extract/transformer_feature_extractor.py b/nkululeko/feat_extract/transformer_feature_extractor.py index dd63db83..e9134286 100644 --- a/nkululeko/feat_extract/transformer_feature_extractor.py +++ b/nkululeko/feat_extract/transformer_feature_extractor.py @@ -1,12 +1,14 @@ # transformer_feature_extractor.py import os + import pandas as pd import torch import torchaudio from tqdm import tqdm -from nkululeko.feat_extract.featureset import Featureset + import nkululeko.glob_conf as glob_conf +from nkululeko.feat_extract.featureset import Featureset class TransformerFeatureExtractor(Featureset): diff --git a/nkululeko/file_checker.py b/nkululeko/file_checker.py index f1837afe..9c5b144a 100644 --- a/nkululeko/file_checker.py +++ b/nkululeko/file_checker.py @@ -1,6 +1,7 @@ -from nkululeko.utils.util import Util import os +from nkululeko.utils.util import Util + class FileChecker: def __init__(self, df): diff --git a/nkululeko/filter_data.py b/nkululeko/filter_data.py index 899989e1..58ea3745 100644 --- a/nkululeko/filter_data.py +++ b/nkululeko/filter_data.py @@ -1,8 +1,10 @@ +import ast + import audformat import pandas as pd + import nkululeko.glob_conf as glob_conf from nkululeko.utils.util import Util -import ast class DataFilter: diff --git a/nkululeko/fixedsegment.py b/nkululeko/fixedsegment.py index 7dba0d7d..7f957c63 100644 --- a/nkululeko/fixedsegment.py +++ b/nkululeko/fixedsegment.py @@ -10,10 +10,11 @@ This function will recursively search the input directory for all .wav audio files, and then segment each file into smaller chunks with the specified length and overlap. The segmented audio files will be saved in the output directory, preserving the relative directory structure from the input directory. """ +import argparse +import glob from pathlib import Path + from pydub import AudioSegment -import glob -import argparse # list audio files given a directory diff --git a/nkululeko/models/model.py b/nkululeko/models/model.py index d22e87a9..61775850 100644 --- a/nkululeko/models/model.py +++ b/nkululeko/models/model.py @@ -3,13 +3,12 @@ import pickle import random -from joblib import parallel_backend import numpy as np import pandas as pd -from sklearn.model_selection import GridSearchCV -from sklearn.model_selection import LeaveOneGroupOut -from sklearn.model_selection import StratifiedKFold import sklearn.utils +from joblib import parallel_backend +from sklearn.model_selection import (GridSearchCV, LeaveOneGroupOut, + StratifiedKFold) import nkululeko.glob_conf as glob_conf from nkululeko.reporting.reporter import Reporter diff --git a/nkululeko/models/model_bayes.py b/nkululeko/models/model_bayes.py index dbddbb8b..a3ae97b5 100644 --- a/nkululeko/models/model_bayes.py +++ b/nkululeko/models/model_bayes.py @@ -1,6 +1,7 @@ # model_bayes.py from sklearn.naive_bayes import GaussianNB + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_cnn.py b/nkululeko/models/model_cnn.py index 7ce5476c..585aac8d 100644 --- a/nkululeko/models/model_cnn.py +++ b/nkululeko/models/model_cnn.py @@ -9,13 +9,13 @@ import numpy as np import pandas as pd -from PIL import Image -from sklearn.metrics import recall_score import torch import torch.nn as nn import torch.nn.functional as F -from torch.utils.data import Dataset import torchvision.transforms as transforms +from PIL import Image +from sklearn.metrics import recall_score +from torch.utils.data import Dataset import nkululeko.glob_conf as glob_conf from nkululeko.losses.loss_softf1loss import SoftF1Loss diff --git a/nkululeko/models/model_gmm.py b/nkululeko/models/model_gmm.py index b3426881..e74e738e 100644 --- a/nkululeko/models/model_gmm.py +++ b/nkululeko/models/model_gmm.py @@ -1,8 +1,9 @@ # model_gmm.py +import pandas as pd from sklearn import mixture + from nkululeko.models.model import Model -import pandas as pd class GMM_model(Model): diff --git a/nkululeko/models/model_knn.py b/nkululeko/models/model_knn.py index 4c77fbbe..12b7dd8c 100644 --- a/nkululeko/models/model_knn.py +++ b/nkululeko/models/model_knn.py @@ -1,6 +1,7 @@ # model_knn.py from sklearn.neighbors import KNeighborsClassifier + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_knn_reg.py b/nkululeko/models/model_knn_reg.py index b728679f..029a6e50 100644 --- a/nkululeko/models/model_knn_reg.py +++ b/nkululeko/models/model_knn_reg.py @@ -1,6 +1,7 @@ # model_knn_reg.py from sklearn.neighbors import KNeighborsRegressor + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_lin_reg.py b/nkululeko/models/model_lin_reg.py index dc5b7491..0189463d 100644 --- a/nkululeko/models/model_lin_reg.py +++ b/nkululeko/models/model_lin_reg.py @@ -1,6 +1,7 @@ # model_knn_reg.py from sklearn.linear_model import LinearRegression + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_mlp.py b/nkululeko/models/model_mlp.py index b83f7592..8b2bece5 100644 --- a/nkululeko/models/model_mlp.py +++ b/nkululeko/models/model_mlp.py @@ -4,8 +4,8 @@ import numpy as np import pandas as pd -from sklearn.metrics import recall_score import torch +from sklearn.metrics import recall_score import nkululeko.glob_conf as glob_conf from nkululeko.losses.loss_softf1loss import SoftF1Loss diff --git a/nkululeko/models/model_mlp_regression.py b/nkululeko/models/model_mlp_regression.py index 43273758..36bb4667 100644 --- a/nkululeko/models/model_mlp_regression.py +++ b/nkululeko/models/model_mlp_regression.py @@ -4,10 +4,7 @@ import numpy as np import torch - -from audmetric import concordance_cc -from audmetric import mean_absolute_error -from audmetric import mean_squared_error +from audmetric import concordance_cc, mean_absolute_error, mean_squared_error import nkululeko.glob_conf as glob_conf from nkululeko.losses.loss_ccc import ConcordanceCorCoeff diff --git a/nkululeko/models/model_svm.py b/nkululeko/models/model_svm.py index d4c11da3..f7f9c51a 100644 --- a/nkululeko/models/model_svm.py +++ b/nkululeko/models/model_svm.py @@ -1,6 +1,7 @@ # model_svm.py from sklearn import svm + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_svr.py b/nkululeko/models/model_svr.py index ee6d4240..e7cdcd7e 100644 --- a/nkululeko/models/model_svr.py +++ b/nkululeko/models/model_svr.py @@ -1,6 +1,7 @@ # svrmodel.py from sklearn import svm + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_tree.py b/nkululeko/models/model_tree.py index d8bf6830..5d5a5886 100644 --- a/nkululeko/models/model_tree.py +++ b/nkululeko/models/model_tree.py @@ -1,6 +1,7 @@ # model_tree.py from sklearn.tree import DecisionTreeClassifier + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_tree_reg.py b/nkululeko/models/model_tree_reg.py index f5ad2309..7070790b 100644 --- a/nkululeko/models/model_tree_reg.py +++ b/nkululeko/models/model_tree_reg.py @@ -1,6 +1,7 @@ # model_tree_reg.py from sklearn.tree import DecisionTreeRegressor + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_tuned.py b/nkululeko/models/model_tuned.py index f5183073..61b29532 100644 --- a/nkululeko/models/model_tuned.py +++ b/nkululeko/models/model_tuned.py @@ -7,22 +7,22 @@ import pickle import typing +import audeer +import audiofile +import audmetric import datasets import numpy as np import pandas as pd import torch import transformers -from transformers.models.wav2vec2.modeling_wav2vec2 import Wav2Vec2Model -from transformers.models.wav2vec2.modeling_wav2vec2 import Wav2Vec2PreTrainedModel - -import audeer -import audiofile -import audmetric +from transformers.models.wav2vec2.modeling_wav2vec2 import ( + Wav2Vec2Model, Wav2Vec2PreTrainedModel) import nkululeko.glob_conf as glob_conf from nkululeko.models.model import Model as BaseModel from nkululeko.reporting.reporter import Reporter + class TunedModel(BaseModel): def __init__(self, df_train, df_test, feats_train, feats_test): """Constructor taking the configuration and all dataframes.""" @@ -91,29 +91,42 @@ def _init_model(self): df = y.reset_index() df.start = df.start.dt.total_seconds() df.end = df.end.dt.total_seconds() - # ds = datasets.Dataset.from_pandas(df) - # dataset[split] = ds + # ds = datasets.Dataset.from_pandas(df) + # dataset[split] = ds - # self.dataset = datasets.DatasetDict(dataset) + # self.dataset = datasets.DatasetDict(dataset) if split == "train" and self.balancing: if self.balancing == "ros": from imblearn.over_sampling import RandomOverSampler + sampler = RandomOverSampler(random_state=42) elif self.balancing == "smote": from imblearn.over_sampling import SMOTE + sampler = SMOTE(random_state=42) elif self.balancing == "adasyn": from imblearn.over_sampling import ADASYN + sampler = ADASYN(random_state=42) else: self.util.error(f"Unknown balancing algorithm: {self.balancing}") - - X_resampled, y_resampled = sampler.fit_resample(df[['start', 'end']], df['targets']) - df = pd.DataFrame({'start': X_resampled['start'], 'end': X_resampled['end'], 'targets': y_resampled}) + + X_resampled, y_resampled = sampler.fit_resample( + df[["start", "end"]], df["targets"] + ) + df = pd.DataFrame( + { + "start": X_resampled["start"], + "end": X_resampled["end"], + "targets": y_resampled, + } + ) # print the before and after class distribution - self.util.debug(f"balanced with: {self.balancing}, new size: {len(df)}, was {len(data_sources[split])}") - + self.util.debug( + f"balanced with: {self.balancing}, new size: {len(df)}, was {len(data_sources[split])}" + ) + ds = datasets.Dataset.from_pandas(df) dataset[split] = ds @@ -623,4 +636,3 @@ def forward(self, prediction, ground_truth): ccc = numerator / denominator return 1 - ccc - diff --git a/nkululeko/models/model_xgb.py b/nkululeko/models/model_xgb.py index 681ec37a..85b3a212 100644 --- a/nkululeko/models/model_xgb.py +++ b/nkululeko/models/model_xgb.py @@ -1,6 +1,7 @@ # xgbmodel.py from xgboost import XGBClassifier + from nkululeko.models.model import Model diff --git a/nkululeko/models/model_xgr.py b/nkululeko/models/model_xgr.py index f78bfebb..2347f34a 100644 --- a/nkululeko/models/model_xgr.py +++ b/nkululeko/models/model_xgr.py @@ -1,6 +1,7 @@ # xgrmodel.py from xgboost.sklearn import XGBRegressor + from nkululeko.models.model import Model diff --git a/nkululeko/multidb.py b/nkululeko/multidb.py index d69738f3..a7c9cb6a 100644 --- a/nkululeko/multidb.py +++ b/nkululeko/multidb.py @@ -5,6 +5,7 @@ The `plot_heatmap` function generates a heatmap plot of the results and saves it to a file, along with some summary statistics. """ + # main.py # Demonstration code to use the ML-experiment framework diff --git a/nkululeko/nkululeko.py b/nkululeko/nkululeko.py index d5c6db62..e2b1a137 100644 --- a/nkululeko/nkululeko.py +++ b/nkululeko/nkululeko.py @@ -6,8 +6,8 @@ import numpy as np -from nkululeko.constants import VERSION import nkululeko.experiment as exp +from nkululeko.constants import VERSION from nkululeko.utils.util import Util diff --git a/nkululeko/reporting/latex_writer.py b/nkululeko/reporting/latex_writer.py index 42c4dfbf..34611a15 100644 --- a/nkululeko/reporting/latex_writer.py +++ b/nkululeko/reporting/latex_writer.py @@ -3,8 +3,9 @@ print out report as latex file and pdf """ -from pylatex import Document, Section, Subsection, Command, Figure +from pylatex import Command, Document, Figure, Section, Subsection from pylatex.utils import NoEscape + from nkululeko.utils.util import Util diff --git a/nkululeko/reporting/report.py b/nkululeko/reporting/report.py index 288918bb..d666cf76 100644 --- a/nkululeko/reporting/report.py +++ b/nkululeko/reporting/report.py @@ -4,8 +4,9 @@ Collector class for report items collected during module processing. """ -from nkululeko.utils.util import Util + from nkululeko.reporting.latex_writer import LatexWriter +from nkululeko.utils.util import Util class Report: diff --git a/nkululeko/reporting/reporter.py b/nkululeko/reporting/reporter.py index 1cb1d093..7020a0ff 100644 --- a/nkululeko/reporting/reporter.py +++ b/nkululeko/reporting/reporter.py @@ -5,30 +5,16 @@ import matplotlib.pyplot as plt import numpy as np - # from torch import is_tensor -from audmetric import ( - accuracy, - concordance_cc, - mean_absolute_error, - mean_squared_error, - unweighted_average_recall, -) - +from audmetric import (accuracy, concordance_cc, mean_absolute_error, + mean_squared_error, unweighted_average_recall) # import os from confidence_intervals import evaluate_with_conf_int from scipy.special import softmax from scipy.stats import entropy, pearsonr -from sklearn.metrics import ( - ConfusionMatrixDisplay, - auc, - classification_report, - confusion_matrix, - r2_score, - roc_auc_score, - roc_curve, - RocCurveDisplay, -) +from sklearn.metrics import (ConfusionMatrixDisplay, RocCurveDisplay, auc, + classification_report, confusion_matrix, r2_score, + roc_auc_score, roc_curve) import nkululeko.glob_conf as glob_conf from nkululeko.plots import Plots diff --git a/nkululeko/resample.py b/nkululeko/resample.py index f64a912b..bf9476a7 100644 --- a/nkululeko/resample.py +++ b/nkululeko/resample.py @@ -4,14 +4,15 @@ import argparse import configparser import os -import pandas as pd + import audformat -from nkululeko.augmenting.resampler import Resampler -from nkululeko.utils.util import Util +import pandas as pd +from nkululeko.augmenting.resampler import Resampler from nkululeko.constants import VERSION from nkululeko.experiment import Experiment from nkululeko.utils.files import find_files +from nkululeko.utils.util import Util def main(src_dir): diff --git a/nkululeko/resample_cli.py b/nkululeko/resample_cli.py index f6376c3f..c0ebfec0 100644 --- a/nkululeko/resample_cli.py +++ b/nkululeko/resample_cli.py @@ -1,13 +1,14 @@ import argparse import configparser import os -import pandas as pd + import audformat -from nkululeko.augmenting.resampler import Resampler -from nkululeko.utils.util import Util +import pandas as pd +from nkululeko.augmenting.resampler import Resampler from nkululeko.constants import VERSION from nkululeko.experiment import Experiment +from nkululeko.utils.util import Util def main(src_dir): diff --git a/nkululeko/scaler.py b/nkululeko/scaler.py index 260974f0..63389e24 100644 --- a/nkululeko/scaler.py +++ b/nkululeko/scaler.py @@ -1,8 +1,8 @@ # scaler.py import numpy as np -from sklearn.preprocessing import StandardScaler, RobustScaler import pandas as pd +from sklearn.preprocessing import RobustScaler, StandardScaler from nkululeko.utils.util import Util diff --git a/nkululeko/segment.py b/nkululeko/segment.py index e4693d5e..887ae51c 100644 --- a/nkululeko/segment.py +++ b/nkululeko/segment.py @@ -2,14 +2,16 @@ # segment data splits import argparse +import configparser import os + import pandas as pd -import configparser -from nkululeko.experiment import Experiment -from nkululeko.utils.util import Util -from nkululeko.constants import VERSION + import nkululeko.glob_conf as glob_conf +from nkululeko.constants import VERSION +from nkululeko.experiment import Experiment from nkululeko.reporting.report_item import ReportItem +from nkululeko.utils.util import Util def main(src_dir): diff --git a/nkululeko/segmenting/seg_inaspeechsegmenter.py b/nkululeko/segmenting/seg_inaspeechsegmenter.py index 42eaacf8..01fb89da 100644 --- a/nkululeko/segmenting/seg_inaspeechsegmenter.py +++ b/nkululeko/segmenting/seg_inaspeechsegmenter.py @@ -1,10 +1,10 @@ +import warnings + import audformat import pandas as pd - +from audformat import segmented_index # segment the data from inaSpeechSegmenter import Segmenter -from audformat import segmented_index -import warnings class Ina_segmenter: diff --git a/nkululeko/segmenting/seg_silero.py b/nkululeko/segmenting/seg_silero.py index 642a4069..00331ae4 100644 --- a/nkululeko/segmenting/seg_silero.py +++ b/nkululeko/segmenting/seg_silero.py @@ -5,11 +5,12 @@ """ -import torch -import pandas as pd -from tqdm import tqdm import audformat +import pandas as pd +import torch from audformat import segmented_index +from tqdm import tqdm + from nkululeko.utils.util import Util # from nkululeko.constants import SAMPLING_RATE diff --git a/nkululeko/syllable_nuclei.py b/nkululeko/syllable_nuclei.py index d40a8399..26ee6d5c 100644 --- a/nkululeko/syllable_nuclei.py +++ b/nkululeko/syllable_nuclei.py @@ -62,12 +62,12 @@ import math +from glob import glob + import pandas as pd import parselmouth -from tqdm import tqdm - -from glob import glob from parselmouth.praat import call +from tqdm import tqdm def speech_rate(filename): diff --git a/nkululeko/test_pretrain.py b/nkululeko/test_pretrain.py index 4854f7b7..6578eb50 100644 --- a/nkululeko/test_pretrain.py +++ b/nkululeko/test_pretrain.py @@ -1,24 +1,23 @@ # test_pretrain.py import argparse import configparser +import json import os.path +import audeer +import audiofile +import audmetric import datasets import numpy as np import pandas as pd import torch import transformers -import audeer -import audiofile -import audmetric - -from nkululeko.constants import VERSION import nkululeko.experiment as exp -import nkululeko.models.finetune_model as fm import nkululeko.glob_conf as glob_conf +import nkululeko.models.finetune_model as fm +from nkululeko.constants import VERSION from nkululeko.utils.util import Util -import json def doit(config_file): diff --git a/nkululeko/utils/util.py b/nkululeko/utils/util.py index f483c375..aa584a3d 100644 --- a/nkululeko/utils/util.py +++ b/nkululeko/utils/util.py @@ -6,11 +6,10 @@ import pickle import sys -import numpy as np -import pandas as pd - import audeer import audformat +import numpy as np +import pandas as pd class Util: From 7730cf59c265171db5c8b174fd44b47afac5cd82 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:40:28 +0900 Subject: [PATCH 13/22] update black and isort --- .github/workflows/format_code.yml | 4 +++- .github/workflows/isort.yaml | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/format_code.yml b/.github/workflows/format_code.yml index 20ee4c2c..10b131be 100644 --- a/.github/workflows/format_code.yml +++ b/.github/workflows/format_code.yml @@ -7,4 +7,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: psf/black@stable \ No newline at end of file + # - uses: psf/black@stable + - uses: psf/black@552baf8 + \ No newline at end of file diff --git a/.github/workflows/isort.yaml b/.github/workflows/isort.yaml index 4a3f88ca..1cfafb48 100644 --- a/.github/workflows/isort.yaml +++ b/.github/workflows/isort.yaml @@ -7,4 +7,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: isort/isort-action@v1 \ No newline at end of file + - uses: isort/isort-action@v1 + From ce1aa1d159dc4f70d75c61cba25b42dd1c9c9a13 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 13:43:13 +0900 Subject: [PATCH 14/22] update --- nkululeko/experiment.py | 3 +-- nkululeko/experiment_felix.py | 3 +-- nkululeko/models/model.py | 3 +-- nkululeko/models/model_tuned.py | 4 +++- nkululeko/reporting/reporter.py | 24 +++++++++++++++---- .../segmenting/seg_inaspeechsegmenter.py | 1 + 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/nkululeko/experiment.py b/nkululeko/experiment.py index df0e66c1..6c6c60a9 100644 --- a/nkululeko/experiment.py +++ b/nkululeko/experiment.py @@ -477,8 +477,7 @@ def autopredict(self): predictor = ValencePredictor(df) df = predictor.predict(sample_selection) elif target == "dominance": - from nkululeko.autopredict.ap_dominance import \ - DominancePredictor + from nkululeko.autopredict.ap_dominance import DominancePredictor predictor = DominancePredictor(df) df = predictor.predict(sample_selection) diff --git a/nkululeko/experiment_felix.py b/nkululeko/experiment_felix.py index 898546e7..b7830387 100644 --- a/nkululeko/experiment_felix.py +++ b/nkululeko/experiment_felix.py @@ -457,8 +457,7 @@ def autopredict(self): predictor = ValencePredictor(df) df = predictor.predict(sample_selection) elif target == "dominance": - from nkululeko.autopredict.ap_dominance import \ - DominancePredictor + from nkululeko.autopredict.ap_dominance import DominancePredictor predictor = DominancePredictor(df) df = predictor.predict(sample_selection) diff --git a/nkululeko/models/model.py b/nkululeko/models/model.py index 61775850..57b93bb1 100644 --- a/nkululeko/models/model.py +++ b/nkululeko/models/model.py @@ -7,8 +7,7 @@ import pandas as pd import sklearn.utils from joblib import parallel_backend -from sklearn.model_selection import (GridSearchCV, LeaveOneGroupOut, - StratifiedKFold) +from sklearn.model_selection import GridSearchCV, LeaveOneGroupOut, StratifiedKFold import nkululeko.glob_conf as glob_conf from nkululeko.reporting.reporter import Reporter diff --git a/nkululeko/models/model_tuned.py b/nkululeko/models/model_tuned.py index 61b29532..40d45bec 100644 --- a/nkululeko/models/model_tuned.py +++ b/nkululeko/models/model_tuned.py @@ -16,7 +16,9 @@ import torch import transformers from transformers.models.wav2vec2.modeling_wav2vec2 import ( - Wav2Vec2Model, Wav2Vec2PreTrainedModel) + Wav2Vec2Model, + Wav2Vec2PreTrainedModel, +) import nkululeko.glob_conf as glob_conf from nkululeko.models.model import Model as BaseModel diff --git a/nkululeko/reporting/reporter.py b/nkululeko/reporting/reporter.py index 7020a0ff..ad45c78a 100644 --- a/nkululeko/reporting/reporter.py +++ b/nkululeko/reporting/reporter.py @@ -5,16 +5,30 @@ import matplotlib.pyplot as plt import numpy as np + # from torch import is_tensor -from audmetric import (accuracy, concordance_cc, mean_absolute_error, - mean_squared_error, unweighted_average_recall) +from audmetric import ( + accuracy, + concordance_cc, + mean_absolute_error, + mean_squared_error, + unweighted_average_recall, +) + # import os from confidence_intervals import evaluate_with_conf_int from scipy.special import softmax from scipy.stats import entropy, pearsonr -from sklearn.metrics import (ConfusionMatrixDisplay, RocCurveDisplay, auc, - classification_report, confusion_matrix, r2_score, - roc_auc_score, roc_curve) +from sklearn.metrics import ( + ConfusionMatrixDisplay, + RocCurveDisplay, + auc, + classification_report, + confusion_matrix, + r2_score, + roc_auc_score, + roc_curve, +) import nkululeko.glob_conf as glob_conf from nkululeko.plots import Plots diff --git a/nkululeko/segmenting/seg_inaspeechsegmenter.py b/nkululeko/segmenting/seg_inaspeechsegmenter.py index 01fb89da..8bf8c1b2 100644 --- a/nkululeko/segmenting/seg_inaspeechsegmenter.py +++ b/nkululeko/segmenting/seg_inaspeechsegmenter.py @@ -3,6 +3,7 @@ import audformat import pandas as pd from audformat import segmented_index + # segment the data from inaSpeechSegmenter import Segmenter From 260e76e64571a5e14ffada32e58add0d2e8f514a Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 20:11:54 +0900 Subject: [PATCH 15/22] Update format_code.yml --- .github/workflows/format_code.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/format_code.yml b/.github/workflows/format_code.yml index 10b131be..41e93e9f 100644 --- a/.github/workflows/format_code.yml +++ b/.github/workflows/format_code.yml @@ -8,5 +8,5 @@ jobs: steps: - uses: actions/checkout@v4 # - uses: psf/black@stable - - uses: psf/black@552baf8 - \ No newline at end of file + - uses: psf/black@552baf822992936134cbd31a38f69c8cfe7c0f05 + From b303da63064f408ebd939b6833091265ed949aae Mon Sep 17 00:00:00 2001 From: bagustris Date: Wed, 18 Sep 2024 20:18:28 +0900 Subject: [PATCH 16/22] fix isort --- data/androids/process_database.py | 3 ++- data/banglaser/process_database.py | 8 ++++--- data/crema-d/load_db.py | 1 - data/eaed/process_database.py | 6 +++-- data/emofilm/convert_to_16k.py | 2 +- data/emofilm/process_database.py | 5 ++-- data/emov-db/process_database.py | 1 + data/emozionalmente/create.py | 5 ++-- data/erysac/process_database.py | 4 +++- data/jvnv/process_database.py | 5 ++-- data/kbes/process_database.py | 6 +++-- data/kia/process_database.py | 1 + data/make_readme.py | 3 +-- data/mlendsnd/process_database.py | 1 + data/msp-improv/process_database2.py | 5 ++-- data/msp-podcast/process_database.py | 9 ++++--- data/nemo/process_database.py | 1 + data/odyssey-cat-2024/process_database.py | 3 ++- data/oreau2/process_database.py | 1 + data/polish/process_database.py | 4 ++-- data/ravdess/process_database.py | 4 +++- data/svd/process_database.py | 1 + data/turev/process_database.py | 4 +++- meta/demos/demo_best_model.py | 3 ++- .../multiple_experiments/do_experiments.py | 1 - meta/demos/my_experiment.py | 5 ++-- meta/demos/my_experiment_local.py | 3 ++- meta/demos/plot_faster_anim.py | 5 ++-- nkululeko/experiment.py | 3 ++- nkululeko/experiment_felix.py | 3 ++- nkululeko/models/model.py | 3 ++- nkululeko/models/model_tuned.py | 4 +--- nkululeko/reporting/reporter.py | 24 ++++--------------- .../segmenting/seg_inaspeechsegmenter.py | 1 - svd_downloader.py | 10 ++++---- 35 files changed, 80 insertions(+), 68 deletions(-) diff --git a/data/androids/process_database.py b/data/androids/process_database.py index 568910a9..632de83f 100644 --- a/data/androids/process_database.py +++ b/data/androids/process_database.py @@ -15,9 +15,10 @@ """ -import pandas as pd import os + import audeer +import pandas as pd dataset_name = 'androids' data_root = './Androids-Corpus/' diff --git a/data/banglaser/process_database.py b/data/banglaser/process_database.py index 6ddf957e..14c6e7d3 100644 --- a/data/banglaser/process_database.py +++ b/data/banglaser/process_database.py @@ -14,12 +14,14 @@ GG = Actor ID, 01-34 (odd: male, even: female) """ -import pandas as pd -from nkululeko.utils.files import find_files import argparse -from sklearn.model_selection import train_test_split from pathlib import Path +import pandas as pd +from sklearn.model_selection import train_test_split + +from nkululeko.utils.files import find_files + def process_database(data_dir, output_dir): # check if data_dir exists diff --git a/data/crema-d/load_db.py b/data/crema-d/load_db.py index ba60852e..cb83290a 100644 --- a/data/crema-d/load_db.py +++ b/data/crema-d/load_db.py @@ -2,7 +2,6 @@ import audb - # set download directory to current cwd = os.getcwd() audb.config.CACHE_ROOT = cwd diff --git a/data/eaed/process_database.py b/data/eaed/process_database.py index 4238a1e2..8d95cf0e 100644 --- a/data/eaed/process_database.py +++ b/data/eaed/process_database.py @@ -3,10 +3,12 @@ file name format: __<(number)>.wav """ -import pandas as pd +import argparse from pathlib import Path + +import pandas as pd from sklearn.model_selection import train_test_split -import argparse + from nkululeko.utils.files import find_files diff --git a/data/emofilm/convert_to_16k.py b/data/emofilm/convert_to_16k.py index a2acdfd5..f8603985 100644 --- a/data/emofilm/convert_to_16k.py +++ b/data/emofilm/convert_to_16k.py @@ -2,9 +2,9 @@ # arguments: input_dir, output_dir # sox must be installed +import argparse import os import subprocess -import argparse parser = argparse.ArgumentParser() parser.add_argument('-i', '--input_dir', type=str, default='./EmoFilm/wav_corpus') diff --git a/data/emofilm/process_database.py b/data/emofilm/process_database.py index bf5f08e1..362ca3c9 100644 --- a/data/emofilm/process_database.py +++ b/data/emofilm/process_database.py @@ -1,10 +1,11 @@ # process_database.py -> EmoFilm database +import argparse import os + +import numpy as np import pandas as pd from sklearn.model_selection import train_test_split -import numpy as np -import argparse # load data diff --git a/data/emov-db/process_database.py b/data/emov-db/process_database.py index a631566b..9d950831 100644 --- a/data/emov-db/process_database.py +++ b/data/emov-db/process_database.py @@ -7,6 +7,7 @@ from pathlib import Path import pandas as pd + from nkululeko.utils import files emotion_map = { diff --git a/data/emozionalmente/create.py b/data/emozionalmente/create.py index c332290e..ffd1854f 100644 --- a/data/emozionalmente/create.py +++ b/data/emozionalmente/create.py @@ -6,11 +6,10 @@ import os import shutil -import numpy as np -import pandas as pd - import audeer import audformat +import numpy as np +import pandas as pd def main(): diff --git a/data/erysac/process_database.py b/data/erysac/process_database.py index da646421..7b0a4696 100644 --- a/data/erysac/process_database.py +++ b/data/erysac/process_database.py @@ -2,9 +2,11 @@ import argparse from pathlib import Path -from nkululeko.utils.files import find_files + import pandas as pd +from nkululeko.utils.files import find_files + gender_map = {"m": "male", "f": "female"} def process_database(data_dir, output_dir): diff --git a/data/jvnv/process_database.py b/data/jvnv/process_database.py index b94e82c1..fbe2bbc1 100644 --- a/data/jvnv/process_database.py +++ b/data/jvnv/process_database.py @@ -1,9 +1,10 @@ # process_database.py: for JVNV database # export PYTHONPATH="${PYTHONPATH}:/home/bagus/github/nkululeko" -import os -import csv import argparse +import csv +import os + from nkululeko.utils.files import find_files diff --git a/data/kbes/process_database.py b/data/kbes/process_database.py index a348fce7..fa4ac9e3 100644 --- a/data/kbes/process_database.py +++ b/data/kbes/process_database.py @@ -1,11 +1,13 @@ # process_database.py for KBES dataset -import pandas as pd import argparse -from nkululeko.utils.files import find_files import os + +import pandas as pd from sklearn.model_selection import train_test_split +from nkululeko.utils.files import find_files + def process_database(data_dir, output_dir): # check if data_dir exist diff --git a/data/kia/process_database.py b/data/kia/process_database.py index 315c19d6..4b8913eb 100644 --- a/data/kia/process_database.py +++ b/data/kia/process_database.py @@ -5,6 +5,7 @@ import pandas as pd from sklearn.model_selection import train_test_split + from nkululeko.utils.files import find_files diff --git a/data/make_readme.py b/data/make_readme.py index f5b16e7a..4815093f 100644 --- a/data/make_readme.py +++ b/data/make_readme.py @@ -1,8 +1,7 @@ import os -from mdutils import MdUtils import yaml - +from mdutils import MdUtils # root = "./data" root = "." diff --git a/data/mlendsnd/process_database.py b/data/mlendsnd/process_database.py index 1a7bfb41..e758c436 100644 --- a/data/mlendsnd/process_database.py +++ b/data/mlendsnd/process_database.py @@ -5,6 +5,7 @@ from pathlib import Path import pandas as pd + from nkululeko.utils import files diff --git a/data/msp-improv/process_database2.py b/data/msp-improv/process_database2.py index b5c10817..18e13ba2 100644 --- a/data/msp-improv/process_database2.py +++ b/data/msp-improv/process_database2.py @@ -3,10 +3,11 @@ # bagustris@yahoo.com, 2023-08-22 +import argparse +import csv import os + import pandas as pd -import csv -import argparse train_list = [] dev_list = [] diff --git a/data/msp-podcast/process_database.py b/data/msp-podcast/process_database.py index c7eb8428..d3bab5cf 100644 --- a/data/msp-podcast/process_database.py +++ b/data/msp-podcast/process_database.py @@ -1,8 +1,11 @@ +import argparse +import glob import os -from os.path import basename, splitext, join as path_join +from os.path import basename +from os.path import join as path_join +from os.path import splitext + import pandas as pd -import glob -import argparse LABEL_DIR_PATH = 'Labels' WAV_DIR_PATH = 'Audios' diff --git a/data/nemo/process_database.py b/data/nemo/process_database.py index 2cfdf9e9..619eba02 100644 --- a/data/nemo/process_database.py +++ b/data/nemo/process_database.py @@ -3,6 +3,7 @@ # from nkululeko.utils import find_files import os + import pandas as pd from sklearn.model_selection import train_test_split diff --git a/data/odyssey-cat-2024/process_database.py b/data/odyssey-cat-2024/process_database.py index bfb0f8a3..ffa35772 100644 --- a/data/odyssey-cat-2024/process_database.py +++ b/data/odyssey-cat-2024/process_database.py @@ -1,6 +1,7 @@ -import pandas as pd import argparse +import pandas as pd + # Use this code to create a .csv file with the necessary format needed for # categorical emotion recognition model diff --git a/data/oreau2/process_database.py b/data/oreau2/process_database.py index 89a446c3..e5b2fef7 100644 --- a/data/oreau2/process_database.py +++ b/data/oreau2/process_database.py @@ -6,6 +6,7 @@ from pathlib import Path import pandas as pd + from nkululeko.utils import files emotion_map = { diff --git a/data/polish/process_database.py b/data/polish/process_database.py index 725311f5..0ef718f3 100644 --- a/data/polish/process_database.py +++ b/data/polish/process_database.py @@ -1,9 +1,9 @@ # process_database.py for POLISH dataset -from pathlib import Path -import pandas as pd import argparse +from pathlib import Path +import pandas as pd # emotion mapping , a: anger, f: fear, n:n neutral emotion_mapping = { diff --git a/data/ravdess/process_database.py b/data/ravdess/process_database.py index c257f966..4a02e7b8 100644 --- a/data/ravdess/process_database.py +++ b/data/ravdess/process_database.py @@ -21,8 +21,10 @@ import os -import pandas as pd import sys + +import pandas as pd + <<<<<<< HEAD # ravdess source directory as argument diff --git a/data/svd/process_database.py b/data/svd/process_database.py index 6596bf14..e99bff12 100644 --- a/data/svd/process_database.py +++ b/data/svd/process_database.py @@ -1,5 +1,6 @@ import pandas as pd + def process_database(output_path): # Read the list files train_normal = pd.read_csv('train_normal.lst', header=None) diff --git a/data/turev/process_database.py b/data/turev/process_database.py index 2bd203ea..927df5c3 100644 --- a/data/turev/process_database.py +++ b/data/turev/process_database.py @@ -2,9 +2,11 @@ import argparse from pathlib import Path -from nkululeko.utils.files import find_files + import pandas as pd +from nkululeko.utils.files import find_files + def process_database(data_dir, output_dir): # check if data_dir exist diff --git a/meta/demos/demo_best_model.py b/meta/demos/demo_best_model.py index ca3313b7..d0c6d724 100644 --- a/meta/demos/demo_best_model.py +++ b/meta/demos/demo_best_model.py @@ -4,8 +4,9 @@ import sys sys.path.append("./src") -import experiment as exp import configparser + +import experiment as exp from util import Util diff --git a/meta/demos/multiple_experiments/do_experiments.py b/meta/demos/multiple_experiments/do_experiments.py index d75b7834..2f924700 100644 --- a/meta/demos/multiple_experiments/do_experiments.py +++ b/meta/demos/multiple_experiments/do_experiments.py @@ -1,6 +1,5 @@ import os - classifiers = [ {"--model": "mlp", "--layers": "\"{'l1':64,'l2':16}\"", "--epochs": 100}, { diff --git a/meta/demos/my_experiment.py b/meta/demos/my_experiment.py index 4db37d00..be6c3750 100644 --- a/meta/demos/my_experiment.py +++ b/meta/demos/my_experiment.py @@ -4,11 +4,12 @@ import sys sys.path.append("./nkululeko/src") -import experiment as exp import configparser -from util import Util import os.path + import constants +import experiment as exp +from util import Util def main(config_file): diff --git a/meta/demos/my_experiment_local.py b/meta/demos/my_experiment_local.py index b1972b1f..df3a37c8 100644 --- a/meta/demos/my_experiment_local.py +++ b/meta/demos/my_experiment_local.py @@ -4,8 +4,9 @@ import sys sys.path.append("./src") -import experiment as exp import configparser + +import experiment as exp from util import Util diff --git a/meta/demos/plot_faster_anim.py b/meta/demos/plot_faster_anim.py index 1c6aed25..e5744a2c 100644 --- a/meta/demos/plot_faster_anim.py +++ b/meta/demos/plot_faster_anim.py @@ -4,9 +4,10 @@ import sys sys.path.append("./src") -from reporter import Reporter -import experiment as exp import configparser + +import experiment as exp +from reporter import Reporter from util import Util diff --git a/nkululeko/experiment.py b/nkululeko/experiment.py index 6c6c60a9..df0e66c1 100644 --- a/nkululeko/experiment.py +++ b/nkululeko/experiment.py @@ -477,7 +477,8 @@ def autopredict(self): predictor = ValencePredictor(df) df = predictor.predict(sample_selection) elif target == "dominance": - from nkululeko.autopredict.ap_dominance import DominancePredictor + from nkululeko.autopredict.ap_dominance import \ + DominancePredictor predictor = DominancePredictor(df) df = predictor.predict(sample_selection) diff --git a/nkululeko/experiment_felix.py b/nkululeko/experiment_felix.py index b7830387..898546e7 100644 --- a/nkululeko/experiment_felix.py +++ b/nkululeko/experiment_felix.py @@ -457,7 +457,8 @@ def autopredict(self): predictor = ValencePredictor(df) df = predictor.predict(sample_selection) elif target == "dominance": - from nkululeko.autopredict.ap_dominance import DominancePredictor + from nkululeko.autopredict.ap_dominance import \ + DominancePredictor predictor = DominancePredictor(df) df = predictor.predict(sample_selection) diff --git a/nkululeko/models/model.py b/nkululeko/models/model.py index 57b93bb1..61775850 100644 --- a/nkululeko/models/model.py +++ b/nkululeko/models/model.py @@ -7,7 +7,8 @@ import pandas as pd import sklearn.utils from joblib import parallel_backend -from sklearn.model_selection import GridSearchCV, LeaveOneGroupOut, StratifiedKFold +from sklearn.model_selection import (GridSearchCV, LeaveOneGroupOut, + StratifiedKFold) import nkululeko.glob_conf as glob_conf from nkululeko.reporting.reporter import Reporter diff --git a/nkululeko/models/model_tuned.py b/nkululeko/models/model_tuned.py index 40d45bec..61b29532 100644 --- a/nkululeko/models/model_tuned.py +++ b/nkululeko/models/model_tuned.py @@ -16,9 +16,7 @@ import torch import transformers from transformers.models.wav2vec2.modeling_wav2vec2 import ( - Wav2Vec2Model, - Wav2Vec2PreTrainedModel, -) + Wav2Vec2Model, Wav2Vec2PreTrainedModel) import nkululeko.glob_conf as glob_conf from nkululeko.models.model import Model as BaseModel diff --git a/nkululeko/reporting/reporter.py b/nkululeko/reporting/reporter.py index ad45c78a..7020a0ff 100644 --- a/nkululeko/reporting/reporter.py +++ b/nkululeko/reporting/reporter.py @@ -5,30 +5,16 @@ import matplotlib.pyplot as plt import numpy as np - # from torch import is_tensor -from audmetric import ( - accuracy, - concordance_cc, - mean_absolute_error, - mean_squared_error, - unweighted_average_recall, -) - +from audmetric import (accuracy, concordance_cc, mean_absolute_error, + mean_squared_error, unweighted_average_recall) # import os from confidence_intervals import evaluate_with_conf_int from scipy.special import softmax from scipy.stats import entropy, pearsonr -from sklearn.metrics import ( - ConfusionMatrixDisplay, - RocCurveDisplay, - auc, - classification_report, - confusion_matrix, - r2_score, - roc_auc_score, - roc_curve, -) +from sklearn.metrics import (ConfusionMatrixDisplay, RocCurveDisplay, auc, + classification_report, confusion_matrix, r2_score, + roc_auc_score, roc_curve) import nkululeko.glob_conf as glob_conf from nkululeko.plots import Plots diff --git a/nkululeko/segmenting/seg_inaspeechsegmenter.py b/nkululeko/segmenting/seg_inaspeechsegmenter.py index 8bf8c1b2..01fb89da 100644 --- a/nkululeko/segmenting/seg_inaspeechsegmenter.py +++ b/nkululeko/segmenting/seg_inaspeechsegmenter.py @@ -3,7 +3,6 @@ import audformat import pandas as pd from audformat import segmented_index - # segment the data from inaSpeechSegmenter import Segmenter diff --git a/svd_downloader.py b/svd_downloader.py index 654ac462..f170e9a5 100644 --- a/svd_downloader.py +++ b/svd_downloader.py @@ -1,16 +1,16 @@ # svd_downloader.py # copied from https://github.com/rijulg/svd-downloader -import sys +import json import logging +import re +import sys from argparse import ArgumentParser +from logging import Logger +from pathlib import Path -import re import dask -import json import requests -from pathlib import Path -from logging import Logger from bs4 import BeautifulSoup from dask.diagnostics.progress import ProgressBar From 68290d3f322793483a6885fdc9f846c08589bdf6 Mon Sep 17 00:00:00 2001 From: bagustris Date: Wed, 18 Sep 2024 20:42:49 +0900 Subject: [PATCH 17/22] try to solve both isort and black --- CONTRIBUTING.md | 5 +++- nkululeko/experiment.py | 3 +-- nkululeko/experiment_felix.py | 3 +-- nkululeko/models/model.py | 3 +-- nkululeko/models/model_tuned.py | 4 +++- nkululeko/reporting/reporter.py | 24 +++++++++++++++---- .../segmenting/seg_inaspeechsegmenter.py | 1 + 7 files changed, 30 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8699f428..06b59276 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -45,7 +45,10 @@ The preferred way to contribute to nkululeko is to fork the [main repository](ht 6. Once you are done, make sure to format the code using black to fit Nkululeko's codestyle. - ```black nkululeko + ```bash + black nkululeko/ + isort --profile black nkululeko/ + # Alternatively and additionaly, use ruff: ruff check --fix --output-format=full nkululeko ``` diff --git a/nkululeko/experiment.py b/nkululeko/experiment.py index df0e66c1..6c6c60a9 100644 --- a/nkululeko/experiment.py +++ b/nkululeko/experiment.py @@ -477,8 +477,7 @@ def autopredict(self): predictor = ValencePredictor(df) df = predictor.predict(sample_selection) elif target == "dominance": - from nkululeko.autopredict.ap_dominance import \ - DominancePredictor + from nkululeko.autopredict.ap_dominance import DominancePredictor predictor = DominancePredictor(df) df = predictor.predict(sample_selection) diff --git a/nkululeko/experiment_felix.py b/nkululeko/experiment_felix.py index 898546e7..b7830387 100644 --- a/nkululeko/experiment_felix.py +++ b/nkululeko/experiment_felix.py @@ -457,8 +457,7 @@ def autopredict(self): predictor = ValencePredictor(df) df = predictor.predict(sample_selection) elif target == "dominance": - from nkululeko.autopredict.ap_dominance import \ - DominancePredictor + from nkululeko.autopredict.ap_dominance import DominancePredictor predictor = DominancePredictor(df) df = predictor.predict(sample_selection) diff --git a/nkululeko/models/model.py b/nkululeko/models/model.py index 61775850..57b93bb1 100644 --- a/nkululeko/models/model.py +++ b/nkululeko/models/model.py @@ -7,8 +7,7 @@ import pandas as pd import sklearn.utils from joblib import parallel_backend -from sklearn.model_selection import (GridSearchCV, LeaveOneGroupOut, - StratifiedKFold) +from sklearn.model_selection import GridSearchCV, LeaveOneGroupOut, StratifiedKFold import nkululeko.glob_conf as glob_conf from nkululeko.reporting.reporter import Reporter diff --git a/nkululeko/models/model_tuned.py b/nkululeko/models/model_tuned.py index 61b29532..40d45bec 100644 --- a/nkululeko/models/model_tuned.py +++ b/nkululeko/models/model_tuned.py @@ -16,7 +16,9 @@ import torch import transformers from transformers.models.wav2vec2.modeling_wav2vec2 import ( - Wav2Vec2Model, Wav2Vec2PreTrainedModel) + Wav2Vec2Model, + Wav2Vec2PreTrainedModel, +) import nkululeko.glob_conf as glob_conf from nkululeko.models.model import Model as BaseModel diff --git a/nkululeko/reporting/reporter.py b/nkululeko/reporting/reporter.py index 7020a0ff..ad45c78a 100644 --- a/nkululeko/reporting/reporter.py +++ b/nkululeko/reporting/reporter.py @@ -5,16 +5,30 @@ import matplotlib.pyplot as plt import numpy as np + # from torch import is_tensor -from audmetric import (accuracy, concordance_cc, mean_absolute_error, - mean_squared_error, unweighted_average_recall) +from audmetric import ( + accuracy, + concordance_cc, + mean_absolute_error, + mean_squared_error, + unweighted_average_recall, +) + # import os from confidence_intervals import evaluate_with_conf_int from scipy.special import softmax from scipy.stats import entropy, pearsonr -from sklearn.metrics import (ConfusionMatrixDisplay, RocCurveDisplay, auc, - classification_report, confusion_matrix, r2_score, - roc_auc_score, roc_curve) +from sklearn.metrics import ( + ConfusionMatrixDisplay, + RocCurveDisplay, + auc, + classification_report, + confusion_matrix, + r2_score, + roc_auc_score, + roc_curve, +) import nkululeko.glob_conf as glob_conf from nkululeko.plots import Plots diff --git a/nkululeko/segmenting/seg_inaspeechsegmenter.py b/nkululeko/segmenting/seg_inaspeechsegmenter.py index 01fb89da..8bf8c1b2 100644 --- a/nkululeko/segmenting/seg_inaspeechsegmenter.py +++ b/nkululeko/segmenting/seg_inaspeechsegmenter.py @@ -3,6 +3,7 @@ import audformat import pandas as pd from audformat import segmented_index + # segment the data from inaSpeechSegmenter import Segmenter From 1893352a622739e12bb6e394a1ba766faab1502b Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 20:45:32 +0900 Subject: [PATCH 18/22] Update format_code.yml --- .github/workflows/format_code.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/format_code.yml b/.github/workflows/format_code.yml index 41e93e9f..5f14374c 100644 --- a/.github/workflows/format_code.yml +++ b/.github/workflows/format_code.yml @@ -7,6 +7,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - # - uses: psf/black@stable - - uses: psf/black@552baf822992936134cbd31a38f69c8cfe7c0f05 + - uses: psf/black@stable + # - uses: psf/black@552baf822992936134cbd31a38f69c8cfe7c0f05 From eced03963ffcc005017dfbaf277d63af3b01a272 Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 20:52:34 +0900 Subject: [PATCH 19/22] Update isort.yaml --- .github/workflows/isort.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/isort.yaml b/.github/workflows/isort.yaml index 1cfafb48..e11d7d0c 100644 --- a/.github/workflows/isort.yaml +++ b/.github/workflows/isort.yaml @@ -8,4 +8,10 @@ jobs: steps: - uses: actions/checkout@v3 - uses: isort/isort-action@v1 + - uses: actions/setup-python@v2 + with: + python-version: 3.9 + - uses: isort/isort-action@master + with: + isortVersion: 5.13.2 From dcbc77cc12618dc7ab2a896486c6e08f35ee661a Mon Sep 17 00:00:00 2001 From: Bagus Tris Atmaja Date: Wed, 18 Sep 2024 21:01:51 +0900 Subject: [PATCH 20/22] Update isort.yaml --- .github/workflows/isort.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/isort.yaml b/.github/workflows/isort.yaml index e11d7d0c..5961a1b9 100644 --- a/.github/workflows/isort.yaml +++ b/.github/workflows/isort.yaml @@ -8,10 +8,9 @@ jobs: steps: - uses: actions/checkout@v3 - uses: isort/isort-action@v1 - - uses: actions/setup-python@v2 + # - uses: isort/isort-action@master with: - python-version: 3.9 - - uses: isort/isort-action@master - with: - isortVersion: 5.13.2 + # isortVersion: 5.13.2 + sortPaths: 'nkululeko' + configuration: '--profile black' From 7b14ae89c8f90a7340cc7a7dd2d178350fbe7346 Mon Sep 17 00:00:00 2001 From: bagustris Date: Wed, 18 Sep 2024 21:17:14 +0900 Subject: [PATCH 21/22] rm unnecessary file --- svd_downloader.py | 184 ---------------------------------------------- 1 file changed, 184 deletions(-) delete mode 100644 svd_downloader.py diff --git a/svd_downloader.py b/svd_downloader.py deleted file mode 100644 index f170e9a5..00000000 --- a/svd_downloader.py +++ /dev/null @@ -1,184 +0,0 @@ -# svd_downloader.py -# copied from https://github.com/rijulg/svd-downloader - -import json -import logging -import re -import sys -from argparse import ArgumentParser -from logging import Logger -from pathlib import Path - -import dask -import requests -from bs4 import BeautifulSoup -from dask.diagnostics.progress import ProgressBar - - -class Downloader: - base_url = "https://stimmdb.coli.uni-saarland.de" - max_speaker_id = 2742 - session = requests.Session() - - def __init__(self, out_path: str, refetch_links: bool, logger: Logger): - self.logger = logger - self.out_path = out_path - self.refetch_links = refetch_links - self.links_file = f"{out_path}/data.json" - - def run(self): - self.logger.info("Running downloader") - self.logger.info(f"Saving at: {self.out_path}") - if not Path(self.links_file).is_file() or self.refetch_links: - self.logger.info("Saving file links") - self.save_all_file_links() - with open(self.links_file, "r") as links_file: - data = json.load(links_file) - self.download_data(data) - - def download_data(self, data): - jobs = [] - self.logger.info("Setting up download jobs") - for key, row in data.items(): - if row is not None: - gender = row["gender"] - for session in row["sessions"]: - session_id = session["session_id"] - classification = session["classification"] - for file in session["files"]: - job = self.download_file( - key=key, - session_id=session_id, - gender=gender, - classification=classification, - file=file, - ) - jobs += [job] - self.logger.info("Downloading files") - with ProgressBar(): - dask.compute(*jobs) - - @dask.delayed - def download_file(self, key, session_id, gender, classification, file): - data_path = f"{self.out_path}/{classification}/{gender}/{key}/{session_id}" - Path(data_path).mkdir(parents=True, exist_ok=True) - file_id = file.split("=")[1] - file_path = f"{data_path}/{file_id}.wav" - doc = requests.get(file) - with open(file_path, "wb") as f: - f.write(doc.content) - - def save_all_file_links(self): - session = self.db_session() - ids = list(range(self.max_speaker_id)) - pages = [f"{self.base_url}/details.php4?SprecherID={number}" for number in ids] - jobs = [self.extract_links_from_page(session, page) for page in pages] - with ProgressBar(): - data = dict(zip(ids, dask.compute(*jobs))) - Path(self.links_file).parent.mkdir(exist_ok=True, parents=True) - with open(self.links_file, "w") as link_file: - json.dump(data, link_file, indent=4) - - @dask.delayed - def extract_links_from_page(self, session, url): - response = session.get(url) - soup = BeautifulSoup(response.text, "html.parser") - gender = self.get_gender(soup.find("div", class_="title").text) - valid_classifications = ["healthy", "pathological"] - data = {"page": url, "gender": gender, "sessions": []} - for sess in soup.findAll("table", class_="sessiondetails"): - session_id = self.find_session_id(sess) - classification = self.identify_classification(sess) - recording_date, age = self.find_dates(sess) - pathologies = self.find_pathologies(sess) - sess_data = { - "session_id": session_id, - "classification": classification, - "age": age, - "recording_date": recording_date, - "pathologies": pathologies, - } - if classification in valid_classifications: - sess_data["files"] = self.get_file_links(sess) - else: - print(f"Invalid classification(={classification}) found at url: {url}") - data["sessions"] += [sess_data] - return data - - def find_session_id(self, sess): - row = sess.find("tr", class_="titleactive") - cell = row.find("td") - link = cell.find("a") - return link["name"] - - def find_dates(self, sess): - rows = sess.find_all("tr", class_="detailsactive") - for row in rows: - cells = row.find_all("td") - if "date of recording" in cells[0].text.lower(): - recording_date = cells[1].find("span").text - age = re.findall(r"\((\d*)\)", cells[1].text)[0] - return recording_date, age - - def find_pathologies(self, sess): - rows = sess.find_all("tr", class_="detailsactive") - for row in rows: - cells = row.find_all("td") - if "pathologies" in cells[0].text.lower(): - return cells[1].text.strip() - - def db_session(self): - session = requests.Session() - session.post(f"{self.base_url}/index.php4", data={"sb_lang": "English"}) - session.post( - f"{self.base_url}/index.php4", - data={"sb_search": "Database request", "sb_sent": "Accept"}, - ) - return session - - def identify_classification(self, sess): - row = sess.find("tr", class_="detailsactive") - classification = row.find_all("td")[1].text - return classification - - def get_file_links(self, sess): - files = sess.find_all("a", attrs={"target": "PLAY"}) - file_links = [f"{self.base_url}/{x.get('href')}" for x in files] - return file_links - - def get_gender(self, title: str): - title = title.lower() - if "female" in title: - return "female" - if "male" in title: - return "male" - return "unknown" - - -def get_logger(): - log_handler = logging.StreamHandler(sys.stdout) - log_formatter = logging.Formatter(fmt="[%(asctime)s] %(levelname)-8s:: %(message)s") - log_handler.setFormatter(log_formatter) - - logger = logging.Logger("SVD Downloader") - logger.addHandler(log_handler) - return logger - - -if __name__ == "__main__": - parser = ArgumentParser("SVD Downloader") - parser.add_argument( - "out_path", type=str, default="SVD", help="The location of where to store data" - ) - parser.add_argument( - "--refetch-links", - action="store_true", - help="Whether to refresh the list of links", - ) - args = parser.parse_args() - - logger = get_logger() - downloader = Downloader( - out_path=args.out_path, refetch_links=args.refetch_links, logger=logger - ) - downloader.run() From 11fd578838b83d8c4c3261bd647b3df65c702329 Mon Sep 17 00:00:00 2001 From: bagustris Date: Wed, 18 Sep 2024 21:21:30 +0900 Subject: [PATCH 22/22] update --- check.ini | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 check.ini diff --git a/check.ini b/check.ini deleted file mode 100644 index 3256a937..00000000 --- a/check.ini +++ /dev/null @@ -1,21 +0,0 @@ -[EXP] -root = ./ -name = results/exp_asvp -save = True -[DATA] -databases = ['train', 'test'] -train = ./data/asvp-esd/asvp_train.csv -train.type = csv -train.absolute_path = False -train.split_strategy = train -test = ./data/asvp-esd/asvp_test.csv -test.type = csv -test.absolute_path = False -test.split_strategy = test -target = emotion -; no_reuse = True -labels =["boredom","neutral","happy", "sad","angry", "fear", "disgust", "surprise", "excited","pleasure","pain","disapointed","others"] -# check the filesize of all samples in train and test splits, in bytes -check_size = 1000 -# check if the files contain speech with voice activity detection (VAD) -check_vad = True \ No newline at end of file