Isis-fish-users
Threads by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- 1578 discussions
Re: [Isis-fish-users] TR: Exclusion de certains métiers pour la calibration
by Bastien Preuss June 7, 2011
by Bastien Preuss June 7, 2011
June 7, 2011
Salut Eric,
Suite à la réponse de Sigrid, sais-tu comment on récupère la liste des metiers dans l'init d'un plan d'
analyse?
Merci.
Bastien
-----Message d'origine-----
De : isis-fish-users-bounces(a)list.isis-fish.org [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de Sigrid.Lehuta(a)ifremer.fr
Envoyé : samedi 4 juin 2011 08:00
À : Bastien Preuss; isis-fish-users
Cc : Sigrid.Lehuta(a)ifremer.fr
Objet : Re: [Isis-fish-users] TR: Exclusion de certains métiers pour la calibration
Hum suis pas a l aise sur ce type d'erreur mais ca doit venir du fait
que le context ici est un "analysePlanContext" et non un
SimulationContext.
mais là... SOS Eric!!
comment on reccupere la liste des metiers dans l'init d un plan d
analyse? on doit pas avoir acces au simulation context j imagine...
bon courage et Bon week end
Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
> Salut Sigrid!
>
>
> Je pensais que c'était pareil et en remplaçant l'un par l'autre ça
> ne changeait rien lors de la vérif, c'est juste que c'étais plus
> clair pour moi.
> Mais pas de soucis j'ai remis Date!
>
> Par contre j'ai toujours ce problème de SiMatrix:
>
>
> C:\Documents and
> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable2_BecDeCane.java:138: getSiMatrix(fr.ifremer.isisfish.simulator.SimulationContext) in scripts.SiMatrix cannot be applied to
> (fr.ifremer.isisfish.simulator.AnalysePlanContext)
> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
> ^
> Note: C:\Documents and
> Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses
> unchecked or unsafe operations.
> Note: Recompile with -Xlint:unchecked for details.
> 1 error
>
>
>
> J'avais rajouté la ligne:
> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
>
> Car si non j'ai le message:
> C:\Documents and
> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable2_BecDeCane.java:139: cannot find
> symbol
> symbol : variable siMatrix
> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
> List<Metier> metiers = siMatrix.getMetiers(new Date(0));
> ^
> Note: C:\Documents and
> Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses
> unchecked or unsafe operations.
> Note: Recompile with -Xlint:unchecked for details.
> 1 error
>
>
> Sais-tu comment résoudre cette erreur?
>
> Merci.
>
> Bastien
>
>
>
> -----Message d'origine-----
> De : Sigrid.Lehuta(a)ifremer.fr [mailto:Sigrid.Lehuta@ifremer.fr]
> Envoyé : vendredi 3 juin 2011 07:54
> À : Bastien Preuss
> Cc : 'Sigrid LEHUTA'
> Objet : Re: TR: [Isis-fish-users] Exclusion de certains métiers pour
> la calibration
>
> Hello Bastien,
>
> desolee je vais faire une reponse desagreable surtout vu les delais
> entre questions et reponses avec le decalage horaire, mais pourquoi as
> tu remplacé date par month ????
> le coup du :
> list<Metier> metiers = siMatrix.getMetiers(new Date(0));
> c est un truc generique. c'est juste pour reccuperer la liste des
> metiers de la base et ca prend une date en argument mais a priori que
> tu mettes new Date (0) ou new Date (50) tu auras pareil (tu n es pas
> supposé supprimer des metiers).
>
> en plus dans le model le pas de temps est le mois, donc date et mois
> sur un an c est pareil.
>
> Enfin ta matrice de debarquements simulés est [Date, metiers] donc
> celle des debarquements observes doit l etre aussi.
>
> Donc remet date a part si tu as une bonne raison de changer dans ce
> cas, expliqu moi.
> Bises
>
>
>
> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>
>>
>>
>> Salut Sigrid,
>>
>>
>>
>> Effectivement c'est plus simple en mettant directement tous les métiers dans
>> le même fichier .csv ! Je ne sais plus pourquoi j'étais parti sur une
>> séparation des fichiers métiers (ça date de novembre ...).
>>
>>
>>
>> Donc j'ai tout re simplifié avec à chaque fois un seul objet pour tous les
>> métiers: "debarquements", "debarquementsObserves" et
>> "matrixDebarquementsObserves".
>>
>>
>>
>>
>>
>> Je fais effectivement l'option 2 !: somme sur les pas de temps (somme sur
>> les metiers de (CatchObs (t,
>>
>> metier) - CatchSimule (t,metier))^2).
>>
>>
>>
>>
>>
>>
>>
>> Par contre je n'arrive pas à utiliser la partie de script pour créer la
>> semantic.
>>
>> J'obtiens des erreurs... j'ai trouvé comment en résoudre certaines, mais là
>> je bloque...
>>
>> Après avoir importé directement le fichier avec tous les métiers (même ceux
>> qui ne capturent pas l'espèces). J'ai remplacé "Date" pas "Month" dans le
>> bout de script que tu m'avais envoyé (est-ce que ça pose problème?).
>>
>>
>>
>> J'ai eu:
>>
>> cannot find symbol
>>
>> symbol : class Month
>>
>> location: class scripts.SiMatrix
>>
>> List<Month> months = new ArrayList <Month>();
>>
>>
>>
>> J'ai donc rajouté: import fr.ifremer.isisfish.types.Month; en début de
>> script.
>>
>>
>>
>> Puis j'ai eu:
>>
>> cannot find symbol
>>
>> symbol : class SiMatrix
>>
>> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>>
>> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
>>
>>
>>
>> J'ai donc rajouté : import scripts.SiMatrix; en début de script.
>>
>>
>>
>> Puis j'ai eu:
>>
>> cannot find symbol
>>
>> symbol : variable siMatrix
>>
>> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>>
>> List<Metier> metiers = siMatrix.getMetiers(new Month(0));
>>
>>
>>
>> J'ai rajouté : SiMatrix siMatrix = SiMatrix.getSiMatrix(context); dans mon
>> init.
>>
>>
>>
>>
>>
>> Et maintenant, j'ai le message:
>>
>> C:\Documents and
>> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
>> 2_BecDeCane.java:136:
>> getSiMatrix(fr.ifremer.isisfish.simulator.SimulationContext) in
>> scripts.SiMatrix cannot be applied to
>> (fr.ifremer.isisfish.simulator.AnalysePlanContext)
>>
>> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
>>
>> ^
>>
>> C:\Documents and
>> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
>> 2_BecDeCane.java:137: cannot find symbol
>>
>> symbol : method getMetiers(fr.ifremer.isisfish.types.Month)
>>
>> location: class scripts.SiMatrix
>>
>> List<Metier> metiers = siMatrix.getMetiers(new Month(0));
>>
>> ^
>>
>> Note: C:\Documents and
>> Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses unchecked or
>> unsafe operations.
>>
>> Note: Recompile with -Xlint:unchecked for details.
>>
>> 2 errors
>>
>>
>>
>>
>>
>> Je pense comprendre l’erreur mais je ne vois pas comment la résoudre…
>>
>>
>>
>> Donc je bloque ici… Comprends pas tout au Java ;-)
>>
>>
>>
>>
>>
>> Je mets en pièce jointe, mon script et mon fichier .csv pour que ça soit
>> plus clair sur ce que je fais.
>>
>>
>>
>>
>>
>> Merci d’avance,
>>
>>
>>
>>
>>
>> Bastien
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> -----Message d'origine-----
>> De : isis-fish-users-bounces(a)list.isis-fish.org
>> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
>> Sigrid.Lehuta(a)ifremer.fr
>> Envoyé : jeudi 2 juin 2011 01:40
>> À : isis-fish-users(a)list.isis-fish.org
>> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
>> calibration
>>
>>
>>
>> Hello,
>>
>> je pense que je n'avais pas compris ce que tu fais. Quelle est ta
>>
>> fonction objectif?
>>
>> somme sur les pas de temps ((CatchObs(t) - CatchSimule(t))^2)
>>
>> ou
>>
>> somme sur les pas de temps (somme sur les metiers de (CatchObs (t,
>>
>> metier) - CatchSimule (t,metier))^2) ?
>>
>>
>>
>> l option 2, n'est ce pas? desolee j ai ete longue a la comprenette.
>>
>>
>>
>> Dans ce cas en effet, il faut s assurer que les metiers correspondent.
>>
>> le plus propre c est de creer les "semantics" pour ta matrice de
>>
>> debarquements observes. semantics c'est les coordonnées en termes
>>
>> d'objet plutot qu'en terme d'indice. par ex pour aller chercher la
>>
>> valeur dans la matrice a la premiere ligne deuxieme colonne qui
>>
>> correspond a la date d et au metier m au lieu de faire
>>
>> mamatrice[1,2]
>>
>> tu lui donne les objets en indices:
>>
>> mamatrice[Date d,Metier m].
>>
>>
>>
>> // Dans init
>>
>> // reccup la liste des metiers
>>
>> List<Metier> metiers = siMatrix.getMetiers(new Date(0));
>>
>> // creer la liste des metiers de ton fichier de debarq observes
>>
>> // tu rentres la liste de tes metiers dans l ordre de ton fichier d'import
>>
>> String[] metiersNomsNous = new String[]{"Espagnols",
>>
>> "BolincheProfil2lan", "BolincheProfil2nord","Autre"};
>>
>> List<Metier> metiersNous = new ArrayList<Metier>();
>>
>> for(String metiersNomCurrent : metiersNomsNous){
>>
>> for (Metier met : metiers){
>>
>> if(met.getName().equals(metiersNomCurrent)){
>>
>> metiersNous.add(met);
>>
>> }}}
>>
>> //creer la liste des dates
>>
>> //si par ex tes simu ont 60 pas de temps (60 trimestres,60 mois...)
>>
>> List<Date> dates = new ArrayList <Date>();
>>
>> for (int i=0; i < 60; i++) {
>>
>> dates.add(new Date (i));
>>
>> }
>>
>> // creation de la matrice en specifiant ses semantics plutot que sa taille
>>
>> MatrixND matrixDebarquement = MatrixFactory.getInstance().create(
>>
>> new List[]{dates,metiersNous});
>>
>> matrixDebarquement.importCSV(new FileReader(debarquementsObserves),new
>>
>> int []{0,0});
>>
>>
>>
>> // Puis dans la partie ou tu compares :
>>
>> for ( MatrixIterator g = L.iterator(); g.hasNext();){
>>
>> g.next();
>>
>> Object [] sem = g.getSemanticsCoordinates();
>>
>> double obs = matrixDebarquement.getValue(sem);
>>
>> //etc..
>>
>> }
>>
>>
>>
>> si tu ne veux pas t embeter avec les metiers qui ne capturent rien, ne
>>
>> les mets pas dans ta matrice d import. Puis on va faire la boucle sur
>>
>> les elements de matrixDebarquement plutot que sur les elements de
>>
>> L,comme ca tu n as pas besoin d'extraire de L les metiers qui ne
>>
>> capturent pas.
>>
>>
>>
>> for ( MatrixIterator g = matrixDebarquement.iterator(); g.hasNext();){
>>
>> g.next();
>>
>> Object [] sem = g.getSemanticsCoordinates();
>>
>> double obs = g.getValue();
>>
>> double sim = L.getValue(sem);
>>
>> etc..
>>
>> }
>>
>>
>>
>> Enfin pour l erreur ajoute cette ligne aux imports en debut de script
>>
>> import fr.ifremer.isisfish.entities.*;
>>
>>
>>
>>
>>
>> Bon courage
>>
>>
>>
>>
>>
>>
>>
>> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>>
>>
>>
>>> Re!
>>
>>>
>>
>>> Si je comprends bien j'ai 2 options:
>>
>>>
>>
>>> 1) ne pas supprimer les métiers qui ne capturent pas mon espèce dans les
>>
>>> valeurs simulées. Mais dans ce cas, il faut que j'importe des matrices des
>>
>>> captures nulles pour avoir des valeurs Observées à comparer, non?
>>
>>>
>>
>>> 2) Supprimer les métiers qui ne capturent pas mon espèce dans les valeurs
>>
>>> simulées. Dans ce cas je peux utiliser le bout de script que tu m'as
>> envoyé.
>>
>>>
>>
>>>
>>
>>> J'ai essayé cette deuxième option, mais il y a une erreur car Isis ne
>>
>>> reconnait pas l'objet "Metier", j'ai le message d'erreur:
>>
>>> cannot find symbol
>>
>>> symbol : class Metier
>>
>>> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>>
>>> List <Metier> listmet = L2.getSemantic(1); int[] indexMetagarder =
>>
>>> new int[4];
>>
>>>
>>
>>> J'ai essayé de le déclarer plus haut mais sans succès. Sais-tu à quoi cela
>>
>>> est-il dû? J'ai dû rater quelque chose!
>>
>>>
>>
>>>
>>
>>>
>>
>>> De façon plus général, pour les deux cas, je me demande comment sait-on si
>>
>>> les valeurs comparées obs et simulées sont les bonnes? Je n'ai pas compris
>>
>>> dans le script où est-ce qu'on récupère les données obs d'un métier pour
>> les
>>
>>> comparer aux données simulées du métiers correspondant en s'assurant qu'il
>>
>>> s'agisse du même métier.
>>
>>>
>>
>>> Merci.
>>
>>>
>>
>>> Bastien
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>> -----Message d'origine-----
>>
>>> De : isis-fish-users-bounces(a)list.isis-fish.org
>>
>>> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
>>
>>> Sigrid.Lehuta(a)ifremer.fr
>>
>>> Envoyé : mercredi 1 juin 2011 03:04
>>
>>> À : isis-fish-users(a)list.isis-fish.org
>>
>>> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
>>
>>> calibration
>>
>>>
>>
>>> Re-hello,
>>
>>>
>>
>>> En fait si les metiers ne capturent pas la population leurs captures
>>
>>> seront nulles et c est pas grave de les garder (ca fera + 0!)... mais
>>
>>> si tu veux quand meme les extraire,
>>
>>>
>>
>>> d'abord reccuperer les index des metiers à garder en utilisant leurs
>>
>>> noms par exemple :
>>
>>> List <Metier> listmet = L2.getSemantic(1)
>>
>>> int[] indexMetagarder = new int[4];
>>
>>> for(Metier m : listmet){
>>
>>> if(m.getName().equals("nommetier1")) indexMetagarder [1] =
>>
>>> listmet.indexOf(m);
>>
>>> else if(m.getName().equals("nommetier5")) indexMetagarder [2] =
>>
>>> listmet.indexOf(m);
>>
>>> etc...
>>
>>> }
>>
>>>
>>
>>> ensuite extraire la sous matrice:
>>
>>> MatrixND L = L2.getSubMatrix(1, indexMetagarder).copy();
>>
>>>
>>
>>>
>>
>>> A++
>>
>>>
>>
>>> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>>
>>>
>>
>>>> Bonjour,
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Je souhaite exclure certains de mes métiers pour réaliser ma calibration.
>>
>>>>
>>
>>>> Je calibre espèce par espèce, donc il me faut exclure les métiers qui ne
>>
>>>> capturent pas l’espèce en cours de calibration.
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> La ligne 363 du script de calibration semble permettre de faire cela,
>> mais
>>
>>>> le problème est comment sélectionner les bons métiers à exclure ?! :
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> /////*** If some strategies, metiers or areas must not be included in the
>>
>>>> cumulated catches see below else put "//" at the beginning of line 297
>> and
>>
>>>> replace "L2" by "L" at line 289
>>
>>>>
>>
>>>> /////*** the strategies or so to exclude must be at the begining
>>
>>> or
>>
>>>> end of the list you enter in the parameters interface
>>
>>>>
>>
>>>> /////*** fill the line MatrixND L =
>>
>>> L2.getSubMatrix(a,b,c).copy();
>>
>>>> as follow :
>>
>>>>
>>
>>>> /////*** a = 1 if you want to exclude strategies, 2 if metiers
>> and
>>
>>> 4
>>
>>>> if areas
>>
>>>>
>>
>>>> /////*** b = indice of the first object considered
>>
>>>>
>>
>>>> /////*** c = number of object to keep after b, b included
>>
>>>>
>>
>>>> //MatrixND L = L2.getSubMatrix(0, 0, 12).copy(); // for instance
>> :
>>
>>>> keep strategies 2,3,4,5
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Dans mon cas j’ai 8 métiers et je souhaite n’en conserver que 4 pour ma
>>
>>>> calibration sur mon espèce 1. Comment savoir dans quel ordre sont rangés
>>
>>> les
>>
>>>> métiers et quel numéro correspond à quel métier ? De plus il semble qu’il
>>
>>> ne
>>
>>>> soit possible d’exclure que des métiers qui se suivent dans la liste…
>>
>>>> comment faire si les métiers à conserver ne se suivent pas ?
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Merci de votre aide.
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Bastien
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Bastien Preuss
>>
>>>>
>>
>>>> Doctorant (PhD Student)
>>
>>>>
>>
>>>> IFREMER - IRD - Université de Nouvelle-Calédonie
>>
>>>>
>>
>>>> 101 Promenade Roger Laroque
>>
>>>>
>>
>>>> BP A5
>>
>>>>
>>
>>>> 98848 Noumea cedex
>>
>>>>
>>
>>>> New-Caledonia
>>
>>>>
>>
>>>> Tel: (+687) 260 723
>>
>>>>
>>
>>>> P afin de contribuer au respect de l'environnement, merci de n'imprimer
>> ce
>>
>>>> mail qu'en cas de nécessité
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>> _______________________________________________
>>
>>> Isis-fish-users mailing list
>>
>>> Isis-fish-users(a)list.isis-fish.org
>>
>>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>>
>>>
>>
>>> _______________________________________________
>>
>>> Isis-fish-users mailing list
>>
>>> Isis-fish-users(a)list.isis-fish.org
>>
>>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>>
>>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>>
>> Isis-fish-users mailing list
>>
>> Isis-fish-users(a)list.isis-fish.org
>>
>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>>
>>
>
>
>
>
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users(a)list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
2
1
Bonjour,
j'ai fais une règle pour pouvoir mettre une ogive de trie pour le calcul des
rejets en m'appuyant sur la règle déjà existante "taille min".
Je n'arrive pas à indicer la matrice "discard" pour multiplier chaque
valeurs correspondant au groupe de taille (à chaque tour de la boucle
for) par le double "rejet" qui est également dépendant du groupe d'age.
Actuellement, toute la matrice "discard" est multiplié par "rejet". Vous
pouvez m'aider pour coder la multiplication ?
Merci !
Camille
PopulationMonitor popMon = context.getPopulationMonitor();
SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
List<Population> pops = siMatrix.getPopulations(date);
for (Population pop : pops) {
if (pop.getSpecies().equals(param_species)) {
///if (popMon.getDiscard(date, pop) == null) {
MatrixND Catch = popMon.getCatch(pop).copy();
MatrixND discard = popMon.getCatch(pop).copy();
log.info("metier_selectionnes" + metier.getName());
List<PopulationGroup> groups = pop.getPopulationGroup();
for (PopulationGroup group : groups) {
log.info("ICI");
double trie =
1/(1+Math.exp(-(group.getLength()-param_Retention_L50)/param_Retention_slope));
log.info("tri" + trie);
double rejet = 1-trie;
log.info("rejet" + rejet);
discard = Catch.mults(rejet);
}
discard.setName(
ResultName.MATRIX_DISCARDS_PER_STR_MET_PER_ZONE_POP);
log.info("discard" + discard);
popMon.addDiscard(date, pop, discard);
}
}
3
16
Re: [Isis-fish-users] TR: Exclusion de certains métiers pour la calibration
by Sigrid.Lehuta@ifremer.fr June 3, 2011
by Sigrid.Lehuta@ifremer.fr June 3, 2011
June 3, 2011
Hum suis pas a l aise sur ce type d'erreur mais ca doit venir du fait
que le context ici est un "analysePlanContext" et non un
SimulationContext.
mais là... SOS Eric!!
comment on reccupere la liste des metiers dans l'init d un plan d
analyse? on doit pas avoir acces au simulation context j imagine...
bon courage et Bon week end
Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
> Salut Sigrid!
>
>
> Je pensais que c'était pareil et en remplaçant l'un par l'autre ça
> ne changeait rien lors de la vérif, c'est juste que c'étais plus
> clair pour moi.
> Mais pas de soucis j'ai remis Date!
>
> Par contre j'ai toujours ce problème de SiMatrix:
>
>
> C:\Documents and
> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable2_BecDeCane.java:138: getSiMatrix(fr.ifremer.isisfish.simulator.SimulationContext) in scripts.SiMatrix cannot be applied to
> (fr.ifremer.isisfish.simulator.AnalysePlanContext)
> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
> ^
> Note: C:\Documents and
> Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses
> unchecked or unsafe operations.
> Note: Recompile with -Xlint:unchecked for details.
> 1 error
>
>
>
> J'avais rajouté la ligne:
> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
>
> Car si non j'ai le message:
> C:\Documents and
> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable2_BecDeCane.java:139: cannot find
> symbol
> symbol : variable siMatrix
> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
> List<Metier> metiers = siMatrix.getMetiers(new Date(0));
> ^
> Note: C:\Documents and
> Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses
> unchecked or unsafe operations.
> Note: Recompile with -Xlint:unchecked for details.
> 1 error
>
>
> Sais-tu comment résoudre cette erreur?
>
> Merci.
>
> Bastien
>
>
>
> -----Message d'origine-----
> De : Sigrid.Lehuta(a)ifremer.fr [mailto:Sigrid.Lehuta@ifremer.fr]
> Envoyé : vendredi 3 juin 2011 07:54
> À : Bastien Preuss
> Cc : 'Sigrid LEHUTA'
> Objet : Re: TR: [Isis-fish-users] Exclusion de certains métiers pour
> la calibration
>
> Hello Bastien,
>
> desolee je vais faire une reponse desagreable surtout vu les delais
> entre questions et reponses avec le decalage horaire, mais pourquoi as
> tu remplacé date par month ????
> le coup du :
> list<Metier> metiers = siMatrix.getMetiers(new Date(0));
> c est un truc generique. c'est juste pour reccuperer la liste des
> metiers de la base et ca prend une date en argument mais a priori que
> tu mettes new Date (0) ou new Date (50) tu auras pareil (tu n es pas
> supposé supprimer des metiers).
>
> en plus dans le model le pas de temps est le mois, donc date et mois
> sur un an c est pareil.
>
> Enfin ta matrice de debarquements simulés est [Date, metiers] donc
> celle des debarquements observes doit l etre aussi.
>
> Donc remet date a part si tu as une bonne raison de changer dans ce
> cas, expliqu moi.
> Bises
>
>
>
> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>
>>
>>
>> Salut Sigrid,
>>
>>
>>
>> Effectivement c'est plus simple en mettant directement tous les métiers dans
>> le même fichier .csv ! Je ne sais plus pourquoi j'étais parti sur une
>> séparation des fichiers métiers (ça date de novembre ...).
>>
>>
>>
>> Donc j'ai tout re simplifié avec à chaque fois un seul objet pour tous les
>> métiers: "debarquements", "debarquementsObserves" et
>> "matrixDebarquementsObserves".
>>
>>
>>
>>
>>
>> Je fais effectivement l'option 2 !: somme sur les pas de temps (somme sur
>> les metiers de (CatchObs (t,
>>
>> metier) - CatchSimule (t,metier))^2).
>>
>>
>>
>>
>>
>>
>>
>> Par contre je n'arrive pas à utiliser la partie de script pour créer la
>> semantic.
>>
>> J'obtiens des erreurs... j'ai trouvé comment en résoudre certaines, mais là
>> je bloque...
>>
>> Après avoir importé directement le fichier avec tous les métiers (même ceux
>> qui ne capturent pas l'espèces). J'ai remplacé "Date" pas "Month" dans le
>> bout de script que tu m'avais envoyé (est-ce que ça pose problème?).
>>
>>
>>
>> J'ai eu:
>>
>> cannot find symbol
>>
>> symbol : class Month
>>
>> location: class scripts.SiMatrix
>>
>> List<Month> months = new ArrayList <Month>();
>>
>>
>>
>> J'ai donc rajouté: import fr.ifremer.isisfish.types.Month; en début de
>> script.
>>
>>
>>
>> Puis j'ai eu:
>>
>> cannot find symbol
>>
>> symbol : class SiMatrix
>>
>> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>>
>> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
>>
>>
>>
>> J'ai donc rajouté : import scripts.SiMatrix; en début de script.
>>
>>
>>
>> Puis j'ai eu:
>>
>> cannot find symbol
>>
>> symbol : variable siMatrix
>>
>> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>>
>> List<Metier> metiers = siMatrix.getMetiers(new Month(0));
>>
>>
>>
>> J'ai rajouté : SiMatrix siMatrix = SiMatrix.getSiMatrix(context); dans mon
>> init.
>>
>>
>>
>>
>>
>> Et maintenant, j'ai le message:
>>
>> C:\Documents and
>> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
>> 2_BecDeCane.java:136:
>> getSiMatrix(fr.ifremer.isisfish.simulator.SimulationContext) in
>> scripts.SiMatrix cannot be applied to
>> (fr.ifremer.isisfish.simulator.AnalysePlanContext)
>>
>> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
>>
>> ^
>>
>> C:\Documents and
>> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
>> 2_BecDeCane.java:137: cannot find symbol
>>
>> symbol : method getMetiers(fr.ifremer.isisfish.types.Month)
>>
>> location: class scripts.SiMatrix
>>
>> List<Metier> metiers = siMatrix.getMetiers(new Month(0));
>>
>> ^
>>
>> Note: C:\Documents and
>> Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses unchecked or
>> unsafe operations.
>>
>> Note: Recompile with -Xlint:unchecked for details.
>>
>> 2 errors
>>
>>
>>
>>
>>
>> Je pense comprendre l’erreur mais je ne vois pas comment la résoudre…
>>
>>
>>
>> Donc je bloque ici… Comprends pas tout au Java ;-)
>>
>>
>>
>>
>>
>> Je mets en pièce jointe, mon script et mon fichier .csv pour que ça soit
>> plus clair sur ce que je fais.
>>
>>
>>
>>
>>
>> Merci d’avance,
>>
>>
>>
>>
>>
>> Bastien
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> -----Message d'origine-----
>> De : isis-fish-users-bounces(a)list.isis-fish.org
>> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
>> Sigrid.Lehuta(a)ifremer.fr
>> Envoyé : jeudi 2 juin 2011 01:40
>> À : isis-fish-users(a)list.isis-fish.org
>> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
>> calibration
>>
>>
>>
>> Hello,
>>
>> je pense que je n'avais pas compris ce que tu fais. Quelle est ta
>>
>> fonction objectif?
>>
>> somme sur les pas de temps ((CatchObs(t) - CatchSimule(t))^2)
>>
>> ou
>>
>> somme sur les pas de temps (somme sur les metiers de (CatchObs (t,
>>
>> metier) - CatchSimule (t,metier))^2) ?
>>
>>
>>
>> l option 2, n'est ce pas? desolee j ai ete longue a la comprenette.
>>
>>
>>
>> Dans ce cas en effet, il faut s assurer que les metiers correspondent.
>>
>> le plus propre c est de creer les "semantics" pour ta matrice de
>>
>> debarquements observes. semantics c'est les coordonnées en termes
>>
>> d'objet plutot qu'en terme d'indice. par ex pour aller chercher la
>>
>> valeur dans la matrice a la premiere ligne deuxieme colonne qui
>>
>> correspond a la date d et au metier m au lieu de faire
>>
>> mamatrice[1,2]
>>
>> tu lui donne les objets en indices:
>>
>> mamatrice[Date d,Metier m].
>>
>>
>>
>> // Dans init
>>
>> // reccup la liste des metiers
>>
>> List<Metier> metiers = siMatrix.getMetiers(new Date(0));
>>
>> // creer la liste des metiers de ton fichier de debarq observes
>>
>> // tu rentres la liste de tes metiers dans l ordre de ton fichier d'import
>>
>> String[] metiersNomsNous = new String[]{"Espagnols",
>>
>> "BolincheProfil2lan", "BolincheProfil2nord","Autre"};
>>
>> List<Metier> metiersNous = new ArrayList<Metier>();
>>
>> for(String metiersNomCurrent : metiersNomsNous){
>>
>> for (Metier met : metiers){
>>
>> if(met.getName().equals(metiersNomCurrent)){
>>
>> metiersNous.add(met);
>>
>> }}}
>>
>> //creer la liste des dates
>>
>> //si par ex tes simu ont 60 pas de temps (60 trimestres,60 mois...)
>>
>> List<Date> dates = new ArrayList <Date>();
>>
>> for (int i=0; i < 60; i++) {
>>
>> dates.add(new Date (i));
>>
>> }
>>
>> // creation de la matrice en specifiant ses semantics plutot que sa taille
>>
>> MatrixND matrixDebarquement = MatrixFactory.getInstance().create(
>>
>> new List[]{dates,metiersNous});
>>
>> matrixDebarquement.importCSV(new FileReader(debarquementsObserves),new
>>
>> int []{0,0});
>>
>>
>>
>> // Puis dans la partie ou tu compares :
>>
>> for ( MatrixIterator g = L.iterator(); g.hasNext();){
>>
>> g.next();
>>
>> Object [] sem = g.getSemanticsCoordinates();
>>
>> double obs = matrixDebarquement.getValue(sem);
>>
>> //etc..
>>
>> }
>>
>>
>>
>> si tu ne veux pas t embeter avec les metiers qui ne capturent rien, ne
>>
>> les mets pas dans ta matrice d import. Puis on va faire la boucle sur
>>
>> les elements de matrixDebarquement plutot que sur les elements de
>>
>> L,comme ca tu n as pas besoin d'extraire de L les metiers qui ne
>>
>> capturent pas.
>>
>>
>>
>> for ( MatrixIterator g = matrixDebarquement.iterator(); g.hasNext();){
>>
>> g.next();
>>
>> Object [] sem = g.getSemanticsCoordinates();
>>
>> double obs = g.getValue();
>>
>> double sim = L.getValue(sem);
>>
>> etc..
>>
>> }
>>
>>
>>
>> Enfin pour l erreur ajoute cette ligne aux imports en debut de script
>>
>> import fr.ifremer.isisfish.entities.*;
>>
>>
>>
>>
>>
>> Bon courage
>>
>>
>>
>>
>>
>>
>>
>> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>>
>>
>>
>>> Re!
>>
>>>
>>
>>> Si je comprends bien j'ai 2 options:
>>
>>>
>>
>>> 1) ne pas supprimer les métiers qui ne capturent pas mon espèce dans les
>>
>>> valeurs simulées. Mais dans ce cas, il faut que j'importe des matrices des
>>
>>> captures nulles pour avoir des valeurs Observées à comparer, non?
>>
>>>
>>
>>> 2) Supprimer les métiers qui ne capturent pas mon espèce dans les valeurs
>>
>>> simulées. Dans ce cas je peux utiliser le bout de script que tu m'as
>> envoyé.
>>
>>>
>>
>>>
>>
>>> J'ai essayé cette deuxième option, mais il y a une erreur car Isis ne
>>
>>> reconnait pas l'objet "Metier", j'ai le message d'erreur:
>>
>>> cannot find symbol
>>
>>> symbol : class Metier
>>
>>> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>>
>>> List <Metier> listmet = L2.getSemantic(1); int[] indexMetagarder =
>>
>>> new int[4];
>>
>>>
>>
>>> J'ai essayé de le déclarer plus haut mais sans succès. Sais-tu à quoi cela
>>
>>> est-il dû? J'ai dû rater quelque chose!
>>
>>>
>>
>>>
>>
>>>
>>
>>> De façon plus général, pour les deux cas, je me demande comment sait-on si
>>
>>> les valeurs comparées obs et simulées sont les bonnes? Je n'ai pas compris
>>
>>> dans le script où est-ce qu'on récupère les données obs d'un métier pour
>> les
>>
>>> comparer aux données simulées du métiers correspondant en s'assurant qu'il
>>
>>> s'agisse du même métier.
>>
>>>
>>
>>> Merci.
>>
>>>
>>
>>> Bastien
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>> -----Message d'origine-----
>>
>>> De : isis-fish-users-bounces(a)list.isis-fish.org
>>
>>> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
>>
>>> Sigrid.Lehuta(a)ifremer.fr
>>
>>> Envoyé : mercredi 1 juin 2011 03:04
>>
>>> À : isis-fish-users(a)list.isis-fish.org
>>
>>> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
>>
>>> calibration
>>
>>>
>>
>>> Re-hello,
>>
>>>
>>
>>> En fait si les metiers ne capturent pas la population leurs captures
>>
>>> seront nulles et c est pas grave de les garder (ca fera + 0!)... mais
>>
>>> si tu veux quand meme les extraire,
>>
>>>
>>
>>> d'abord reccuperer les index des metiers à garder en utilisant leurs
>>
>>> noms par exemple :
>>
>>> List <Metier> listmet = L2.getSemantic(1)
>>
>>> int[] indexMetagarder = new int[4];
>>
>>> for(Metier m : listmet){
>>
>>> if(m.getName().equals("nommetier1")) indexMetagarder [1] =
>>
>>> listmet.indexOf(m);
>>
>>> else if(m.getName().equals("nommetier5")) indexMetagarder [2] =
>>
>>> listmet.indexOf(m);
>>
>>> etc...
>>
>>> }
>>
>>>
>>
>>> ensuite extraire la sous matrice:
>>
>>> MatrixND L = L2.getSubMatrix(1, indexMetagarder).copy();
>>
>>>
>>
>>>
>>
>>> A++
>>
>>>
>>
>>> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>>
>>>
>>
>>>> Bonjour,
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Je souhaite exclure certains de mes métiers pour réaliser ma calibration.
>>
>>>>
>>
>>>> Je calibre espèce par espèce, donc il me faut exclure les métiers qui ne
>>
>>>> capturent pas l’espèce en cours de calibration.
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> La ligne 363 du script de calibration semble permettre de faire cela,
>> mais
>>
>>>> le problème est comment sélectionner les bons métiers à exclure ?! :
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> /////*** If some strategies, metiers or areas must not be included in the
>>
>>>> cumulated catches see below else put "//" at the beginning of line 297
>> and
>>
>>>> replace "L2" by "L" at line 289
>>
>>>>
>>
>>>> /////*** the strategies or so to exclude must be at the begining
>>
>>> or
>>
>>>> end of the list you enter in the parameters interface
>>
>>>>
>>
>>>> /////*** fill the line MatrixND L =
>>
>>> L2.getSubMatrix(a,b,c).copy();
>>
>>>> as follow :
>>
>>>>
>>
>>>> /////*** a = 1 if you want to exclude strategies, 2 if metiers
>> and
>>
>>> 4
>>
>>>> if areas
>>
>>>>
>>
>>>> /////*** b = indice of the first object considered
>>
>>>>
>>
>>>> /////*** c = number of object to keep after b, b included
>>
>>>>
>>
>>>> //MatrixND L = L2.getSubMatrix(0, 0, 12).copy(); // for instance
>> :
>>
>>>> keep strategies 2,3,4,5
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Dans mon cas j’ai 8 métiers et je souhaite n’en conserver que 4 pour ma
>>
>>>> calibration sur mon espèce 1. Comment savoir dans quel ordre sont rangés
>>
>>> les
>>
>>>> métiers et quel numéro correspond à quel métier ? De plus il semble qu’il
>>
>>> ne
>>
>>>> soit possible d’exclure que des métiers qui se suivent dans la liste…
>>
>>>> comment faire si les métiers à conserver ne se suivent pas ?
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Merci de votre aide.
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Bastien
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>> Bastien Preuss
>>
>>>>
>>
>>>> Doctorant (PhD Student)
>>
>>>>
>>
>>>> IFREMER - IRD - Université de Nouvelle-Calédonie
>>
>>>>
>>
>>>> 101 Promenade Roger Laroque
>>
>>>>
>>
>>>> BP A5
>>
>>>>
>>
>>>> 98848 Noumea cedex
>>
>>>>
>>
>>>> New-Caledonia
>>
>>>>
>>
>>>> Tel: (+687) 260 723
>>
>>>>
>>
>>>> P afin de contribuer au respect de l'environnement, merci de n'imprimer
>> ce
>>
>>>> mail qu'en cas de nécessité
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>> _______________________________________________
>>
>>> Isis-fish-users mailing list
>>
>>> Isis-fish-users(a)list.isis-fish.org
>>
>>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>>
>>>
>>
>>> _______________________________________________
>>
>>> Isis-fish-users mailing list
>>
>>> Isis-fish-users(a)list.isis-fish.org
>>
>>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>>
>>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>>
>> Isis-fish-users mailing list
>>
>> Isis-fish-users(a)list.isis-fish.org
>>
>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>>
>>
>
>
>
>
1
0
June 2, 2011
Salut Sigrid!
Je pensais que c'était pareil et en remplaçant l'un par l'autre ça ne changeait rien lors de la vérif, c'est juste que c'étais plus clair pour moi.
Mais pas de soucis j'ai remis Date!
Par contre j'ai toujours ce problème de SiMatrix:
C:\Documents and Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable2_BecDeCane.java:138: getSiMatrix(fr.ifremer.isisfish.simulator.SimulationContext) in scripts.SiMatrix cannot be applied to (fr.ifremer.isisfish.simulator.AnalysePlanContext)
SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
^
Note: C:\Documents and Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
J'avais rajouté la ligne:
SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
Car si non j'ai le message:
C:\Documents and Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable2_BecDeCane.java:139: cannot find symbol
symbol : variable siMatrix
location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
List<Metier> metiers = siMatrix.getMetiers(new Date(0));
^
Note: C:\Documents and Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
Sais-tu comment résoudre cette erreur?
Merci.
Bastien
-----Message d'origine-----
De : Sigrid.Lehuta(a)ifremer.fr [mailto:Sigrid.Lehuta@ifremer.fr]
Envoyé : vendredi 3 juin 2011 07:54
À : Bastien Preuss
Cc : 'Sigrid LEHUTA'
Objet : Re: TR: [Isis-fish-users] Exclusion de certains métiers pour la calibration
Hello Bastien,
desolee je vais faire une reponse desagreable surtout vu les delais
entre questions et reponses avec le decalage horaire, mais pourquoi as
tu remplacé date par month ????
le coup du :
list<Metier> metiers = siMatrix.getMetiers(new Date(0));
c est un truc generique. c'est juste pour reccuperer la liste des
metiers de la base et ca prend une date en argument mais a priori que
tu mettes new Date (0) ou new Date (50) tu auras pareil (tu n es pas
supposé supprimer des metiers).
en plus dans le model le pas de temps est le mois, donc date et mois
sur un an c est pareil.
Enfin ta matrice de debarquements simulés est [Date, metiers] donc
celle des debarquements observes doit l etre aussi.
Donc remet date a part si tu as une bonne raison de changer dans ce
cas, expliqu moi.
Bises
Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>
>
> Salut Sigrid,
>
>
>
> Effectivement c'est plus simple en mettant directement tous les métiers dans
> le même fichier .csv ! Je ne sais plus pourquoi j'étais parti sur une
> séparation des fichiers métiers (ça date de novembre ...).
>
>
>
> Donc j'ai tout re simplifié avec à chaque fois un seul objet pour tous les
> métiers: "debarquements", "debarquementsObserves" et
> "matrixDebarquementsObserves".
>
>
>
>
>
> Je fais effectivement l'option 2 !: somme sur les pas de temps (somme sur
> les metiers de (CatchObs (t,
>
> metier) - CatchSimule (t,metier))^2).
>
>
>
>
>
>
>
> Par contre je n'arrive pas à utiliser la partie de script pour créer la
> semantic.
>
> J'obtiens des erreurs... j'ai trouvé comment en résoudre certaines, mais là
> je bloque...
>
> Après avoir importé directement le fichier avec tous les métiers (même ceux
> qui ne capturent pas l'espèces). J'ai remplacé "Date" pas "Month" dans le
> bout de script que tu m'avais envoyé (est-ce que ça pose problème?).
>
>
>
> J'ai eu:
>
> cannot find symbol
>
> symbol : class Month
>
> location: class scripts.SiMatrix
>
> List<Month> months = new ArrayList <Month>();
>
>
>
> J'ai donc rajouté: import fr.ifremer.isisfish.types.Month; en début de
> script.
>
>
>
> Puis j'ai eu:
>
> cannot find symbol
>
> symbol : class SiMatrix
>
> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>
> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
>
>
>
> J'ai donc rajouté : import scripts.SiMatrix; en début de script.
>
>
>
> Puis j'ai eu:
>
> cannot find symbol
>
> symbol : variable siMatrix
>
> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>
> List<Metier> metiers = siMatrix.getMetiers(new Month(0));
>
>
>
> J'ai rajouté : SiMatrix siMatrix = SiMatrix.getSiMatrix(context); dans mon
> init.
>
>
>
>
>
> Et maintenant, j'ai le message:
>
> C:\Documents and
> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
> 2_BecDeCane.java:136:
> getSiMatrix(fr.ifremer.isisfish.simulator.SimulationContext) in
> scripts.SiMatrix cannot be applied to
> (fr.ifremer.isisfish.simulator.AnalysePlanContext)
>
> SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
>
> ^
>
> C:\Documents and
> Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
> 2_BecDeCane.java:137: cannot find symbol
>
> symbol : method getMetiers(fr.ifremer.isisfish.types.Month)
>
> location: class scripts.SiMatrix
>
> List<Metier> metiers = siMatrix.getMetiers(new Month(0));
>
> ^
>
> Note: C:\Documents and
> Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses unchecked or
> unsafe operations.
>
> Note: Recompile with -Xlint:unchecked for details.
>
> 2 errors
>
>
>
>
>
> Je pense comprendre l’erreur mais je ne vois pas comment la résoudre…
>
>
>
> Donc je bloque ici… Comprends pas tout au Java ;-)
>
>
>
>
>
> Je mets en pièce jointe, mon script et mon fichier .csv pour que ça soit
> plus clair sur ce que je fais.
>
>
>
>
>
> Merci d’avance,
>
>
>
>
>
> Bastien
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> -----Message d'origine-----
> De : isis-fish-users-bounces(a)list.isis-fish.org
> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
> Sigrid.Lehuta(a)ifremer.fr
> Envoyé : jeudi 2 juin 2011 01:40
> À : isis-fish-users(a)list.isis-fish.org
> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
> calibration
>
>
>
> Hello,
>
> je pense que je n'avais pas compris ce que tu fais. Quelle est ta
>
> fonction objectif?
>
> somme sur les pas de temps ((CatchObs(t) - CatchSimule(t))^2)
>
> ou
>
> somme sur les pas de temps (somme sur les metiers de (CatchObs (t,
>
> metier) - CatchSimule (t,metier))^2) ?
>
>
>
> l option 2, n'est ce pas? desolee j ai ete longue a la comprenette.
>
>
>
> Dans ce cas en effet, il faut s assurer que les metiers correspondent.
>
> le plus propre c est de creer les "semantics" pour ta matrice de
>
> debarquements observes. semantics c'est les coordonnées en termes
>
> d'objet plutot qu'en terme d'indice. par ex pour aller chercher la
>
> valeur dans la matrice a la premiere ligne deuxieme colonne qui
>
> correspond a la date d et au metier m au lieu de faire
>
> mamatrice[1,2]
>
> tu lui donne les objets en indices:
>
> mamatrice[Date d,Metier m].
>
>
>
> // Dans init
>
> // reccup la liste des metiers
>
> List<Metier> metiers = siMatrix.getMetiers(new Date(0));
>
> // creer la liste des metiers de ton fichier de debarq observes
>
> // tu rentres la liste de tes metiers dans l ordre de ton fichier d'import
>
> String[] metiersNomsNous = new String[]{"Espagnols",
>
> "BolincheProfil2lan", "BolincheProfil2nord","Autre"};
>
> List<Metier> metiersNous = new ArrayList<Metier>();
>
> for(String metiersNomCurrent : metiersNomsNous){
>
> for (Metier met : metiers){
>
> if(met.getName().equals(metiersNomCurrent)){
>
> metiersNous.add(met);
>
> }}}
>
> //creer la liste des dates
>
> //si par ex tes simu ont 60 pas de temps (60 trimestres,60 mois...)
>
> List<Date> dates = new ArrayList <Date>();
>
> for (int i=0; i < 60; i++) {
>
> dates.add(new Date (i));
>
> }
>
> // creation de la matrice en specifiant ses semantics plutot que sa taille
>
> MatrixND matrixDebarquement = MatrixFactory.getInstance().create(
>
> new List[]{dates,metiersNous});
>
> matrixDebarquement.importCSV(new FileReader(debarquementsObserves),new
>
> int []{0,0});
>
>
>
> // Puis dans la partie ou tu compares :
>
> for ( MatrixIterator g = L.iterator(); g.hasNext();){
>
> g.next();
>
> Object [] sem = g.getSemanticsCoordinates();
>
> double obs = matrixDebarquement.getValue(sem);
>
> //etc..
>
> }
>
>
>
> si tu ne veux pas t embeter avec les metiers qui ne capturent rien, ne
>
> les mets pas dans ta matrice d import. Puis on va faire la boucle sur
>
> les elements de matrixDebarquement plutot que sur les elements de
>
> L,comme ca tu n as pas besoin d'extraire de L les metiers qui ne
>
> capturent pas.
>
>
>
> for ( MatrixIterator g = matrixDebarquement.iterator(); g.hasNext();){
>
> g.next();
>
> Object [] sem = g.getSemanticsCoordinates();
>
> double obs = g.getValue();
>
> double sim = L.getValue(sem);
>
> etc..
>
> }
>
>
>
> Enfin pour l erreur ajoute cette ligne aux imports en debut de script
>
> import fr.ifremer.isisfish.entities.*;
>
>
>
>
>
> Bon courage
>
>
>
>
>
>
>
> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>
>
>
>> Re!
>
>>
>
>> Si je comprends bien j'ai 2 options:
>
>>
>
>> 1) ne pas supprimer les métiers qui ne capturent pas mon espèce dans les
>
>> valeurs simulées. Mais dans ce cas, il faut que j'importe des matrices des
>
>> captures nulles pour avoir des valeurs Observées à comparer, non?
>
>>
>
>> 2) Supprimer les métiers qui ne capturent pas mon espèce dans les valeurs
>
>> simulées. Dans ce cas je peux utiliser le bout de script que tu m'as
> envoyé.
>
>>
>
>>
>
>> J'ai essayé cette deuxième option, mais il y a une erreur car Isis ne
>
>> reconnait pas l'objet "Metier", j'ai le message d'erreur:
>
>> cannot find symbol
>
>> symbol : class Metier
>
>> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
>
>> List <Metier> listmet = L2.getSemantic(1); int[] indexMetagarder =
>
>> new int[4];
>
>>
>
>> J'ai essayé de le déclarer plus haut mais sans succès. Sais-tu à quoi cela
>
>> est-il dû? J'ai dû rater quelque chose!
>
>>
>
>>
>
>>
>
>> De façon plus général, pour les deux cas, je me demande comment sait-on si
>
>> les valeurs comparées obs et simulées sont les bonnes? Je n'ai pas compris
>
>> dans le script où est-ce qu'on récupère les données obs d'un métier pour
> les
>
>> comparer aux données simulées du métiers correspondant en s'assurant qu'il
>
>> s'agisse du même métier.
>
>>
>
>> Merci.
>
>>
>
>> Bastien
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>> -----Message d'origine-----
>
>> De : isis-fish-users-bounces(a)list.isis-fish.org
>
>> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
>
>> Sigrid.Lehuta(a)ifremer.fr
>
>> Envoyé : mercredi 1 juin 2011 03:04
>
>> À : isis-fish-users(a)list.isis-fish.org
>
>> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
>
>> calibration
>
>>
>
>> Re-hello,
>
>>
>
>> En fait si les metiers ne capturent pas la population leurs captures
>
>> seront nulles et c est pas grave de les garder (ca fera + 0!)... mais
>
>> si tu veux quand meme les extraire,
>
>>
>
>> d'abord reccuperer les index des metiers à garder en utilisant leurs
>
>> noms par exemple :
>
>> List <Metier> listmet = L2.getSemantic(1)
>
>> int[] indexMetagarder = new int[4];
>
>> for(Metier m : listmet){
>
>> if(m.getName().equals("nommetier1")) indexMetagarder [1] =
>
>> listmet.indexOf(m);
>
>> else if(m.getName().equals("nommetier5")) indexMetagarder [2] =
>
>> listmet.indexOf(m);
>
>> etc...
>
>> }
>
>>
>
>> ensuite extraire la sous matrice:
>
>> MatrixND L = L2.getSubMatrix(1, indexMetagarder).copy();
>
>>
>
>>
>
>> A++
>
>>
>
>> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>
>>
>
>>> Bonjour,
>
>>>
>
>>>
>
>>>
>
>>> Je souhaite exclure certains de mes métiers pour réaliser ma calibration.
>
>>>
>
>>> Je calibre espèce par espèce, donc il me faut exclure les métiers qui ne
>
>>> capturent pas l’espèce en cours de calibration.
>
>>>
>
>>>
>
>>>
>
>>> La ligne 363 du script de calibration semble permettre de faire cela,
> mais
>
>>> le problème est comment sélectionner les bons métiers à exclure ?! :
>
>>>
>
>>>
>
>>>
>
>>> /////*** If some strategies, metiers or areas must not be included in the
>
>>> cumulated catches see below else put "//" at the beginning of line 297
> and
>
>>> replace "L2" by "L" at line 289
>
>>>
>
>>> /////*** the strategies or so to exclude must be at the begining
>
>> or
>
>>> end of the list you enter in the parameters interface
>
>>>
>
>>> /////*** fill the line MatrixND L =
>
>> L2.getSubMatrix(a,b,c).copy();
>
>>> as follow :
>
>>>
>
>>> /////*** a = 1 if you want to exclude strategies, 2 if metiers
> and
>
>> 4
>
>>> if areas
>
>>>
>
>>> /////*** b = indice of the first object considered
>
>>>
>
>>> /////*** c = number of object to keep after b, b included
>
>>>
>
>>> //MatrixND L = L2.getSubMatrix(0, 0, 12).copy(); // for instance
> :
>
>>> keep strategies 2,3,4,5
>
>>>
>
>>>
>
>>>
>
>>>
>
>>>
>
>>> Dans mon cas j’ai 8 métiers et je souhaite n’en conserver que 4 pour ma
>
>>> calibration sur mon espèce 1. Comment savoir dans quel ordre sont rangés
>
>> les
>
>>> métiers et quel numéro correspond à quel métier ? De plus il semble qu’il
>
>> ne
>
>>> soit possible d’exclure que des métiers qui se suivent dans la liste…
>
>>> comment faire si les métiers à conserver ne se suivent pas ?
>
>>>
>
>>>
>
>>>
>
>>>
>
>>>
>
>>>
>
>>>
>
>>> Merci de votre aide.
>
>>>
>
>>>
>
>>>
>
>>> Bastien
>
>>>
>
>>>
>
>>>
>
>>>
>
>>>
>
>>> Bastien Preuss
>
>>>
>
>>> Doctorant (PhD Student)
>
>>>
>
>>> IFREMER - IRD - Université de Nouvelle-Calédonie
>
>>>
>
>>> 101 Promenade Roger Laroque
>
>>>
>
>>> BP A5
>
>>>
>
>>> 98848 Noumea cedex
>
>>>
>
>>> New-Caledonia
>
>>>
>
>>> Tel: (+687) 260 723
>
>>>
>
>>> P afin de contribuer au respect de l'environnement, merci de n'imprimer
> ce
>
>>> mail qu'en cas de nécessité
>
>>>
>
>>>
>
>>>
>
>>>
>
>>>
>
>>>
>
>>
>
>>
>
>>
>
>> _______________________________________________
>
>> Isis-fish-users mailing list
>
>> Isis-fish-users(a)list.isis-fish.org
>
>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
>>
>
>> _______________________________________________
>
>> Isis-fish-users mailing list
>
>> Isis-fish-users(a)list.isis-fish.org
>
>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
>>
>
>
>
>
>
>
>
> _______________________________________________
>
> Isis-fish-users mailing list
>
> Isis-fish-users(a)list.isis-fish.org
>
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
>
1
0
Test réception liste Isis user ...
-----Message d'origine-----
De : isis-fish-users-bounces(a)list.isis-fish.org
[mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
Sigrid.Lehuta(a)ifremer.fr
Envoyé : jeudi 2 juin 2011 01:40
À : isis-fish-users(a)list.isis-fish.org
Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
calibration
Hello,
je pense que je n'avais pas compris ce que tu fais. Quelle est ta
fonction objectif?
somme sur les pas de temps ((CatchObs(t) - CatchSimule(t))^2)
ou
somme sur les pas de temps (somme sur les metiers de (CatchObs (t,
metier) - CatchSimule (t,metier))^2) ?
l option 2, n'est ce pas? desolee j ai ete longue a la comprenette.
Dans ce cas en effet, il faut s assurer que les metiers correspondent.
le plus propre c est de creer les "semantics" pour ta matrice de
debarquements observes. semantics c'est les coordonnées en termes
d'objet plutot qu'en terme d'indice. par ex pour aller chercher la
valeur dans la matrice a la premiere ligne deuxieme colonne qui
correspond a la date d et au metier m au lieu de faire
mamatrice[1,2]
tu lui donne les objets en indices:
mamatrice[Date d,Metier m].
// Dans init
// reccup la liste des metiers
List<Metier> metiers = siMatrix.getMetiers(new Date(0));
// creer la liste des metiers de ton fichier de debarq observes
// tu rentres la liste de tes metiers dans l ordre de ton fichier d'import
String[] metiersNomsNous = new String[]{"Espagnols",
"BolincheProfil2lan", "BolincheProfil2nord","Autre"};
List<Metier> metiersNous = new ArrayList<Metier>();
for(String metiersNomCurrent : metiersNomsNous){
for (Metier met : metiers){
if(met.getName().equals(metiersNomCurrent)){
metiersNous.add(met);
}}}
//creer la liste des dates
//si par ex tes simu ont 60 pas de temps (60 trimestres,60 mois...)
List<Date> dates = new ArrayList <Date>();
for (int i=0; i < 60; i++) {
dates.add(new Date (i));
}
// creation de la matrice en specifiant ses semantics plutot que sa taille
MatrixND matrixDebarquement = MatrixFactory.getInstance().create(
new List[]{dates,metiersNous});
matrixDebarquement.importCSV(new FileReader(debarquementsObserves),new
int []{0,0});
// Puis dans la partie ou tu compares :
for ( MatrixIterator g = L.iterator(); g.hasNext();){
g.next();
Object [] sem = g.getSemanticsCoordinates();
double obs = matrixDebarquement.getValue(sem);
//etc..
}
si tu ne veux pas t embeter avec les metiers qui ne capturent rien, ne
les mets pas dans ta matrice d import. Puis on va faire la boucle sur
les elements de matrixDebarquement plutot que sur les elements de
L,comme ca tu n as pas besoin d'extraire de L les metiers qui ne
capturent pas.
for ( MatrixIterator g = matrixDebarquement.iterator(); g.hasNext();){
g.next();
Object [] sem = g.getSemanticsCoordinates();
double obs = g.getValue();
double sim = L.getValue(sem);
etc..
}
Enfin pour l erreur ajoute cette ligne aux imports en debut de script
import fr.ifremer.isisfish.entities.*;
Bon courage
Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
> Re!
>
> Si je comprends bien j'ai 2 options:
>
> 1) ne pas supprimer les métiers qui ne capturent pas mon espèce dans les
> valeurs simulées. Mais dans ce cas, il faut que j'importe des matrices des
> captures nulles pour avoir des valeurs Observées à comparer, non?
>
> 2) Supprimer les métiers qui ne capturent pas mon espèce dans les valeurs
> simulées. Dans ce cas je peux utiliser le bout de script que tu m'as
envoyé.
>
>
> J'ai essayé cette deuxième option, mais il y a une erreur car Isis ne
> reconnait pas l'objet "Metier", j'ai le message d'erreur:
> cannot find symbol
> symbol : class Metier
> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
> List <Metier> listmet = L2.getSemantic(1); int[] indexMetagarder =
> new int[4];
>
> J'ai essayé de le déclarer plus haut mais sans succès. Sais-tu à quoi cela
> est-il dû? J'ai dû rater quelque chose!
>
>
>
> De façon plus général, pour les deux cas, je me demande comment sait-on si
> les valeurs comparées obs et simulées sont les bonnes? Je n'ai pas compris
> dans le script où est-ce qu'on récupère les données obs d'un métier pour
les
> comparer aux données simulées du métiers correspondant en s'assurant qu'il
> s'agisse du même métier.
>
> Merci.
>
> Bastien
>
>
>
>
>
>
>
> -----Message d'origine-----
> De : isis-fish-users-bounces(a)list.isis-fish.org
> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
> Sigrid.Lehuta(a)ifremer.fr
> Envoyé : mercredi 1 juin 2011 03:04
> À : isis-fish-users(a)list.isis-fish.org
> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
> calibration
>
> Re-hello,
>
> En fait si les metiers ne capturent pas la population leurs captures
> seront nulles et c est pas grave de les garder (ca fera + 0!)... mais
> si tu veux quand meme les extraire,
>
> d'abord reccuperer les index des metiers à garder en utilisant leurs
> noms par exemple :
> List <Metier> listmet = L2.getSemantic(1)
> int[] indexMetagarder = new int[4];
> for(Metier m : listmet){
> if(m.getName().equals("nommetier1")) indexMetagarder [1] =
> listmet.indexOf(m);
> else if(m.getName().equals("nommetier5")) indexMetagarder [2] =
> listmet.indexOf(m);
> etc...
> }
>
> ensuite extraire la sous matrice:
> MatrixND L = L2.getSubMatrix(1, indexMetagarder).copy();
>
>
> A++
>
> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>
>> Bonjour,
>>
>>
>>
>> Je souhaite exclure certains de mes métiers pour réaliser ma calibration.
>>
>> Je calibre espèce par espèce, donc il me faut exclure les métiers qui ne
>> capturent pas lespèce en cours de calibration.
>>
>>
>>
>> La ligne 363 du script de calibration semble permettre de faire cela,
mais
>> le problème est comment sélectionner les bons métiers à exclure ?! :
>>
>>
>>
>> /////*** If some strategies, metiers or areas must not be included in the
>> cumulated catches see below else put "//" at the beginning of line 297
and
>> replace "L2" by "L" at line 289
>>
>> /////*** the strategies or so to exclude must be at the begining
> or
>> end of the list you enter in the parameters interface
>>
>> /////*** fill the line MatrixND L =
> L2.getSubMatrix(a,b,c).copy();
>> as follow :
>>
>> /////*** a = 1 if you want to exclude strategies, 2 if metiers
and
> 4
>> if areas
>>
>> /////*** b = indice of the first object considered
>>
>> /////*** c = number of object to keep after b, b included
>>
>> //MatrixND L = L2.getSubMatrix(0, 0, 12).copy(); // for instance
:
>> keep strategies 2,3,4,5
>>
>>
>>
>>
>>
>> Dans mon cas jai 8 métiers et je souhaite nen conserver que 4 pour ma
>> calibration sur mon espèce 1. Comment savoir dans quel ordre sont rangés
> les
>> métiers et quel numéro correspond à quel métier ? De plus il semble quil
> ne
>> soit possible dexclure que des métiers qui se suivent dans la liste
>> comment faire si les métiers à conserver ne se suivent pas ?
>>
>>
>>
>>
>>
>>
>>
>> Merci de votre aide.
>>
>>
>>
>> Bastien
>>
>>
>>
>>
>>
>> Bastien Preuss
>>
>> Doctorant (PhD Student)
>>
>> IFREMER - IRD - Université de Nouvelle-Calédonie
>>
>> 101 Promenade Roger Laroque
>>
>> BP A5
>>
>> 98848 Noumea cedex
>>
>> New-Caledonia
>>
>> Tel: (+687) 260 723
>>
>> P afin de contribuer au respect de l'environnement, merci de n'imprimer
ce
>> mail qu'en cas de nécessité
>>
>>
>>
>>
>>
>>
>
>
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users(a)list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users(a)list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users(a)list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
1
0
Salut Sigrid,
Effectivement c'est plus simple en mettant directement tous les métiers dans
le même fichier .csv ! Je ne sais plus pourquoi j'étais parti sur une
séparation des fichiers métiers (ça date de novembre ...).
Donc j'ai tout re simplifié avec à chaque fois un seul objet pour tous les
métiers: "debarquements", "debarquementsObserves" et
"matrixDebarquementsObserves".
Je fais effectivement l'option 2 !: somme sur les pas de temps (somme sur
les metiers de (CatchObs (t,
metier) - CatchSimule (t,metier))^2).
Par contre je n'arrive pas à utiliser la partie de script pour créer la
semantic.
J'obtiens des erreurs... j'ai trouvé comment en résoudre certaines, mais là
je bloque...
Après avoir importé directement le fichier avec tous les métiers (même ceux
qui ne capturent pas l'espèces). J'ai remplacé "Date" pas "Month" dans le
bout de script que tu m'avais envoyé (est-ce que ça pose problème?).
J'ai eu:
cannot find symbol
symbol : class Month
location: class scripts.SiMatrix
List<Month> months = new ArrayList <Month>();
J'ai donc rajouté: import fr.ifremer.isisfish.types.Month; en début de
script.
Puis j'ai eu:
cannot find symbol
symbol : class SiMatrix
location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
J'ai donc rajouté : import scripts.SiMatrix; en début de script.
Puis j'ai eu:
cannot find symbol
symbol : variable siMatrix
location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
List<Metier> metiers = siMatrix.getMetiers(new Month(0));
J'ai rajouté : SiMatrix siMatrix = SiMatrix.getSiMatrix(context); dans mon
init.
Et maintenant, j'ai le message:
C:\Documents and
Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
2_BecDeCane.java:136:
getSiMatrix(fr.ifremer.isisfish.simulator.SimulationContext) in
scripts.SiMatrix cannot be applied to
(fr.ifremer.isisfish.simulator.AnalysePlanContext)
SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
^
C:\Documents and
Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
2_BecDeCane.java:137: cannot find symbol
symbol : method getMetiers(fr.ifremer.isisfish.types.Month)
location: class scripts.SiMatrix
List<Metier> metiers = siMatrix.getMetiers(new Month(0));
^
Note: C:\Documents and
Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses unchecked or
unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
Je pense comprendre lerreur mais je ne vois pas comment la résoudre
Donc je bloque ici
Comprends pas tout au Java ;-)
Je mets en pièce jointe, mon script et mon fichier .csv pour que ça soit
plus clair sur ce que je fais.
Merci davance,
Bastien
-----Message d'origine-----
De : isis-fish-users-bounces(a)list.isis-fish.org
[mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
Sigrid.Lehuta(a)ifremer.fr
Envoyé : jeudi 2 juin 2011 01:40
À : isis-fish-users(a)list.isis-fish.org
Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
calibration
Hello,
je pense que je n'avais pas compris ce que tu fais. Quelle est ta
fonction objectif?
somme sur les pas de temps ((CatchObs(t) - CatchSimule(t))^2)
ou
somme sur les pas de temps (somme sur les metiers de (CatchObs (t,
metier) - CatchSimule (t,metier))^2) ?
l option 2, n'est ce pas? desolee j ai ete longue a la comprenette.
Dans ce cas en effet, il faut s assurer que les metiers correspondent.
le plus propre c est de creer les "semantics" pour ta matrice de
debarquements observes. semantics c'est les coordonnées en termes
d'objet plutot qu'en terme d'indice. par ex pour aller chercher la
valeur dans la matrice a la premiere ligne deuxieme colonne qui
correspond a la date d et au metier m au lieu de faire
mamatrice[1,2]
tu lui donne les objets en indices:
mamatrice[Date d,Metier m].
// Dans init
// reccup la liste des metiers
List<Metier> metiers = siMatrix.getMetiers(new Date(0));
// creer la liste des metiers de ton fichier de debarq observes
// tu rentres la liste de tes metiers dans l ordre de ton fichier d'import
String[] metiersNomsNous = new String[]{"Espagnols",
"BolincheProfil2lan", "BolincheProfil2nord","Autre"};
List<Metier> metiersNous = new ArrayList<Metier>();
for(String metiersNomCurrent : metiersNomsNous){
for (Metier met : metiers){
if(met.getName().equals(metiersNomCurrent)){
metiersNous.add(met);
}}}
//creer la liste des dates
//si par ex tes simu ont 60 pas de temps (60 trimestres,60 mois...)
List<Date> dates = new ArrayList <Date>();
for (int i=0; i < 60; i++) {
dates.add(new Date (i));
}
// creation de la matrice en specifiant ses semantics plutot que sa taille
MatrixND matrixDebarquement = MatrixFactory.getInstance().create(
new List[]{dates,metiersNous});
matrixDebarquement.importCSV(new FileReader(debarquementsObserves),new
int []{0,0});
// Puis dans la partie ou tu compares :
for ( MatrixIterator g = L.iterator(); g.hasNext();){
g.next();
Object [] sem = g.getSemanticsCoordinates();
double obs = matrixDebarquement.getValue(sem);
//etc..
}
si tu ne veux pas t embeter avec les metiers qui ne capturent rien, ne
les mets pas dans ta matrice d import. Puis on va faire la boucle sur
les elements de matrixDebarquement plutot que sur les elements de
L,comme ca tu n as pas besoin d'extraire de L les metiers qui ne
capturent pas.
for ( MatrixIterator g = matrixDebarquement.iterator(); g.hasNext();){
g.next();
Object [] sem = g.getSemanticsCoordinates();
double obs = g.getValue();
double sim = L.getValue(sem);
etc..
}
Enfin pour l erreur ajoute cette ligne aux imports en debut de script
import fr.ifremer.isisfish.entities.*;
Bon courage
Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
> Re!
>
> Si je comprends bien j'ai 2 options:
>
> 1) ne pas supprimer les métiers qui ne capturent pas mon espèce dans les
> valeurs simulées. Mais dans ce cas, il faut que j'importe des matrices des
> captures nulles pour avoir des valeurs Observées à comparer, non?
>
> 2) Supprimer les métiers qui ne capturent pas mon espèce dans les valeurs
> simulées. Dans ce cas je peux utiliser le bout de script que tu m'as
envoyé.
>
>
> J'ai essayé cette deuxième option, mais il y a une erreur car Isis ne
> reconnait pas l'objet "Metier", j'ai le message d'erreur:
> cannot find symbol
> symbol : class Metier
> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
> List <Metier> listmet = L2.getSemantic(1); int[] indexMetagarder =
> new int[4];
>
> J'ai essayé de le déclarer plus haut mais sans succès. Sais-tu à quoi cela
> est-il dû? J'ai dû rater quelque chose!
>
>
>
> De façon plus général, pour les deux cas, je me demande comment sait-on si
> les valeurs comparées obs et simulées sont les bonnes? Je n'ai pas compris
> dans le script où est-ce qu'on récupère les données obs d'un métier pour
les
> comparer aux données simulées du métiers correspondant en s'assurant qu'il
> s'agisse du même métier.
>
> Merci.
>
> Bastien
>
>
>
>
>
>
>
> -----Message d'origine-----
> De : isis-fish-users-bounces(a)list.isis-fish.org
> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
> Sigrid.Lehuta(a)ifremer.fr
> Envoyé : mercredi 1 juin 2011 03:04
> À : isis-fish-users(a)list.isis-fish.org
> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
> calibration
>
> Re-hello,
>
> En fait si les metiers ne capturent pas la population leurs captures
> seront nulles et c est pas grave de les garder (ca fera + 0!)... mais
> si tu veux quand meme les extraire,
>
> d'abord reccuperer les index des metiers à garder en utilisant leurs
> noms par exemple :
> List <Metier> listmet = L2.getSemantic(1)
> int[] indexMetagarder = new int[4];
> for(Metier m : listmet){
> if(m.getName().equals("nommetier1")) indexMetagarder [1] =
> listmet.indexOf(m);
> else if(m.getName().equals("nommetier5")) indexMetagarder [2] =
> listmet.indexOf(m);
> etc...
> }
>
> ensuite extraire la sous matrice:
> MatrixND L = L2.getSubMatrix(1, indexMetagarder).copy();
>
>
> A++
>
> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>
>> Bonjour,
>>
>>
>>
>> Je souhaite exclure certains de mes métiers pour réaliser ma calibration.
>>
>> Je calibre espèce par espèce, donc il me faut exclure les métiers qui ne
>> capturent pas lespèce en cours de calibration.
>>
>>
>>
>> La ligne 363 du script de calibration semble permettre de faire cela,
mais
>> le problème est comment sélectionner les bons métiers à exclure ?! :
>>
>>
>>
>> /////*** If some strategies, metiers or areas must not be included in the
>> cumulated catches see below else put "//" at the beginning of line 297
and
>> replace "L2" by "L" at line 289
>>
>> /////*** the strategies or so to exclude must be at the begining
> or
>> end of the list you enter in the parameters interface
>>
>> /////*** fill the line MatrixND L =
> L2.getSubMatrix(a,b,c).copy();
>> as follow :
>>
>> /////*** a = 1 if you want to exclude strategies, 2 if metiers
and
> 4
>> if areas
>>
>> /////*** b = indice of the first object considered
>>
>> /////*** c = number of object to keep after b, b included
>>
>> //MatrixND L = L2.getSubMatrix(0, 0, 12).copy(); // for instance
:
>> keep strategies 2,3,4,5
>>
>>
>>
>>
>>
>> Dans mon cas jai 8 métiers et je souhaite nen conserver que 4 pour ma
>> calibration sur mon espèce 1. Comment savoir dans quel ordre sont rangés
> les
>> métiers et quel numéro correspond à quel métier ? De plus il semble quil
> ne
>> soit possible dexclure que des métiers qui se suivent dans la liste
>> comment faire si les métiers à conserver ne se suivent pas ?
>>
>>
>>
>>
>>
>>
>>
>> Merci de votre aide.
>>
>>
>>
>> Bastien
>>
>>
>>
>>
>>
>> Bastien Preuss
>>
>> Doctorant (PhD Student)
>>
>> IFREMER - IRD - Université de Nouvelle-Calédonie
>>
>> 101 Promenade Roger Laroque
>>
>> BP A5
>>
>> 98848 Noumea cedex
>>
>> New-Caledonia
>>
>> Tel: (+687) 260 723
>>
>> P afin de contribuer au respect de l'environnement, merci de n'imprimer
ce
>> mail qu'en cas de nécessité
>>
>>
>>
>>
>>
>>
>
>
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users(a)list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users(a)list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users(a)list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
1
0
Re: [Isis-fish-users] Exclusion de certains métiers pour la calibration
by Bastien Preuss June 2, 2011
by Bastien Preuss June 2, 2011
June 2, 2011
Salut Sigrid,
Effectivement c'est plus simple en mettant directement tous les métiers dans
le même fichier .csv ! Je ne sais plus pourquoi j'étais parti sur une
séparation des fichiers métiers (ça date de novembre ...).
Donc j'ai tout re simplifié avec à chaque fois un seul objet pour tous les
métiers: "debarquements", "debarquementsObserves" et
"matrixDebarquementsObserves".
Je fais effectivement l'option 2 !: somme sur les pas de temps (somme sur
les metiers de (CatchObs (t,
metier) - CatchSimule (t,metier))^2).
Par contre je n'arrive pas à utiliser la partie de script pour créer la
semantic.
J'obtiens des erreurs... j'ai trouvé comment en résoudre certaines, mais là
je bloque...
Après avoir importé directement le fichier avec tous les métiers (même ceux
qui ne capturent pas l'espèces). J'ai remplacé "Date" pas "Month" dans le
bout de script que tu m'avais envoyé (est-ce que ça pose problème?).
J'ai eu:
cannot find symbol
symbol : class Month
location: class scripts.SiMatrix
List<Month> months = new ArrayList <Month>();
J'ai donc rajouté: import fr.ifremer.isisfish.types.Month; en début de
script.
Puis j'ai eu:
cannot find symbol
symbol : class SiMatrix
location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
J'ai donc rajouté : import scripts.SiMatrix; en début de script.
Puis j'ai eu:
cannot find symbol
symbol : variable siMatrix
location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
List<Metier> metiers = siMatrix.getMetiers(new Month(0));
J'ai rajouté : SiMatrix siMatrix = SiMatrix.getSiMatrix(context); dans mon
init.
Et maintenant, j'ai le message:
C:\Documents and
Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
2_BecDeCane.java:136:
getSiMatrix(fr.ifremer.isisfish.simulator.SimulationContext) in
scripts.SiMatrix cannot be applied to
(fr.ifremer.isisfish.simulator.AnalysePlanContext)
SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
^
C:\Documents and
Settings\bpreuss\isis-database-3\analyseplans\CalibrationSimplexePasVariable
2_BecDeCane.java:137: cannot find symbol
symbol : method getMetiers(fr.ifremer.isisfish.types.Month)
location: class scripts.SiMatrix
List<Metier> metiers = siMatrix.getMetiers(new Month(0));
^
Note: C:\Documents and
Settings\bpreuss\isis-database-3\scripts\SiMatrix.java uses unchecked or
unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
Je pense comprendre lerreur mais je ne vois pas comment la résoudre
Donc je bloque ici
Comprends pas tout au Java ;-)
Je mets en pièce jointe, mon script et mon fichier .csv pour que ça soit
plus clair sur ce que je fais.
Merci davance,
Bastien
-----Message d'origine-----
De : isis-fish-users-bounces(a)list.isis-fish.org
[mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
Sigrid.Lehuta(a)ifremer.fr
Envoyé : jeudi 2 juin 2011 01:40
À : isis-fish-users(a)list.isis-fish.org
Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
calibration
Hello,
je pense que je n'avais pas compris ce que tu fais. Quelle est ta
fonction objectif?
somme sur les pas de temps ((CatchObs(t) - CatchSimule(t))^2)
ou
somme sur les pas de temps (somme sur les metiers de (CatchObs (t,
metier) - CatchSimule (t,metier))^2) ?
l option 2, n'est ce pas? desolee j ai ete longue a la comprenette.
Dans ce cas en effet, il faut s assurer que les metiers correspondent.
le plus propre c est de creer les "semantics" pour ta matrice de
debarquements observes. semantics c'est les coordonnées en termes
d'objet plutot qu'en terme d'indice. par ex pour aller chercher la
valeur dans la matrice a la premiere ligne deuxieme colonne qui
correspond a la date d et au metier m au lieu de faire
mamatrice[1,2]
tu lui donne les objets en indices:
mamatrice[Date d,Metier m].
// Dans init
// reccup la liste des metiers
List<Metier> metiers = siMatrix.getMetiers(new Date(0));
// creer la liste des metiers de ton fichier de debarq observes
// tu rentres la liste de tes metiers dans l ordre de ton fichier d'import
String[] metiersNomsNous = new String[]{"Espagnols",
"BolincheProfil2lan", "BolincheProfil2nord","Autre"};
List<Metier> metiersNous = new ArrayList<Metier>();
for(String metiersNomCurrent : metiersNomsNous){
for (Metier met : metiers){
if(met.getName().equals(metiersNomCurrent)){
metiersNous.add(met);
}}}
//creer la liste des dates
//si par ex tes simu ont 60 pas de temps (60 trimestres,60 mois...)
List<Date> dates = new ArrayList <Date>();
for (int i=0; i < 60; i++) {
dates.add(new Date (i));
}
// creation de la matrice en specifiant ses semantics plutot que sa taille
MatrixND matrixDebarquement = MatrixFactory.getInstance().create(
new List[]{dates,metiersNous});
matrixDebarquement.importCSV(new FileReader(debarquementsObserves),new
int []{0,0});
// Puis dans la partie ou tu compares :
for ( MatrixIterator g = L.iterator(); g.hasNext();){
g.next();
Object [] sem = g.getSemanticsCoordinates();
double obs = matrixDebarquement.getValue(sem);
//etc..
}
si tu ne veux pas t embeter avec les metiers qui ne capturent rien, ne
les mets pas dans ta matrice d import. Puis on va faire la boucle sur
les elements de matrixDebarquement plutot que sur les elements de
L,comme ca tu n as pas besoin d'extraire de L les metiers qui ne
capturent pas.
for ( MatrixIterator g = matrixDebarquement.iterator(); g.hasNext();){
g.next();
Object [] sem = g.getSemanticsCoordinates();
double obs = g.getValue();
double sim = L.getValue(sem);
etc..
}
Enfin pour l erreur ajoute cette ligne aux imports en debut de script
import fr.ifremer.isisfish.entities.*;
Bon courage
Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
> Re!
>
> Si je comprends bien j'ai 2 options:
>
> 1) ne pas supprimer les métiers qui ne capturent pas mon espèce dans les
> valeurs simulées. Mais dans ce cas, il faut que j'importe des matrices des
> captures nulles pour avoir des valeurs Observées à comparer, non?
>
> 2) Supprimer les métiers qui ne capturent pas mon espèce dans les valeurs
> simulées. Dans ce cas je peux utiliser le bout de script que tu m'as
envoyé.
>
>
> J'ai essayé cette deuxième option, mais il y a une erreur car Isis ne
> reconnait pas l'objet "Metier", j'ai le message d'erreur:
> cannot find symbol
> symbol : class Metier
> location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
> List <Metier> listmet = L2.getSemantic(1); int[] indexMetagarder =
> new int[4];
>
> J'ai essayé de le déclarer plus haut mais sans succès. Sais-tu à quoi cela
> est-il dû? J'ai dû rater quelque chose!
>
>
>
> De façon plus général, pour les deux cas, je me demande comment sait-on si
> les valeurs comparées obs et simulées sont les bonnes? Je n'ai pas compris
> dans le script où est-ce qu'on récupère les données obs d'un métier pour
les
> comparer aux données simulées du métiers correspondant en s'assurant qu'il
> s'agisse du même métier.
>
> Merci.
>
> Bastien
>
>
>
>
>
>
>
> -----Message d'origine-----
> De : isis-fish-users-bounces(a)list.isis-fish.org
> [mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
> Sigrid.Lehuta(a)ifremer.fr
> Envoyé : mercredi 1 juin 2011 03:04
> À : isis-fish-users(a)list.isis-fish.org
> Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
> calibration
>
> Re-hello,
>
> En fait si les metiers ne capturent pas la population leurs captures
> seront nulles et c est pas grave de les garder (ca fera + 0!)... mais
> si tu veux quand meme les extraire,
>
> d'abord reccuperer les index des metiers à garder en utilisant leurs
> noms par exemple :
> List <Metier> listmet = L2.getSemantic(1)
> int[] indexMetagarder = new int[4];
> for(Metier m : listmet){
> if(m.getName().equals("nommetier1")) indexMetagarder [1] =
> listmet.indexOf(m);
> else if(m.getName().equals("nommetier5")) indexMetagarder [2] =
> listmet.indexOf(m);
> etc...
> }
>
> ensuite extraire la sous matrice:
> MatrixND L = L2.getSubMatrix(1, indexMetagarder).copy();
>
>
> A++
>
> Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
>
>> Bonjour,
>>
>>
>>
>> Je souhaite exclure certains de mes métiers pour réaliser ma calibration.
>>
>> Je calibre espèce par espèce, donc il me faut exclure les métiers qui ne
>> capturent pas lespèce en cours de calibration.
>>
>>
>>
>> La ligne 363 du script de calibration semble permettre de faire cela,
mais
>> le problème est comment sélectionner les bons métiers à exclure ?! :
>>
>>
>>
>> /////*** If some strategies, metiers or areas must not be included in the
>> cumulated catches see below else put "//" at the beginning of line 297
and
>> replace "L2" by "L" at line 289
>>
>> /////*** the strategies or so to exclude must be at the begining
> or
>> end of the list you enter in the parameters interface
>>
>> /////*** fill the line MatrixND L =
> L2.getSubMatrix(a,b,c).copy();
>> as follow :
>>
>> /////*** a = 1 if you want to exclude strategies, 2 if metiers
and
> 4
>> if areas
>>
>> /////*** b = indice of the first object considered
>>
>> /////*** c = number of object to keep after b, b included
>>
>> //MatrixND L = L2.getSubMatrix(0, 0, 12).copy(); // for instance
:
>> keep strategies 2,3,4,5
>>
>>
>>
>>
>>
>> Dans mon cas jai 8 métiers et je souhaite nen conserver que 4 pour ma
>> calibration sur mon espèce 1. Comment savoir dans quel ordre sont rangés
> les
>> métiers et quel numéro correspond à quel métier ? De plus il semble quil
> ne
>> soit possible dexclure que des métiers qui se suivent dans la liste
>> comment faire si les métiers à conserver ne se suivent pas ?
>>
>>
>>
>>
>>
>>
>>
>> Merci de votre aide.
>>
>>
>>
>> Bastien
>>
>>
>>
>>
>>
>> Bastien Preuss
>>
>> Doctorant (PhD Student)
>>
>> IFREMER - IRD - Université de Nouvelle-Calédonie
>>
>> 101 Promenade Roger Laroque
>>
>> BP A5
>>
>> 98848 Noumea cedex
>>
>> New-Caledonia
>>
>> Tel: (+687) 260 723
>>
>> P afin de contribuer au respect de l'environnement, merci de n'imprimer
ce
>> mail qu'en cas de nécessité
>>
>>
>>
>>
>>
>>
>
>
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users(a)list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users(a)list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users(a)list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
1
0
Re: [Isis-fish-users] Exclusion de certains métiers pour la calibration
by Bastien Preuss June 1, 2011
by Bastien Preuss June 1, 2011
June 1, 2011
Re!
Si je comprends bien j'ai 2 options:
1) ne pas supprimer les métiers qui ne capturent pas mon espèce dans les
valeurs simulées. Mais dans ce cas, il faut que j'importe des matrices des
captures nulles pour avoir des valeurs Observées à comparer, non?
2) Supprimer les métiers qui ne capturent pas mon espèce dans les valeurs
simulées. Dans ce cas je peux utiliser le bout de script que tu m'as envoyé.
J'ai essayé cette deuxième option, mais il y a une erreur car Isis ne
reconnait pas l'objet "Metier", j'ai le message d'erreur:
cannot find symbol
symbol : class Metier
location: class analyseplans.CalibrationSimplexePasVariable2_BecDeCane
List <Metier> listmet = L2.getSemantic(1); int[] indexMetagarder =
new int[4];
J'ai essayé de le déclarer plus haut mais sans succès. Sais-tu à quoi cela
est-il dû? J'ai dû rater quelque chose!
De façon plus général, pour les deux cas, je me demande comment sait-on si
les valeurs comparées obs et simulées sont les bonnes? Je n'ai pas compris
dans le script où est-ce qu'on récupère les données obs d'un métier pour les
comparer aux données simulées du métiers correspondant en s'assurant qu'il
s'agisse du même métier.
Merci.
Bastien
-----Message d'origine-----
De : isis-fish-users-bounces(a)list.isis-fish.org
[mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
Sigrid.Lehuta(a)ifremer.fr
Envoyé : mercredi 1 juin 2011 03:04
À : isis-fish-users(a)list.isis-fish.org
Objet : Re: [Isis-fish-users] Exclusion de certains métiers pour la
calibration
Re-hello,
En fait si les metiers ne capturent pas la population leurs captures
seront nulles et c est pas grave de les garder (ca fera + 0!)... mais
si tu veux quand meme les extraire,
d'abord reccuperer les index des metiers à garder en utilisant leurs
noms par exemple :
List <Metier> listmet = L2.getSemantic(1)
int[] indexMetagarder = new int[4];
for(Metier m : listmet){
if(m.getName().equals("nommetier1")) indexMetagarder [1] =
listmet.indexOf(m);
else if(m.getName().equals("nommetier5")) indexMetagarder [2] =
listmet.indexOf(m);
etc...
}
ensuite extraire la sous matrice:
MatrixND L = L2.getSubMatrix(1, indexMetagarder).copy();
A++
Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
> Bonjour,
>
>
>
> Je souhaite exclure certains de mes métiers pour réaliser ma calibration.
>
> Je calibre espèce par espèce, donc il me faut exclure les métiers qui ne
> capturent pas lespèce en cours de calibration.
>
>
>
> La ligne 363 du script de calibration semble permettre de faire cela, mais
> le problème est comment sélectionner les bons métiers à exclure ?! :
>
>
>
> /////*** If some strategies, metiers or areas must not be included in the
> cumulated catches see below else put "//" at the beginning of line 297 and
> replace "L2" by "L" at line 289
>
> /////*** the strategies or so to exclude must be at the begining
or
> end of the list you enter in the parameters interface
>
> /////*** fill the line MatrixND L =
L2.getSubMatrix(a,b,c).copy();
> as follow :
>
> /////*** a = 1 if you want to exclude strategies, 2 if metiers and
4
> if areas
>
> /////*** b = indice of the first object considered
>
> /////*** c = number of object to keep after b, b included
>
> //MatrixND L = L2.getSubMatrix(0, 0, 12).copy(); // for instance :
> keep strategies 2,3,4,5
>
>
>
>
>
> Dans mon cas jai 8 métiers et je souhaite nen conserver que 4 pour ma
> calibration sur mon espèce 1. Comment savoir dans quel ordre sont rangés
les
> métiers et quel numéro correspond à quel métier ? De plus il semble quil
ne
> soit possible dexclure que des métiers qui se suivent dans la liste
> comment faire si les métiers à conserver ne se suivent pas ?
>
>
>
>
>
>
>
> Merci de votre aide.
>
>
>
> Bastien
>
>
>
>
>
> Bastien Preuss
>
> Doctorant (PhD Student)
>
> IFREMER - IRD - Université de Nouvelle-Calédonie
>
> 101 Promenade Roger Laroque
>
> BP A5
>
> 98848 Noumea cedex
>
> New-Caledonia
>
> Tel: (+687) 260 723
>
> P afin de contribuer au respect de l'environnement, merci de n'imprimer ce
> mail qu'en cas de nécessité
>
>
>
>
>
>
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users(a)list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
2
1
June 1, 2011
Merci Sigrid!
Effectivement mon problème venait de la déclaration du nombre de dimensions
de "matrixDebarquement" que je rempli avec les "matrixDebarquement" 1 à 4.
Je pensais qu'il fallait conserver la dimension des groupes en indiquant
qu'il n'y en avait qu'un seul, mais en fait il faut simplement ne pas
prendre en compte cette dimension.
Pour info, dans la partie du code en question j'obtiens donc maintenant:
/////*** 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 metiers
int nbMet = 4;
int[] dimMatrix2 = { nbTrim };
int[] dimMatrix = {nbTrim, nbMet};
matrixDebarquement = MatrixFactory.getInstance().create(dimMatrix);
// Cet objet contiendra les 4 seuivants, donc il a une dimension
suplémentaire.
matrixDebarquement1 =
MatrixFactory.getInstance().create(dimMatrix2);
matrixDebarquement2 =
MatrixFactory.getInstance().create(dimMatrix2);
matrixDebarquement3 =
MatrixFactory.getInstance().create(dimMatrix2);
matrixDebarquement4 =
MatrixFactory.getInstance().create(dimMatrix2);
matrixDebarquement1.importCSV(new
FileReader(debarquementsObserves1), new int[] {0 });
matrixDebarquement2.importCSV(new
FileReader(debarquementsObserves2), new int[] {0 });
matrixDebarquement3.importCSV(new
FileReader(debarquementsObserves3), new int[] {0 });
matrixDebarquement4.importCSV(new
FileReader(debarquementsObserves4), new int[] {0 });
//db.closeContext();
// Remplissage de la matrice matrixDebarquement avec les 4 matrices
de débarquement (une par métier).
for( MatrixIterator i=matrixDebarquement.iterator(); i.hasNext();){
i.next(); int [] debarquementsObserves = i.getCoordinates();
if (debarquementsObserves[1] == 0){
i.setValue(matrixDebarquement1.getValue(debarquementsObserves[0]));
}else if (debarquementsObserves[1] == 1){
i.setValue(matrixDebarquement2.getValue(debarquementsObserves[0]));
}else if (debarquementsObserves[1] == 2){
i.setValue(matrixDebarquement3.getValue(debarquementsObserves[0]));
}else if (debarquementsObserves[1] == 3){
i.setValue(matrixDebarquement4.getValue(debarquementsObserves[0]));
}
}
Encore merci.
Bastien
-----Message d'origine-----
De : isis-fish-users-bounces(a)list.isis-fish.org
[mailto:isis-fish-users-bounces@list.isis-fish.org] De la part de
Sigrid.Lehuta(a)ifremer.fr
Envoyé : mercredi 1 juin 2011 02:31
À : isis-fish-users(a)list.isis-fish.org
Objet : Re: [Isis-fish-users] Pb nombre de dimensions calibration
Hello Bastien,
Miam bec de canne... voila des codes java qui donnent faim !
tes sommes sont correctes, c est le nombre de dimensions qui ne va
pas, 2 pour L et 3 pour obs.
si tu fais :
obs = obs.reduce() (ca supprime les dimension d une matrice qui n ont
qu'un element)
ca va marcher...
mais je comprends pas pourquoi tu crees ta matrix d observations
matrixDebarquement à trois dimensions si tu as juste strategies et
metiers... a mon avis y'a un soucis la dedans.
tu charges 4 matrices matrixDebarquement1, 2 à 4 a 2 dimensions [nb
trim, group], et tu en crees une avec 3 dimensions matrixDebarquement.
Veux tu la remplir avec les 4 matrices ?
est-ce ce que ces lignes sont sensées faire ?? :
for( MatrixIterator i=matrixDebarquement.iterator(); i.hasNext();){
i.next(); int [] debarquementsObserves = i.getCoordinates();
if (debarquementsObserves[1] ==
0){
i.setValue(matrixDebarquement1.getValue(debarquementsObserves[0],debarquemen
tsObserves[2]));
}else if (debarquementsObserves[1] ==
1){
i.setValue(matrixDebarquement2.getValue(debarquementsObserves[0],debarquemen
tsObserves[2]));
}else if (debarquementsObserves[1] ==
2){
i.setValue(matrixDebarquement3.getValue(debarquementsObserves[0],debarquemen
tsObserves[2]));
}else if (debarquementsObserves[1] ==
3){
i.setValue(matrixDebarquement4.getValue(debarquementsObserves[0],debarquemen
tsObserves[2]));
}
Si tu veux m'expliquer on peut corriger ca ensemble. Sinon reduce() va
marcher.
A+
Bastien Preuss <Bastien.Preuss(a)ird.fr> a écrit :
> Bonjour,
>
>
>
> Jai une erreur lors de ma calibration (je mets le Debug en pj) : il
semble
> que la matrice des obs nest pas la même dimension que la matrice L des
> valeurs simulées, mais je ne comprend pas pourquoi car je fais bien la
somme
> sur les dimensions nécessaires.
>
> Ça semble coincer au niveau du nombre de groupes dont je nai pas le
détail
> dans mes observations de débarquement. La matrice obs garde cette
dimension
> mais affiche 1, alors que la matrice L (pour laquelle jai sommé sur les
> groupes) naffiche pas cette dimension.
>
>
>
> dim de obs [12, 4, 1]
>
> dim de L [12, 4]
>
>
>
> 12 correspond aux mois (que je nai pas sommés), 4 aux métiers
sélectionnés
> (que je nai pas sommés), et 1 au nombre de classes, qui vaut 1 car les
> observations sont données toutes tailles confondues.
>
> Je mets mon script de calibration en pièce jointe.
>
>
>
> Est-ce que quelquun saurait doù vient le problème?
>
>
>
> Merci.
>
>
>
> Bastien
>
>
>
>
>
>
>
>
>
> Bastien Preuss
>
> Doctorant (PhD Student)
>
> IFREMER - IRD - Université de Nouvelle-Calédonie
>
> 101 Promenade Roger Laroque
>
> BP A5
>
> 98848 Noumea cedex
>
> New-Caledonia
>
> Tel: (+687) 260 723
>
> P afin de contribuer au respect de l'environnement, merci de n'imprimer ce
> mail qu'en cas de nécessité
>
>
>
>
>
>
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users(a)list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
2
1
Bonjour,
Je souhaite exclure certains de mes métiers pour réaliser ma calibration.
Je calibre espèce par espèce, donc il me faut exclure les métiers qui ne
capturent pas lespèce en cours de calibration.
La ligne 363 du script de calibration semble permettre de faire cela, mais
le problème est comment sélectionner les bons métiers à exclure ?! :
/////*** If some strategies, metiers or areas must not be included in the
cumulated catches see below else put "//" at the beginning of line 297 and
replace "L2" by "L" at line 289
/////*** the strategies or so to exclude must be at the begining or
end of the list you enter in the parameters interface
/////*** fill the line MatrixND L = L2.getSubMatrix(a,b,c).copy();
as follow :
/////*** a = 1 if you want to exclude strategies, 2 if metiers and 4
if areas
/////*** b = indice of the first object considered
/////*** c = number of object to keep after b, b included
//MatrixND L = L2.getSubMatrix(0, 0, 12).copy(); // for instance :
keep strategies 2,3,4,5
Dans mon cas jai 8 métiers et je souhaite nen conserver que 4 pour ma
calibration sur mon espèce 1. Comment savoir dans quel ordre sont rangés les
métiers et quel numéro correspond à quel métier ? De plus il semble quil ne
soit possible dexclure que des métiers qui se suivent dans la liste
comment faire si les métiers à conserver ne se suivent pas ?
Merci de votre aide.
Bastien
Bastien Preuss
Doctorant (PhD Student)
IFREMER - IRD - Université de Nouvelle-Calédonie
101 Promenade Roger Laroque
BP A5
98848 Noumea cedex
New-Caledonia
Tel: (+687) 260 723
P afin de contribuer au respect de l'environnement, merci de n'imprimer ce
mail qu'en cas de nécessité
2
1