Menu

Module 4 · Section 4.5

Prédiction de structure secondaire et tertiaire

60 min · niveau avance · dernière révision : 2026-11-01

Objectifs d'apprentissage

  • Distinguer les états secondaires H, E et C et expliquer comment DSSP les définit à partir des ponts hydrogène et des dièdres
  • Reconstituer le raisonnement des méthodes de Chou-Fasman et GOR et identifier leurs limites
  • Interpréter un profil pLDDT et une matrice PAE sans les confondre avec une probabilité ou un RMSD
  • Implémenter une prédiction secondaire pédagogique et un résumé de confiance en Python
  • Évaluer les limites d'AlphaFold pour les régions désordonnées, les complexes et les ligands

Prérequis : 4.2 Bio.PDB : hiérarchie et géométrie, 4.3 Superposition et RMSD

DSSP 4.xAlphaFold DB v4Biopython 1.88

Prérequis

Cette section suppose que vous savez lire un fichier PDB et parcourir la hiérarchie Structure > Model > Chain > Residue > Atom, comme présenté dans la section 4.2. Elle réutilise la superposition et le RMSD de la section 4.3 pour discuter de la comparaison entre modèle et structure expérimentale. Les notions de séquence, d'alignement et de matrice de score des sections 2.3 et 4.1 facilitent la lecture des profils et des fenêtres. Le module 4 situe enfin ces prédictions parmi les autres analyses structurales.

Introduction

Une protéine est synthétisée sous forme de chaîne d'acides aminés, mais elle agit le plus souvent sous une forme repliée. Les interactions locales stabilisent des hélices alpha et des feuillets bêta, tandis que des boucles relient ces éléments et que des contacts à longue distance assemblent des domaines. Cette organisation en niveaux — séquence, structure secondaire, structure tertiaire, assemblage quaternaire — est une commodité de description autant qu'une réalité physique : les frontières entre un élément secondaire et une boucle sont parfois graduelles, et un même segment peut changer d'état selon les conditions.

L'enjeu biologique est considérable. La position d'une hélice ou d'un feuillet conditionne la stabilité, la liaison d'un ligand, la reconnaissance d'un partenaire et l'accessibilité d'un site actif. Une mutation qui casse une hélice peut abolir une fonction ; une région intrinsèquement désordonnée peut au contraire être essentielle à la signalisation. Pour interpréter un variant, concevoir un inhibiteur ou comparer des homologues, il faut donc savoir quelles régions sont structurées, lesquelles sont flexibles et avec quel degré de certitude.

L'enjeu computationnel est double. D'un côté, annoter une structure expérimentale demande une définition géométrique reproductible des ponts hydrogène et des angles du squelette : c'est le rôle de DSSP. De l'autre, prédire une structure à partir de la seule séquence demande d'apprendre des régularités locales et des contacts à longue distance. Les méthodes statistiques des années 1970, puis l'apprentissage profond, ont progressivement déplacé la question de la prédiction vers celle de la confiance. Un modèle moderne ne fournit pas seulement des coordonnées : il fournit des scores par résidu et par paire de résidus qu'il faut savoir lire.

Théorie

Hélice alpha, feuillet bêta et boucles

La structure secondaire décrit l'arrangement régulier du squelette peptidique (N, Cα, C, O), non la position des chaînes latérales. Trois familles dominent : l'hélice alpha, le feuillet bêta et les boucles ou turns.

Dans une hélice alpha, chaque carbonyle forme un pont hydrogène avec l'amide situé quatre résidus plus loin, motif i→i+4i \rightarrow i+4. L'hélice compte environ 3,6 résidus par tour, un pas de 5,4 Å et une élévation de 1,5 Å par résidu, avec ϕ≈−57∘\phi \approx -57^\circ et ψ≈−47∘\psi \approx -47^\circ. Les chaînes latérales pointent vers l'extérieur ; alanine, glutamate, leucine et méthionine favorisent l'hélice, tandis que la proline, sans hydrogène sur son azote, l'interrompt souvent.

Dans un feuillet bêta, des brins étendus s'associent latéralement. Les ponts hydrogène relient des brins parallèles ou antiparallèles, et les chaînes latérales alternent de part et d'autre du plan. Les angles sont souvent proches de ϕ≈−120∘\phi \approx -120^\circ et ψ≈+130∘\psi \approx +130^\circ. Valine, isoleucine et phénylalanine favorisent les feuillets, mais leur formation dépend aussi de contacts entre segments éloignés.

