[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