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 :

Réparer le header d'un fichier edf automatiquement


Sujet :

Python

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2023
    Messages : 5
    Par défaut Réparer le header d'un fichier edf automatiquement
    Bonjour,

    Je cherche en fait à travailler sur un ensemble de fichiers edf. J'utilise donc pyedflib pour cela mais le problème est que je dois réparer le header d'un fichier pour pouvoir l'exploiter via Python. J'ai vu qu'il suffisait de l'ouvrir dans edfbrowser, de cliquer sur "header editor repair" et puis de l'enregistrer. J'aimerais donc automatiser cette tâcher afin de ne pas devoir l'effectuer à la main pour chaque fichier. J'ai déjà fait plusieurs recherches à ce sujet et je ne trouve vraiment rien...

    Je vous remercie d'avance pour votre réponse

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Salut,

    Que ce soit un fichier texte ou binaire, il est toujours possible de modifier quelques octets pour vous qu'on sache quoi et où. Mais la maîtrise du format EDF (pour savoir que faire) n'a rien à voir avec Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2023
    Messages : 5
    Par défaut
    Mais comment puis-je savoir ce qui doit être modifié ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par NaomiD Voir le message
    Mais comment puis-je savoir ce qui doit être modifié ?
    Je vous l'ai écris: à partir des spécifications du format EDF, on doit pouvoir dire cette donnée là est incorrecte, elle devrait être.
    Et tant qu'on n'est pas capable de dire çà, impossible de savoir quoi coder.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2023
    Messages : 5
    Par défaut
    D'accord, désolée je n'avais pas bien saisi, je pense un peu mieux comprendre mais je ne vois pas comment ouvrir le fichier en edf en format binaire ^^'

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par NaomiD Voir le message
    D'accord, désolée je n'avais pas bien saisi, je pense un peu mieux comprendre mais je ne vois pas comment ouvrir le fichier en edf en format binaire ^^'
    Côte Python c'est juste un open(..., 'rb'), mais si déjà vous n'êtes pas à l'aise avec une opération aussi simple, il serait tant d'aller ouvrir un tuto. avant de vous lancer à essayer n'importe quoi.

    note: quand vous venez ici, vous avez au moins pris le temps de débuter avec Python(*) en passant du temps dans un tuto. Ce genre d'ouvrage à une table des matières et contient généralement un chapitre qui traite des fichiers. Lorsqu'on ne sait pas ouvrir un fichier binaire, le réflexe de base est d'aller (re) voir le chapitre plutôt que de dire "je sais pas faire" dans l'espoir qu'on va faire le boulot pour vous: on ne peut pas apprendre à votre place et pour programmer il faut savoir un minimum de choses.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2023
    Messages : 5
    Par défaut
    C'est ce que j'ai fait mais ça ne fonctionne pas.. Ce n'est pas la peine de vous énerver.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2023
    Messages : 5
    Par défaut
    J'ai l'erreur suivante qui s'affiche "SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape". Je pensais donc que ce n'était pas possible de lire un fichier edf ren binaire de cette façon.

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 872
    Billets dans le blog
    1
    Par défaut
    Bonjiur

    En fait c'est un souci d'encoding. Tu tentes probablement d'afficher ce que tu lis au format "string". Or si ce n'est pas une string (ou si c'est une string mal encodée) c'est ce qui se passe.
    Ce n'est donc pas un souci de lecture mais d'affichage.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par NaomiD Voir le message
    J'ai l'erreur suivante qui s'affiche "SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape". Je pensais donc que ce n'était pas possible de lire un fichier edf ren binaire de cette façon.
    Si vous avez cette erreur, c'est que vous avez oublié le 'b'.

    Citation Envoyé par NaomiD Voir le message
    C'est ce que j'ai fait mais ça ne fonctionne pas.. Ce n'est pas la peine de vous énerver.
    Vous avez fait autre chose... et ce n'est pas le 'b' dans l'open qui va générer cette erreur mais ce que vous faites après. Je ne m’énerve pas mais constatez que c'est un sujet technique dont vous ne maîtrisez rien et encore moins les informations à fournir pour obtenir de l'aide. Donc apprenez à programmer, pour obtenir le minimum de bagage technique qui vous permette de comprendre la difficulté de ce que vous cherchez à faire et arriver à fournir des informations pertinentes pour obtenir de l'aide (le cas échéant).
    note: lisez les règles qui régissent ces forums, ce que je dis là est ce que vous deviez respecter avant de demander de l'aide.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 381
    Par défaut
    Bonjour,

    Je ne fais que passer car je ne connais rien à Python, mais s'il s'agit de ce format (European Data Format) (que je ne connais pas non plus), la spécification indique que l'en-tête ne peut contenir que des caractères ASCII imprimables :

    In the header, use only printable US-ASCII characters with byte values 32..126.
    (source:https://www.edfplus.info/specs/edfplus.html#additionalspecs).

    Il ne devrait donc pas y avoir de caractères Unicode en position 2-3 du fichier.

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par xdelatour Voir le message
    Il ne devrait donc pas y avoir de caractères Unicode en position 2-3 du fichier.
    Python n'essaie de transformer en unicode qu'à la lecture du contenu de fichiers ouverts en mode "texte". Ouverts en mode binaire, ça retourne une séquence de bytes entre 0..255 sans chercher à convertir quoi que ce soit.

    note: la longueur de l'en-tête d'un fichier EDF est un multiple de 256 probablement déterminé en fonction du contenu du premier bloc. Si on lit tout le fichier en mode texte, çà va planter lorsqu'on essaiera de convertir en unicode la partie binaire (après l'en-tête).

    Citation Envoyé par xdelatour Voir le message
    Je ne fais que passer car je ne connais rien à Python, mais s'il s'agit de ce format (European Data Format) (que je ne connais pas non plus)
    Répondre, c'est pour partager votre expérience pas pour juste faire du bruit.

    edit: en cherchant sur Internet avec le message d'erreur, il peut arriver lors de l'open lorsque le nom du chemin contient des "\U". Ce qui se corrige avec double "\" ou raw string.
    EDFbrowser n'a pas de mode batch pour lancer la réparation d'une en-tête mais on devrait pouvoir automatiser l'opération en simulant l'utilisateur et en utilisant un des outils mentionnés ici..

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 295
    Par défaut
    Hello,
    peux-tu faire exécuter ce code (python > 3.5) pour ton fichier edf et nous montrer ce que cela donne au début.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with open('d:/tmp/0000.edf', 'rb') as f:
        hexdata = f.read(256).hex()
        print(hexdata)
    moi sur un fichier edf j'obtiens ceci par exemple :
    302020202020202030303030202020202020202020
    30 c'est 0 et 20 c'est l'espace en ascii

    Ami calmant, J.P

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 615
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 615
    Par défaut
    Pour savoir que la réparation fait, le plus simple, c'est de prendre un fichier, d'en faire une copie, d'appliquer la réparation et de comparer binairement les fichiers (soit les ouvrir dans un éditeur hexa, ou avec un outil de comparaison de fichier (type winmerge))

    ce que peut réparer EDFbrowser d'après sa doc:
    eader editor
    This tool can be used to edit (or anonymize) the header (file info) like subject, birthdate, etc.
    You can also edit labels (signalnames), physical dimension, pre-filter and transducer names.
    If the file you want to edit has been opened in EDFbrowser already, close it first before starting
    this tool.
    This tool can also be used to repair a file that cannot be opened with EDFbrowser because of an incompatibility.

    Errors that can be repaired with this tool:
    - invalid characters in the header (the EDF format allows (7-bit) ASCII characters only)
    - a wrong or missing timestamp (format) in the header (e.g. a colon instead of a dot between the numbers)
    - a wrong or missing datestamp (format) in the header (e.g. a dash instead of a dot between the numbers)
    - a wrong number of datarecords written in the header
    - a wrong filesize (file is not ending at the boundary of a datarecord)
    - a broken number i.e. a number with decimal(s) in the digital maximum/minimum field
    - the value for digital maximum is lower than or equal to digital minimum
    - the value for physical maximum equals physical minimum
    - illegal or extraneous data in the reserved field

    Do as follows: In EDFbrowser go to Tools -> Header editor. Select the file. Now click on the
    "save" button (you don't need to edit the content manually). Close the header editor.
    Now open the file in the usual way.
    https://www.teuniz.net/edfbrowser/ED...%20manual.html

  15. #15
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par umfred Voir le message
    ce que peut réparer EDFbrowser d'après sa doc
    Ce qui demande une certaine maîtrise du format EDF dont on peut profiter en lançant EDFBrowser "programmatiquement" ou en se l'appropriant pour coder cela soi même.

    Si ouvrir un fichier est déjà difficile, la seule aide sera de faire le boulot à la place du PO ou de lui trouver une solution prête à l'emploi.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/12/2007, 12h06
  2. Fichier ".edf" Bibliothèque Delphi
    Par Gatien82 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/02/2006, 13h14
  3. Récupérer le header d'un fichier distant
    Par xavier.valentin dans le forum Langage
    Réponses: 9
    Dernier message: 28/01/2006, 16h26
  4. [Outlook] Fichier joint automatiquement
    Par senacle dans le forum Outlook
    Réponses: 6
    Dernier message: 20/01/2006, 17h27
  5. Import de fichier CSV automatique dans Access
    Par Jmar dans le forum Access
    Réponses: 4
    Dernier message: 20/01/2006, 11h48

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