Les boucles et turns n'ont pas de motif périodique de ponts hydrogène. Elles assurent la continuité de la chaîne, exposent des sites de liaison et apportent de la flexibilité ; glycine et proline y sont fréquentes. Une boucle peut être stable et fonctionnelle, et une région sans structure régulière peut rester ordonnée.

DSSP, une définition géométrique de référence

DSSP (Dictionary of Protein Secondary Structure) attribue un état à chaque résidu à partir des coordonnées. Il repère les ponts hydrogène N–H···O=C, puis reconnaît des motifs. L'énergie d'un pont est estimée par

E=0,084×332(1rON+1rCH−1rOH−1rCN),E = 0{,}084 \times 332 \left( \frac{1}{r_{ON}} + \frac{1}{r_{CH}} - \frac{1}{r_{OH}} - \frac{1}{r_{CN}} \right),

où les distances sont exprimées en ångströms et EE en kilocalories par mole. Un pont est retenu lorsque EE est inférieur à −0,5-0{,}5 kcal/mol, seuil conventionnel qui influence le nombre de ponts détectés. DSSP calcule aussi ϕ\phi, ψ\psi et la courbure, qui distinguent un turn d'un simple coude.

La sortie historique comporte huit états : H (hélice alpha), G (3103_{10}), I (hélice pi), E (brin bêta), B (pont bêta isolé), T (turn), S (bend) et un espace pour l'absence de structure régulière. La réduction à trois classes (H, E, C) est commode, mais elle mélange des objets : un turn n'est pas une boucle désordonnée, et un pont isolé n'est pas un brin.

DSSP est une référence déterministe et documentée, pas une vérité unique. STRIDE emploie des critères voisins ; la version, le seuil, les hydrogènes explicites et les atomes manquants modifient l'annotation. Citez la version et la convention de réduction. Biopython 1.88 expose Bio.PDB.DSSP, mais le résultat dépend de l'exécutable et de ses options.

Chou-Fasman et les propensions

Chou et Fasman (1974) partent d'une idée simple : un acide aminé n'apparaît pas avec la même fréquence dans une hélice, un feuillet ou un turn. Ils estiment des propensions PHP_H, PEP_E et PTP_T. Une valeur supérieure à 1 indique une surreprésentation par rapport à une référence, pas une probabilité ; ces nombres ne s'additionnent pas à 1.

Pour un segment ww, on calcule la propension moyenne

Pˉs(w)=1∣w∣∑i∈wPs(ai),\bar{P}_s(w) = \frac{1}{|w|} \sum_{i \in w} P_s(a_i),

où aia_i est le résidu à la position ii et s∈{H,E,T}s \in \{H, E, T\}. La méthode originale cherche des noyaux de nucléation — par exemple quatre propensions PH>1P_H > 1 dans une fenêtre de six — puis étend l'hélice tant que la propension reste favorable. Des règles analogues, avec priorités et exceptions, traitent feuillets et turns.

Pour AELA, les moyennes valent 1,391{,}39 (hélice), 0,83250{,}8325 (feuillet) et 0,66250{,}6625 (turn) : étiquette H. Pour VIVI, elles valent 1,071{,}07, 1,651{,}65 et 0,4850{,}485 : étiquette E. Ces calculs se refont à la main, mais ignorent les contacts à longue distance.

Les limites sont structurelles : propension moyenne sur d'autres protéines, pas règle physique ; ni ponts à longue distance, ni contexte, ni coopérativité ; calibration sur un petit corpus. La méthode reste un support pédagogique efficace pour expliciter le passage d'une préférence locale à une étiquette.

GOR et l'information mutuelle

GOR (Garnier, Osguthorpe et Robson, 1978) replace le résidu dans une fenêtre centrée, historiquement de 17 résidus : un résidu isolé est peu informatif, son voisinage porte une partie de l'information.

Le cadre est informationnel. Pour un état secondaire ss et un résidu aia_i, l'information mutuelle s'écrit

I(s;ai)=log⁡2P(s,ai)P(s) P(ai).I(s; a_i) = \log_2 \frac{P(s, a_i)}{P(s)\,P(a_i)}.

