Commit 9c1f6cc2 authored by pfreon's avatar pfreon
Browse files

Medium changes on naming the type of models & jackknife plots titles & Current known facts outputs

The naming of the type of models is change with the use of Linear (Graham-Schaefer model)", "Exponential (Fox model)", "Generalized (Pella & Tomlinson model)",  and "Exponential_additive" for CPUE = f(E) and "Linear", "Exponential", "Power", "Power", "Non-monotonic"  for CPUE = f(V).
Addition of facts related to the model selection in the frame "Current known facts" when repeating the use of the sub-menu "Fit a model directly".
 Jackknife plots titles displayed on two lines.
Change in the title of the the sub-menu Make (or open) a history html folder, with addition of "& plots".
parent 94afe0c9
This diff is collapsed.
......@@ -33,11 +33,11 @@ public class Plot implements Cloneable {
nbdecimalAxes = new int[2];
notationE = new boolean[2];
paramEchelle = new double[4];
titre = new String[3];
for (i = 0; i < 3; i++) {
titre = new String[4];
for (i = 0; i < 4; i++) {
titre[i] = " ";
}
pas = new double[2];
pas = new double[2]; // Pas des graduations et labels des axes.
origine = new double[2];
marges = new double[4];
......@@ -98,53 +98,54 @@ public class Plot implements Cloneable {
*/
public void setValeurs(PlotSerie s) {
//System.out.println("Flag PlotSerie s, ligne 100 Plot.java"); // test 2020
int divX = 10;
int divX = 10;
if (nbSerie == 0) { // Ce qui suit ne concerne pas les histogrammes. Pas d'effet si résultat < 0 alors que l'axe concerné est forcé d'être coupé par l'autre à 0.
// Le if suivant filtre les variables X pour éliminer V et Years
if (s.getMinX() != Data.stat[6][3] && s.getMaxX() != Data.stat[7][3] && s.getMinX() != Stat1.min(Data.year) && s.getMaxX() != Stat1.max(Data.year))
extremasSeries[0] = 0.0;
else if (s.getMinX() != Stat1.min(Data.year) && s.getMaxX() != Stat1.max(Data.year)) // Si années
extremasSeries[0] = s.getMinX()-((s.getMaxX() - s.getMinX())/20); //Pour éloigner valeur Xmin de l'axe des Y Modif. 2020
else extremasSeries[0] = s.getMinX();
if (s.getMinX() != Stat1.min(Data.year) && s.getMaxX() != Stat1.max(Data.year))
extremasSeries[1] = s.getMaxX()+((s.getMaxX() - s.getMinX())/20); //Pour éloigner valeur Xmax du bout de l'axe des X. Modif 2020
else extremasSeries[1] = s.getMaxX();
//System.out.println("Plot Java ligne 113 nbSerie = " + nbSerie + " extremasSeries[0] = " + extremasSeries[0] + " extremasSeries[1] = " + extremasSeries[1]);
titre[0] = s.getNameX();
if (s.getMinY() != Data.stat[6][3] && s.getMaxY() != Data.stat[7][3] && s.getMinY() != Stat1.min(Data.year) && s.getMaxY() != Stat1.max(Data.year) && s.getMinY() > 0) // s.getMinY()>0 prevents setting to zero residuals (and possibly V when negative)
extremasSeries[2] = 0.0;
else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour éloigner valeur Ymin de l'axe des X Modif. 2020
//System.out.println("Plot Java ligne 119 Stat1.min(Modele.res) = " + Stat1.min(Modele.res));
if (s.getMinX() != Data.stat[6][3] && s.getMaxX() != Data.stat[7][3] && s.getMinX() != Stat1.min(Data.year) && s.getMaxX() != Stat1.max(Data.year))
extremasSeries[0] = 0.0;
else if (s.getMinX() != Stat1.min(Data.year) && s.getMaxX() != Stat1.max(Data.year)) // Si années
extremasSeries[0] = s.getMinX()-((s.getMaxX() - s.getMinX())/20); //Pour éloigner valeur Xmin de l'axe des Y Modif. 2020
else extremasSeries[0] = s.getMinX();
if (s.getMinX() != Stat1.min(Data.year) && s.getMaxX() != Stat1.max(Data.year))
extremasSeries[1] = s.getMaxX()+((s.getMaxX() - s.getMinX())/20); //Pour éloigner valeur Xmax du bout de l'axe des X. Modif 2020
else extremasSeries[1] = s.getMaxX();
//System.out.println("Plot Java ligne 113 nbSerie = " + nbSerie + " extremasSeries[0] = " + extremasSeries[0] + " extremasSeries[1] = " + extremasSeries[1]);
titre[0] = s.getNameX();
if (s.getMinY() != Data.stat[6][3] && s.getMaxY() != Data.stat[7][3] && s.getMinY() != Stat1.min(Data.year) && s.getMaxY() != Stat1.max(Data.year) && s.getMinY() > 0) // s.getMinY()>0 prevents setting to zero residuals (and possibly V when negative)
extremasSeries[2] = 0.0;
else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour éloigner valeur Ymin de l'axe des X Modif. 2020
//System.out.println("Plot Java ligne 119 Stat1.min(Modele.res) = " + Stat1.min(Modele.res));
extremasSeries[3] = s.getMaxY()+((s.getMaxY() - s.getMinY())/20); //Pour éloigner valeur Ymax du sommet de l'axe des Y. Modif 2020
titre[1] = s.getNameY();
} else {
}
else {
extremasSeries[0] = Math.min(extremasSeries[0], s.getMinX());
extremasSeries[1] = Math.max(extremasSeries[1], s.getMaxX());
extremasSeries[2] = Math.min(extremasSeries[2], s.getMinY());
extremasSeries[3] = Math.max(extremasSeries[3], s.getMaxY());
}
//System.out.println("Plot Java ligne 126 extremasSeries[2] = " + extremasSeries[2] + " extremasSeries[3] = " + extremasSeries[3]);
//System.out.println("Plot Java ligne 126 extremasSeries[2] = " + extremasSeries[2] + " extremasSeries[3] = " + extremasSeries[3]);
if (s.getFigure() == Histogrammes) { // Pour figures histogrammes.
extremasSeries[0] = 1;
extremasSeries[1] = s.getSize();
extremasAxes[0] = 0;
extremasAxes[1] = (double) (extremasSeries[1] + 0.5);
//System.out.println("extremasAxes[1] = " + extremasAxes[1]);
pas[0] = 1;
//System.out.println("extremasAxes[1] = " + extremasAxes[1]);
pas[0] = 1; // Pas des graduations et labels axe des X.
serieHisto = true;
} else if (!serieHisto) { // Pour autres figures.
// extremasSeries[0]=extremasSeries[0]*.9;
// extremasSeries[2]=extremasSeries[2]*1.1;
pas[0] = Math.abs((extremasSeries[1] - extremasSeries[0]) / 10); // Le pas sur l'axe des X (pas[0] est égal à 1/10ème del'étendue, arondi à unité entière. Commentaire 2021
if (pas[0] > 1) {
pas[0] = Math.round(pas[0] - 0.5);
//System.out.println("Ligne 143 Plot.java, calcul pas[0]. extremasSeries[1]= " + extremasSeries[1]+" extremasSeries[0]= " + extremasSeries[0] + " pas[0]= " + pas[0]); // test 2020
}
ajusteExtrema(0, 1);
}
pas[1] = Math.abs((extremasSeries[3] - extremasSeries[2]) / 10); // Le pas sur l'axe des Y (pas[1] est égal à 1/10ème del'étendue, arondi à unité entière. Commentaire 2020
// System.out.println("Ligne 140 Plot.java, calcul pas[1]. extremasSeries[3]= " + extremasSeries[3]+" extremasSeries[2]= " + extremasSeries[2] + " pas[1]= " + pas[1]); // test 2020
pas[1] = Math.abs((extremasSeries[3] - extremasSeries[2]) / 10); // Le pas sur l'axe des Y (pas[1] est égal à 1/10ème del'étendue, arrondi à unité entière. Commentaire 2020
//System.out.println("Ligne 149 Plot.java, calcul pas[1]. extremasSeries[3]= " + extremasSeries[3]+" extremasSeries[2]= " + extremasSeries[2] + " pas[1]= " + pas[1]); // test 2020
if (pas[1] > 1) {
pas[1] = Math.round(pas[1] + 0.5);
}
......@@ -225,7 +226,7 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
} else {
grad = (int) (dimPlot.height * 0.01);
}
//for (i = 0; i < 4; i++) System.out.println("Plot.java TraceAxes(Graphics g) i = " + i + " extremasAxes[i]= " + extremasAxes[i] + " paramEchelle[i] = " + paramEchelle[i]);
//for (i = 0; i < 4; i++) System.out.println("Plot.java TraceAxes(Graphics g) i = " + i + " extremasAxes[i]= " + extremasAxes[i] + " paramEchelle[i] = " + paramEchelle[i]);
// Les 4 lignes suivantes apparaissent aussi dans PlotModal.java avec différence dans y2.
x1 = (extremasAxes[0] * paramEchelle[0] - paramEchelle[2]);
x2 = (extremasAxes[1] * paramEchelle[0] - paramEchelle[2]);
......@@ -240,7 +241,7 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
py = fm.getHeight();
double py2 = py / 2;
double dec = 0;
nb = extremasAxes[0]; // Avant: + pas[0] donc pas d'écriture de la valeur de la première graduation sur axe des X;
nb = extremasAxes[0]; // Avant: nb = extremasAxes[0] + pas[0] donc pas d'écriture de la valeur de la première graduation sur axe des X;
g.setFont(feti);
while (nb <= extremasAxes[1] + 0.0001) {
xg = (nb * paramEchelle[0] - paramEchelle[2]);
......@@ -252,12 +253,12 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
nb = nb + pas[0];
dec = py2 - dec;
}
TextLayout textTl;
if (titre[0].trim().length() != 0) {
TextLayout textTl; // The following lines are not called for the jackknife plots. Instead, PlotModal.java is used. Comment 2021;
if (titre[0].trim().length() != 0) { // Titre axe X.
textTl = new TextLayout(titre[0], getPoliceTitre('x'), new FontRenderContext(null, false, false));
textTl.draw(g2, (float) (x1 + (x2 - x1) / 2 - (textTl.getBounds().getWidth()) / 2), (float) (y1 + grad + 2 * py + (float) (textTl.getBounds().getHeight())));
}
if (titre[2].trim().length() != 0) {
if (titre[2].trim().length() != 0) { // Titre du graphique.
textTl = new TextLayout(titre[2], getPoliceTitre('g'), new FontRenderContext(null, false, false));
textTl.draw(g2, (float) (x1 + (x2 - x1) / 2 - (textTl.getBounds().getWidth()) / 2), (float) (y2 - 2 * (textTl.getBounds().getHeight())));
}
......@@ -292,7 +293,7 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
}
//g.drawString(Integer.toString(count),250,250);
int w = dimPlot.width;
if (titre[1].trim().length() != 0) {
if (titre[1].trim().length() != 0) { // Titre axe Y.
textTl = new TextLayout(titre[1], getPoliceTitre('y'), new FontRenderContext(null, false, false));
AffineTransform textAt = new AffineTransform();
g2.setFont(getPoliceTitre('y'));
......@@ -489,9 +490,10 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
*
* p.
*/
public void setpasX(double p) {
public void setpasX(double p) { // Used in Modele.java (ex: Global.fittedCpuePlot[i].setpasX(5.0d)), Validation.java and Data.java.
if (p < extremasAxes[1] && p > 0) {
pas[0] = p;
//System.out.println("Ligne 496 Plot.java, calcul pas[0]. extremasSeries[1]= " + extremasSeries[1]+" extremasSeries[0]= " + extremasSeries[0] + " pas[0]= " + pas[0]); // test 2020
}
}
......@@ -547,9 +549,16 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
*
* @param String s, le titre.
*/
public void setTitreGraphique(String s) {
public void setTitreGraphique(String s) {
titre[2] = s;
}
}
public void setTitreGraphique1(String s) {
titre[2] = s;
}
public void setTitreGraphique2(String s) {
titre[3] = s;
}
/*
* Affecte le titre du graphique sur X.
......@@ -760,7 +769,7 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
}
/*
* Dtermine sur quelle valeur l'axe Y coupe l'axe X. Cette valeur doit être
* Détermine sur quelle valeur l'axe Y coupe l'axe X. Cette valeur doit être
* comprise dans les limites de l'axe X.
*
* @param double f, la valeur où se fait l'intersection.
......@@ -851,7 +860,8 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
return df.format(exp) + s;
}
private double Graduation(double xmin, double xmax, int nint) {
// La fonction qui suit est supprimée car jamais appellée. Commentaire 2021.
/* private double Graduation(double xmin, double xmax, int nint) {
int i, k;
double[] q = {1.0, 2.0, 5.0, 10.0, 20.0};
double[] r = {1.41421, 3.162278, 7.071068};
......@@ -861,7 +871,7 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
/*double xmin=0.0;
double xmax=10.0;
int nint=10;*/
int mfix = 0;
/* int mfix = 0;
p = (xmax - xmin) / (double) nint;
......@@ -917,7 +927,7 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
//System.out.println(xinf + "*"+ xsup +"**" + pas) ;
return pas;
}
*/
/*
* Trace le graphique.
*
......@@ -984,8 +994,8 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
currentColor = s.getCouleurPoints();
traceMark(g2, vx, vy, typemark, currentColor);
break;
case CourbesModales: // graphiques dont l'axe des X reprsente une variable qualitative?
System.out.println("\na FLAG CourbesModales LIGNE 967 Plot.java"); // N'apparait pas... . Test 2020
case CourbesModales: // graphiques dont l'axe des X représente une variable qualitative (histogrammes jackknife)
//System.out.println("\na FLAG CourbesModales LIGNE 989 Plot.java"); // N'apparait pas... . Test 2020
g2.setColor(s.getCouleur());
g2.setStroke(s.getBasicStroke());
x1 = vx[0] * paramEchelle[0] - paramEchelle[2];
......@@ -1145,7 +1155,7 @@ else extremasSeries[2] = s.getMinY()-((s.getMaxY() - s.getMinY())/20); //Pour é
* l'extremité des axes correspondent à une graduation.
*/
protected void ajusteExtrema(int i, int j) { // différent de ajuste Extremas (pluriel) ci-dessous.
System.out.println("Flag ajusteExtrema (au singulier)");
//System.out.println("Flag ajusteExtrema (au singulier)");
int p = 0;
if (j == 3) {
p = 1;
......@@ -1163,8 +1173,8 @@ System.out.println("Flag ajusteExtrema (au singulier)");
if (Math.abs(extremasAxes[j]) > 1) {
extremasAxes[j] = Math.round(extremasAxes[j] + 0.5);
}
System.out.println("ajusteExtrema(), ligne 1133 Plot.java, i="+ i + " extremasAxes[i]= " + extremasAxes[i]);
System.out.println("ajusteExtrema(), ligne 1133 Plot.java, j="+ j + " extremasAxes[j]= " + extremasAxes[j]);
//System.out.println("ajusteExtrema(), ligne 1133 Plot.java, i="+ i + " extremasAxes[i]= " + extremasAxes[i]);
//System.out.println("ajusteExtrema(), ligne 1133 Plot.java, j="+ j + " extremasAxes[j]= " + extremasAxes[j]);
double adj = extremasAxes[i];
int z = 0;
while (adj < extremasAxes[j]) {
......@@ -1186,7 +1196,7 @@ System.out.println("ajusteExtrema(), ligne 1133 Plot.java, j="+ j + " extremasAx
*/
public void ajusteExtremas(boolean surX, boolean surY, boolean minzeroSurX, boolean minzeroSurY) { // différent de ajuste Extrema (singulier) ci-dessus.
// Selon valeur booléenne (vrai ou faux) applique ou non l'ajustement surX, sur X et met ou non le minimum à zéro sur Y et sur Y
System.out.println("Flag ajusteExtremas() au pluriel, ligne 1163 Plot.java"); // test 2020
//System.out.println("Flag ajusteExtremas() au pluriel, ligne 1163 Plot.java"); // test 2020
long[] bornes = {1, 10, 100, 1000, 10000};
int deb;
int fin;
......@@ -1201,14 +1211,14 @@ System.out.println("Flag ajusteExtremas() au pluriel, ligne 1163 Plot.java"); //
deb = 2;
fin = 4;
} else {
System.out.println("ajusteExtremas(), ligne 1186 Plot.java surX = " + surX + " surY = " + surY);
//System.out.println("ajusteExtremas(), ligne 1204 Plot.java surX = " + surX + " surY = " + surY);
return;
}
System.out.println("ajusteExtremas(), ligne 1189 Plot.java deb = " + deb + " fin = " + fin);
//System.out.println("ajusteExtremas(), ligne 1207 Plot.java deb = " + deb + " fin = " + fin);
for (int i = deb; i < fin; i++) {
//System.out.println("i " + i + "OLD extremasSeries[i] " + extremasSeries[i]);
double extabs = Math.abs(extremasSeries[i]); // extabs pour extension absolue. i = 0 min X; i = 1 max X
System.out.println("ajusteExtremas(), ligne 1192 Plot.java i =" + i + " extremasSeries[i]=" + extremasSeries[i]);
//System.out.println("ajusteExtremas(), ligne 1211 Plot.java i =" + i + " extremasSeries[i]=" + extremasSeries[i]);
int index = 4;
if (extabs < 1) {
index = 0;
......@@ -1222,7 +1232,7 @@ System.out.println("ajusteExtremas(), ligne 1192 Plot.java i =" + i + " extremas
// System.out.println("\najusteExtremas(), ligne 1193 Plot.java, index = " + index); // test 2020
double newext = 0;
double modulo = extremasSeries[i] % bornes[index]; // % = modulo = reste de la division extremasSeries / bornes. Commentaire 2020
System.out.println("ajusteExtremas(), ligne 1194 Plot.java modulo initial= " + modulo); // test 2020
//System.out.println("ajusteExtremas(), ligne 1225 Plot.java modulo initial= " + modulo); // test 2020
if (extremasSeries[i] < 0) {
modulo = bornes[index] + modulo;
// System.out.println("ajusteExtremas(), extremasSeries[i] < 0 ligne 1196 Plot.java, i= " + i + " index= " + index + " bornes[index]= " + bornes[index] + " modulo final= " + modulo); // test 2020
......@@ -1245,7 +1255,7 @@ System.out.println("ajusteExtremas(), ligne 1194 Plot.java modulo initial= " +
extremasAxes[i] = 0;
} else {
extremasAxes[i] = newext;
//System.out.println("Flag dans Plot.java ligne 1230 newext = " + newext);
//System.out.println("Flag dans Plot.java ligne 1230 newext = " + newext);
}
//System.out.println(" NEW extremasSeries[i] " +extremasAxes[i]);
}
......@@ -1256,11 +1266,11 @@ System.out.println("ajusteExtremas(), ligne 1194 Plot.java modulo initial= " +
if (minzeroSurY && extremasAxes[2] > 0) {
extremasAxes[2] = 0;
}
//System.out.println("Dans Plot.java ligne 1240 extremasAxes[0] = " + extremasAxes[0] + "extremasAxes[1] = " + extremasAxes[1]);
//System.out.println("Dans Plot.java ligne 1240 extremasAxes[0] = " + extremasAxes[0] + "extremasAxes[1] = " + extremasAxes[1]);
pas[0] = (extremasAxes[1] - extremasAxes[0]) / 10; // extremasAxes[0] min. axe X et extremasAxes[1] max axe X. 2020.
pas[1] = (extremasAxes[3] - extremasAxes[2]) / 10; // extremasAxes[2] min. axe Y et extremasAxes[3] max axe Y. 2020.
// System.out.println("ajusteExtremas(), ligne 1229 Plot.java pas[1]= " + pas[1] + " extremasAxes[2]= " + extremasAxes[2] + " extremasAxes[3]= " + extremasAxes[3]); // test 2020
//System.out.println("Flag Plot.java ajusteExtremas. pas[0] = " + pas[0] + " pas[1] = " + pas[1]);
//System.out.println("Flag Plot.java ajusteExtremas. pas[0] = " + pas[0] + " pas[1] = " + pas[1]);
if (pas[0] > 10) {
this.setDecimalsurX(0);
}
......@@ -1269,7 +1279,7 @@ System.out.println("ajusteExtremas(), ligne 1194 Plot.java modulo initial= " +
}
//if(surX) ajusteExtrema(0,1);
//if(surX) ajusteExtrema(2,3);
System.out.println("Dans Plot.java ligne 1270 extremasAxes[0] = " + extremasAxes[0] + "extremasAxes[1] = " + extremasAxes[1]);
//System.out.println("Dans Plot.java ligne 1270 extremasAxes[0] = " + extremasAxes[0] + "extremasAxes[1] = " + extremasAxes[1]);
}
public void pasAutoX(int nbGraduation) {
......@@ -1327,7 +1337,7 @@ System.out.println("Dans Plot.java ligne 1270 extremasAxes[0] = " + extremasAxes
*/
protected void traceLegende(Graphics g, double[] position) {
// Dimension d=panel.getSize();
// Dimension d=panel.getSize();
Color[] colorL = new Color[nbSerie];
Color[][] colorP = new Color[nbSerie][1];
int numLegend = 0;
......
......@@ -2,7 +2,7 @@
/*
* Titre : Climprod<p>
* Tracer de graphiques dont l'axe des X représente une variable qualitative.
* Utilisé pour histogrammes.
* Utilisé pour histogrammes du jackknife uniquement.
*/
package fr.ird.climprod;
......@@ -120,10 +120,14 @@ public class PlotModal extends Plot {
nb = nb + 1;
}
TextLayout textT2;
TextLayout textTl = new TextLayout(titre[0], getPoliceTitre('x'), new FontRenderContext(null, false, false));
textTl.draw(g2, (float) (x1 + (x2 - x1) / 2 - (textTl.getBounds().getWidth()) / 2), (float) (y1 + grad + 2 * py + (textTl.getBounds().getHeight())));
textTl = new TextLayout(titre[2], getPoliceTitre('g'), new FontRenderContext(null, false, false));
textTl.draw(g2, (float) (x1 + (x2 - x1) / 2 - (textTl.getBounds().getWidth()) / 2), (float) (y2 - 2 * (textTl.getBounds().getHeight())));
textTl.draw(g2, (float) (x1 + (x2 - x1) / 2 - (textTl.getBounds().getWidth()) / 2), (float) (y2 - 4 * (textTl.getBounds().getHeight())));
textT2 = new TextLayout(titre[3], getPoliceTitre('g'), new FontRenderContext(null, false, false));
textT2.draw(g2, (float) (x1 + (x2 - x1) / 2 - (textT2.getBounds().getWidth()) / 2), (float) (y2 - 2 * (textT2.getBounds().getHeight())));
if (ShowLegend) {
traceLegende(g, posLeg);
}
......@@ -135,7 +139,7 @@ public class PlotModal extends Plot {
y2 = (extremasAxes[3] * paramEchelle[1] + paramEchelle[3]);
line = new Line2D.Double(x1, y1, x1, y2);
g2.draw(line);
//line=new Line2D.Double(x1-grad,y1,x1+grad,y1);
//line=new Line2D.Double(x1-grad,y1,x1+grad,y1);
//g2.draw(line);
nb = extremasAxes[2];
// nb=extremasAxes[2]+pas[1];
......
......@@ -34,7 +34,7 @@ public class RapportHtml extends JDialog {
if (fileSep.equals("/")) {
fileSep = "//";
}
path = System.getProperty("user.home") + fileSep + ".climprod" + fileSep + "HtmlFolder";
path = System.getProperty("user.home") + fileSep + ".climprod" + fileSep + "Html&PlotsFolder";
File fPath = new File(path);
File[] dd = fPath.listFiles();
......@@ -98,7 +98,7 @@ public class RapportHtml extends JDialog {
bEnable[5] = bEnable[4];
bEnable[7] = bEnable[4];
bEnable[6] = bEnable[0] && Global.validationOk; // Jackknife plot
bEnable[8] = Global.validationOk && (((Global.numero_modele > 5) || (Global.numero_modele < 2)) && (Global.numero_modele != 20) && (Global.numero_modele != 33));
bEnable[8] = Global.validationOk && (((Global.numero_modele > 5) || (Global.numero_modele < 2)) && (Global.numero_modele != 20) && (Global.numero_modele != 33));
bEnable[9] = bEnable[4];
bEnable[10] = bEnable[6];
// bEnable[11] = to enable questions and answers
......@@ -731,8 +731,8 @@ bEnable[8] = Global.validationOk && (((Global.numero_modele > 5) || (Global.nume
if (p[i] != null){
String titreCorr = p[i].getTitreGraphique();
int cc = titreCorr.length();
if (cc > 75) titreCorr = titreCorr.substring(0,(titreCorr.indexOf("R2")+16)); // In order to cut the part of the title of the R2 jackknife plot showing ">" or "<" in the title of the file.
if (cc > 68 && cc < 75) titreCorr = titreCorr.substring(0,(titreCorr.indexOf("%")+12)); // In order to cut the part of the title of the R2 jackknife plot showing ">" or "<" in the title of the file.
if (cc > 45) titreCorr = titreCorr.substring(0,(titreCorr.indexOf("R2")+16)); // In order to cut the part of the title of the R2 jackknife plot showing ">" or "<" in the title of the file.
if (cc > 39 && cc < 45) titreCorr = titreCorr.substring(0,(titreCorr.indexOf("%")+12)); // In order to cut the part of the title of the coefficient jackknife plot showing ">" or "<" in the title of the file.
titre[i] = titreCorr + ".jpg"; // Noms fichiers image jpg
//System.out.println("RapportHtml.java ligne 770, titre [i]: " + titre[i] + " i = " + i);
makeImage(folderpath + fileSep + titre[i], p[i]);
......@@ -786,8 +786,8 @@ bEnable[8] = Global.validationOk && (((Global.numero_modele > 5) || (Global.nume
dispose();
}
// private String fileSep;
// private String path;
//private String fileSep;
//private String path;
private String facts;
private String htmlText = "";
private String[] folderList;
......
......@@ -13,16 +13,14 @@ public class RechercheModele { //Variables dans fichier ListeModele.csv:
private static int nbData=0;
private static int[] ordre; //Ordre de sélection des modèles lors de la recherche
private static String [] equation; //Equation litterale
private static String [] help; //Fichier d'aide associ
private static String [] help; //Fichier d'aide associé
private static int [] type; //Type de modèle: Effort = 1 Climat = 2 Mixte = 3
private static int [] affichage; //Ordre d'affichage dans la liste
private static String [] infl_Env; //Influence de l'environnement
private static int [] nbre_param; //Nbre de param�tre du mod�le
private static int [] forme1; //Forme �quation sur param 1
private static int [] numMod; //Num�ro mod�le (pas utile!)
private static int [] forme2; //Forme �quation sur param 2
private static boolean[] teste; //Vrai si mod�le test�
private static int [] nbre_param; //Nbre de paramètre du modèle
private static int [] forme1; //Forme équation sur param 1
private static int [] forme2; //Forme équation sur param 2
private static boolean[] teste; //Vrai si modèle testé.
private static String[] listeModeleE;
private static String[] listeModeleV;
private static String[] listeModeleEVAbundance;
......@@ -77,7 +75,6 @@ public class RechercheModele { //Variables dans fichier ListeModele.csv:
help=new String[nbData];
ordre=new int[nbData];
type=new int[nbData];
numMod=new int[nbData];
affichage=new int[nbData];
infl_Env=new String[nbData];
......@@ -92,7 +89,6 @@ public class RechercheModele { //Variables dans fichier ListeModele.csv:
int num=Integer.parseInt(d.nextToken().trim());
ordre[num]=i;
//htNum.put(d.nextToken().trim(),Integer.toString(i));
numMod[i]=Integer.parseInt(d.nextToken().trim());
type[i]=Integer.parseInt(d.nextToken().trim());
affichage[i]=Integer.parseInt(d.nextToken().trim());
equation[i]=(d.nextToken().trim());
......@@ -154,7 +150,7 @@ public class RechercheModele { //Variables dans fichier ListeModele.csv:
listeModeleEVCatchability[c]=mEVC[c];
for(int c=0;c<ievb;c++)
listeModeleEVBoth[c]=mEVB[c];
//System.out.println(ordre[num]+" " +numMod[i]+" "+ type[i]+" "+affichage[i]+" "+equation[i]+" "+nbre_param[i]+" "+help[i]+" "+infl_Env[i]);
//System.out.println(type[i]+" "+affichage[i]+" "+equation[i]+" "+nbre_param[i]+" "+help[i]+" "+infl_Env[i]);
}
}
catch(Exception e)
......@@ -172,14 +168,14 @@ int newIndex=-1;
int i=0;
foundModel=false;
//System.out.println("On recherche d'abord un modèle Global.relationCPU_E = " + Global.relationCPU_E + " Global.relationCPU_V = " + Global.relationCPU_V );
if(Global.relationCPU_E!=2 && Global.relationCPU_E!=6 && Global.cpue_sous_sur_production==1 && Global.relationCPU_V!=0)
if(Global.relationCPU_E !=2 && Global.relationCPU_E !=6 && Global.cpue_sous_sur_production==1 && Global.relationCPU_V != 0)
{
Global.relationCPU_E=7; // empêche de trouver un modèle si cpue_sous_sur_production lorsque surexploition et que CPUE=f(E) non-exponentile dans case 5: et 8: du fichier TexteRegles.java
Global.relationCPU_E = 7; // empêche de trouver un modèle si cpue_sous_sur_production lorsque surexploition et que CPUE=f(E) non-exponentielle dans case 5: et 8: du fichier TexteRegles.java
//System.out.println("Dans RechercheModele.java premier if, Global.relationCPU_E = "+Global.relationCPU_E);
}
if(Global.relationCPU_E==2 && Global.cpue_sous_sur_production==1 && Global.relationCPU_V!=0)
if(Global.relationCPU_E ==2 && Global.cpue_sous_sur_production ==1 && Global.relationCPU_V !=0)
{
Global.relationCPU_E=6; // force modèle exponentiel additif dans case 5: et 8: du fichier TexteRegles.java
Global.relationCPU_E = 6; // force modèle exponentiel additif dans case 5: et 8: du fichier TexteRegles.java
//System.out.println("Dans RechercheModele.java second if, Global.relationCPU_E = "+Global.relationCPU_E);
}
do
......@@ -259,13 +255,13 @@ public static String getCpue_VRelation(){
switch(forme2[indexEnCours])
{
case lineaire:
return "CPUE=a+b.V";
return "linear";
case general:
return "CPUE=a+b.V^c";
return "power with intersept";
case power:
return "CPUE=a.V^b";
return "power";
case quadratique:
return "CPUE=a.V+b.V^2+c";
return "non-monotonic";
default:
return "";
}
......@@ -303,11 +299,11 @@ public static String getCpue_ERelation(){
switch(forme1[indexEnCours])
{
case lineaire:
return "CPUE=a+b.E";
return "linear (Graham-Shaefer)";
case general:
return "CPUE=(a+b.E)^(1/(c-1))";
return "generalized (Pella & Tomlinson)";
case exponentiel:
return "CPUE=a.exp(b.E)";
return "exponential (Fox)";
default:
return "";
......
/*
* Titre : Climprod<p>
* Effectue validation du modele par calcul R2 conventionnel, test Jackknife et Fisher
* Calcul des MSY MSE pour les valeurs remarquables presentees dans dossier html, onglet validation
* et dans menu 'Modelisation', 'Display results tables'.
* Calcule les valeurs et affiche les graphiques MS-E & MSY versus V Plots disponibles dans
* menu principal, onglet "Plots".
* Effectue validation du modele par calcul R2 jackknife, test t Jackknife.
* Calcul des MSY MSE pour les valeurs remarquables presentees dans dossier html, onglet validation
* et dans menu 'Modelisation', 'Display results tables'.
* Calcule les valeurs et affiche les graphiques MSE & MSY versus V Plots disponibles dans * menu principal, onglet "Plots".
*/
package fr.ird.climprod;
import static fr.ird.climprod.Data.getNbDataRetenue;
......@@ -79,7 +78,6 @@ private static void marquardt()
int iter=0,riter=0,i,j,k;
double c,s,val_fin,val_init,ecart=100.0,alpha=4,lambda=16,rl =1.5;
double[] val_iter=new double[maxrit];
//Global.validationOk=false;
for(i=0;i<nbre_par;i++) {
par_alors[i] = par_init[i];
......@@ -586,7 +584,9 @@ public static Object[][] getParamResult(){
*****************************************************/
static private void makePlotJack(){
/*********** Jacknife plots by parameter *********************/
/*********** Jacknife plots by parameter ********************
************ Makes use of PlotModal.java *******************/
String[] ty={"a","b","c","d"};
double[] years=Data.getYears();
......@@ -641,7 +641,9 @@ static private void makePlotJack(){
Global.jackknifePlot[i].setValeurs(ps100);
Global.jackknifePlot[i].setValeurs(ps);
//System.out.println("Validation makePlotJack ligne 636 i: " + i + " Global.Res_Test_Jackknife_Par[i]: " + Global.Res_Test_Jackknife_Par[i]);
Global.jackknifePlot[i].setTitreGraphique(Global.titreG[i+19] + ". (Jackknife t-ratio " + Global.Test_Jackknife_Param$[Global.Res_Test_Jackknife_Par[i]] + ")");
Global.jackknifePlot[i].setTitreGraphique1(Global.titreG[i+19] + ".");
Global.jackknifePlot[i].setTitreGraphique2("Jackknife t-ratio "
+ Global.Test_Jackknife_Param$[Global.Res_Test_Jackknife_Par[i]]);
Global.jackknifePlot[i].setTitreX(Global.titreSx[i+17]);
Global.jackknifePlot[i].setTitreY(Global.titreSy[i+17]);
......@@ -656,13 +658,14 @@ static private void makePlotJack(){
Global.jackknifePlot[i].ajusteExtremas(false,true,false,true);
Global.jackknifePlot[i].setEtiquettes(etiq$);
Global.jackknifePlot[i].setpasX(2.d);
Global.jackknifePlot[i].setpasX(3.d);
Global.jackknifePlot[i].setXcutYat(0.d);
Global.jackknifePlot[i].setDecimalsurY(0);
}
/*******************************************************
******************* R² jacknife plot *******************
************ Makes use of PlotModal.java ***************
*******************************************************/
trjk=new double[nim];
......@@ -676,7 +679,12 @@ static private void makePlotJack(){
Global.jackknifePlot[nbre_par]=new PlotHisto();
Global.jackknifePlot[nbre_par].setValeurs(ps);
Global.jackknifePlot[nbre_par].setValeurs(ps100);
Global.jackknifePlot[nbre_par].setTitreGraphique(Global.titreG[23] + " (R2 = " + nf.format(Global.coeff_determination) + "; Corrected R2 = " + nf.format(Global.corrected_R2) + " F test: " + Global.fFsignif$ + "; Jackknife R2 = " + nf.format(Global.r_jk) + ")");
Global.jackknifePlot[nbre_par].setTitreGraphique1(Global.titreG[23]
+ " (R2 = " + nf.format(Global.coeff_determination)
+ "; Corrected R2 = " + nf.format(Global.corrected_R2));
Global.jackknifePlot[nbre_par].setTitreGraphique2(" F test: "
+ Global.fFsignif$ + "; Jackknife R2 = "
+ nf.format(Global.r_jk) + ")");
Global.jackknifePlot[nbre_par].setTitreX(Global.titreSx[21]);
Global.jackknifePlot[nbre_par].setTitreY(Global.titreSy[21]);
......@@ -691,13 +699,13 @@ static private void makePlotJack(){
Global.jackknifePlot[nbre_par].ajusteExtremas(false,true,false,true);
Global.jackknifePlot[nbre_par].setDecimalsurY(0);
Global.jackknifePlot[nbre_par].setEtiquettes(etiq$);
Global.jackknifePlot[nbre_par].setpasX(2.d);
Global.jackknifePlot[nbre_par].setpasX(3.d);
Global.jackknifePlot[nbre_par].setXcutYat(0.d);
}
/**************************************************************************
****************************MSE & MS-Y versus V Plots**********************
**************************************************************************/
/**************************************************************************
****************************MSE & MS-Y versus V Plots**********************
**************************************************************************/
static private void makePlotMSE_MSY(){ // Rajout 2020
......@@ -784,7 +792,7 @@ static private void makePlotMSE_MSY(){ // Rajout 2020
}
/*
Donne les valeurs de MS_E pour les valeurs remarquables(moyenne-médiane-min-max)
Donne les valeurs de MSE pour les valeurs remarquables(moyenne-médiane-min-max)
@return un Object ou null si validation non Ok
*/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment