Le 13/08/2012 16:23, Eric Chatellier a écrit :
Le 13/08/2012 16:21, Loic GASCHE a écrit :
L'instance du groupe ?? I faut utiliser les semantiques ? Tu veux une sous matrice pour un groupe donné apparement. Si c'est le cas, il te faut le groupe en question, pas son age. Quand je mets un log sur les noms de dimensions de tfgMatrix ou les sémantiques de cette matrice je me retrouve avec :
Pour pouvoir utiliser getSubMatrix(int dim, int start, int nb) et me faciliter la vie j'ai converti mes âges (doubles) en int. Comme la pop Others7DE n'a qu'un seul groupe j'ai du rajouter une condition. Le code est : double AgeMin = context.get(pop).getAsDouble("AgeMin"); double AgeMax = context.get(pop).getAsDouble("AgeMax"); int ageMin= (int)AgeMin+1; int ageMax= (int)AgeMax+1; log.info("AgeMin = " + AgeMin); log.info("AgeMax = " + AgeMax); log.info("ageMin = " + ageMin); log.info("ageMax = " + ageMax); if (AgeMin != AgeMax){ Nbre = ageMax - ageMin + 1; log.info("Nbre = " + Nbre); tfmMatrix = tfmMatrix.getSubMatrix(1, ageMin, Nbre); // MatrixND getSubMatrix(int dim,,int start, int nb) // Faux : int VS double VS nom de groupe... --> passer par les semantiques ? tfmMatrix = tfmMatrix.meanOverDim(1); tfmMatrix = tfmMatrix.reduce(); log.info("tfm.DimensionNames = " + Arrays.toString(tfmMatrix.getDimensionNames())); log.info("tfm.Semantics = " + Arrays.toString(tfmMatrix.getSemantics())); } else { tfmMatrix = tfmMatrix.reduce(); log.info("tfm.DimensionNames = " + Arrays.toString(tfmMatrix.getDimensionNames())); log.info("tfm.Semantics = " + Arrays.toString(tfmMatrix.getSemantics())); } Vu que ça fait pas mal bidouille je me demande si j'ai le droit de faire ça ? Est-ce que ce serait susceptible de poser des problèmes dans certains cas auxquels je n'aurais pas pensé ? Un premier soucis que je vois est que les groupes d'âge de la population doivent obligatoirement commencer au groupe 0...
INFO|15:56:17,044|SiMatrix.java|1682|aw$original$_AW_$FishingMortalityPerGroup$_AW_$scripts_SiMatrix|tfg.DimensionNames = [Ljava.lang.String;@12b1e53 INFO|15:56:17,044|SiMatrix.java|1683|aw$original$_AW_$FishingMortalityPerGroup$_AW_$scripts_SiMatrix|tfg.getSemantics() = [Ljava.util.List;@1d3e3f3
Les tableaux ne peuvent pas s'afficher directement en Java. C'est le truc bizare : [Ljava.lang.String;@12b1e53 (adresse mémoire).
Tu peut utiliser Arrays.toString() pour faire ca par exemple: log.info("tfg.DimensionNames = " + Arrays.toString(tfg.DimensionNames)); (peut etre faut-il ajouter l'import java.util.Arrays au haut aussi).