Elle mesure combien l'observation de aia_i déplace la croyance en faveur de ss par rapport à l'indépendance. La méthode somme les contributions de la fenêtre, avec des termes de paires dans GOR III, puis choisit l'état de score maximal.

GOR capture mieux le contexte local qu'une lecture position par position, mais reste limité par la fenêtre fixe et les statistiques de l'époque. Deux brins séparés de cinquante résidus ne seront jamais vus ensemble, et les interactions à longue distance échappent au modèle.

Apprentissage profond et contexte appris

Les méthodes modernes apprennent des représentations. Les convolutions empilent des filtres locaux, les réseaux récurrents propagent l'information dans les deux sens, et les transformeurs calculent des attentions entre positions, y compris distantes.

Un prédicteur secondaire produit une distribution sur trois états par résidu. On évalue le Q3Q_3, proportion de résidus correctement classés, mais aussi la précision et le rappel par classe : un Q3Q_3 flatteur peut cacher un feuillet mal prédit. La couverture, proportion de résidus prédits, doit être rapportée.

Le piège principal est la fuite d'homologues : si les protéines de test partagent une forte identité avec l'entraînement, le modèle mémorise des familles. Les bons protocoles filtrent par identité et similarité structurale et séparent les familles.

Le coût dépend de l'architecture : O(n)O(n) pour une convolution locale, O(n2)O(n^2) en temps et en mémoire pour une attention complète sur nn résidus. Prédire une étiquette reste une classification locale ; prédire le pli exige les distances et orientations entre paires de résidus.

AlphaFold, attention et représentation du pli

AlphaFold2 (Jumper et al., 2021) prend une séquence et un alignement multiple, et produit des coordonnées tridimensionnelles. L'Evoformer fait circuler l'information par attention sur les paires de résidus ; un module structural convertit ces représentations en géométrie. L'entraînement de bout en bout utilise des structures expérimentales et des pertes sur les distances, les angles et les coordonnées.

Le résultat n'est pas certain. Le pLDDT (predicted local distance difference test) est un score par résidu de 0 à 100 qui estime la qualité locale. Les bandes usuelles sont supérieures à 90 (très élevé), 70 à 90 (confiant), 50 à 70 (faible) et inférieures à 50 (très faible). Ce sont des conventions d'affichage, pas des seuils biologiques. Le pLDDT n'est ni une probabilité calibrée ni un RMSD.

La PAE (predicted aligned error) est une matrice : l'entrée (i,j)(i,j) estime l'erreur sur jj lorsque l'on aligne sur ii. Une PAE faible entre domaines indique une orientation relative confiante ; une PAE élevée signale une incertitude, même si chaque domaine a un bon pLDDT. Confiance locale et globale ne se remplacent donc pas.

pTM et ipTM résument le pli global et l'interface d'un complexe ; ils ne remplacent pas les cartes PAE.

Structure expérimentale, structure prédite et limites

Une structure expérimentale (rayons X, cryo-EM, RMN) vient avec sa qualité : résolution, facteurs B, densité électronique, conformations alternatives, résidus manquants. Une chaîne latérale mal résolue ou un ligand absent change l'interprétation d'un site. Une prédiction, même confiante, n'a pas de densité : elle propose une géométrie compatible avec la séquence et l'entraînement.

Les régions désordonnées ont souvent un pLDDT faible, mais un pLDDT faible ne prouve pas le désordre : région mal prédite, absence d'homologues, interface dépendante d'un partenaire. Les modèles monomériques ignorent complexes obligatoires, ligands, modifications post-traductionnelles et changements conformationnels ; les versions récentes étendent le champ, avec des performances variables.

La couverture compte : une entrée peut être une isoforme, un fragment ou une séquence tronquée, et les résidus absents ne sont pas prédits. Enfin, un pLDDT élevé signifie que le modèle est cohérent avec son apprentissage, pas que la structure est correcte dans la cellule. La validation expérimentale reste la référence.

Implémentation

