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

Calcul scientifique Python Discussion :

Calcul d'un intervalle de temps en Python


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Calcul d'un intervalle de temps en Python
    Bonjour,

    Je dois faire un projet (à rendre le 22 mai) dans lequel on me demande de calculer le pouls d'un patient à partir d'un signal d'électrocardiogramme.
    Pour cela je me suis dit qu'il fallait calculer un deltaT qui correspondrait à l'intervalle entre deux pics ecg.
    Ensuite la valeur du pouls sera la division entre deltaT et ma fréquence (44100).

    Mon problème est le suivant: je n'arrive pas à transcrire ça sous langage python. j'ai essayé de multiples manières mais sans résultats.
    Voici ce que j'ai fait :

    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
        self.duree = self.Durees_2.value()
        print self.duree
        self.recordedSignal=wavrecord(44100,self.duree)
        print self.recordedSignal
     
        # Normalisation
        self.recordedSignalMax = max(self.recordedSignal)
        self.recordedSignalMin = min(self.recordedSignal)
        if self.recordedSignalMax>self.recordedSignalMin:
          self.recordedSignal = self.recordedSignal/self.recordedSignalMax
        else:
          self.recordedSignal = self.recordedSignal/-(self.recordedSignalMin)
     
        plotWaveForm(self.widget,self.recordedSignal,44100,self.duree)                      
     
        #Calcul du pouls (bmp)
        # delta correspond à l'ecart entre deux pics soit t2-t1
        self.delta = self.recordedSignalMax(t2)-self.recordedSignal(t1)
        self.pouls = self.delta/44100
        self.pouls = str(self.textBrowser)
        print self.pouls
    Si quelqu'un peut m'aider, ça serait gentil.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Difficile à déterminer comme ça, tu fais appel à des éléments et des widgets dont nous ignorons tout.

    Je vois juste à la fin de ton code que tu redéfinis deux fois self.pouls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    self.pouls = self.delta/44100
    self.pouls = str(self.textBrowser)
    print self.pouls

    Autre chose, pour poster du code:

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci pour l'astuce pour insérer du code ^^

    J'ai créer une interface à partir de QtCreator qui m'a généré un code et c'est à partir de celui que je peux récupérer certaine balise utiles.

    Dans le cas d'un histogramme quelconque, comment fait on pour calculer un intervalle de temps entre deux pics les plus élevés ?

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé ça pour calculer les pics max de mon signal ecg mais après je ne vois pas trop comment faire pour calculer l'intervalle de temps entre ces pics

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # parameters
    minheight = np.percentile(ecg, 0.9)
    minwidth = sampling * (1 / 0.0015) # R-peak is about 15ms
     
    # find R-peak using a translation of findpeak.m
    findpeaks = vrp.ecg.findpeaks
    peaks, locs = findpeaks(ecg, minheight, minwidth)
    beat = zip(peaks, locs)

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    44100 est la fréquence de l'électrocardiogramme ?

    Si oui alors self.delta / 44100 te donne le temps en seconde entre deux battements et 44100 / self.delta le nombre de battements par seconde.

    Je ne sais pas te dire comment tu peux trouver les pics, je ne vois pas comment tu reçois le signal de l'ecg. Tu es vraiment connectée à un appareil ou s'agit-il d'une fonction qui le simule ?

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    oui 44100 c'est la fréquence de mon signal.

    on a un système d'acquisition avec une carte électronique que l'on branche sur l'ordinateur. on relie la carte au patient avec des patchs spéciaux et à l'ordinateur avec un câble.
    L'ordinateur reçoit les données et on doit afficher le signal ecg ainsi que le pouls sur l'interface.

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Dans ton code tu sembles avoir ce qui fait cela wavrecord(44100, self.duree)

    Il n'y a pas de self devant, c'est un module importé ?

    Et plus loin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.pouls = self.delta/44100
    ça donne quoi comme résultat ?

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    waverecord est une fonction qui permet d'enregistrer un signal (celui qui vient de la carte ecg).

    self.pouls est ma nouvelle variable pour afficher le pouls. Pour le moment elle n'affiche rien car mon code comprend des fautes.

    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
     
      def LancerAcquisition(self):
        self.duree = self.Durees_2.value()
        print self.duree
        self.recordedSignal=wavrecord(44100,self.duree)
        print self.recordedSignal
     
        # Normalisation
        self.recordedSignalMax = max(self.recordedSignal)
        self.recordedSignalMin = min(self.recordedSignal)
        if self.recordedSignalMax>self.recordedSignalMin:
          self.recordedSignal = self.recordedSignal/self.recordedSignalMax
        else:
          self.recordedSignal = self.recordedSignal/-(self.recordedSignalMin)
     
        # parameters
        sampling = (self.recordedSignal).attrs.get('sampling_frequency')
        minheight = np.percentile(self.recordedSignal, 0.9)
        minwidth = sampling * (1 / 0.0015) # R-peak is about 15ms
     
        # find R-peak using a translation of findpeak.m
        findpeaks = vrp.recordedSignal.findpeaks
        peaks, locs = findpeaks(self.recordedSignal, minheight, minwidth)
        beat = zip(peaks, locs)
        self.delta = minheight-minwidht
        self.pouls = 44100/self.delta
        plotWaveForm(self.widget,self.recordedSignal,44100,self.duree)
    il ne reconnait pas attrs

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par aeiouy49 Voir le message
    il ne reconnait pas attrs
    Moi non plus, d'ailleurs.

    et que donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print self.recordedSignal
    Puisque je vois que tu utilises min() et max()

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print self.recordedSignal
    Cette fonction permet d'afficher mon signal ecg dans la fenêtre ploteWaveForm

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Heu non, ça print dans le terminal, rien à voir avec un plotter.

  12. #12
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ah, je ne savais pas. Merci.
    J'arrive à visualiser mon interface mais le signal ecg ne s'affiche pas à cause de l'erreur "attrs".
    Je vais continuer mes recherches pour en savoir plus sur ce type d'erreur et sa signification

    Merci pour votre aide en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Calculs intervalles de temps
    Par krefkref dans le forum Excel
    Réponses: 5
    Dernier message: 16/07/2014, 13h15
  2. [XL-2007] Calculer le nombre d'heure dans un intervalle de temps
    Par sofianeb dans le forum Excel
    Réponses: 2
    Dernier message: 13/04/2010, 16h06
  3. Calcul d'un intervalle temps
    Par yamino dans le forum Langage
    Réponses: 10
    Dernier message: 04/10/2007, 13h14
  4. [9i] Calculer des intervalles de temps
    Par tscoops dans le forum Oracle
    Réponses: 9
    Dernier message: 31/12/2005, 08h38
  5. [Timer]Comment mesurer un intervalle de temps ?
    Par Pill_S dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 17h39

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