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 :

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)
Mon objectif est de créer le dictionnaire Dtraduction sous cette forme :

'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