[med-svn] [Git][med-team/praat][master] 7 commits: New upstream version 6.1.14
Rafael Laboissiere
gitlab at salsa.debian.org
Thu May 21 21:31:33 BST 2020
Rafael Laboissiere pushed to branch master at Debian Med / praat
Commits:
696c3294 by Rafael Laboissière at 2020-05-03T10:11:32-03:00
New upstream version 6.1.14
- - - - -
2ccd0e80 by Rafael Laboissière at 2020-05-21T11:04:12-03:00
Merge branch 'upstream'
- - - - -
b1f5226a by Rafael Laboissière at 2020-05-21T11:04:39-03:00
New upstream version 6.1.15
- - - - -
73f73c21 by Rafael Laboissière at 2020-05-21T11:06:58-03:00
Merge tag 'upstream/6.1.15'
Upstream version 6.1.15
- - - - -
4773f2d7 by Rafael Laboissière at 2020-05-21T11:09:44-03:00
d/t/run-tests: Drop workaround for test_Discriminant.praat
- - - - -
cd4fb638 by Rafael Laboissière at 2020-05-21T16:19:18-03:00
d/clean: Extend list of files to remove
- - - - -
50946a46 by Rafael Laboissière at 2020-05-21T17:31:00-03:00
Changelog entry for version 6.1.15-1
Gbp-Dch: Ignore
- - - - -
19 changed files:
- debian/changelog
- debian/clean
- debian/tests/run-tests
- dwsys/NUM2.cpp
- dwtest/test_Covariance.praat
- dwtest/test_Discriminant.praat
- dwtools/Covariance.cpp
- dwtools/Discriminant.cpp
- dwtools/praat_David_init.cpp
- fon/manual_tutorials.cpp
- melder/MelderArg.h
- melder/melder_debug.cpp
- melder/melder_tensorio.cpp
- melder/melder_tensorio.h
- sys/Graphics_text.cpp
- sys/praat_version.h
- + test/dwtools/Discriminant2.praat
- + test/dwtools/Discriminant3.praat
- + test/dwtools/pols_50males_format0.Discriminant
Changes:
=====================================
debian/changelog
=====================================
@@ -1,3 +1,11 @@
+praat (6.1.15-1) unstable; urgency=medium
+
+ * New upstream version 6.1.15
+ * d/t/run-tests: Drop workaround for test_Discriminant.praat
+ * d/clean: Extend list of files to remove
+
+ -- Rafael Laboissière <rafael at debian.org> Thu, 21 May 2020 11:10:34 -0300
+
praat (6.1.14-3) unstable; urgency=medium
* d/p/cross-build.patch: New patch
=====================================
debian/clean
=====================================
@@ -1,5 +1,6 @@
dwtest/kanweg.FFNet
dwtest/kanweg.SpeechSynthesizer
+test/dwtools/kanweg.*
test/fon/kanweg*.txt
test/fon/kanweg.nsp
test/fon/kanweg.Object
@@ -19,3 +20,4 @@ praat.1
praat_nogui.1
sendpraat.1
praat-open-files.1
+
\ No newline at end of file
=====================================
debian/tests/run-tests
=====================================
@@ -6,13 +6,7 @@
### Allow specification of the Praat executable
PRAAT=${PRAAT:-praat}
-### Temporarily disable unit test
-mv dwtest/test_Discriminant.praat dwtest/test_Discriminant.praat-away
-
### Run the unit tests
for dir in test dwtest ; do
(cd $dir ; $PRAAT --run runAllTests_batch.praat)
done
-
-### Restore disabled unit test
-mv dwtest/test_Discriminant.praat-away dwtest/test_Discriminant.praat
=====================================
dwsys/NUM2.cpp
=====================================
@@ -1,6 +1,6 @@
/* NUM2.cpp
*
- * Copyright (C) 1993-2020 David Weenink, Paul Boersma 2017
+ * Copyright (C) 1993-2020 David Weenink, Paul Boersma 2017,2020
*
* This code is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -259,7 +259,7 @@ autoMAT newMATlowerCholeslyInverse_fromLowerCholesky (constMAT const& m) {
return result;
}
-void MATlowerCholesky_inplace (MAT a, double *out_lnd) {
+void MATlowerCholesky_inplace (MAT a, double *out_lnDeterminant) {
Melder_assert (a.nrow == a.ncol);
/*
Cholesky decomposition in lower, leave upper intact
@@ -272,11 +272,12 @@ void MATlowerCholesky_inplace (MAT a, double *out_lnd) {
/*
Determinant from diagonal, diagonal is now sqrt (a [i] [i]) !
*/
- if (out_lnd) {
- longdouble lnd = 0.0;
+ if (out_lnDeterminant) {
+ longdouble lnDeterminant = 0.0;
for (integer i = 1; i <= a.nrow; i ++)
- lnd += log (a [i] [i]);
- *out_lnd *= 2.0 * lnd; /* because A = L . L' */
+ lnDeterminant += log (a [i] [i]);
+ lnDeterminant *= 2.0; /* because A = L . L' */
+ *out_lnDeterminant = double (lnDeterminant);
}
}
=====================================
dwtest/test_Covariance.praat
=====================================
@@ -1,13 +1,37 @@
# test_Covariance.praat
-# djmw 2015
+# djmw 2015, 2020
appendInfoLine: "test_Covariance"
appendInfoLine: tab$, "Morrison_example_7.3"
@test_Morrison_example_7_3
appendInfoLine: tab$, "Morrison_example_3.5"
@test_Morrison_example_3_5
+appendInfoLine: tab$, "Morrison_example_4.3"
+ at test_Morrison_example_4_3
appendInfoLine: "test_Covariance OK"
+procedure test_Morrison_example_4_3
+ .covariances$ = "11.264 9.4060 7.1550 3.3791 13.5265 7.3784 2.5014 11.5796 2.6167 5.8133"
+ .means1$ = "12.57 9.57 11.49 7.97"
+ .means2$ = "8.75 5.33 8.50 4.75"
+ .covariance1 = Create simple Covariance: "4_3_1", .covariances$, .means1$, 37
+ .covariance2 = Create simple Covariance: "4_3_2", .covariances$, .means2$, 12
+ selectObject: .covariance1, .covariance2
+ .report$ = Report multivariate mean difference: "yes"
+ .fisher = extractNumber (.report$, "Fisher's F:")
+ assert abs (.fisher - 5.18) < 0.005
+ .p = extractNumber (.report$, "Significance from zero:")
+ assert .p < 0.005
+ .numberOfObservations1 = extractNumber (.report$, "Number of observations 1:")
+ assert .numberOfObservations1 = 37
+ .numberOfObservations2 = extractNumber (.report$, "Number of observations 2:")
+ assert .numberOfObservations2 = 12
+ .dof1 = extractNumber (.report$, "Degrees of freedom 1:")
+ assert .dof1 == 4
+ .dof2 = extractNumber (.report$, "Degrees of freedom 2:")
+ assert .dof2 = 44
+endproc
+
procedure test_Morrison_example_7_3
.p = 2
.k = 2
@@ -41,7 +65,7 @@ procedure test_Morrison_example_7_3
.chisq$ = fixed$ (.chisq, 2)
assert .chisq$ = "2.72"
.cInv = 1 - (2*.p^2+3*.p-1)/(6*(.p+1)*(.k-1))*(1/31+1/31-1/62)
- appendInfoLine: "C^-1 = ", .cInv
+ appendInfoLine: tab$, "C^-1 = ", .cInv
removeObject: .sm, .sf
endproc
=====================================
dwtest/test_Discriminant.praat
=====================================
@@ -1,5 +1,6 @@
# test_Discriminant.praat
# djmw 20110518, 20141030, 20150128
+# ppgb 20200505 added abs in four places
appendInfoLine: "test_Discriminant"
@@ -19,14 +20,16 @@ appendInfoLine: tab$ + "Query old and new Discriminant"
appendInfoLine: tab$ + "Assert old and new Discriminant classify the same"
@classify: discriminant[1], tableOfReal, 1
@classify: discriminant[2], tableOfReal, 2
-assert classify.fc[1] = classify.fc[2] ; 'classify.fc[1]' 'classify.fc[2]'
+assert classify.fc[1] = classify.fc[2] ; 'fractionCorrect1' 'fractionCorrect2' 'classify.fc[1]' 'classify.fc[2]'
procedure classify: .discriminant, .tableOfReal, .index
selectObject: .discriminant, .tableOfReal
.classificationTable = To ClassificationTable: "yes", "yes"
.confusion = To Confusion: "no"
+ fractionCorrect'.index' = Get fraction correct
+ assert abs (fractionCorrect'.index' - 0.74) < 0.00001 ; 'fractionCorrect1' 'fractionCorrect2' 'classify.fc[1]' 'classify.fc[2]'
.fc[.index] = Get fraction correct
- assert .fc[.index] -0.74 < 0.00001
+ assert abs (.fc[.index] - 0.74) < 0.00001 ; 'fractionCorrect1' 'fractionCorrect2' 'classify.fc[1]' 'classify.fc[2]'
removeObject: .classificationTable, .confusion
endproc
@@ -36,9 +39,9 @@ procedure query: .discriminant
endfor
.numberOfEigenvectors = Get number of eigenvectors
.dimension = Get eigenvector dimension
- assert (.eigenvalue[1] - 21.139) < 0.00001
- assert (.eigenvalue[2] - 4.35530) < 0.00001
- assert (.eigenvalue[3] - 0.68289) < 0.00001
+ assert abs (.eigenvalue[1] - 21.139) < 0.00001 ; '.eigenvalue[1]'
+ assert abs (.eigenvalue[2] - 4.35530) < 0.00001 ; '.eigenvalue[2]'
+ assert abs (.eigenvalue[3] - 0.68289) < 0.00001 ; '.eigenvalue[3]'
assert .numberOfEigenvectors = 3
assert .dimension = 3
endproc
=====================================
dwtools/Covariance.cpp
=====================================
@@ -371,7 +371,7 @@ double Covariances_getMultivariateCentroidDifference (Covariance me, Covariance
Melder_require (df2 >= 1.0,
U"Not enough observations (", N, U") for this test.");
- Melder_require (p >= N1 && p >= N2,
+ Melder_require (p <= N1 && p <= N2,
U"The number of observations should be larger than the number of variables.");
double dif = 0.0;
for (integer i = 1; i <= p; i ++) {
=====================================
dwtools/Discriminant.cpp
=====================================
@@ -28,7 +28,7 @@
djmw 20050405 Modified column label: eigenvector->Eigenvector
djmw 20061212 Changed info to Melder_writeLine<x> format.
djmw 20071009 wchar
- djmw 20071012 Added: o_CAN_WRITE_AS_ENCODING.h
+ djmw 20071012 Added: oo_CAN_WRITE_AS_ENCODING.h
djmw 20071201 Melder_warning<n>
djmw 20081119 Check in TableOfReal_to_Discriminant if TableOfReal_areAllCellsDefined
djmw 20100107 +Discriminant_TableOfReal_mahalanobis
@@ -500,33 +500,32 @@ autoClassificationTable Discriminant_TableOfReal_to_ClassificationTable (Discrim
/*
Scale the sscp to become a covariance matrix.
*/
-
pool -> data.get() *= 1.0 / (pool -> numberOfObservations - numberOfGroups);
double lnd;
autoSSCPList agroups;
SSCPList groups; // ppgb FIXME dit kan niet goed izjn
if (poolCovarianceMatrices) {
-
/*
Covariance matrix S can be decomposed as S = L.L'. Calculate L^-1.
L^-1 will be used later in the Mahalanobis distance calculation:
v'.S^-1.v == v'.L^-1'.L^-1.v == (L^-1.v)'.(L^-1.v).
*/
-
+ if (Melder_debug == 52)
+ Melder_casual (U"***** before lower Cholesky inverse: \n", pool -> data.all());
MATlowerCholeskyInverse_inplace (pool -> data.get(), & lnd);
+ if (Melder_debug == 52)
+ Melder_casual (U"***** after lower Cholesky inverse: \n", pool -> data.all());
for (integer j = 1; j <= numberOfGroups; j ++) {
ln_determinant [j] = lnd;
sscpvec [j] = pool.get();
}
groups = my groups.get();
} else {
-
/*
Calculate the inverses of all group covariance matrices.
In case of a singular matrix, substitute inverse of pooled.
*/
-
agroups = Data_copy (my groups.get());
groups = agroups.get();
integer npool = 0;
@@ -539,12 +538,10 @@ autoClassificationTable Discriminant_TableOfReal_to_ClassificationTable (Discrim
try {
MATlowerCholeskyInverse_inplace (t -> data.get(), & ln_determinant [j]);
} catch (MelderError) {
-
/*
Clear the error.
Try the alternative: the pooled covariance matrix.
*/
-
Melder_clearError ();
if (npool == 0)
MATlowerCholeskyInverse_inplace (pool -> data.get(), & lnd);
@@ -560,7 +557,6 @@ autoClassificationTable Discriminant_TableOfReal_to_ClassificationTable (Discrim
/*
Labels for columns in ClassificationTable
*/
-
for (integer j = 1; j <= numberOfGroups; j ++) {
conststring32 name = Thing_getName (my groups->at [j]);
if (! name)
@@ -572,8 +568,11 @@ autoClassificationTable Discriminant_TableOfReal_to_ClassificationTable (Discrim
Normalize the sum of the apriori probabilities to 1.
Next take ln (p) because otherwise probabilities might be too small to represent.
*/
-
+ if (Melder_debug == 52)
+ Melder_casual (U"***** before normalizing priors: \n", my aprioriProbabilities.all());
VECnormalize_inplace (my aprioriProbabilities.get(), 1.0, 1.0);
+ if (Melder_debug == 52)
+ Melder_casual (U"***** after normalizing priors: \n", my aprioriProbabilities.all());
const double logg = log (numberOfGroups);
for (integer j = 1; j <= numberOfGroups; j ++)
log_apriori [j] = ( useAprioriProbabilities ? log (my aprioriProbabilities [j]) : - logg );
@@ -582,12 +581,13 @@ autoClassificationTable Discriminant_TableOfReal_to_ClassificationTable (Discrim
Generalized squared distance function:
D^2(x) = (x - mu)' S^-1 (x - mu) + ln (determinant(S)) - 2 ln (apriori)
*/
-
for (integer i = 1; i <= thy numberOfRows; i ++) {
double norm = 0.0, pt_max = -1e308;
for (integer j = 1; j <= numberOfGroups; j ++) {
const SSCP t = groups->at [j];
const double md = NUMmahalanobisDistanceSquared (sscpvec [j] -> data.get(), thy data.row (i), t -> centroid.get());
+ if (Melder_debug == 52)
+ Melder_casual (U"***** Mahalanobis distance (squared): ", i, U" ", j, U" ", md);
const double pt = log_apriori [j] - 0.5 * (ln_determinant [j] + md);
if (pt > pt_max)
pt_max = pt;
@@ -595,7 +595,6 @@ autoClassificationTable Discriminant_TableOfReal_to_ClassificationTable (Discrim
}
for (integer j = 1; j <= numberOfGroups; j ++)
norm += log_p [j] = exp (log_p [j] - pt_max);
-
for (integer j = 1; j <= numberOfGroups; j ++)
his data [i] [j] = log_p [j] / norm;
}
=====================================
dwtools/praat_David_init.cpp
=====================================
@@ -1068,12 +1068,14 @@ DO
MelderInfo_open ();
difference = Covariances_getMultivariateCentroidDifference (me, you, covariancesAreEqual, & prob, & fisher, & df1, & df2);
MelderInfo_writeLine (U"Under the assumption that the two covariances are", (covariancesAreEqual ? U" " : U" not "), U"equal:");
- MelderInfo_writeLine (U"Difference between multivariate means = ", difference);
- MelderInfo_writeLine (U"Fisher's F = ", fisher);
- MelderInfo_writeLine (U"Significance from zero = ", prob);
- MelderInfo_writeLine (U"Degrees of freedom = ", df1, U", ", df2);
- MelderInfo_writeLine (U"(Number of observations = ", me -> numberOfObservations, U", ", you -> numberOfObservations);
- MelderInfo_writeLine (U"Dimension of covariance matrices = ", me -> numberOfRows, U")");
+ MelderInfo_writeLine (U"Difference between multivariate means: ", difference);
+ MelderInfo_writeLine (U"Fisher's F: ", fisher);
+ MelderInfo_writeLine (U"Significance from zero: ", prob);
+ MelderInfo_writeLine (U"Degrees of freedom 1: ", df1);
+ MelderInfo_writeLine (U"Degrees of freedom 2: ", df2);
+ MelderInfo_writeLine (U"Number of observations 1: ", me -> numberOfObservations);
+ MelderInfo_writeLine (U"Number of observations 2: ", you -> numberOfObservations);
+ MelderInfo_writeLine (U"Number of variables: ", me -> numberOfRows);
MelderInfo_close ();
INFO_COUPLE_END
}
@@ -8232,7 +8234,7 @@ void praat_uvafon_David_init () {
praat_addAction2 (classDiscriminant, 1, classStrings, 1, U"Set group labels", nullptr, 0, MODIFY_Discriminant_setGroupLabels);
praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To Configuration...", nullptr, 0, NEW1_Discriminant_TableOfReal_to_Configuration);
- praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1,U"To ClassificationTable...", nullptr, 0, NEW1_Discriminant_TableOfReal_to_ClassificationTable);
+ praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To ClassificationTable...", nullptr, 0, NEW1_Discriminant_TableOfReal_to_ClassificationTable);
praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To TableOfReal (mahalanobis)...", nullptr, 0, NEW1_Discriminant_TableOfReal_mahalanobis);
praat_addAction1 (classDTW, 0, U"DTW help", nullptr, 0, HELP_DTW_help);
=====================================
fon/manual_tutorials.cpp
=====================================
@@ -22,8 +22,10 @@
void manual_tutorials_init (ManPages me);
void manual_tutorials_init (ManPages me) {
-MAN_BEGIN (U"What's new?", U"ppgb", 20200502)
+MAN_BEGIN (U"What's new?", U"ppgb", 20200520)
INTRO (U"Latest changes in Praat.")
+NORMAL (U"##6.1.15# (20 May 2020)")
+LIST_ITEM (U"• Repaired a bug introduced in 6.0.44 that could cause an incorrect (namely, totally constant) ClassificationTable.")
NORMAL (U"##6.1.14# (2 May 2020)")
LIST_ITEM (U"• Repaired a bug in drawing ranges introduced in 6.1.06.")
NORMAL (U"##6.1.13# (19 April 2020)")
=====================================
melder/MelderArg.h
=====================================
@@ -2,7 +2,7 @@
#define _melder_arg_h_
/* MelderArg.h
*
- * Copyright (C) 1992-2018 Paul Boersma
+ * Copyright (C) 1992-2020 Paul Boersma
*
* This code is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -44,6 +44,8 @@ struct MelderArg {
*/
MelderArg (constVECVU const& arg) : _arg (Melder_VEC (arg)) { }
MelderArg (constMATVU const& arg) : _arg (Melder_MAT (arg)) { }
+ MelderArg (VECVU const& arg) : _arg (Melder_VEC (arg)) { }
+ MelderArg (MATVU const& arg) : _arg (Melder_MAT (arg)) { }
MelderArg (Thing arg) : _arg (Thing_messageName (arg)) { }
MelderArg (MelderFile arg) : _arg (MelderFile_messageName (arg)) { }
/*
=====================================
melder/melder_debug.cpp
=====================================
@@ -1,6 +1,6 @@
/* melder_debug.cpp
*
- * Copyright (C) 2000-2018 Paul Boersma
+ * Copyright (C) 2000-2020 Paul Boersma
*
* This code is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -81,6 +81,7 @@ the behaviour of Praat will temporarily change in the following ways:
50: compute sum, mean, stdev with first-element offset (80 bits)
51: compute sum, mean, stdev with two cycles, as in R (80 bits)
(other numbers than 48-51: compute sum, mean, stdev with simple pairwise algorithm, base case 64 [80 bits])
+52: debug Discriminant_TableOfReal_to_ClassificationTable
181: read and write native-endian real64
900: use DG Meta Serif Science instead of Palatino
1264: Mac: Sound_record_fixedTime uses microphone "FW Solo (1264)"
=====================================
melder/melder_tensorio.cpp
=====================================
@@ -151,6 +151,7 @@ FUNCTION (double, r32)
FUNCTION (double, r64)
FUNCTION (dcomplex, c64)
FUNCTION (dcomplex, c128)
+FUNCTION (bool, eb)
#undef FUNCTION
/* End of file melder_tensorio.cpp */
=====================================
melder/melder_tensorio.h
=====================================
@@ -45,6 +45,7 @@ FUNCTION (double, r32)
FUNCTION (double, r64)
FUNCTION (dcomplex, c64)
FUNCTION (dcomplex, c128)
+FUNCTION (bool, eb)
#undef FUNCTION
/*
=====================================
sys/Graphics_text.cpp
=====================================
@@ -1412,11 +1412,11 @@ static void parseTextIntoCellsLinesRuns (Graphics me, conststring32 txt /* catta
((my fontStyle & Graphics_BOLD) | charBold | wordBold | globalBold ? Graphics_BOLD : 0);
out -> font.string = nullptr;
out -> font.integer_ = my fontStyle == Graphics_CODE || wordCode || globalCode ||
- kar == U'/' || kar == U'|' ? (int) kGraphics_font::COURIER : (int) my font;
+ (kar == U'/' || kar == U'|') && my font != kGraphics_font::PALATINO ? (int) kGraphics_font::COURIER : (int) my font;
out -> link = wordLink | globalLink;
out -> baseline = charSuperscript | globalSuperscript ? 34 : charSubscript | globalSubscript ? -25 : 0;
out -> size = globalSmall || out -> baseline != 0 ? 80 : 100;
- if (kar == U'/') {
+ if (kar == U'/' && my font != kGraphics_font::PALATINO) {
out -> baseline -= out -> size / 12;
out -> size += out -> size / 10;
if (my screen) out -> font.integer_ = (int) kGraphics_font::PALATINO;
=====================================
sys/praat_version.h
=====================================
@@ -1,5 +1,5 @@
-#define PRAAT_VERSION_STR 6.1.14
-#define PRAAT_VERSION_NUM 6114
+#define PRAAT_VERSION_STR 6.1.15
+#define PRAAT_VERSION_NUM 6115
#define PRAAT_YEAR 2020
#define PRAAT_MONTH May
-#define PRAAT_DAY 2
+#define PRAAT_DAY 20
=====================================
test/dwtools/Discriminant2.praat
=====================================
@@ -0,0 +1,59 @@
+# Discriminant2.praat
+# Paul Boersma 2020-05-06
+
+writeInfoLine: "Discriminant2"
+
+table = Create TableOfReal (Pols 1973): "no"
+Formula: "log10(self)"
+
+procedure tryOldFormat
+ oldDiscriminant = Read from file: "pols_50males_format0.Discriminant"
+ Save as text file: "kanweg.Discriminant"
+ plusObject: table
+ classificationTable = To ClassificationTable: "yes", "yes"
+ confusion = To Confusion: "no"
+ fractionCorrect = Get fraction correct
+ appendInfoLine: "Old format correct: ", fractionCorrect
+ removeObject: classificationTable, confusion, oldDiscriminant
+endproc
+
+procedure tryNewFormat
+ newDiscriminant = Read from file: "kanweg.Discriminant"
+ plusObject: table
+ classificationTable = To ClassificationTable: "yes", "yes"
+ confusion = To Confusion: "no"
+ fractionCorrect = Get fraction correct
+ appendInfoLine: "New format correct: ", fractionCorrect
+ removeObject: classificationTable, confusion, newDiscriminant
+endproc
+
+procedure tryComputation
+ selectObject: table
+ computedDiscriminant = To Discriminant
+ plusObject: table
+ classificationTable = To ClassificationTable: "yes", "yes"
+ confusion = To Confusion: "no"
+ fractionCorrect = Get fraction correct
+ appendInfoLine: "Computed correct: ", fractionCorrect
+ removeObject: classificationTable, confusion, computedDiscriminant
+endproc
+
+ at tryComputation
+ at tryOldFormat
+ at tryNewFormat
+
+ at tryComputation
+ at tryOldFormat
+ at tryNewFormat
+
+ at tryNewFormat
+ at tryOldFormat
+ at tryComputation
+
+ at tryNewFormat
+ at tryOldFormat
+ at tryComputation
+
+removeObject: table
+
+appendInfoLine: "Discriminant2 OK"
=====================================
test/dwtools/Discriminant3.praat
=====================================
@@ -0,0 +1,24 @@
+# Discriminant3.praat
+# Paul Boersma 2020-05-14
+
+writeInfoLine: "Discriminant3"
+
+Debug: 0, 52
+
+table = Create TableOfReal (Pols 1973): "no"
+Save as text file: "kanweg.Table"
+Formula: "log10(self)"
+computedDiscriminant = To Discriminant
+Save as text file: "kanweg.Discriminant"
+plusObject: table
+classificationTable = To ClassificationTable: "yes", "yes"
+Save as text file: "kanweg.ClassificationTable"
+confusion = To Confusion: "no"
+Save as text file: "kanweg.Confusion"
+fractionCorrect = Get fraction correct
+appendInfoLine: "Computed correct: ", fractionCorrect
+removeObject: classificationTable, confusion, computedDiscriminant, table
+
+Debug: 0, 0
+
+appendInfoLine: "Discriminant3 OK"
=====================================
test/dwtools/pols_50males_format0.Discriminant
=====================================
@@ -0,0 +1,389 @@
+File type = "ooTextFile"
+Object class = "Discriminant"
+
+numberOfEigenvalues = 3
+dimension = 3
+eigenvalues []:
+ eigenvalues [1] = 21.139001553325844
+ eigenvalues [2] = 4.355295817120748
+ eigenvalues [3] = 0.6828853876561858
+eigenvectors [] []:
+ eigenvectors [1]:
+ eigenvectors [1] [1] = -0.4968246733001902
+ eigenvectors [1] [2] = 0.7929232798703864
+ eigenvectors [1] [3] = -0.35275758849349803
+ eigenvectors [2]:
+ eigenvectors [2] [1] = 0.8675540972437397
+ eigenvectors [2] [2] = 0.46440535560029494
+ eigenvectors [2] [3] = -0.17798189246483306
+ eigenvectors [3]:
+ eigenvectors [3] [1] = -0.022696527394271637
+ eigenvectors [3] [2] = 0.39446208680854555
+ eigenvectors [3] [3] = 0.9186318793264734
+numberOfGroups = 12
+groups? <exists>
+size = 12
+item []:
+ item [1]:
+ class = "SSCP"
+ name = "\as"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.1371322072880503 0.06507801179217895 -0.011074735561417193
+row [2]: "F2" 0.06507801179217895 0.07640416821463858 -0.0019956280460737305
+row [3]: "F3" -0.011074735561417193 -0.0019956280460737305 0.04095240135530774
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.829041821512515
+ centroid [2] = 3.0200046382498926
+ centroid [3] = 3.4171619939756255
+ item [2]:
+ class = "SSCP"
+ name = "\ct"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.09067302012389811 0.03716882530705852 0.010895111765093148
+row [2]: "F2" 0.03716882530705852 0.06623815158562135 -0.008040088713702414
+row [3]: "F3" 0.010895111765093148 -0.008040088713702414 0.047514137896571926
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.7164753792040868
+ centroid [2] = 2.9358032337839095
+ centroid [3] = 3.428957254834133
+ item [3]:
+ class = "SSCP"
+ name = "\ep"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.12325126739884948 0.007977535637010664 0.014713593912108792
+row [2]: "F2" 0.007977535637010664 0.08256097042007325 0.05045318851511985
+row [3]: "F3" 0.014713593912108792 0.05045318851511985 0.07438879619774624
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.763135965884448
+ centroid [2] = 3.2349692064700704
+ centroid [3] = 3.391162711212973
+ item [4]:
+ class = "SSCP"
+ name = "\ic"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.17647612299370122 -0.02063302628174945 -0.005697855587989537
+row [2]: "F2" -0.02063302628174945 0.07460647712948608 0.049614643436171904
+row [3]: "F3" -0.005697855587989537 0.049614643436171904 0.05109063361148622
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.585018518814506
+ centroid [2] = 3.3000373347537915
+ centroid [3] = 3.408994217433088
+ item [5]:
+ class = "SSCP"
+ name = "\o/"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.09908822912163297 0.015541819671631943 0.013775375020258235
+row [2]: "F2" 0.015541819671631943 0.056684926460000895 0.025520496405190735
+row [3]: "F3" 0.013775375020258235 0.025520496405190735 0.03527931367299332
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.643922974695668
+ centroid [2] = 3.174039321160438
+ centroid [3] = 3.353368431962918
+ item [6]:
+ class = "SSCP"
+ name = "\yc"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.11604848853561119 0.004638097797573026 0.014234726305389083
+row [2]: "F2" 0.004638097797573026 0.08910829880242509 0.05772847540761414
+row [3]: "F3" 0.014234726305389083 0.05772847540761414 0.059535232541858635
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.638814682287954
+ centroid [2] = 3.1732312476628675
+ centroid [3] = 3.3702977370451324
+ item [7]:
+ class = "SSCP"
+ name = "a"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.13373820303933756 0.043918895913021325 0.009483926777506332
+row [2]: "F2" 0.043918895913021325 0.07185378889695229 0.017946300429884602
+row [3]: "F3" 0.009483926777506332 0.017946300429884602 0.056974025547855855
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.8971834611872826
+ centroid [2] = 3.1126947721089406
+ centroid [3] = 3.407776548856642
+ item [8]:
+ class = "SSCP"
+ name = "e"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.16197482567602983 0.002298374666522604 0.012604046776579057
+row [2]: "F2" 0.002298374666522604 0.061562730940411266 0.04116004354455001
+row [3]: "F3" 0.012604046776579057 0.04116004354455001 0.043223685110515324
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.606165152281404
+ centroid [2] = 3.3033427054078994
+ centroid [3] = 3.406164846453073
+ item [9]:
+ class = "SSCP"
+ name = "i"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.15428266876841684 0.013276386826015094 0.012320309785365528
+row [2]: "F2" 0.013276386826015094 0.055510083642718484 0.03784952638535774
+row [3]: "F3" 0.012320309785365528 0.03784952638535774 0.05006027585038744
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.464795953065796
+ centroid [2] = 3.3427245505456598
+ centroid [3] = 3.4407579626513725
+ item [10]:
+ class = "SSCP"
+ name = "o"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.06861045715394555 0.035093223137004324 -0.0023606822102749565
+row [2]: "F2" 0.035093223137004324 0.09021650740495563 0.006512208041729222
+row [3]: "F3" -0.0023606822102749565 0.006512208041729222 0.07700471610942107
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.6855835642500985
+ centroid [2] = 2.9572369144661237
+ centroid [3] = 3.392825472161562
+ item [11]:
+ class = "SSCP"
+ name = "u"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.1699999779614091 0.021885675183543243 0.0161142422435738
+row [2]: "F2" 0.021885675183543243 0.1039591160562141 -0.00200153380888963
+row [3]: "F3" 0.0161142422435738 -0.00200153380888963 0.07540959694619889
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.5268057305429337
+ centroid [2] = 2.9058781887555085
+ centroid [3] = 3.3643364436087393
+ item [12]:
+ class = "SSCP"
+ name = "y"
+ numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+ numberOfRows = 3
+row [1]: "F1" 0.18909356327139404 0.014010234547664086 0.020273089008566562
+row [2]: "F2" 0.014010234547664086 0.0734940861707178 0.054864607563280654
+row [3]: "F3" 0.020273089008566562 0.054864607563280654 0.08826214244880358
+ numberOfObservations = 50
+ centroid []:
+ centroid [1] = 2.4797538722099293
+ centroid [2] = 3.236360871766193
+ centroid [3] = 3.341855942791658
+total? <exists>
+numberOfColumns = 3
+columnLabels []:
+"F1" "F2" "F3"
+numberOfRows = 3
+row [1]: "F1" 11.43514736353313 -3.8028772011835716 0.7254293171774202
+row [2]: "F2" -3.8028772011835716 13.851776134183913 0.4932432271899076
+row [3]: "F3" 0.7254293171774202 0.4932432271899076 1.2160403917859772
+numberOfObservations = 600
+centroid []:
+ centroid [1] = 2.6530580896613785
+ centroid [2] = 3.141360248760944
+ centroid [3] = 3.3936382969155714
+aprioriProbabilities []:
+ aprioriProbabilities [1] = 0.08333333333333333
+ aprioriProbabilities [2] = 0.08333333333333333
+ aprioriProbabilities [3] = 0.08333333333333333
+ aprioriProbabilities [4] = 0.08333333333333333
+ aprioriProbabilities [5] = 0.08333333333333333
+ aprioriProbabilities [6] = 0.08333333333333333
+ aprioriProbabilities [7] = 0.08333333333333333
+ aprioriProbabilities [8] = 0.08333333333333333
+ aprioriProbabilities [9] = 0.08333333333333333
+ aprioriProbabilities [10] = 0.08333333333333333
+ aprioriProbabilities [11] = 0.08333333333333333
+ aprioriProbabilities [12] = 0.08333333333333333
+costs [] []:
+ costs [1]:
+ costs [1] [1] = 0
+ costs [1] [2] = 1
+ costs [1] [3] = 1
+ costs [1] [4] = 1
+ costs [1] [5] = 1
+ costs [1] [6] = 1
+ costs [1] [7] = 1
+ costs [1] [8] = 1
+ costs [1] [9] = 1
+ costs [1] [10] = 1
+ costs [1] [11] = 1
+ costs [1] [12] = 1
+ costs [2]:
+ costs [2] [1] = 1
+ costs [2] [2] = 0
+ costs [2] [3] = 1
+ costs [2] [4] = 1
+ costs [2] [5] = 1
+ costs [2] [6] = 1
+ costs [2] [7] = 1
+ costs [2] [8] = 1
+ costs [2] [9] = 1
+ costs [2] [10] = 1
+ costs [2] [11] = 1
+ costs [2] [12] = 1
+ costs [3]:
+ costs [3] [1] = 1
+ costs [3] [2] = 1
+ costs [3] [3] = 0
+ costs [3] [4] = 1
+ costs [3] [5] = 1
+ costs [3] [6] = 1
+ costs [3] [7] = 1
+ costs [3] [8] = 1
+ costs [3] [9] = 1
+ costs [3] [10] = 1
+ costs [3] [11] = 1
+ costs [3] [12] = 1
+ costs [4]:
+ costs [4] [1] = 1
+ costs [4] [2] = 1
+ costs [4] [3] = 1
+ costs [4] [4] = 0
+ costs [4] [5] = 1
+ costs [4] [6] = 1
+ costs [4] [7] = 1
+ costs [4] [8] = 1
+ costs [4] [9] = 1
+ costs [4] [10] = 1
+ costs [4] [11] = 1
+ costs [4] [12] = 1
+ costs [5]:
+ costs [5] [1] = 1
+ costs [5] [2] = 1
+ costs [5] [3] = 1
+ costs [5] [4] = 1
+ costs [5] [5] = 0
+ costs [5] [6] = 1
+ costs [5] [7] = 1
+ costs [5] [8] = 1
+ costs [5] [9] = 1
+ costs [5] [10] = 1
+ costs [5] [11] = 1
+ costs [5] [12] = 1
+ costs [6]:
+ costs [6] [1] = 1
+ costs [6] [2] = 1
+ costs [6] [3] = 1
+ costs [6] [4] = 1
+ costs [6] [5] = 1
+ costs [6] [6] = 0
+ costs [6] [7] = 1
+ costs [6] [8] = 1
+ costs [6] [9] = 1
+ costs [6] [10] = 1
+ costs [6] [11] = 1
+ costs [6] [12] = 1
+ costs [7]:
+ costs [7] [1] = 1
+ costs [7] [2] = 1
+ costs [7] [3] = 1
+ costs [7] [4] = 1
+ costs [7] [5] = 1
+ costs [7] [6] = 1
+ costs [7] [7] = 0
+ costs [7] [8] = 1
+ costs [7] [9] = 1
+ costs [7] [10] = 1
+ costs [7] [11] = 1
+ costs [7] [12] = 1
+ costs [8]:
+ costs [8] [1] = 1
+ costs [8] [2] = 1
+ costs [8] [3] = 1
+ costs [8] [4] = 1
+ costs [8] [5] = 1
+ costs [8] [6] = 1
+ costs [8] [7] = 1
+ costs [8] [8] = 0
+ costs [8] [9] = 1
+ costs [8] [10] = 1
+ costs [8] [11] = 1
+ costs [8] [12] = 1
+ costs [9]:
+ costs [9] [1] = 1
+ costs [9] [2] = 1
+ costs [9] [3] = 1
+ costs [9] [4] = 1
+ costs [9] [5] = 1
+ costs [9] [6] = 1
+ costs [9] [7] = 1
+ costs [9] [8] = 1
+ costs [9] [9] = 0
+ costs [9] [10] = 1
+ costs [9] [11] = 1
+ costs [9] [12] = 1
+ costs [10]:
+ costs [10] [1] = 1
+ costs [10] [2] = 1
+ costs [10] [3] = 1
+ costs [10] [4] = 1
+ costs [10] [5] = 1
+ costs [10] [6] = 1
+ costs [10] [7] = 1
+ costs [10] [8] = 1
+ costs [10] [9] = 1
+ costs [10] [10] = 0
+ costs [10] [11] = 1
+ costs [10] [12] = 1
+ costs [11]:
+ costs [11] [1] = 1
+ costs [11] [2] = 1
+ costs [11] [3] = 1
+ costs [11] [4] = 1
+ costs [11] [5] = 1
+ costs [11] [6] = 1
+ costs [11] [7] = 1
+ costs [11] [8] = 1
+ costs [11] [9] = 1
+ costs [11] [10] = 1
+ costs [11] [11] = 0
+ costs [11] [12] = 1
+ costs [12]:
+ costs [12] [1] = 1
+ costs [12] [2] = 1
+ costs [12] [3] = 1
+ costs [12] [4] = 1
+ costs [12] [5] = 1
+ costs [12] [6] = 1
+ costs [12] [7] = 1
+ costs [12] [8] = 1
+ costs [12] [9] = 1
+ costs [12] [10] = 1
+ costs [12] [11] = 1
+ costs [12] [12] = 0
View it on GitLab: https://salsa.debian.org/med-team/praat/-/compare/c6d755f037d97abdea49c8c1bfdc0b4dc274ff6e...50946a466990f4a2ab58dfee0a62fdf8c3e7bf77
--
View it on GitLab: https://salsa.debian.org/med-team/praat/-/compare/c6d755f037d97abdea49c8c1bfdc0b4dc274ff6e...50946a466990f4a2ab58dfee0a62fdf8c3e7bf77
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20200521/cbfcc05f/attachment-0001.html>
More information about the debian-med-commit
mailing list