• R/O
  • HTTP
  • SSH
  • HTTPS

base: Commit

This repository is a base of Eos.


Commit MetaInfo

Revisionae8bce5c8333987d411c8092b7505b79dcfcb1c9 (tree)
Zeit2021-06-04 05:42:27
AutorTakuo Yasunaga <yasunaga@bio....>
CommiterTakuo Yasunaga

Log Message

Correct: eosMath MAD mean -> median

Please enter the commit message for your changes. Lines starting
with '#' will be ignored, and an empty message aborts the commit.
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:

modified: .DS_Store
modified: include/eosMath.h
modified: src/Objects/General/eosMath/doc/eosMath.html
modified: src/Objects/General/eosMath/inc/eosMath.h
modified: src/Objects/General/eosMath/src/eosMathStatistics.c
modified: src/Tools/eosMath/eosMathAverage/src/eosMathAverage.c
modified: src/Tools/eosMath/eosMathAverage/src/test/Makefile

Changes not staged for commit:

modified: include/eosMATH.h

Ändern Zusammenfassung

Diff

Binary files a/.DS_Store and b/.DS_Store differ
--- a/include/eosMath.h
+++ b/include/eosMath.h
@@ -34,7 +34,12 @@ extern void eosMathSorting(double* v, int n);
3434 extern double eosMathMedian(double* v, int n);
3535 extern double eosMathAverage(double* v, int n);
3636 extern double eosMathWeightedAverage(double* v, int n);
37-extern double eosMathStdDev(double* v, int n);
37+extern double eosMathStdDev(double* v, double avg, int n);
38+extern double eosMathMedianAbsoluteDeviation(double* v, double median, int n);
39+extern double eosMathMedianAbsoluteDeviationNormal(double* v, double median, int n);
40+extern double eosMathInterquantileRange(double* v, int n);
41+extern double eosMathInterquantileRangeNormal(double* v, int n);
42+extern double* eosMathTrimming(double** vv, int* nn, double* v, int n, double trim);
3843 extern double eosMathTrimmedAverage(double* v, int n, double trim);
3944 extern double eosMathHodgesLehmannEstimator(double* v, int n);
4045
--- a/src/Objects/General/eosMath/doc/eosMath.html
+++ b/src/Objects/General/eosMath/doc/eosMath.html
@@ -3,7 +3,6 @@
33 <H2>Information from source codes</H2>
44 </A>
55 <PRE>
6-../src/eosMathStatistics.c:
76 </PRE>
87 <HR>
98 <A NAME="include">
@@ -46,7 +45,12 @@ extern void eosMathSorting(double* v, int n);
4645 extern double eosMathMedian(double* v, int n);
4746 extern double eosMathAverage(double* v, int n);
4847 extern double eosMathWeightedAverage(double* v, int n);
49-extern double eosMathStdDev(double* v, int n);
48+extern double eosMathStdDev(double* v, double avg, int n);
49+extern double eosMathMedianAbsoluteDeviation(double* v, double median, int n);
50+extern double eosMathMedianAbsoluteDeviationNormal(double* v, double median, int n);
51+extern double eosMathInterquantileRange(double* v, int n);
52+extern double eosMathInterquantileRangeNormal(double* v, int n);
53+extern double* eosMathTrimming(double** vv, int* nn, double* v, int n, double trim);
5054 extern double eosMathTrimmedAverage(double* v, int n, double trim);
5155 extern double eosMathHodgesLehmannEstimator(double* v, int n);
5256
--- a/src/Objects/General/eosMath/inc/eosMath.h
+++ b/src/Objects/General/eosMath/inc/eosMath.h
@@ -35,10 +35,11 @@ extern double eosMathMedian(double* v, int n);
3535 extern double eosMathAverage(double* v, int n);
3636 extern double eosMathWeightedAverage(double* v, int n);
3737 extern double eosMathStdDev(double* v, double avg, int n);
38-extern double eosMathMeanAbsoluteDeviation(double* v, double median, int n);
39-extern double eosMathMeanAbsoluteDeviationNormal(double* v, double median, int n);
38+extern double eosMathMedianAbsoluteDeviation(double* v, double median, int n);
39+extern double eosMathMedianAbsoluteDeviationNormal(double* v, double median, int n);
4040 extern double eosMathInterquantileRange(double* v, int n);
4141 extern double eosMathInterquantileRangeNormal(double* v, int n);
42+extern double* eosMathTrimming(double** vv, int* nn, double* v, int n, double trim);
4243 extern double eosMathTrimmedAverage(double* v, int n, double trim);
4344 extern double eosMathHodgesLehmannEstimator(double* v, int n);
4445
--- a/src/Objects/General/eosMath/src/eosMathStatistics.c
+++ b/src/Objects/General/eosMath/src/eosMathStatistics.c
@@ -208,6 +208,38 @@ eosMathTrimmedAverage(double* v, int n, double trim)
208208 return avg;
209209 }
210210
211+double*
212+eosMathTrimming(double** trimmedV, int*nn, double* v, int n, double trim)
213+{
214+
215+ int i;
216+ int iStart;
217+ double* tmp;
218+ double* tmp2;
219+ double avg;
220+
221+ *nn = (int)(n*(1-trim*2)+0.5);
222+ iStart = (int)(n*trim+0.5) ;
223+
224+ tmp = memoryAllocate(sizeof(double)*n, "in eosMathMedian");
225+ tmp2 = memoryAllocate(sizeof(double)*(*nn), "in eosMathMedian");
226+ for(i=0; i<n; i++) {
227+ tmp[i] = v[i];
228+ }
229+ eosMathSorting(tmp, n);
230+
231+ for(i=0; i<*nn; i++) {
232+ tmp2[i] = tmp[i+iStart];
233+ }
234+ free(tmp);
235+
236+ if(trimmedV!=NULL) {
237+ *trimmedV = tmp2;
238+ }
239+
240+ return tmp2;
241+}
242+
211243
212244 double
213245 eosMathHodgesLehmannEstimator(double* v, int n)
--- a/src/Tools/eosMath/eosMathAverage/src/eosMathAverage.c
+++ b/src/Tools/eosMath/eosMathAverage/src/eosMathAverage.c
@@ -40,8 +40,10 @@ main(int argc, char* argv[])
4040 eosMathAverageInfo info;
4141 Array in;
4242 int n, i;
43+ int nn;
4344 double* v;
4445 double avg;
46+ double* vv;
4547
4648 init0(&info);
4749 argCheck(&info, argc, argv);
@@ -62,21 +64,27 @@ main(int argc, char* argv[])
6264 }
6365
6466 if(info.flagTrim) {
65- avg = eosMathTrimmedAverage(v, n, info.Trim);
67+ vv = eosMathTrimming(&vv, &nn, v, n, info.Trim);
6668 } else {
67- switch(info.mode) {
68- case 0: {
69- avg = eosMathAverage(v, n);
70- break;
71- }
72- case 1: {
73- avg = eosMathWeightedAverage(v, n);
74- break;
75- }
76- default: {
77- fprintf(stderr, "Not supported mode: %ld\n", info.mode);
78- exit(EXIT_FAILURE);
79- }
69+ vv = v;
70+ nn = n;
71+ }
72+#ifdef DEBUG
73+ for(i=0; i<n; i++) DEBUGPRINT1(" %f", v[i]); DEBUGPRINT("\n");
74+ for(i=0; i<nn; i++) DEBUGPRINT1(" %f", vv[i]); DEBUGPRINT("\n");
75+#endif
76+ switch(info.mode) {
77+ case 0: {
78+ avg = eosMathAverage(vv, nn);
79+ break;
80+ }
81+ case 1: {
82+ avg = eosMathWeightedAverage(vv, nn);
83+ break;
84+ }
85+ default: {
86+ fprintf(stderr, "Not supported mode: %ld\n", info.mode);
87+ exit(EXIT_FAILURE);
8088 }
8189 }
8290
@@ -91,4 +99,5 @@ additionalUsage()
9199 fprintf(stderr, "-m 0 : Average\n");
92100 fprintf(stderr, "-m 1 : WeightedAverage\n");
93101 fprintf(stderr, "-m 0 -trim xx: Trimming\n");
102+ fprintf(stderr, "-m 1 -trim xx: Trimming\n");
94103 }
--- a/src/Tools/eosMath/eosMathAverage/src/test/Makefile
+++ b/src/Tools/eosMath/eosMathAverage/src/test/Makefile
@@ -16,6 +16,7 @@ exec:
1616 ../$(OSTYPE)/$(OBJECTNAME) -i data/test2.in -o data/test2.out
1717 ../$(OSTYPE)/$(OBJECTNAME) -i data/test2.in -o data/test2.trim.out -trim 0.2
1818 ../$(OSTYPE)/$(OBJECTNAME) -i data/test2.in -o data/test2-1.out -m 1
19+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test2.in -o data/test2-1.trim.out -m 1 -trim 0.2
1920 @echo "----- Calc check -----"
2021
2122 clean:
Show on old repository browser