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
|
void construire_paires()
{
int k;
residue_t *r1, *r2;
float dist;
//cette boucle sert a initialiser le tableau res_pair en lui indiquant des fausses paires avec des distances tres grandes
for (k = 0; k < MAX_PAIRS; k++) {
res_pair[k].r1 = NULL;
res_pair[k].r2 = NULL;
res_pair[k].dist = 1e10;
}
for (r1 = residue_list; r1 != NULL; r1 = r1->suiv) {
for (r2 = residue_list; r2 != NULL; r2 = r2->suiv) {
//premier residu dans la chaine A, deuxieme dans la chaine B
if (r1->chain_id != 'A' || r2->chain_id != 'B')
continue;
dist = sqrt((r1->x - r2->x)*(r1->x - r2->x)+(r1->y - r2->y)*(r1->y - r2->y)+(r1->z - r2->z)*(r1->z - r2->z));
//meilleure que celles qui ont deja ete inserees ?
if (dist > res_pair[MAX_PAIRS-1].dist)
continue;
//alors inserer lq nouvelle paire
for (k = MAX_PAIRS-1 ; k > 0 ; k--) {
if (res_pair[k-1].dist < dist)
break;
res_pair[k].r1 = res_pair[k-1].r1;
res_pair[k].r2 = res_pair[k-1].r2;
res_pair[k].dist = res_pair[k-1].dist;
}
res_pair[k].r1 = r1;
res_pair[k].r2 = r2;
res_pair[k].dist = dist;
}
}
} |
Partager