Questions sur le code des exports d'ISIS
Bonjour, Je crois que je commence à saisir le fonctionnement et les interactions entre les divers scripts d'ISIS, mais même en utilisant le modèle de données, la liste des APIs ISIS et Java, il y a des morceaux de code que je ne comprends pas (pour le moment j'ai surtout regardé les exports en détails, alors ça concerne un export). Comme le code dans un mail c'est moche j'ai mis mes questions en commentaires dans script d'export et j'ai mis ce dernier en PJ... S'il y a une meilleure solution je suis preneur. Loïc
Le 15/03/2012 18:55, Loic GASCHE a écrit :
Bonjour, Salut,
Je crois que je commence à saisir le fonctionnement et les interactions entre les divers scripts d'ISIS, mais même en utilisant le modèle de données, la liste des APIs ISIS et Java, il y a des morceaux de code que je ne comprends pas (pour le moment j'ai surtout regardé les exports en détails, alors ça concerne un export).
Comme le code dans un mail c'est moche j'ai mis mes questions en commentaires dans script d'export et j'ai mis ce dernier en PJ... S'il y a une meilleure solution je suis preneur.
0 correspond à une dimension de la matrice ?? Comment je sais à quelle dimension de la matrice //correspond quel facteur (comment je sais que la dimension 0 c'est la strategie ?) car à priori en //regardant ce qu'il y a avant on dirait que le premier axe de la matrice "mat" c'est soit step soit // le premier axe de la matrice MATRIX_CATCH_WEIGHT (qui n'est pas la strategie selon ResultNames)... Les dimensions des resultats sont indiquées dans le commentaire sur dessus de chaque résultat (sauf erreur, la documentation devrait suffire).
// Pourquoi il y a un itérateur sur la matrice ? Il sert à explorer la matrice dimension par dimension (i=1 = dimension 1 ?) ? // hasNext() ça sert à incrémenter l'itérateur i ? L'iterateur sert a se positionner sur chaque élément de la matrice. hasNext() renvoie vrai tant que la fin de la matrice n'est pas atteinte next() se déplace à l'element suivant.
Ensuite sur l'iterateur, il y a la valeur (i.getValue()), et les coordonnées de la valeur dans la matrice (i.getSemanticsCoordinates()).
// C'est quoi les coordonnées semantiques ? A quoi ça sert ? Déjà repondu. À savoir où l'itérateur est positionné.
// Je ne vois pas à quoi ça sert ces sems[]... On attribue sems[1] a metier ? Dans ton cas tu utilise la matrice ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP les semantiques servent a savoir a quelle step, strategie, metier, group, zone correspond une valeur de capture en particulier. // Quand on ecrit "Metier" ou "PopulationGroup" on fait bien référence à l'entité du même nom ? Mais dans // ce cas à quoi correspondent "metier" ou "group" car il n'y a pas d'objets avec ces noms dans les entités // ("metier" correspond à un metier parmi tous cesux de Metier ?) ? Je ne te suis pas trop. Metier et PopulationGroup sont des types d'objects. metier et group sont des instances d'objets en particulier. et l'un ne va pas sans l'autre. Contrairement à R je pense, chaque object a un type PopulationGroup group = ... PopulationGroup monGroupAMoi = ...
// Comment on sait que c'est sems[1] qui doit correspondre à metier et pas sems[2] par exemple ?
Dans les commentaires de la classe ResultName.
// ca j'ai plus ou moins pigé : on dit ce qu'on veut en sortie. Le pb c'est que "val" ça doit venir de la matrice de résultat, // alors que tout le reste semble venir de la base de données (non ?). En fait ça vient ça vient aussi de la matrice non ? Et en // fait on ne fait que récupérer les noms des différentes dimensions et les valeurs associées ? val vient de la matrice de résutat qui elle même vient de la base de données. Donc au final tout vient de la base de données.
// Au final j'ai compris la boucle comme ça : pour chaque pop à chaque TimeStep on crée une matrice "mat" qui contient // MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP. Tu ne la créé pas, tu la recupere de la base de données avec les valeurs qui sont issue de la simulation. On fait une opereation sur "mat". mat.sumOverDim(0); ? ca veut dire que la dimension 0 (step) n'a pas d'importance ici. et que l'on veut la matrice sommée sur tous les pas de temps. On fait un pas dans une dimension // de cette matrice et on regarde toutes les valeurs prises par interaction avec les autres dimensions de la matrice. // Ensuite on sort les valeurs de la matrice pouis on itère i. Ensuite on parcourt toute la matrice et on ecrit des données en sortie dans un fichier. // Donc le principal soucis pour moi semble surtout être : comment on sait quelle dimension de la matrice correspond à quoi ? // et le coup des sems[]... Tu comprend ce que sont les sémantiques déjà ? C'est globalement comme les indices : mat[0,4,5] sauf que au lieu d'etre des numéros, ce sont des metier, strategies, group de la base de données.
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
participants (2)
-
Eric Chatellier -
Loic GASCHE