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

C++ Discussion :

méthode pour encoder une séquence ADN


Sujet :

C++

Vue hybride

FryHandiz méthode pour encoder une... 14/03/2016, 21h10
Bousk Salut, te fatigues pas... 14/03/2016, 23h11
koala01 Salut, Si j'ai bien... 15/03/2016, 00h08
LandReagan Du nucléotide... 15/03/2016, 07h11
Bousk Oui mais tu as bien une... 15/03/2016, 09h34
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de FryHandiz
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut méthode pour encoder une séquence ADN
    Bonjour à toutes et à tous,

    Je débute en C++ et j'ai une petite API à développer.
    Sauf que voilà, j'arrive à un moment où je bloque un peu... !
    Donc j'ai une séquence ADN formée des quatre lettres suivantes : ATCG et j'ai besoin de l'encoder afin de pouvoir la manipuler (genre créer une séquence reverse ex:GCTA, ou le complémentaire TAGC). Bref, mon souci est surtout qu'on m'a vite fait parlé d'un truc que je ne comprends pas.
    Apparemment, il est nécessaire d'encoder pour se retrouver avec par exemple A = 0, C=1, T=2 et G=3. Pour que ça prenne moins de place en mémoire (Gniéh ? 1ère question xD). Apparemment, quand je "stock" mes valeurs dans un tableau, ça prendrait moins de place...
    Et après bon... Je sais pas trop comment créer ma méthode mais déjà, comprendre ça m'aiderait pas mal.

    Merci d'avance pour votre aide !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    te fatigues pas avec des considérations de quantité de mémoire. (tu peux lancer ce regard à quiconque t'as sorti cette absurdité)
    Tu veux une séquence, tu crées un vector et basta. Un vector de char est suffisant. Si tu veux fignoler, tu peux créer un enum contenant tes 4 valeurs à la place, et c'est tout pour le moment, ça fera très bien l'affaire.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Si j'ai bien compris le principe de l'ADN (ce qui reste encore à démontrer, vu que je suis informaticien, et non biologiste ), le nucélotide est systématiquement composés de quatre éléments représentés par les lettre C G A et T (et autre combinaisons possibles), et tu as une série de nucélotides qui se suivent pour représenter une "séquence ADN"(merci wikipedia ).

    Hé bien, le plus facile est sans doute de créer deux types de donnée bien distincts : un type de donnée permettant de représenter la notion de nucléotide et un type de donnée permettant de représenter... une séquence d'ADN.

    Ceci dit, je dis qu'il faut créer des types de données, mais le seul but recherché est de permettre au développeur de savoir s'il est occupé à travailler sur... ce qui représente un nucléotide ou sur ce qui représente une séquence ADN! On n'est donc pas forcément obligé d'aller très loin dans la définition de ces types et, en l'occurrence, des alias de type pourraient très bien faire l'affaire (enfin, dans un premier temps du moins).

    Ainsi, la notion de nucléotide, vu quelle doit être représentée par quatre lettres, pourrait très bien prendre la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using Nucleotide = std::array<char, 4>;
    (Attention: C++11 obligatoire )

    Quant à la notion de "séquence d'ADN", elle pourrait tout aussi bien prendre la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using AdnSequence = std::vector<Nucleotide>;
    .

    La seule chose, c'est que la notion de tableau (comme celle représentée par la classe std::vector) est particulièrement rapide lorsqu'il s'agit d'accéder aux différents éléments qu'elle contient, mais... d'une lenteur crasse lorsqu'il s'agit d'augmenter le nombre d'éléments qu'elle est capable de contenir. Si bien que l'idéal est généralement de faire en sorte que std::vector demande directement "assez de mémoire" que pour être en mesure de contenir l'ensemble des éléments que nous nous apprêtons à lui donner.

    PS : je confirme ce que bousk dit : un char pour représenter les valeurs de C, G, T et A est largement suffisant, et prendra surement moins de place en mémoire que d'utiliser n'importe quel type "entier"

    En outre, il serait éventuellement possible de faire encore mieux du point de vue de l'utilisation de la mémoire en essayant de faire en sorte d'utiliser systématiquement deux bits pour chaque lettre. Mais, à moins d'avoir la preuve que l'utilisation d'un char pour représenter un des éléments du nucléotide ne représente déjà une "utilisation trop importante de la mémoire", je crois qu'il serait particulièrement masochiste d'essayer de faire autrement
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre éclairé
    Homme Profil pro
    Cocher moderne
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Oman

    Informations professionnelles :
    Activité : Cocher moderne

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Par défaut Du nucléotide...
    Salut,

    Un nucléotide est SOIT : A, C, G ou T. Il semble donc qu'une enum soit plus appropriée qu'un std::array!

    Non?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Oui mais tu as bien une séquence de nucléotide non ? Donc fatalement à un moment il t'en faut plusieurs.. un tableau/array donc.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre éclairé
    Homme Profil pro
    Cocher moderne
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Oman

    Informations professionnelles :
    Activité : Cocher moderne

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Par défaut
    Ah ouais, je n'avais pas compris ça comme ça.

Discussions similaires

  1. Méthode pour dimensionner une architecture ?
    Par ericlemoustic dans le forum Autres
    Réponses: 3
    Dernier message: 11/05/2006, 16h14
  2. Pb pour encoder une adresse avec des &
    Par fpouget dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2006, 09h41
  3. Méthode pour marquer une carte
    Par Space Cowboy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 27/03/2006, 13h15
  4. Méthode pour inclure une langue
    Par HwRZxLc4 dans le forum Langage
    Réponses: 14
    Dernier message: 20/03/2006, 09h22
  5. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35

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