Nous implémentons quatre fonctions sans dépendance : chou_fasman_propensity, plddt_bins, confidence_summary et predict_secondary_simple. La première normalise la séquence, rejette les résidus inconnus et moyenne les trois propensions. La deuxième convertit un score en bande de confiance avec des bornes inclusives par le bas. La troisième produit des statistiques et des fractions par bande. La quatrième applique une fenêtre de cinq résidus et choisit l'état de propension moyenne maximale, avec un seuil de 1,0 et une priorité au turn.

Le code complet est le corrigé solution_4_5.py. Les points critiques sont la normalisation de la casse et des espaces, le rejet des valeurs non finies, la convention des bornes pLDDT et la troncature de la fenêtre aux extrémités. La prédiction est volontairement locale : elle ne remplace ni DSSP, ni un prédicteur entraîné. Elle sert à rendre explicites les règles et à discuter les seuils.

from collections import Counter
from math import isfinite
from numbers import Real
 
CHOU_FASMAN = {
    "A": (1.42, 0.83, 0.66), "C": (0.70, 1.19, 1.19),
    "D": (1.01, 0.54, 1.46), "E": (1.51, 0.37, 0.74),
    "F": (1.13, 1.38, 0.60), "G": (0.57, 0.75, 1.56),
    "H": (1.00, 0.87, 0.95), "I": (1.08, 1.60, 0.47),
    "K": (1.16, 0.74, 1.01), "L": (1.21, 1.30, 0.59),
    "M": (1.45, 1.05, 0.60), "N": (0.67, 0.89, 1.56),
    "P": (0.57, 0.55, 1.52), "Q": (1.11, 1.10, 0.98),
    "R": (0.98, 0.93, 0.95), "S": (0.77, 0.75, 1.43),
    "T": (0.83, 1.19, 0.96), "V": (1.06, 1.70, 0.50),
    "W": (1.08, 1.37, 0.96), "Y": (0.69, 1.47, 1.14),
}
 
BANDS = ("very_high", "confident", "low", "very_low")
WINDOW = 5
 
 
def normalize(sequence):
    if not isinstance(sequence, str):
        raise TypeError("sequence must be a string")
    cleaned = "".join(sequence.split()).upper()
    if not cleaned:
        raise ValueError("sequence must not be empty")
    unknown = sorted(set(cleaned) - set(CHOU_FASMAN))
    if unknown:
        raise ValueError(f"unknown residues: {''.join(unknown)}")
    return cleaned
 
 
def check_scores(scores):
    if isinstance(scores, (str, bytes)):
        raise TypeError("scores must be an iterable of numbers")
    values = []
    for value in scores:
        if isinstance(value, bool) or not isinstance(value, Real):
            raise TypeError("every score must be a real number")
        number = float(value)
        if not isfinite(number) or number < 0.0 or number > 100.0:
            raise ValueError("scores must be finite and between 0 and 100")
        values.append(number)
    return values
 
 
def chou_fasman_propensity(sequence):
    cleaned = normalize(sequence)
    n = len(cleaned)
    return {
        "helix": sum(CHOU_FASMAN[a][0] for a in cleaned) / n,
        "sheet": sum(CHOU_FASMAN[a][1] for a in cleaned) / n,
        "turn": sum(CHOU_FASMAN[a][2] for a in cleaned) / n,
    }
 
 
def plddt_bins(scores):
    def label(score):
        if score >= 90.0:
            return "very_high"
        if score >= 70.0:
            return "confident"
        if score >= 50.0:
            return "low"
        return "very_low"
 
    return [label(score) for score in check_scores(scores)]
 
 
def confidence_summary(scores):
    values = check_scores(scores)
    if not values:
        raise ValueError("scores must not be empty")
    labels = plddt_bins(values)
    counts = Counter(labels)
    n = len(values)
    fractions = {band: counts[band] / n for band in BANDS}
    dominant = max(BANDS, key=lambda band: fractions[band])
    return {
        "n": n,
        "mean": sum(values) / n,
        "min": min(values),
        "max": max(values),
        "fractions": fractions,
        "dominant_bin": dominant,
        "high_confidence_fraction": (counts["very_high"] + counts["confident"]) / n,
    }
 
 
