IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème pour programmer un projet de biologie


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Problème pour programmer un projet de biologie
    Bonjour,

    Je suis étudiante en M2 de recherche en biologie et je dois réaliser un programme (pour jeudi) sans n'avoir jamais appris a programmer sur python, je me suis débrouillée avec les cours trouvés sur internet et des lectures de forum cependant je n'ai pas trouvé (ou je suis peut-être passée à côté) d'aide pour le projet que je dois faire.

    Je dois modéliser le principe "drapeau français morphogène"

    Pour ceux qui n'y connaissent rien en biologie, il faut simplement imaginer une molécule qui diffuse aléatoirement dans une boite. Cependant à chaque pas elle a une chance sur dix d'être dégradée et il y a une production constante de cette molécule. La diffusion de cette molécule va créer un gradient, ce qui permet d'avoir le gène bleu, le gène blanc et le gène rouge. (voir photo)

    J'ai réussi a programmer le fait que ma molécule peut faire 8 mouvements différents à chaque pas (haut, bas, droite, gauche et les diagonales). Mais je suis bloquée à ce niveau là

    Et le pire c'est qu'après je dois faire varier les paramètres de base pour voir ce que cela entraine (par exemple, si la source est au milieu on aura du bleu au milieu du drapeau)

    Je ne sais pas comment m'exprimer mieux que ça pour vous expliquer mon problème, je suis désolée ...

    Ce que je souhaite c'est que l'on puisse m'expliquer pour que je le fasse par moi même, j'ai un oral jeudi où je dois présenter mes résultats et surtout les expliquer ...

    Merci d'avance
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par pugette14 Voir le message
    Je dois modéliser le principe "drapeau français morphogène"
    (...)
    il faut simplement imaginer une molécule (...) à chaque pas elle a une chance sur dix d'être dégradée et il y a une production constante de cette molécule. La diffusion de cette molécule va créer un gradient, ce qui permet d'avoir le gène bleu, le gène blanc et le gène rouge. (voir photo)

    J'ai réussi a programmer le fait que ma molécule peut faire 8 mouvements différents à chaque pas (haut, bas, droite, gauche et les diagonales). Mais je suis bloquée à ce niveau là
    (...)
    Ce que je souhaite c'est que l'on puisse m'expliquer pour que je le fasse par moi même
    t'as 0 expérience du langage et on te demande d'écrire un quasi-simulateur ?

    y'a un certain nombre de questions qui me viennent, je te retranscris ça pêle-mêle :
    • au delà de la description du problème, tu as un début de code sur lequel on pourrait s'appuyer ?
    • t'es bloquée à quel niveau exactement ? c'est censé être quoi l'étape d'après ?
    • si j'ai bien compris le but c'est de dessiner un drapeau français avec des molécules qui se dégradent au "fil du temps", c'est bien ça ?
    • est-ce que le milieu importe ?
    • les molécules nouvellement produites le sont à un endroit particulier ou réparties aléatoirement dans la cyber-boite de pétri ?
    • par quel moyen est-on censé orienter la dégradation de manière à obtenir un drapeau ? (1 direction = 1 dégradation spécifique ? ou on agit sur le milieu ? autre ?)
    • ...


    c'est non-exhaustif, la plus importante étant probablement ton début de code

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,


    t'as 0 expérience du langage et on te demande d'écrire un quasi-simulateur ?

    y'a un certain nombre de questions qui me viennent, je te retranscris ça pêle-mêle :
    • au delà de la description du problème, tu as un début de code sur lequel on pourrait s'appuyer ?
    • t'es bloquée à quel niveau exactement ? c'est censé être quoi l'étape d'après ?
    • si j'ai bien compris le but c'est de dessiner un drapeau français avec des molécules qui se dégradent au "fil du temps", c'est bien ça ?
    • est-ce que le milieu importe ?
    • les molécules nouvellement produites le sont à un endroit particulier ou réparties aléatoirement dans la cyber-boite de pétri ?
    • par quel moyen est-on censé orienter la dégradation de manière à obtenir un drapeau ? (1 direction = 1 dégradation spécifique ? ou on agit sur le milieu ? autre ?)
    • ...


    c'est non-exhaustif, la plus importante étant probablement ton début de code
    Merci pour votre réponse, je viens juste de m'inscrire sur le forum du coup je ne sais pas trop comment ça se passe, c'est la 1ère fois que je demande de l'aide pour un projet et surtout pour la programmation, donc je suis désolée s'il manque des informations où si je me suis mal exprimée dans mon 1er message.


    Je vais expliquer mon problème autrement dans le cadre de la biologie cela se passe dans un embryon de mouche (ovale), la molécule est produite sur le côté gauche de l'embryon, elle bouge de manière aléatoire dans l'embryon (dans l'ovale) et comme toute molécule elle a une durée de vie limité donc elle se dégrade.
    Et physiologiquement dans tous les embryons de mouche, elle forme un gradient où la concentration est maximale à gauche et minimale à droite. La composition de l'intérieur de l'embryon n'intervient pas dans la diffusion. Et cela peut être représenté par la courbe jaune. Et ce gradient permet d'obtenir (lors du développement embryonnaire de la mouche) :
    - La tête (qui correspond au bleu du drapeau) --> forte concentration de la molécule
    - Le corps (qui correspond au blanc) --> concentration moyenne
    - Les pattes (qui correspond au rouge) --> faible concentration

    Donc mon projet est d'arrivé à programmer ça : la condition physiologique que je viens de décrire. Mais il faut aussi que je bouge les conditions (donc faire des choses qui ne se passent pas en réalité dans la cellule) pour voir ce que ca donnerait.
    Par exemple : si je bouge ma source (qui était à gauche) au milieu, on aura du bleu au milieu du drapeau (donc la mouche aura la tete à la place corps).
    On prend l'exemple du drapeau français car c'est plus parlant pour les personnes qui ne viennent pas de biologie.

    Du coup j'ai commencé par faire le mouvement aléatoire de ma molécule, elle peut faire 8 mouvements (haut, bas, droite, gauche et les 4 diagonales), que j'ai programmé comme cela (avec correction du prof) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    import numpy as np
    import matplotlib.pyplot as plt
     
    n_steps = 1000 #le nombre de point de la courbe
    n_tracks = 50 #le nombre de molécules
    x = np.zeros((n_steps,n_tracks)) #fonction
    y = np.zeros((n_steps,n_tracks)) #fonction
     
    for i in range (0, n_steps):
        r = np.random.rand(n_tracks) 
     
        for k in range(10): #nombre de fois que l’on refait la boucle
     
            if 0<r[k]<0.125: #Droite
                x[i,k] = x[i-1,k]+1
                y[i,k] = y[i-1,k]
     
            elif 0.125<r[k]<0.25: #Gauche
                x[i,k] = x[i-1,k]-1
                y[i,k] = y[i-1,k]
     
            elif 0.25<r[k]<0.375: #Haut
                x[i,k] = x[i-1,k]
                y[i,k] = y[i-1,k]+1
     
            elif 0.375<r[k]<0.5: #Haut gauche  
                x[i,k] = x[i-1,k]-1
                y[i,k] = y[i-1,k]+1
     
            elif 0.5<r[k]<0.625: #Bas gauche   
                x[i,k] = x[i-1,k]-1
                y[i,k] = y[i-1,k]-1
     
            elif 0.625<r[k]<0.75: #Haut droite
                x[i,k] = x[i-1,k]+1
                y[i,k] = y[i-1,k]+1
     
            elif 0.75<r[k]<0.875: #Bas droite
                x[i,k] = x[i-1,k]+1
                y[i,k] = y[i-1,k]-1
     
            else: #Bas
                x[i,k] = x[i-1,k]
                y[i,k] = y[i-1,k]-1
     
    for k in range (n_tracks):
        plt.plot(x,'gray', alpha=0.1)
        plt.xlim(0,1000)
        plt.ylim(0,200)
    Maintenant, je dois faire la "boite" qui correspond à l'embryon (donc on la représentera rectangulaire au lieu de ovale) pour que la molécule reste confinée dans un espace clôt.
    Ensuite je dois ajouter le fait qu'a chaque pas la molécule a 1 chance sur 10 de mourir (dégradation).
    Et après je dois ajouter le fait qu'il y a une production constante de la molécule à gauche.

    Une fois que ça c'est fait c'est ma condition physiologique, et après je dois modifier les paramètres pour faire les choses qui n'existent pas physiologiquement et voir l'impact sur le développement de la mouche (en gros sur la structure du drapeau)

    J'espère que j'ai été plus claire, je suis vraiment désolée la programmation c'est nouveau pour moi, je n'ai pas vraiment eu de cours la dessus et en master 2 on est livré à nous même ....
    Dernière modification par wiztricks ; 24/11/2018 à 21h56.

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Pourquoi 2 boucles for ?

    Pour la dégradation, suffit à la fin de chaque boucle de tirer un nombre aléatoirement entre 0 et 1 (https://docs.python.org/3/library/random.html) et de comparer ca à votre proba, ici 0.1. Si le nombre tiré est plus petit, vous détruisez la molécule.

    PS : Vous pouvez simplifier les mouvements. Vous n'etes pas obligé de considérer les diagonales. Haut bas gauche droite suffisent amplement.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    Pourquoi 2 boucles for ?

    Pour la dégradation, suffit à la fin de chaque boucle de tirer un nombre aléatoirement entre 0 et 1 (https://docs.python.org/3/library/random.html) et de comparer ca à votre proba, ici 0.1. Si le nombre tiré est plus petit, vous détruisez la molécule.

    PS : Vous pouvez simplifier les mouvements. Vous n'etes pas obligé de considérer les diagonales. Haut bas gauche droite suffisent amplement.
    Merci pour votre réponse.
    Pourquoi 2 boucles ? Et bien je n'en sais rien j'ai repris le modèle qu'on nous a donné en cours par le prof, et j'ai ajouté mes diagonales.
    Je suis obligée d'avoir ses 8 mouvements.

    Le prof a corrigé cette partie, donc ce que je vous ai envoyé c'est ma base et elle est juste. Mais d'après ce que j'ai compris ce n'est pas la meilleure approche, seulement c'est uniquement comme ca que le prof nous a montré les choses ....

    Merci pour le lien je vais aller étudier ca

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par pugette14 Voir le message
    Merci pour votre réponse.
    Pourquoi 2 boucles ? Et bien je n'en sais rien j'ai repris le modèle qu'on nous a donné en cours par le prof, et j'ai ajouté mes diagonales.
    Je suis obligée d'avoir ses 8 mouvements.

    Le prof a corrigé cette partie, donc ce que je vous ai envoyé c'est ma base et elle est juste. Mais d'après ce que j'ai compris ce n'est pas la meilleure approche, seulement c'est uniquement comme ca que le prof nous a montré les choses ....

    Merci pour le lien je vais aller étudier ca
    Ah oui en faite je viens de comprendre. Mais il y a quand même des fautes. Le 2eme for pourquoi c'est :
    Normalement c'est plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for k in range(n_tracks):
    C'est d'ailleurs étrange que l'on calcule toutes les particules à chaque pas de temps, et pas plutot dans l'autre sens, c-à-d les trajectoires complètes des particules, particules après particules.

    Ensuite pour le tracé vous faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for k in range (n_tracks):
        plt.plot(x,'gray', alpha=0.1)
        plt.xlim(0,1000)
        plt.ylim(0,200)
    Vous faites donc n_tracks fois le même tracé, puisque l'intérieur de votre boucle ne dépend pas de k. Donc là aussi il y a une erreur. Soit votre for est inutile, soit il manque un [k] quelpart, du style peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plt.plot(x[:,k],'gray', alpha=0.1)
    D'ailleurs autre bizarerie, je ne vois pas l'ordonnée y ici ... Donc vous ne tracez que l'abscisse ?!

    Ne soyez jamais sûr d'un code, il faut toujours tout remettre en question et tout tester. Sinon on serait dans le monde des bisounours, et les ingénieurs ne feraient aucun bug dans leur code, et ariane 5 n'aurait pas explosée lors de son décollage (car oui l'explosion de la fusée Ariane 5 est du à un bug informatique, c-à-d une erreur humaine faite par un programmeur dans un code). Donc même fait par des pros, un code peut contenir des erreurs.

    L'examiner sous toutes ses coutures est de plus dans votre cas indispensable : vous devez pouvoir comprendre comment il est fait (et ce qu'il traduit biologiquement pas à pas) pour pouvoir ensuite y insérer votre brique (la dégradation).

    PS : Si vous voulez d'autres supports à potasser, sacher que ce que vous regarder là s'appelle des mouvements browniens. Il y a de la documentation là dessus sur la toile et certainement aussi déjà plein de code.

  7. #7
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par Invité Voir le message
    je viens juste de m'inscrire sur le forum
    ça aura été bref manifestement, dommage la problématique était intéressante... on doit pouvoir tirer quelque chose d'assez sympa rapidement avec matplotlib.animation.FuncAnimation()

Discussions similaires

  1. Problème pour loader un projet sous Visual Studio 2005
    Par SkyBioSS dans le forum Visual Studio
    Réponses: 5
    Dernier message: 04/04/2008, 16h02
  2. [RCP] problème pour exporter le projet
    Par david06600 dans le forum Eclipse Platform
    Réponses: 11
    Dernier message: 14/11/2007, 16h46
  3. [VB6]problèmes pour executer mon projet en VB
    Par Walowalo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/04/2006, 19h27
  4. Réponses: 1
    Dernier message: 26/09/2005, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo