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 :

Comment gérer l'affichage et le stockage de données


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 14
    Points
    14
    Par défaut Comment gérer l'affichage et le stockage de données
    Bonjour à tous,

    Je suis en train de concevoir une application graphique avec Qt5 et PyQt5 destiné à l'acquisition de spectres. J'ai pour l'instant une interface fonctionnelle qui, quand je clique sur un bouton lance une acquisition de données puis les affiches. Les données sont des float double (float64) stocké dans un tableau unidimensionnel numpy (np.array). Pour chaque mesure, j'ai donc deux tableaux (x et y). Pour l'instant chaque mesure est effacée avec l'acquisition de la suivante

    J'envisage à terme de rendre l'application exécutable et il me faudrait donc une solution pour stocker tous mes tableaux mais également d'autres paramètres, comme des chaines de caractères par exemple. L'idéal serait que pour chaque expérience, l'application sorte en fin de manip un seul fichier contenant tout ce qui a était acquis ainsi que les paramètres de l'expérience. Je connais bien python pour tout ce qui est calcul scientifique mais je suis complètement débutant pour la partie interface graphique-stockage et affichage des données.

    Il me faudrait donc une façon de :

    - Stocker mes données de façon dynamique. Je sais à l'avance que j'aurais au minimum 4 chaines de caractères à stocker. J'aurais ensuite une chaîne de caractère + 2 tableaux à stocker pour chaque expérience mais je ne connais pas le nombre d'expériences à l'avance.

    - Afficher une sélection des données acquises sur mon application. Idéalement une page où j'aurais le titre de chaque expérience que je pourrais ensuite sélectionner avec des checkbox pour les tracer avec PyQtGraph.

    - Un fichier lorsque l'expérience est fini ou j'aurais toutes mes données, c'est-à-dire les 4 chaînes de caractères + les données relatives aux expériences.

    Comme je l'ai dit, je n'ai aucune expérience dans cette partie là de la programmation et je ne connais même pas les termes employés pour essayer de chercher par moi-même des solutions. J'ai pensé à utiliser des bases de données mais ça ne me semble pas adapter et trop lourd pour ce que je souhaite faire.

    J'espère avoir été assez clair dans mes explications et merci d'avance à ceux qui m'aideront !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Traxxael Voir le message
    L'idéal serait que pour chaque expérience, l'application sorte en fin de manip un seul fichier contenant tout ce qui a était acquis ainsi que les paramètres de l'expérience. Je connais bien python pour tout ce qui est calcul scientifique mais je suis complètement débutant pour la partie interface graphique-stockage et affichage des données.
    Intuitivement, vous pouvez commencer par réfléchir à une structure hiérarchique:
    • un répertoire par expérience, contenant
    • un fichier de paramètres, et
    • des fichiers correspondants aux différentes données.

    Puis vous essayez de voir quels problèmes vous avez pu résoudre et ceux qui sont mal résolus.
    L'avantage est que ce sont des fichiers et des répertoires.... donc des choses "simples", qui vous permettront de réfléchir à l'organisation de vos données dans un premier temps et voir quels types de stockage seront les plus appropriés dans un 2nd temps.
    note: il est probable que cela vous conduise à stocker des informations dans des fichiers plats, d'autres dans une base de données,...

    Citation Envoyé par Traxxael Voir le message
    Comme je l'ai dit, je n'ai aucune expérience dans cette partie là de la programmation et je ne connais même pas les termes employés pour essayer de chercher par moi-même des solutions. J'ai pensé à utiliser des bases de données mais ça ne me semble pas adapter et trop lourd pour ce que je souhaite faire.
    Lire et écrire des fichiers plats genre CSV ou JSON (pour des données plus structurées), c'est pas la mer à boire et vous devriez essayer de commencer par là.

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

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 472
    Points : 9 266
    Points
    9 266
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je suis d'accord avec wiztricks, et j'ajoute ceci:

    - si l'objectif est de faire un programme exécutable et installable, il faut prévoir dès le départ que les données ne seront pas au même endroit que le programme installé, et qu'il faudra permettre à l'utilisateur d'avoir les droits de lecture/écriture. On peut d'ailleurs trouver automatiquement le répertoire utilisateur (home) en Python avec "os.path.expanduser('~')" (c'est une pratique du monde Unix, mais ça marche aussi sous Windows). En plus, ce répertoire utilisateur permettrait à plusieurs utilisateurs du même PC (chacun ayant un compte différent) de pouvoir travailler sur des données différentes sans les mélanger.

    - En plus des répertoires des données, il faut prévoir un moyen de stocker les données de configuration du programme. J'utilise couramment un fichier "ini" pour ça (module "configparser"), mais on peut aussi sous Windows utiliser la base de registre (module "winreg"). Et il faut, bien sûr, prévoir l'initialisation de ces données de configuration lors de l'installation et/ou au 1er lancement du programme.

    - pour choisir entre une base de données et un fichier plat de type csv, il faut surtout savoir quel type d'exploitation on prévoit derrière. La base de données est surtout intéressante quand on veut faire des recherches complexes derrière avec des scripts SQL. Mais si on veut seulement enregistrer/relire les données, un fichier csv (module "csv") fait ça très bien. Petite subtilité: si on veut faire lire un fichier csv par Excel en français, les nombres flottants avec un point décimal ne seront pas reconnus comme des nombres mais comme des chaines de caractères: il faudra donc prévoir une conversion quelque part ('.' <=> ',').

    A noter que si la solution choisie est une base de données, et que la base de données n'a pas besoin d'un accès multi-utilisateur (comme un serveur), "sqlite" (module "sqlite3") est une bonne solution parce qu'il est très rapide, et que toutes les données se trouvent dans un seul fichier. Si par contre on veut prévoir un accès multi-utilisateurs pour consultations ultérieures, il faut utiliser un vrai serveur de base de données en réseau comme mysql ou postgresql.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Tout d'abord, merci beaucoup à tous les deux pour vos réponses. Je vais effectivement procéder par la création d'un répertoire dédié à une série d'expérience qui contiendra toutes les données et les paramètres d'acquisition.
    Comme c'est effectivement un programme dont la finalité et d'être installable et exécutable (dans un premier temps sous Windows), je vais jeter un oeil à la fonction os.path.expanduser('~').

    Pour les données je pense écrire tout ça dans un fichier CVS ou JSON, la base de donnée me semble un peu trop développé pour ce que je souhaite faire. En terme de recherche, je n'aurais finalement qu'à chercher des données d'expériences à l'aide de mots clef situé dans le titre entré à la sauvegarde. Je jetterais quand même un oeil sur la partie sqlite, si ça ne demande pas trop d'investissement en terme d'apprentissage, le fait d'avoir un seul fichier pour toutes les données m’intéresse.

    Merci encore pour votre aide !

Discussions similaires

  1. Comment gérer l'affichage pour un RTS/RGP Lite Like?
    Par cauriera dans le forum Développement 2D, 3D et Jeux
    Réponses: 13
    Dernier message: 25/03/2011, 10h01
  2. (chart toolkit)comment gérer l'affichage des X
    Par livinho38 dans le forum Silverlight
    Réponses: 1
    Dernier message: 28/07/2010, 14h08
  3. [JTextField] Comment gérer l'affichage du toolTip ?
    Par AliJava dans le forum Composants
    Réponses: 2
    Dernier message: 16/07/2008, 22h25
  4. Réponses: 6
    Dernier message: 31/07/2007, 10h13
  5. comment gérer l'affichage/droits suivant les droits user
    Par cortex024 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 29/05/2007, 12h22

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