Supprimer redondance fichier

Nifaste -  
 Nifaste -
Bonjour à tous,

J'ai un problème avec la manipulation d'un fichier.
Il se présente sous cette forme :

>pi1
ATGCGTGAAATGCAT
>pi2
TGCCCTGATAGGGACCAGTAGAC
>pi3
ATGCGTGAAATGCATA
>pi4
TGCATGACTA
>pi5
ATGCGTGAAATGCATAT

J'ai mis en gras les séquences ayant la même suite de lettre, et je souhaite garder seulement la plus longue séquence, donc mon nouveau fichier :
>pi5
ATGCGTGAAATGCATAT
>pi2
TGCCCTGATAGGGACCAGTAGAC
>pi4
TGCATGACTA

Je n'ai aucune idée de comment faire ce genre de chose, quelqu'un pourrait m'aider ?

Merci d'avance.

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    la séquence ATGCGTGAAATGCAT est-elle fixe et de longueur constante, ou ça peut etre n'importe quelle séquence et de longueur variable ?
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Si j'ai bien compris il ne veut garder que l'occurrence la plus longue de chaque séquence présente dans son fichier ;-\

      cf son exemple de fichier final (je cite) :

      donc mon nouveau fichier :
      >pi5
      ATGCGTGAAATGCATAT
      >pi2
      TGCCCTGATAGGGACCAGTAGAC
      >pi4
      TGCATGACTA
      0
    2. Nifaste
       
      ca peut etre n'importe quelle sequence, là c'est un exemple ! et de longueur variable oui ....
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      sur quelle longueur faut-il tester, parce qu'on peut dire que pi2 et pi4 commencent par TGC donc on ne devrait garder que pi4
      0
    4. Nifaste
       
      en fait il faut que la séquence complète soit comprise, donc il aurait fallu que pi4 soit complètement dans pi2 ...
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Mais il n'y a pas une longueur minimale ?
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    Ca marche pour cet exmple en testant les 6 premiers caractères.
    A tester plus.
    $ awk '/^>/ {x=$0} /^[A-Z]/ {print $0 , x}' fichier | sort -r | uniq -w 6 | awk '{print $2 "\n" $1}'  
    >pi2  
    TGCCCTGATAGGGACCAGTAGAC  
    >pi4  
    TGCATGACTA  
    >pi5  
    ATGCGTGAAATGCATAT  
    $   
    
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      J'avais la même chose avec "sed" mais sur 5 caractères ;-))

      $ sed 'N;s/\n/ /' plop | sort -r -k2 | uniq -f 1 -w 5 | sed 's/ /\n/'
      >pi2
      TGCCCTGATAGGGACCAGTAGAC
      >pi4
      TGCATGACTA
      >pi5
      ATGCGTGAAATGCATAT
      
      $ 
      0
    2. Nifaste
       
      Merci je vais voir ce que ca donne :)
      0