[Isis-fish-users] Calcul du nombre d'oeufs produits - boucle sur les groupes

BACH Adrian Adrian.BACH at seaboost.fr
Ven 20 Mar 10:34:30 CET 2020


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 at ifremer.fr>
Envoyé : jeudi 19 mars 2020 23:45
À : isis-fish-users at list.isis-fish.org
Cc : BACH Adrian <Adrian.BACH at 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 at list.isis-fish.org<mailto:Isis-fish-users at 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.
________________________________
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://list.isis-fish.org/pipermail/isis-fish-users/attachments/20200320/08f1a63b/attachment-0002.html>


Plus d'informations sur la liste de diffusion Isis-fish-users