Problème pour définir (Python)
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Problème pour définir (Python)



  1. #1
    PetiteAnne

    Problème pour définir (Python)


    ------

    Bonjour,

    Je rencontre un problème : je voudrais ne plus avoir du tout de parser (effacer le parser) et à la place, réécrire ce qu'il y avait dans le parser (c'est-à-dire tous les "group.add_argument(...)" ) en-dessous de la ligne "def run(args, job):"

    Et donc, de les redéfinir et pouvoir en faire de vrais paramètres facile à tuner.

    Seulement, à chaque fois, que j'efface un "group.add_argument(...)", par exemple, disons group.add_argument(X) pour l'effacer du parser et définir X après "def run(args, job):" j'obtiens inexorablement un message d'erreur :'( En fait, pour être plus précis, j'ai quand même réussi à le faire pour "group.add_argument(S2start)" mais par pour les autres "group.add_argument(...)".

    Je remercie d'avance toute personne qui pourrait m'apporter sa précieuse aide car je coince vraiment

    Voici la partie du code où je rencontre ces problèmes :

    Code:
    def parser():
        parser = tools.standard_parser()
        group = parser.add_argument_group( "experiment specific options" )
        group.add_argument('--Mode',
                            default='default',
                            choices=['default',
                                     'adjust'])
        group.add_argument('--im_param',
                            type=str,
                            default='')
        group.add_argument('--tend',
                            type=float,
                            default=700.)
        group.add_argument('--bc',
                            default="noflux",
                            choices=['noflux','Xper', 'Yper', 'XYper'])
        group.add_argument('--size',
                            type=float,
                            default=2.)
        group.add_argument('--monitor',
                            type=float,
                            nargs='?',
                            const=15.,
                            default=None)
    
        return parser
    
    
    
    def jobID(args):
    
        today = date.today()
        return '{}_periodic_{}_np_{}_{}_{}'.format(today.isoformat(), args.tend,
                                                 args.np, args.bc, args.size)
    
    @tools.example(parser, jobID)
    
    
    def run(args, job):
        S2start=85
        imparam = 'S2_start=' + str(S2start)
    
    
        geom = mesh.Block(size=(args.size*10,args.size*10,0), periodic=0)
        meshname = mesh.generate(geom)
    
    
        IDs= []
        if 'X' in args.bc : IDs.append(1000)
        if 'Y' in args.bc : IDs.append(1025)
        if IDs :  gPer = [model.ConductivityRegion([0]), model.ConductivityRegion(IDs=[], name=None)]
    
    
        # définition du stimulus S1
        edge = args.size*10000./2.
        S1 = [model.Stimulus( 'S1', x0=-edge-1, y0=-edge+198, xd=edge*2+2, yd=400, strength=80,duration=2, start=0)]
        S2start=85
    #    if args.S2start>=0 : S1.append( model.Stimulus( 'S2', x0=-edge, y0=-edge, xd=edge, yd=edge, strength=80, duration=2, start=args.S2start) )
        if 'X' in args.bc :
            S1.append(model.Stimulus( 'Xblock', x0=-edge-1, y0=-edge-1, xd=2, yd=edge*2+2, strength=args.block_Vm, duration=args.block_dur, stimtype=9,
                tau_edge=0, tau_plateau=1.0e6))
        if 'Y' in args.bc :
            S1.append(model.Stimulus( 'Yblock', x0=-edge-1, y0=-edge-1, xd=edge*2+2, yd=2, strength=args.block_Vm, duration=args.block_dur, stimtype=9,
                tau_edge=0, tau_plateau=1.0e6))
    
    
        cmd = tools.carp_cmd() + [ '-simID', job.ID ]
    
        cmd += model.optionlist(S1)
       
    
        if len(IDs) : cmd += model.optionlist(gPer)
        cmd = tools.carp_cmd('paramet.par')
        simid = job.ID + '/spir'
        writestatef = 'statefile'
    
        cmd += ['-meshname',                meshname,
                '-tend',                    args.tend,
                '-size',                      2,
                '-np',                      4,
                '-monitor',                 15,
                '-block-Vm',                -86,
                '-block-dur',                0,            
                '-dt',                      25,
                '-spacedt',                  1,
    #            '-imp_region[0].im_param',  str(args.im_param),
                '-ellip_use_pt',              0,  #from here below, override default solver
                '-parab_options_file',       '']
    
       
        cmd += [ '-simID', simid,
                     '-write_statef', writestatef,
    #                 '-imp_region[0].im_param', imparam,
    #                 '-tend', 1000.0,
                     '-stimulus[0].start', 0,
                     '-stimulus[1].start', 85.0,
                     '-tend',                    args.tend,
                     '-size',                      2,
                     '-np',                      4,
                     '-monitor',                 15,
                     '-block-Vm',                -86,
                     '-block-dur',                0,
                     '-dt',                      25,
                     '-spacedt',                  1,
                     '-imp_region[0].im_param',  'ADPshorten*8',
                     '-ellip_use_pt',              0,  
                     '-parab_options_file',       '']
    
        if args.visualize or args.monitor :
            # Prepare file paths
            geom = meshname
            data = os.path.join(job.ID, 'vm.igb')
            view = 'view.mshz'
    
        meshproc = job.meshalyzer(geom, data, view, monitor=args.monitor ) if args.monitor else None
    
    
    
        if args.visualize and not settings.platform.BATCH:
            job.meshalyzer(geom, data, view)
       
        if meshproc: meshproc.wait()
    
    if __name__ == '__main__':
        run()

    -----

  2. #2
    pm42

    Re : Problème pour définir (Python)

    Citation Envoyé par PetiteAnne Voir le message
    Je rencontre un problème : je voudrais ne plus avoir du tout de parser (effacer le parser) et à la place, réécrire ce qu'il y avait dans le parser (c'est-à-dire tous les "group.add_argument(...)" ) en-dessous de la ligne "def run(args, job):"
    Si je comprends, tu veux toujours avoir le parser mais plus la fonction parser ?
    Parce que sans l'objet parser, tu vas avoir du mal à faire des group.add_argument

    Citation Envoyé par PetiteAnne Voir le message
    Et donc, de les redéfinir et pouvoir en faire de vrais paramètres facile à tuner.
    En quoi cela change quelque chose qu'ils soient dans une fonction à part ? C'est même le contraire : les regrouper à un endroit unique et facile à identifier est ce que les rend facile à "tuner".

    Citation Envoyé par PetiteAnne Voir le message
    j'obtiens inexorablement un message d'erreur
    Sans le message d'erreur, c'est plus compliqué.

  3. #3
    PetiteAnne

    Re : Problème pour définir (Python)

    Citation Envoyé par pm42 Voir le message
    Si je comprends, tu veux toujours avoir le parser mais plus la fonction parser ?
    Parce que sans l'objet parser, tu vas avoir du mal à faire des group.add_argument


    En quoi cela change quelque chose qu'ils soient dans une fonction à part ? C'est même le contraire : les regrouper à un endroit unique et facile à identifier est ce que les rend facile à "tuner".


    Sans le message d'erreur, c'est plus compliqué.
    Tout d'abord, merci beaucoup de t'intéresser à mon problème pm42 Et désolée pour le jours qui ont passé sans que je complète ce que je voulais dire pour mon problème mais je voulais revoir l'assistant pour lui poser des questions et que l'assistant confirme certaines choses car je n'étais plus sûre. Et comme je ne voulais pas écrire des bêtises sur le forum, et bien, j'ai attendu de pouvoir revoir l'assistant. Et j'ai pu lui poser des questions ce matin et lui demander ce qu'il en pensait à nouveau.

    Suite à cela, j'ai réglé les messages d'erreur.
    Et par ailleurs, je peux garder partiellement le parser (je peux garder le parser mais seulement pour l'un ou l'autre argument). Ça, ce sont les deux bonnes nouvelles

    Par contre, il a été très clair sur un point : je dois créer un fichier de paramètres (parameters.par) et qui fonctionne ... Sinon ça n'ira pas pour la suite (car oui, je n'en suis qu'au tout début ...).
    Le fichier de paramètres, c'est ce que j'avais déjà essayé mais quand je modifie parameters.par cela ne fonctionne pas : quand je modifie des parametres dans parameters.par, rien ne change. Alors que quand je change ces paramètres dans le code python, là ça fonctionne : on voit que le résultat est changé.

    Voici la partie où je crée mon fichier de paramètres (parameters.par) (je le fais dans le code python : cmd += tools.carp_cmd('paramet.par')
    et je crée parameters.par (dans lequel j'écris moi-même les paramètres avec leur valeur) aussi dans le fichier général):

    Code:
    if len(IDs) : cmd += tools.carp_cmd('paramet.par')
    
        simIDD = job.ID + '/SP'
    
    
        cmd += ['-simID',                 simIDD,
                '-tend',                    280,
                '-dt',                      15,
                '-spacedt',                  1,
                '-imp_region[0].im_param',  'shorten*51']
    
        cmd += ['-meshname',                meshname]
    J'ai aussi laissé ici :
    Code:
        cmd += ['-simID',                 simIDD,
                '-tend',                    280,
                '-dt',                      15,
                '-spacedt',                  1,
                '-imp_region[0].im_param',  'shorten*51']
    dont l'assistant veut que je me débarrasse pour que vraiment un maximum de choses soient dans le fichier des paramètres mais quand je tente de m'en débarasser, plus rien ne fonctionne ... Il veut que
    Code:
        cmd += ['-simID',                 simIDD,
                '-tend',                    280,
                '-dt',                      15,
                '-spacedt',                  1,
                '-imp_region[0].im_param',  'shorten*51']
    disparaisse du code.

    Ceci dit, d'abord, j'aimerais avant tout que mon fichier de paramètres fonctionne (parameters.par). Quelqu'un aurait-il une idée ?

    Merci d'avance ! J'ai vraiment besoin d'aide. Cela fait longtemps que j'essaie.
    Dernière modification par PetiteAnne ; 24/02/2020 à 10h19.

Discussions similaires

  1. [Python] Problème de lag de programme et essai de Timer python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 20
    Dernier message: 26/01/2018, 15h14
  2. Problème pour faire fonctionner une boucle (python)
    Par invite1eb98499 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 22/04/2017, 09h15
  3. Définir une stratégie de déplacement pour un robot
    Par invite1d9b2e83 dans le forum Technologies
    Réponses: 54
    Dernier message: 09/02/2014, 19h13
  4. Résistance à définir pour bus I2C
    Par jo-electrons dans le forum Électronique
    Réponses: 2
    Dernier message: 14/05/2011, 15h51
  5. Probleme de reccurence, definir Un...?
    Par invitec8cb3d15 dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 15/09/2008, 22h20