def predict_secondary_simple(sequence):
    cleaned = normalize(sequence)
    n = len(cleaned)
    half = WINDOW // 2
    prediction = []
    for index in range(n):
        start = max(0, index - half)
        stop = min(n, index + half + 1)
        propensity = chou_fasman_propensity(cleaned[start:stop])
        best = max(propensity.values())
        if best < 1.0:
            prediction.append("C")
        elif propensity["turn"] >= propensity["helix"] and propensity["turn"] >= propensity["sheet"]:
            prediction.append("C")
        elif propensity["helix"] >= propensity["sheet"]:
            prediction.append("H")
        else:
            prediction.append("E")
    return "".join(prediction)
 
 
print("AELA", {key: round(value, 4) for key, value in chou_fasman_propensity("AELA").items()})
print("prediction", predict_secondary_simple("AAAAVVVVGGGG"))
print("bins", plddt_bins([95, 85, 65, 45, 90, 70, 50]))
print("summary", confidence_summary([95, 85, 65, 45]))

La sortie vérifiée le 2026-11-01 avec Python 3.13 est :

AELA {'helix': 1.39, 'sheet': 0.8325, 'turn': 0.6625}
prediction HHHHEEEECCCC
bins ['very_high', 'confident', 'low', 'very_low', 'very_high', 'confident', 'low']
summary {'n': 4, 'mean': 72.5, 'min': 45.0, 'max': 95.0, 'fractions': {'very_high': 0.25, 'confident': 0.25, 'low': 0.25, 'very_low': 0.25}, 'dominant_bin': 'very_high', 'high_confidence_fraction': 0.5}

Quatre points méritent attention. D'abord, normalize supprime tous les espaces, y compris les espaces internes, ce qui rend la fonction tolérante aux séquences recopiées en blocs. Ensuite, check_scores refuse les booléens, car True est un entier en Python et pourrait être accepté par erreur comme score 1. Troisièmement, les bornes pLDDT sont inclusives par le bas : un score de 90 est very_high, un score de 70 est confident. Enfin, la fenêtre tronquée aux extrémités produit des scores calculés sur un ou deux résidus seulement ; c'est une simplification qui crée des effets de bord visibles sur les courtes séquences.

Étude de cas

Nous construisons un profil pLDDT synthétique pour une séquence de 60 résidus. Il s'agit d'un exemple synthétique, volontairement en paliers pour rendre les calculs lisibles : aucune structure réelle n'est prédite et aucune accession AlphaFold DB n'est utilisée. La séquence est composée de segments choisis pour leurs propensions : un bloc riche en alanine, glutamate et leucine, un bloc riche en valine et isoleucine, un bloc glycine-sérine et un bloc chargé. Le profil pLDDT vaut 92 pour les 15 premiers résidus, 88 pour les 20 suivants, 62 pour les 10 suivants et 34 pour les 15 derniers.

La question est simple : que disent les scores de confiance sur les différentes régions, et que peut-on conclure sans structure expérimentale ? Nous appliquons structure_prediction_report du mini-projet, qui valide les entrées, prédit les états secondaires, résume le pLDDT et découpe les régions de faible confiance.

import sys
 
sys.path.insert(0, "exercises/module-4/4.5-prediction-structure-secondaire-tertiaire/projet")
from solution_projet_4_5 import structure_prediction_report
 
sequence = "AELAALEAALEAALE" + "VIVIVIVIVIVIVIVIVIVI" + "GGSSGGSSGG" + "EGKPEGKPEGKPEGK"
plddt = [92.0] * 15 + [88.0] * 20 + [62.0] * 10 + [34.0] * 15
 
report = structure_prediction_report(sequence, plddt)
print("longueur :", report["sequence_length"])
print("prédiction :", report["predicted_secondary"])
print("décomptes :", report["secondary_counts"])
print("pLDDT :", {key: report["plddt"][key] for key in ("mean", "min", "max", "dominant_bin")})
print("fraction confiante :", round(report["plddt"]["high_confidence_fraction"], 4))
print("statut :", report["status"])
for region in report["regions"]:
    print("région", region["start"], region["end"], region["label"], round(region["mean_plddt"], 2))
for region in report["low_confidence_regions"]:
    print("faible", region["start"], region["end"], round(region["mean_plddt"], 2))

La sortie vérifiée le 2026-11-01 avec Python 3.13 est :

