Bonjour à tous, dans le cadre d'un projet je dois parcourirs deux tableaux de données ayant chacun des informations différentes et m'en servir. Je m'explique:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
blast<-read.table("matches.m8")
data<-read.table("seq.fnodes2")
Voici un exemple de leur contenus respectifs:

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
   [78793 rows x 2 columns]
    >>> cluster
                1           g1.t1_0035
    0           1      g1.t1_0035_0042
    1      119365           g1.t1_0042
    2       90273      g1.t1_0042_0035
    3       71567          g10.t1_0035
    4       37976     g10.t1_0035_0042
    5       22560          g10.t1_0042
    6       90280     g10.t1_0042_0035
    7       82698         g100.t1_0035
    8       47392    g100.t1_0035_0042
    9       28484         g100.t1_0042
    10      22580    g100.t1_0042_0035
    11      19474        g1000.t1_0035
    12       5770   g1000.t1_0035_0042
    13      29708        g1000.t1_0042
    14      99776   g1000.t1_0042_0035
    15       6283       g10000.t1_0035
    16      39828  g10000.t1_0035_0042
    17      25383       g10000.t1_0042
    18     106614  g10000.t1_0042_0035
    19       6285       g10001.t1_0035
    20      13866  g10001.t1_0035_0042
    21     121157       g10001.t1_0042
    22     106615  g10001.t1_0042_0035
    23       6286       g10002.t1_0035
    24        113  g10002.t1_0035_0042
    25      25397       g10002.t1_0042
    26     106616  g10002.t1_0042_0035
    27       4643       g10003.t1_0035
    28      13868  g10003.t1_0035_0042
    29      25398       g10003.t1_0042
    ...       ...                  ...
et
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 [78793 rows x 2 columns]
    >>> blast
                 g1.t1_0035_0042    g1.t1_0035_0042.1  100.0   286    0  0.1    1  \
    0            g1.t1_0035_0042           g1.t1_0035  100.0   257    0    0   30   
    1            g1.t1_0035_0042        g9307.t1_0035   26.9   134   65    2   60   
    2            g2.t1_0035_0042      g2.t1_0035_0042  100.0   445    0    0    1   
    3            g2.t1_0035_0042           g2.t1_0035   95.8   451    3    3    1   
    4            g2.t1_0035_0042  g24520.t1_0042_0035   61.1   429  137    7    1   
    5            g2.t1_0035_0042        g9924.t1_0042   61.1   429  137    7    1   
    6            g2.t1_0035_0042        g1838.t1_0035   86.2    29    4    0  414   
    7            g3.t1_0035_0042      g3.t1_0035_0042  100.0   719    0    0    1   
    8            g3.t1_0035_0042           g3.t1_0035   84.7   753   62    6    8   
    9            g4.t1_0035_0042      g4.t1_0035_0042  100.0   242    0    0    1   
    10           g4.t1_0035_0042           g3.t1_0035   98.8   161    2    0    1   
    11           g5.t1_0035_0042      g5.t1_0035_0042  100.0   291    0    0    1   
    12           g5.t1_0035_0042           g3.t1_0035   93.1   291    0    1    1   
    13           g6.t1_0035_0042      g6.t1_0035_0042  100.0   152    0    0    1   
    14           g6.t1_0035_0042           g4.t1_0035  100.0   152    0    0    1   
    15           g7.t1_0035_0042      g7.t1_0035_0042  100.0   216    0    0    1   
    16           g7.t1_0035_0042           g5.t1_0035   98.1   160    3    0   57   
    17           g7.t1_0035_0042       g11143.t1_0042   46.5   230   99    3    1   
    18           g7.t1_0035_0042  g27537.t1_0042_0035   40.8   233  111    3    1   
    19        g3778.t1_0035_0042   g3778.t1_0035_0042  100.0    86    0    0    1   
    20        g3778.t1_0035_0042        g6174.t1_0035   98.0    51    1    0    4   
    21        g3778.t1_0035_0042  g20037.t1_0035_0042  100.0    50    0    0    5   
    22        g3778.t1_0035_0042       g37190.t1_0035  100.0    50    0    0    5   
    23        g3778.t1_0035_0042  g15112.t1_0042_0035   66.0    53   18    0    4   
    24        g3778.t1_0035_0042        g6061.t1_0042   66.0    53   18    0    4   
    25       g18109.t1_0035_0042  g18109.t1_0035_0042  100.0    86    0    0    1   
    26       g18109.t1_0035_0042       g33071.t1_0035  100.0    81    0    0    1   
    27       g18109.t1_0035_0042       g32810.t1_0035   96.4    83    3    0    1   
    28       g18109.t1_0035_0042  g17982.t1_0035_0042   98.6    72    1    0   10   
    29       g18110.t1_0035_0042  g18110.t1_0035_0042  100.0    67    0    0    1   
    ...                      ...                  ...    ...   ...  ...  ...  ...
Si vous restez focalisé sur le tableau cluster, la première colonne correspond à l'identifiant du cluster et à l'intérieur de chaque cluster il y a plusieurs ID de séquences. Après avoir divisé en liste tous mes cluster:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
liste=split(x = data$V2, f = data$V1)
Il me faut créer un fonction qui renvois les paires de séquences les pus similaires en s'aidant du tableau blast qui contient un score de similarité entre chaque paire de séquence.

Voici un exemple:

disons pour l'exemple que nous avons 2 clusters (dataframe cluster):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
    cluster 1: 
    seq1
    seq2
    seq3
    seq4
    cluster 2:
    seq5
    seq6
    seq7
...
Dans le tableau blast il y a à la colonne 3 un score de similarité entre toutes les séquences :

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
 
    seq1 vs seq1 100
    seq1 vs seq2 90
    seq1 vs seq3 56
    seq1 vs seq4 49
    seq1 vs seq5 40
    ....
    seq2 vs seq3 70
    seq2 vs seq4 98
    ...
    seq5 vs seq5 100
    seq5 vs seq6 89
    seq5 vs seq7 60
    seq7 vs seq7 46
    seq7 vs seq7 100
    seq6 vs seq6 100
Et ce que je voudrais c'est renvoyer un tableau comme ceci :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 cluster 1 (best paired sequences): 
    seq 1 vs seq 2
 
    cluster2 (best paired sequences):
    seq 5 vs seq6
...
Comme vous pouvez le constater, je ne veux pas prendre en compte le score de similarité des séquences appareillées à elles-mêmes


Si quelqu’un aurait une idée de fonction qui pourrit faire une telle chose, je lui en remercierais grandement.