Bonjour à tous,
Je suis Célia, étudiante en thèse de cancérologie sur Toulouse. Dans le cadre de ma thèse, j'étudie de phosphoprotéome de cellules cancéreuses pancréatiques traitées avec différentes drogues. Nous avons par conséquent généré beaucoup données et j'essaye de les traiter afin de trouver de nouvelles cibles thérapeutiques.
Je me retrouve bloquer depuis quelques semaines sur une étape de tri des données impossible à la main car j'ai plus de 20 tableaux avec 8000 lignes chacun. Plus précisément, le tri consiste a apparié deux séquences (lignes) identiques : une séquence non marquée et une séquence marquée présentant l'information "Label" dans la partie Modification2 - Voir l'exemple. Ce que j'entends pas identique concerne l'information contenu dans les parties Séquence et la Modification1. Sachant que la comparaison ne doit pas prendre en compte la case de la séquence.
Mes données ont la forme suivante:
Sequence_Modification1_Modification2
L'information "Label" est présente dans la modification2 si la séquence est marquée.
Exemple:
Résultat attendu:Citation:
AGTLSITEFADmLSGNAGGFrsr_S22(Phospho);M12(Oxidation)_M12(Oxidation);R21(Label:13C(6)15N(4));S22(Phospho);R23(Label:13C(6)15N(4))
AGmSSNQSISsPVLDAVPR_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho)
AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
AGAGmITQHSSNAsPINR_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho)
AHLsENELEALEK_S4(Phospho)_S4(Phospho)
AGTLSITEFADMLSGNAGGFRsR_S22(Phospho)_S22(Phospho)
AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
AHLTVGQAAAGGsGNLLTER_S13(Phospho)_S13(Phospho)
AHLTVGQAAAGGsGNLLTEr_S13(Phospho)_S13(Phospho);R20(Label:13C(6)15N(4))
AGAGmITQHSSNAsPINr_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho);R18(Label:13C(6)15N(4))
--> Séquences appariées:
--> Séquences non appariées :Citation:
AGmSSNQSISsPVLDAVPR_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho)
AGmSSNQSISsPVLDAVPr_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho);R19(Label:13C(6)15N(4))
AGAGmITQHSSNAsPINR_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho)
AGAGmITQHSSNAsPINr_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho);R18(Label:13C(6)15N(4))
AHLsENELEALEK_S4(Phospho)_S4(Phospho)
AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
AHLTVGQAAAGGsGNLLTER_S13(Phospho)_S13(Phospho)
AHLTVGQAAAGGsGNLLTEr_S13(Phospho)_S13(Phospho);R20(Label:13C(6)15N(4))
Avec mon collègue, nous avons écrit un script. Il fonctionne très bien pour les lignes ne contenant par l'information oxidation. Le voici :Citation:
AGTLSITEFADMLSGNAGGFRsR_S22(Phospho)_S22(Phospho)
AGTLSITEFADmLSGNAGGFrsr_S22(Phospho);M12(Oxidation)_M12(Oxidation);R21(Label:13C(6)15N(4));S22(Phospho);R23(Label:13C(6)15N(4))
J'espère que vous avez compris mon problème et que vous arriverez à m'aider.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 my %copy_peptides_labeled = %peptides_labeled ; my $motif = "" ; my $motif_ox = "" ; my $oxydation = 0 ; foreach my $k (keys(%peptides)) { foreach my $labelled (keys(%peptides_labeled)) { $oxydation = 0 ; if ($k =~ /Oxidation/){ $k =~ /^([a-zA-Z]{4,}_[A-Z][0-9]+\(Phospho\);[A-Z][0-9]+\(Oxidation\))/i ; $motif_ox = $1 ; $oxydation = 1 ; } else { $k =~ /^([a-zA-Z]{4,}_[A-Z][0-9]+)/i ; $motif = $1 ; } if ($oxydation == 0 and $labelled =~ m/^$motif/i){ print "$k\n" ; print "$labelled\n" ; delete $peptides_labeled{ $labelled } ; delete $copy_peptides_labeled{ $labelled } ; last ; } if ($oxydation == 1 and $labelled =~ m/^$motif_ox/i){ print "$k\n" ; print "$labelled\n" ; delete $peptides_labeled{ $labelled } ; delete $copy_peptides_labeled{ $labelled } ; last ; } }
Merci par avance