Bonjour à tous,
J'ai le fichier suivant :
# NCBI taxid / refseq / STRING
9606 NP_001166366|NP_001166367|NP_001166368|NP_001744 9606.ENSP00000339191
9606 NP_004496|XP_005256902 9606.ENSP00000460380
9606 NP_004445 9606.ENSP00000306894
9606 NP_005599 9606.ENSP00000325589
9606 NP_001001557 9606.ENSP00000287020
9606 NP_001124506|NP_001180247|NP_919420|XP_005272332|XP_006713941 9606.ENSP00000389709
9606 NP_950248 9606.ENSP00000247219
9606 NP_001273572|NP_057026|XP_005250983|XP_005250984|XP_006716631|XP_006716632|XP_006716633 9606.ENSP00000287025
9606 NP_775746 9606.ENSP00000319482
9606 NP_004789 9606.ENSP00000364864
et le script suivant :
Mon objectif est de créer le dictionnaire Dtraduction sous cette forme :
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 from collections import defaultdict import re Dtraduction=defaultdict(set) with open ("C:/Users/lveillat/Desktop/Données stage/Données/RefSeq to STRING.tsv","r") as f1: for lignes in f1: lignes1=lignes.rstrip("\n").replace("|"," ") matchs=re.search("^(\d+) (([A-Z]+_\d+| )+) (\S+)", lignes1) if matchs: NCBItaxid=matchs.group(1) refseq=matchs.group(2) STRING=matchs.group(3) Dtraduction[STRING].add(refseq) print (Dtraduction)
'9606.ENSP00000339191': {'NP_001166366', 'NP_001166367', 'NP_001166368', 'NP_001744'}})
'9606.ENSP00000460380': {'NP_004496', 'XP_005256902'}
'9606.ENSP00000306894' : {'NP_004445'}
ect…
Le soucis que j'ai, c'est que j'arrive pas a créer ma regex de façon à ce qu'elle s'adapte au nombre changeant de 'NP_xxxxx' la seule sortie que j'obtiens avec mon script est celui-ci :
defaultdict(<class 'set'>, {'NP_001744': {'NP_001166366 NP_001166367 NP_001166368 NP_001744'}})
defaultdict(<class 'set'>, {'NP_001744': {'NP_001166366 NP_001166367 NP_001166368 NP_001744'}, 'XP_005256902': {'NP_004496 XP_005256902'}})
defaultdict(<class 'set'>, {'NP_001744': {'NP_001166366 NP_001166367 NP_001166368 NP_001744'}, 'XP_005256902': {'NP_004496 XP_005256902'}, 'NP_004445': {'NP_004445'}})
Comme vous pouvez le constater il ne me prends pas les différents NP_xxxx comme différents éléments, mais comme un seul…
Pouvez vous m'aider svp ?
Merci
Partager