longueur : 60
prédiction : HHHHHHHHHHHHHHHEEEEEEEEEEEEEEEEEEEEECCCCCCCCCCCCCCCCCCCCCCCC
décomptes : {'H': 15, 'E': 21, 'C': 24}
pLDDT : {'mean': 71.16666666666667, 'min': 34.0, 'max': 92.0, 'dominant_bin': 'confident'}
fraction confiante : 0.5833
statut : moderate
région 1 15 H 92.0
région 16 36 E 86.76
région 37 60 C 44.5
faible 36 60 45.2

Le rapport raconte une histoire en trois temps. Les 15 premiers résidus sont prédits en hélice et portent un pLDDT très élevé (92), ce qui suggère une région locale bien définie. Le bloc central est prédit en feuillet avec un pLDDT confiant (86,76 en moyenne), mais la fenêtre de cinq résidus décale la frontière : le feuillet prédit s'étend jusqu'au résidu 36 alors que le profil de confiance chute dès le résidu 36. Ce décalage est attendu avec une fenêtre glissante et rappelle que les frontières ne sont pas des objets physiques nets.

La partie C-terminale est prédite en boucle et possède un pLDDT très faible (44,5 en moyenne). La région de faible confiance détectée par le rapport couvre les résidus 36 à 60, avec une moyenne de 45,2. Deux interprétations sont possibles : une région intrinsèquement désordonnée, ou une région que le modèle ne sait pas prédire faute d'information. Le profil seul ne permet pas de trancher. Il faudrait un prédicteur de désordre, des données expérimentales, une analyse des homologues et éventuellement une carte PAE pour savoir si cette région est indépendante ou mal attachée au reste du modèle.

Le statut global est moderate : 58,33 % des résidus ont un pLDDT supérieur ou égal à 70, ce qui est en dessous du seuil de 80 % utilisé pour high. Ce résumé ne doit pas masquer l'hétérogénéité. Une protéine avec un peu plus de la moitié de résidus confiants et le reste incertain n'est pas un modèle uniformément moyen ; c'est un modèle dont certaines parties sont fiables et d'autres non. La moyenne du pLDDT est un indicateur grossier : elle mélange des régions de tailles et de significations différentes. Les fractions par bande et les régions contiguës sont plus informatives.

Enfin, l'exercice porte sur un profil synthétique. Il ne prouve rien sur une protéine réelle et ne remplace pas l'inspection d'une entrée AlphaFold DB. Son intérêt est méthodologique : il montre comment une règle de seuil transforme des nombres en catégories, comment une fenêtre déplace une frontière et comment une confiance locale agrégée devient un statut global. Ces compétences se transfèrent aux prédictions réelles, à condition de vérifier l'accession, la version, la couverture et les métadonnées.

Erreurs fréquentes

Quiz

  1. Question 1.Que produit principalement DSSP à partir de coordonnées atomiques ?
  2. Question 2.Dans la table de Chou-Fasman, que signifie une propension $P_H$ supérieure à 1 pour un résidu ?
  3. Question 3.Quel est le rôle de la fenêtre dans la méthode GOR ?
  4. Question 4.Un modèle AlphaFold a un pLDDT élevé pour deux domaines, mais une PAE élevée entre ces domaines. Quelle lecture est correcte ?
  5. Question 5.Que faut-il faire avant d'utiliser une entrée AlphaFold DB dans une analyse comparative ?
Répondez à toutes les questions pour valider.

Exercices

Exercice guidé4.5-e1

Énoncé

Écrire chou_fasman_propensity(sequence) qui normalise la séquence, rejette les résidus inconnus et renvoie les moyennes des propensions helix, sheet et turn. Écrire ensuite plddt_bins(scores) qui classe chaque score dans very_high (≥ 90), confident (≥ 70), low (≥ 50) ou very_low (inférieur à 50), en refusant les valeurs non finies, hors de [0,100][0, 100] et les booléens. Vérifier les bornes 90, 70 et 50, ainsi que le cas d'une liste vide.

Comment vérifier votre travail

Les tests se trouvent dans exercises/module-4/4.5-prediction-structure-secondaire-tertiaire/test_4_5.py. Depuis la racine du dépôt :

python -m pytest exercises/module-4/4.5-prediction-structure-secondaire-tertiaire -q

Corrigé verrouillé

Le corrigé est chargé uniquement après confirmation. Il n'est pas présent dans la page avant cette action.

Exercice approfondi4.5-e2

Énoncé

