[Isis-fish-users] Calibration avec différenctiation des métiers / charger une matrice 3D
Sigrid LEHUTA
Sigrid.Lehuta at ifremer.fr
Jeu 18 Nov 15:26:45 CET 2010
Salut Bastien,
oui bien sur c est possible !
mais la methode que je connais est un peu laborieuse accroche toi !
1) tu crees et charges tes 3 matrices 2D matMetier0, matMetier1, matMetier2
2) tu crees une matrice 3D vide : (je mets metier en dim 2 comme dans L)
int [] dimMatrix = {12,3,10};
matrixDebarquement =MatrixFactory.getInstance().create(dimMatrix);
et ensuite je pense que la seule methode c est de la remplir valeur par
valeur par une boucle en allant chercher les valeurs dans les 3 matrices.
for( MatrixIterator i=matrixDebarquement.iterator(); i.hasNext();){
i.next();
int [] coco = i.getCoordinates();
if (coco[1] == 0){
i.setValue(matMetier0.getValue(coco[0],coco[2]))
}else if (coco[1] == 1){
etc.
Ca ca marche mais attention car l ordre des metiers 0, 1 et 2 doit etre
le meme que dans la matrice L. Donc soit tu fais auparavent une boucle
sur L et tu fais afficher le nom du metier et les coordonnées pour
connaitre l ordre soit tu construis la matrice debarquement avec des
semantics :
MatrixFactory.getInstance().create( "matrixDebarquement",new
List[]{dates, metiers, groups},
new String[]{"Dates","Metiers","Groups"});
où dates, metiers et groups sont des list des objets.
On en reparle si tu choisis cette option !
A++
Bastien PREUSS a écrit :
> Bonjour,
>
>
>
>
>
> J’aimerais réaliser une calibration en prenant en compte les différents
> métiers, c'est-à-dire sans sommer les captures sur les métiers.
>
>
>
> Pour la matrice L des captures simulées il ne semble pas problématique
> de conserver la dimension correspondante aux métiers et de ne pas faire
> la somme sur cette dimension (ligne 340 du script), mais concernant la
> matrice des observations qui est importée au départ, comment peut ont
> importer une matrice à plus de 2 dimensions ? ou à la limite importer
> plusieurs matrices à 2 dimensions ?
>
> Dans mon script j’ai créé la matrice de la façon suivante :
>
>
>
> /////*** specify dimention of the matrix containning
> observations (observed landings for instance)
>
> /////*** numbers of group/columns : could be equal to your
> number of classes in ISIS but may also be different if your had only
> aggregated data
>
> int nbGroup = 10;
>
> /////*** enter number of observation per year (if you have
> observation by quarter put 4) / lines of the observations file
>
> int nbTrim = nbYear * 12;
>
> /////*** enter the number of métiers
>
> int nbMet = 3;
>
> int[] dimMatrix = {nbMet, nbTrim, nbGroup };
>
> matrixDebarquement = MatrixFactory.getInstance().create(dimMatrix);
>
> //matrixDebarquement = MatrixFactory.getInstance().create(new
> int[]{nbGroup});
>
> // List<PopulationGroup> groups = pop.getPopulationGroup();
>
> // matrixDebarquement = MatrixFactory.getInstance().create(new
> List[]{groups});
>
> matrixDebarquement.importCSV(new
> FileReader(debarquementsObserves), new int[] {0, 0, 0 });
>
> log.info("MatrixDebarquement : " + matrixDebarquement);
>
> //db.closeContext();
>
> }
>
>
>
>
>
> Mais je n’arrive pas à faire un import qui convienne pour fixer
> « debarquementsObserves » avant, qui est créés comme suis à l’origine
> dans le script :
>
>
>
> public String param_nomfichier_debarquements = "C:/Documents and
> Settings/bpreuss/Desktop/These_ISIS_Noumea/Parametrage/Calibration/obsMet.csv";//in
> row : time ; in columns : age or length group
>
> protected File debarquementsObserves;
>
> protected MatrixND matrixDebarquement;
>
>
>
> Est-ce que quelqu’un aurait déjà fait ça, ou saurait comment faire ?
>
>
>
> Merci.
>
>
>
> Bastien
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users at list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
--
Sigrid LEHUTA
~ ><> ~
Doctorante
Département Ecologie et Modèles pour l'Halieutique
IFREMER, rue de l'ile d'Yeu BP 21105
44311 Nantes Cedex 03
Tél : +33 (0)2 40 37 41 23 (interne : 8123)
Plus d'informations sur la liste de diffusion Isis-fish-users