Wow, merci beaucoup sigrid d’avoir pris le temps de détailler tout ça, ça m’aidera aussi pour tout le reste ! J’essaye de suite.

 

A bientôt,

Adrian

 

De : slehuta <Sigrid.Lehuta@ifremer.fr>
Envoyé : jeudi 19 mars 2020 23:45
À : isis-fish-users@list.isis-fish.org
Cc : BACH Adrian <Adrian.BACH@seaboost.fr>
Objet : Re: [Isis-fish-users] Calcul du nombre d'oeufs produits - boucle sur les groupes

 

Bonsoir,

merci tout va bien. 

C'est un bon début, c 'est vrai que cette equation est sioux... 

Si tu ouvres l editeur, en en tete tu vois tous les objets auxquels tu as accès dans l equation, en particulier N la matrice d abondance de la pop. Parfois cela aide a comprendre ce que l equation qoit renvoyer. Ici c'est particulierement pas simple (on travaille sur le manuel pour que cela soit mieux expliqué) mais cette equation doit remplir une matrice a 1 dimension (zones de reproduction) nommée result et ne retourne rien. Donc...

On declare sexRatio

double sexRatio = 0.5;

Je ne sais pas si tu as besoin d'une fecondité par groupe si oui utilises le taux de reproduction dans l onglet trait de vie sinon

double fecParGonade = 5000;

 

On boucle donc sur les zones de reproduction puisqu il faut remplir une valeur par zone dans result

for(Zone zr : zoneRepro){

on initialise prodOeufs

double prodOeufs = 0;

Comme tu l'as bien fait on boucle aussi sur les groupes, mais g est un objet PopulationGroup il n'est pas comparable à un entier 4. L'identifiant du groupe lui est un entier g.getId() est comparable à 4 (tu retrouveras ca dans l'API).

for(PopulationGroup g : groups){

if (g.getId() < 4) {

Ensuite si tu mets un return il va sortir de l'equation alors qu'il n a pas finit de boucler sur les groupes et les zones et qu'il n a pas rempli result ! Cette equation est traitre car elle n a pas besoin de returner qqch, elle remplit simplement result donc on attend la fin pour le return.

Comme on ne fait rien si g.getId()<4 je ferais l'inverse

if(g.getId()>3){ 

La matrice d abondance est une matrice [groupe x zones] pour acceder a la valeur pour le groupe g dans la zone zr : N.getValue(g,zr);

pour le poids on utilise g.getMeanWeight()

double res = sexRatio * 2*fecParGonade *g.getMeanWeight()*N.getValue(g,zr);

prodOeufs += res ; // equivalent à prodOeufs + res;

} // fin du if

} // fin de boucle groupe

result.setValue(zr,prodOeufs);

} // fin de boucle zone

return 0; // pour qu'il sorte de l equation

 

j espere que ca marche !

 

Le 2020-03-19 20:27, BACH Adrian a écrit :

Bonsoir,

 

J'espère que votre confinement se passe bien !

 

Une petite question java : je voudrais calculer le nombre d'œufs produits pendant la période de fraye d'un seul mois sur une seule zone de pop avec le calcul suivant (champ 'équation de reproduction' dans le panneau 'Reproductions')

 

// nombre d'oeufs produits = somme sur les groupes 4 à 7 du calcul sexRatio*fecondite*[nombre de poissons dans le groupe]*[leur poids]

 

Je suis complètement nouveau en java donc je ne sais trop comment obtenir les valeurs entre crochets, mais je pensais à un truc comme ça :

 

//double prodOeufs = 0;

//

//for(PopulationGroup g : pop.getPopulationGroup().get()){

//    if (g < 4) {

//        return 0;

//    } else {

//        double res = sexRatio * 2*fecParGonade * pop.getPopulationGroup(g).getMeanWeight() * pop.getPopulationGroup(g).getAboundance().sumAll();

//        prodOeufs = prodOeufs + res;

//    }

//}

//return prodOeufs;

 

Mais j'obtiens les erreurs suivantes :

 

1. ERROR in D:\DATA\a.bach\isis-fish-4\isis-temp\tmp-20200319112700-1491086668\checkPopulationReproductionEquation1429431846243759405Equation.java (at line 23)

            if (g < 4) {

                ^^^^^

The operator < is undefined for the argument type(s) PopulationGroup, int

----------

2. ERROR in D:\DATA\a.bach\isis-fish-4\isis-temp\tmp-20200319112700-1491086668\checkPopulationReproductionEquation1429431846243759405Equation.java (at line 26)

            double res = sexRatio * 2*fecParGonade * pop.getPopulationGroup(g).getMeanWeight() * pop.getPopulationGroup(g).getAboundance().sumAll();

                                                         ^^^^^^^^^^^^^^^^^^

The method getPopulationGroup() in the type Population is not applicable for the arguments (PopulationGroup)

----------

3. ERROR in D:\DATA\a.bach\isis-fish-4\isis-temp\tmp-20200319112700-1491086668\checkPopulationReproductionEquation1429431846243759405Equation.java (at line 26)

            double res = sexRatio * 2*fecParGonade * pop.getPopulationGroup(g).getMeanWeight() * pop.getPopulationGroup(g).getAboundance().sumAll();

                                                                                                     ^^^^^^^^^^^^^^^^^^

The method getPopulationGroup() in the type Population is not applicable for the arguments (PopulationGroup)

----------

3 problems (3 errors)

 

Pourriez-vous me donner un petit coup de main ou partager un script faisant sensiblement le même calcul ?

 

Merci et bonne soirée,

 

Adrian


Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you.


 

_______________________________________________
Isis-fish-users mailing list
Isis-fish-users@list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users


Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you.