Écrire predict_secondary_simple(sequence) avec une fenêtre de cinq résidus centrée, tronquée aux extrémités, et la règle suivante : si la meilleure propension moyenne est inférieure à 1,0, ou si le turn domine, renvoyer C ; sinon renvoyer H si l'hélice domine et E sinon. Écrire confidence_summary(scores) qui renvoie le nombre de scores, la moyenne, le minimum, le maximum, les fractions par bande, la bande dominante et la fraction de scores supérieurs ou égaux à 70. Lever ValueError sur une liste vide.

Comment vérifier votre travail

Les tests se trouvent dans exercises/module-4/4.5-prediction-structure-secondaire-tertiaire/test_4_5.py. Depuis la racine du dépôt :

python -m pytest exercises/module-4/4.5-prediction-structure-secondaire-tertiaire -q

Corrigé verrouillé

Le corrigé est chargé uniquement après confirmation. Il n'est pas présent dans la page avant cette action.

Mini-projet4.5-projet

Énoncé

Mini-projet : rapport de prédiction. Écrire structure_prediction_report(sequence, plddt) qui valide la séquence et le profil, prédit les états secondaires avec l'heuristique du cours, résume le pLDDT et découpe les régions. Le rapport doit contenir sequence_length, predicted_secondary, secondary_counts, plddt, status, interpretation, regions et low_confidence_regions. Les régions secondaires sont des segments maximaux de même étiquette, avec des coordonnées 1-based inclusives et le pLDDT moyen. Les régions de faible confiance sont des segments contigus où pLDDT est inférieur à 70. Le statut vaut high si la fraction de scores supérieurs ou égaux à 70 atteint 0,8, moderate si elle atteint 0,5, et low sinon. Refuser les longueurs différentes, les valeurs non finies, hors de [0,100][0, 100] et les types incorrects.

Comment vérifier votre travail

Les tests se trouvent dans exercises/module-4/4.5-prediction-structure-secondaire-tertiaire/projet/test_projet_4_5.py. Depuis la racine du dépôt :

python -m pytest exercises/module-4/4.5-prediction-structure-secondaire-tertiaire/projet -q

Corrigé verrouillé

Le corrigé est chargé uniquement après confirmation. Il n'est pas présent dans la page avant cette action.

Résumé

  • La structure secondaire décrit l'arrangement régulier du squelette : hélices alpha, feuillets bêta, turns et boucles.
  • DSSP est une référence géométrique déterministe fondée sur les ponts hydrogène et les dièdres, pas une vérité biologique absolue.
  • Chou-Fasman convertit des propensions locales en règles de nucléation et d'extension ; GOR ajoute un voisinage et une lecture informationnelle.
  • Les méthodes d'apprentissage profond apprennent le contexte, mais doivent être évaluées sans fuite d'homologues et avec des métriques par classe.
  • AlphaFold produit des coordonnées et des scores de confiance : pLDDT local, PAE entre paires, pTM global.
  • Un pLDDT élevé ne garantit pas une orientation correcte des domaines ; une PAE élevée révèle une incertitude relative.
  • Les régions désordonnées, les complexes, les ligands et les changements conformationnels restent des limites majeures des modèles monomériques.
  • Une prédiction est une hypothèse quantifiée : vérifier version, accession, couverture et validation expérimentale avant toute conclusion.

Références

  • Chou, P. Y., & Fasman, G. D. (1974). Prediction of protein conformation. Biochemistry, 13(2), 222–245.
  • Garnier, J., Osguthorpe, D. J., & Robson, B. (1978). Analysis of the accuracy and implications of simple methods for predicting the secondary structure of globular proteins. Journal of Molecular Biology, 120(1), 97–120.
  • Kabsch, W., & Sander, C. (1983). Dictionary of protein secondary structure: pattern recognition of hydrogen-bonded and geometrical features. Biopolymers, 22(12), 2577–2637.
  • Jumper, J. et al. (2021). Highly accurate protein structure prediction with AlphaFold. Nature, 596, 583–589.
  • AlphaFold Protein Structure Database. Documentation et téléchargements, version v4. https://alphafold.ebi.ac.uk/
  • Biopython. Bio.PDB.DSSP documentation, version 1.88. https://biopython.org/docs/1.88/api/Bio.PDB.DSSP.html