Articles

Allineamento a coppie di sequenze nucleotidiche utilizzando corrispondenze esatte massime


Approccio

Nel nostro algoritmo proposto, il primo passo verso l’allineamento delle sequenze è estrarre MEMs tra sequenze confrontandole direttamente. La figura 3a è un esempio che confronta un target e una sequenza di query in cui CTC e AAA sono due MEM identificati dal confronto. Ogni gruppo di simboli identici continui nel confronto, risulta in un MEM anche se è composto da un solo simbolo corrispondente., Per estrarre tutti i MEM tra le sequenze, la sequenza di query deve essere spostata a destra e a sinistra un simbolo alla volta (vedi Fig. 3 ter). Dopo ogni turno, la fase di confronto deve essere ripetuta per identificare nuovi MEMs. Ad esempio, la terza riga in Fig. 3b rappresenta il caso in cui la sequenza di query viene spostata a destra di un simbolo e viene confrontata con la sequenza di destinazione. Il risultato del confronto identifica AAAAGC come un nuovo MEM. Tutti gli altri MEMs estratti da shift e confrontare le operazioni sono evidenziati anche in Fig. 3 ter., Tre dei MEMs (Mx, My e Mz) sono evidenziati con colori diversi da utilizzare per una spiegazione successiva.

Fig. 3

Estrazione MEM usando le operazioni shift e compare. a Identificare MEMs dal confronto diretto delle sequenze. b La query viene spostata a sinistra fino a quando l’ultimo simbolo nella sequenza di query è allineato al primo simbolo nella sequenza di destinazione. Quindi la sequenza di query viene spostata a destra fino a quando il primo simbolo nella sequenza di query è allineato all’ultimo simbolo della sequenza di destinazione., Dopo ogni spostamento, la parte sovrapposta delle sequenze di query e di destinazione viene confrontata per identificare nuovi MEM. Tre dei MEMs (Mx, My e Mz) sono evidenziati con colori diversi da utilizzare per una spiegazione successiva

Nel modello di punteggio affine-gap, il punteggio di allineamento viene calcolato utilizzando Eq., 1 dove Nm è il numero di partite che ricevono ciascuna un punteggio di corrispondenza di Rm, Nx è il numero di disallineamenti che ricevono ciascuna una penalità di mancata corrispondenza di Px, No è il numero di aperture di gap che ricevono ciascuna una penalità di gap aperto di Po e Ng è la lunghezza totale di tutte le lacune, ogni Ci sarebbe un gap di apertura per ogni gruppo di gap continuo. Ad esempio, se ci sono due spazi nell’allineamento, dove la lunghezza del primo spazio è tre e la lunghezza del secondo spazio è quattro, allora ci sono due aperture di spazio (No=2) e la lunghezza totale dello spazio è sette (Ng=3+4=7).,

$$ {}E = (N_{m} \times R{m}) – ((N_{x} \times P_{x}) + (N_{o} \times P_{o}) + (N_{g} \times P_{g})) $$
(1)

Dato l’elenco di tutti i MEMs, l’allineamento può essere calcolata utilizzando parziale allineamenti. Ad esempio, considerare MEMs Mx, My e Mz in Fig. 3b.Gli allineamenti parziali fatti prendendo diverse combinazioni di Mx, My e Mz insieme al numero di corrispondenze, disallineamenti e lacune, così come i punteggi di allineamento risultanti sono mostrati in Fig. 4. L’allineamento che include solo Mx e Mz determina il punteggio di allineamento più alto., Si noti che, My e Mz si sovrappongono l’un l’altro e quando entrambi sono considerati nello stesso allineamento la sovrapposizione è esclusa da Mz. Considerando tutti i MEMs in Fig. 3b si traduce in molte più combinazioni dove nessuno di loro raggiunge un punteggio più alto.

Fig. 4

Tutte le possibili combinazioni di MEMs nell’allineamento

Esaminare tutte le possibili combinazioni di MEMs sarebbe esaustivo., Nella sezione” Algoritmo di allineamento ” descriviamo un nuovo algoritmo di programmazione dinamica DP-MEM che trova in modo efficiente la combinazione migliore senza considerare tutti i casi. DP-MEM deve sapere quali parti delle sequenze corrispondono ma non i simboli effettivi nelle sequenze. L’input a DP-MEM è il posizionamento dei MEM nel target e nelle sequenze di query che si ottengono durante il processo di estrazione MEM descritto nella sezione “Estrazione MEM”., Come i MEMs sono rappresentati con le loro posizioni e come il numero di corrispondenze, disallineamenti e lacune sono calcolati quando i MEMs sono combinati in un allineamento sono spiegati nel resto di questa sezione. La figura 5 è un altro esempio di allineamento con sei MEMs (da M1 a M6) che formano l’allineamento tra la sequenza di destinazione T e la sequenza di query Q. Per semplicità non vi è alcuna sovrapposizione tra MEMs in questo esempio. Ogni MEM Mi è rappresentato come una tripletta di numeri interi: le posizioni iniziali in T e in Q (rispettivamente STi e SQi) e la sua lunghezza (Li)., Le posizioni finali in T e in Q possono essere calcolate in seguito (Φ2E dell’algoritmo 2). La tabella 1 elenca la lunghezza e il posizionamento di M1 a M6 in T e in Q.

Fig. 5

Un esempio di allineamento con evidenziato MEM

Tabella 1 inizio e fine posizione di MEMs in Fig., 5
Tabella 2 Calcolo del numero di disallineamenti e spazi tra MEMs in Fig. 5

Nel caso in cui ci siano sia disallineamenti che spazi vuoti tra Mi e Mj, tutti i vuoti sono considerati continui per ridurre la penalità di gap open (solo una penalità di gap open viene applicata per un gap continues). Pertanto, per tutti i MEM adiacenti che hanno spazi tra loro, viene applicata una sola penalità aperta., Il posizionamento di disallineamenti e l’unico gap continuo non è importante, in quanto non influenzerebbe il punteggio di allineamento. Supponiamo che la penalità di mancata corrispondenza sia costante (questo è normale per le sequenze di DNA).

Estrazione MEM

Esistono metodi per estrarre corrispondenze esatte massime tra sequenze lunghe come un intero genoma. Tuttavia, questi metodi si basano sulla pre-elaborazione e l’indicizzazione di una o entrambe le sequenze che è un’operazione che richiede tempo. Ad esempio, in DNA read aligner, il genoma di riferimento viene indicizzato una volta e lo stesso indice viene utilizzato ogni volta che viene allineata una nuova lettura., Stiamo cercando un algoritmo rapido per identificare MEMs tra sequenze relativamente brevi che cambiano per ogni allineamento. Un metodo di forza bruta per questo problema (file aggiuntivo 1: Sezione II) è lento e inefficiente(con la complessità di O (n3)). Proponiamo un metodo parallelo a livello di bit veloce per accelerare il processo di estrazione MEM. Il nostro metodo di estrazione MEM si basa sulle operazioni di spostamento e confronto mostrate in Fig. 3b. Il primo passo è rappresentare sequenze con bit-vettori, dove A, C, T e G sono codificati rispettivamente come 00, 01, 10 e 11 (file aggiuntivo 1: Sezione III)., La figura 6 illustra una coppia di sequenze di esempio, insieme alle corrispondenti rappresentazioni bit-vettoriali. In un computer commodity, la parola macchina è di solito 64 bit che possono ospitare 32 simboli nucleotidici. Poiché una sequenza è solitamente più grande di 32 simboli, il corrispondente bit-vettore viene memorizzato in più parole macchina. Ogni operazione su bit-vettori di sequenze di dimensioni n simboli agisce su \ (\lceil \ frac {n} {32} \rceil\) parole macchina.

Fig., 6

Rappresentazione di sequenze con bit-vettori. Uscita XOR (X) con MEMS evidenziati. Bordi vettore di bit (E) identifica l’inizio e la fine di ogni MEMs

Con bit-vettori rappresentazione di sequenze, spostando una sequenza di un simbolo è lo stesso spostamento il vettore di bit da due bit, e il confronto di sequenze può essere fatto con l’istruzione XOR (32 simboli alla volta). Nell’output XOR (X), 00 significa che i simboli sono abbinati e una sequenza di 00 mostra un MEM., Un insieme di operazioni shift e bit a bit come mostrato nell’algoritmo 1 calcola X e successivamente il vettore bit edge (E) in cui l’inizio e la fine di ogni MEM sono evidenziati con bit impostati (bit con un valore di uno). Figura 6 mostra la X e la E bit-vettori con MEMS evidenziati. Il posizionamento dei MEMs nelle sequenze viene quindi calcolato dal vettore bit edge (file aggiuntivo 1: Sezione IV).,

Algoritmo di allineamento

Nella sezione “Approccio”, mostriamo che considerando diverse combinazioni di MEMs e calcolando il punteggio di allineamento per l’allineamento corrispondente, si può identificare la combinazione di MEMs che si traduce nel punteggio massimo di allineamento. Tuttavia, l’esame di tutte le possibili combinazioni di MEMs è una soluzione ingenua. Un modo più sistematico per trovare l’allineamento in modo efficiente è quello di utilizzare la programmazione dinamica.

La programmazione dinamica è il metodo per avvicinarsi alla soluzione di un problema definendo e risolvendo sottoproblemi più piccoli., Le soluzioni per i sottoproblemi vengono utilizzate per risolvere un problema più grande ad ogni passaggio. Il processo viene ripetuto fino a quando tutti i sottoproblemi non vengono risolti. Alla fine, la soluzione a uno dei sottoproblemi sarebbe la soluzione al problema iniziale. Quando tutti i sottoproblemi vengono risolti, un processo di backtracking identifica una serie di soluzioni che contribuiscono alla soluzione finale. Nella programmazione dinamica, dovrebbe esserci un ordine dei dati di input lungo il quale procede la procedura di ricorsione.

Ordiniamo tutti i MEMs in base alla posizione della loro fine nella sequenza di query (EQ)., I MEM che terminano nella stessa posizione sono ordinati in modo arbitrario. Il sottoproblema jth è trovare l’allineamento delle sottosequenze di T e Q che terminano a jth MEM Mj (T e Q rispettivamente). Mostreremo che questo ordine di MEM è sufficiente per supportare la ricorsione corretta.

Nell’elenco ordinato di MEMs, EQi=EQj indica che uno dei Mi o Mj si sovrappone completamente all’altro MEM nella sequenza di query. Poiché in Φ2B dell’algoritmo 2 la regione di sovrapposizione è esclusa, Mi e Mj non possono essere nello stesso allineamento., Quindi i sottoproblemi ith e jth sono risolti indipendentemente l’uno dall’altro e l’ordine di i e j nell’elenco ordinato potrebbe essere arbitrario. Se EQk>EQj (k>j nell’elenco ordinato), Mk non potrebbe essere una parte dell’allineamento che termina in Mj. Quindi i sottoproblemi jth possono essere risolti indipendentemente dalla soluzione al sottoproblema kth. Si noti che è anche possibile ordinare MEMs in base alla loro posizione finale nella sequenza di destinazione (ET) utilizzando una giustificazione simile.

Il nostro algoritmo di programmazione dinamica proposto (DP-MEM) è elaborato nell’algoritmo 2., Per l’esempio MEMs estratto in Fig. 3b, la tabella di programmazione dinamica e il valore intermedio calcolati nell’algoritmo sono mostrati in Figg. 7 e 8 rispettivamente. L’input di DP-MEM è l’elenco di MEM in cui ogni MEM (Mj) è una tripletta di numeri interi . Il secondo input n è il numero di MEMs nell’elenco. L’output S è il punteggio di allineamento per le sequenze. L’algoritmo stampa gli indici di tutti i MEMs che formano l’allineamento in cui il primo e l’ultimo numero stampato sono rispettivamente gli indici dei MEMs più a destra e più a sinistra nell’allineamento., Tutti i passaggi dell’algoritmo 2 sono commentati nel modo seguente:

Fig. 7

Tabella di programmazione dinamica utilizzata nell’algoritmo 2 per elaborare i MEM estratti in Fig. 3b. Le celle i e j rappresentano il valore di \(S_{i}^{j}\). Le celle vuote non vengono valutate in Φ2. La valutazione delle celle con segno incrociato viene saltata in Φ2A. Il valore iniziale di Sj è calcolato in Φ1. Il valore finale di Sj e la sua fonte (ciò che massimizza Sj) sono evidenziati per ogni riga. Il più alto Sj (S13) è il punteggio di allineamento., M13 è l’ultimo MEM nell’allineamento e il MEM prima è MW=M3. Poiché W=-1, M3 è il primo MEM nell’allineamento. Il sistema di punteggio per questo allineamento è Rm = 2, Px = 3, Po = 4 e Pe = 1

Fig. 8

Valori intermedi da calcolare \(S_{i}^{j}\) in Fig. 7. Si noti che Sij in questa figura si riferisce a\(S_{i}^{j}\)

  • Φ1: Segnando ogni MEM per tutti i suoi simboli corrispondenti., Si noti che ci sono simboli corrispondenti Lj in Mj. Sj rappresenta il punteggio di allineamento più alto per l’allineamento che termina in Mj. L’inizializzazione di Sj in questo passaggio è simile al calcolo del punteggio di allineamento parziale quando solo Mj è incluso nell’allineamento. W viene utilizzato per il backtracking. Il valore di -1 indica che l’Sj corrente si ottiene considerando Mj solo nell’allineamento.

  • Φ2: Calcolo Sj per ogni MEM (Mj)., Per calcolare Sj, per ogni MEM Mi dove Mi appare prima di Mj nell’elenco, l’algoritmo aggiunge Mj all’allineamento che termina a Mi (estendendo gli allineamenti precedentemente trovati) e cerca l’estensione che massimizza Sj (risolvendo un sottoproblema più grande usando sottoproblemi precedentemente risolti).

  • Φ2A: Salta l’estensione quando non è possibile. Se ETi>ETj allora Mi contiene parte della sequenza di destinazione che è oltre l’allineamento che termina a Mj e l’estensione non è possibile. Se EQi=EQj o ETi = ETj o SQi≥SQj o STI≥STj, uno dei MEM si sovrappone completamente all’altro MEM., In questo caso, Mi e Mj non possono essere in un allineamento insieme.

  • Φ2B: Calcolo della lunghezza della sovrapposizione tra Mi e Mj. Se \({MO} _ {i}^{j}\) è minore o uguale a zero, allora non esiste alcuna sovrapposizione.

  • Φ2C: mantenere una copia di Mj prima di escludere la sovrapposizione.

  • Φ2D: Se esiste una sovrapposizione, esclusa la sovrapposizione di Mj

  • Φ2E: Calcolo della posizione finale di Mj in T e D.

  • Φ2F: Calcolo della distanza (numero di simboli) tra Mi e Mj in T e D.

  • Φ2G: Calcolo numero di incongruenze e le lacune tra Mi e Mj.,

  • Φ2H: Calcolo della penalità per i disallineamenti e gli spazi tra Mi e Mj (\(P_{i}^{j}\)). Se il divario esiste, viene sottratta una sola penalità aperta.

  • Φ2I: Calcolo del punteggio di allineamento \(\left (S_{i}^{j}\right)\) quando Mj viene aggiunto all’allineamento che termina a Mi. Il punteggio per tutti i simboli corrispondenti in Mj (Lj×Rm) viene aggiunto al punteggio di allineamento per l’allineamento che termina a Mi (Si). Quindi la penalità per gli spazi vuoti e le discrepanze tra Mi e Mj\(\left (P_{i}^{j}\right)\) viene sottratta.,

  • Φ2J: Se l’estensione di Mj all’allineamento che termina in Mi risulta in un punteggio \(\left (S_{i}^{j}\right)\) superiore al punteggio corrente per Mj (Sj), il nuovo punteggio viene memorizzato in Sj. Anche W è impostato su i per tenere traccia del Mi che massimizza il punteggio per Mj.

  • Φ2K: Ripristino del valore di Mj prima dell’esclusione in modo che Mj possa essere utilizzato in altre estensioni di allineamento.

  • Φ3: Cercando il MEM con il più alto Sj. Questo MEM è l’ultimo MEM nell’allineamento (Me)., Il punteggio più alto (Se) viene restituito come S che è il punteggio di allineamento più alto per le sequenze date. L’indice del MEM che massimizza Sj è memorizzato in e per iniziare il backtracking da me.

  • Φ4: Nell’allineamento, il MEM precedente immediato per Me è quello che massimizza il punteggio di allineamento per Me. L’indice di tale MEM è memorizzato in W. Di conseguenza, l’iterazione di f←W visita l’indice di tutti i MEM nell’allineamento. Quando W è uguale a -1, Mf è il primo MEM nell’allineamento e l’iterazione viene interrotta.,

Nel nostro algoritmo, non penalizziamo disallineamenti e lacune prima del primo MEM e dopo l’ultimo MEM nell’allineamento. Ciò si traduce in un algoritmo di allineamento locale. Considerando queste penalità l’algoritmo genera un allineamento globale (file aggiuntivo 1: Sezione V).

L’equazione per calcolare \(P_{i}^{j}\) in Φ2H dell’algoritmo 2 presuppone che non vi sia alcun simbolo corrispondente tra T e Q nell’area tra Mi e Mj (tutti i simboli sono contati come disallineamenti o spazi vuoti)., Sebbene questa ipotesi non sia vera per tutte le Mi, è sempre vera per l’Mi che porta al massimo \(S_{i}^{j}\) che sovrascrive l’effetto dell’assunzione non corretta per altre Mi. Come prova, supponiamo che ci sia un simbolo corrispondente nell’area tra Mi e Mj. Il simbolo corrispondente sarebbe un MEM (Mk). Mk è già esteso all’allineamento che termina a Mi. Pertanto, quando si estende Mj a Mk si ottiene un punteggio più alto rispetto all’estensione Mj a Mi.

Incatenamento semi colineari come discusso in sono stati ampiamente utilizzati nell’allineamento di grandi sequenze, cioè l’allineamento genoma-genoma., E ‘ stato utilizzato anche per identificare le regioni candidate per una lettura dato un insieme di MEMs in BWA. Gli algoritmi di concatenamento con punteggio sono simili all’algoritmo di programmazione dinamica che abbiamo proposto (DP-MEM). Tuttavia, ci sono differenze che rendono DP-MEM adatto per l’allineamento a coppie di sequenze brevi. DP-MEM tiene conto del fatto che tutti i MEM all’interno di una certa dimensione del gap sono forniti nell’input e ottimizza il numero di iterazioni nell’algoritmo. DP-MEM implementa anche un approccio euristico per compensare l’effetto di MEM brevi rimossi dalla lista di input risultanti lacune tra MEM.,

Ottimizzazione

sequenze di lunghezza n, l’algoritmo per estrarre MEMs (fornito in “MEM estrazione” sezione) richiede 2(n−1) spostamento e 2n−1. confrontare le operazioni su bit-vettori (ogni atto su \(\lceil \frac {n}{32} \rceil \) macchina di parole) che si traducono in un algoritmo con complessità di O(n2) produce bordo bit-vettori per una data coppia di sequenze. La complessità della funzione che calcola il posizionamento dei MEMs dal vettore bit edge e li ordina in base all’EQ deve ancora essere aggiunta. Inoltre, se vengono estratti m MEMs, Φ2 dell’algoritmo 2(DP-MEM) ha la complessità di O (m2)., Considerando la complessità dell’estrazione MEM e DP-MEM, MEM-Align è molto più lento degli algoritmi di allineamento disponibili. Per accelerare il processo, presentiamo diverse ottimizzazioni per MEM-Align che raggiungono un runtime più veloce sacrificando la precisione. D’altra parte, introduciamo metodi per migliorare la precisione con una minima perdita di prestazioni.

Allineamento fasciato

L’allineamento fasciato è un metodo euristico noto per accelerare il processo di allineamento. Questa tecnica limita il pattern degli spazi nell’allineamento (file aggiuntivo 1: Sezione VI)., Di conseguenza, se l’allineamento tra due sequenze non segue questo schema, l’algoritmo non identificherà l’allineamento. Nella programmazione dinamica tradizionale, l’allineamento si ottiene dopo aver calcolato il valore di tutte le celle della tabella. Tuttavia, con l’ottimizzazione dell’allineamento a bande, vengono valutate solo le celle sul diametro e vicino alla diagonale. gl è la larghezza della banda nell’allineamento a bande in cui le celle più lontane di gl rispetto al diametro non vengono valutate. Celle più scure in Fig. 1 mostra il caso in cui gl=1.,

A differenza del tradizionale approccio di programmazione dinamica, MEM-Align non ha una tabella simile per applicare l’allineamento a bande. Tuttavia, abbiamo scoperto che possiamo simulare lo stesso effetto limitando il numero di operazioni di spostamento nel processo di estrazione MEM. Ad esempio, se spostiamo la sequenza di query fino a gl a destra ea sinistra, otteniamo l’allineamento a bande con la banda di gl. L’allineamento a bande riduce la complessità dell’estrazione MEM da O(n2) a O(n.(2gl+1)) dove gl è un valore piccolo e fisso. Pertanto, la complessità dell’estrazione MEM è O(n) quando viene applicato l’allineamento a bande., Inoltre, con il suddetto allineamento a bande, è probabile che vengano estratti meno MEMs che accelera i successivi passaggi algoritmici.

Rimozione breve MEM

Abbiamo osservato che la maggior parte dei MEM estratti sono brevi e sono il risultato di simboli corrispondenti casualmente. Per accelerare l’allineamento MEM, i MEM più corti di sl vengono filtrati durante il processo di estrazione MEM. Ciò riduce il numero di MEM da estrarre ed elaborare (successivamente accelerando l’algoritmo). Il filtraggio di MEM brevi viene eseguito estendendo l’algoritmo 1 con una serie di operazioni shift e bit a bit (file aggiuntivo 1: Sezione VII).,

D’altra parte, ci sono rari casi in cui i MEM brevi fanno parte dell’allineamento; ad esempio, un simbolo corrispondente circondato da disallineamenti. Senza avere tutti i MEM nell’elenco di input, DP-MEM non è in grado di trovare lo stesso allineamento che trova quando tutti i MEM esistono nell’elenco di input. Per compensare i MEM brevi persi nell’input, modifichiamo Φ2H di DP-MEM per considerare la possibilità di avere brevi corrispondenze tra MEMs (file aggiuntivo 1: Sezione VIII).

Potrebbero esserci casi più difficili in cui nell’allineamento esistono più MEM brevi tra due MEM (vedere Fig. 9)., L’unico modo per identificare correttamente il punteggio per l’area tra Mi e Mj in Φ2H è applicare un allineamento globale a questa regione. Tuttavia, Φ2H è un’operazione frequente e dovrebbe rimanere veloce. Di conseguenza, abbiamo deciso di superare parzialmente il problema limitando i casi possibili (un metodo euristico).

Fig., 9

Un esempio che mostra più breve MEM nell’area piccola tra Mi e Mj in un allineamento

Se ci sono lacune nella zona tra Mi e Mj, si presuppone ci sia solo un continuo divario sia a sinistra o a destra dell’area. Quindi, solo due allineamenti sono possibili per l’area., Il numero di simboli corrispondenti viene conteggiato per entrambi i casi in modo sequenziale e quello che si traduce in corrispondenze massime viene preso come il numero di corrispondenze tra Mi e Mj (File aggiuntivo 1: Sezione IX). Il confronto sequenziale è un’operazione costosa e ideiamo un metodo per evitare il confronto sequenziale quando possibile (file aggiuntivo 1: Sezione X).

Qualsiasi altro caso che non si adatta all’ipotesi precedente risulta in un allineamento con un punteggio inferiore., Tuttavia, considerando il basso tasso di lacune e disallineamenti, la possibilità di avere più lacune e disallineamenti in una piccola area è bassa.

Estensione di allineamento efficiente

In Φ2 di DP-MEM, Mj estende tutti gli allineamenti che terminano in {M1} Mj−1} (se possibile). Tuttavia, per ogni Mj c’è un sottoinsieme più piccolo Ωj {{M1 M Mj-1} tale che estendendo Mj a tutti gli allineamenti che terminano in un Mi Ω Ωj si trova l’allineamento che termina in Mj (Eq. 2). In altre parole, ci sarebbero meno \(S_{i}^{j}\) da valutare. Definizione del set Ωj e la prova di Eq. 2 sono forniti nel file aggiuntivo 1: Sezione XI., La definizione di Ωj è influenzata quando viene applicata l’ottimizzazione della rimozione di MEM brevi (file aggiuntivo 1: Sezione XII).

$$ \max\limits_{M_{i} \in \Omega_{j}}{S_{i}^{j}} = \max\limits_{1 \leq i \leq j-1}{S_{i}^{j}} $$
(2)

Ibrido allineamento

Per mantenere la precisione dell’algoritmo, abbiamo deciso di utilizzare un metodo ibrido che è una combinazione di MEM-Align e Smith-Waterman algoritmo. Definiamo tre casi in cui MEM-Align può essere impreciso., Se l’allineamento di una coppia di sequenze cade in uno di questi casi, usiamo l’algoritmo Smith-Waterman per allineare le sequenze. Questi casi sono:

  • Quando le sequenze sono ripetitive e il numero di MEM estratti supera la soglia TM. Abbiamo trovato MEM-Align è probabile che produca un allineamento impreciso quando si allineano sequenze ripetitive. Un valore TM appropriato riduce la possibilità di segnalare un allineamento impreciso con un aumento trascurabile del tempo medio di elaborazione.,

  • Quando il punteggio di allineamento calcolato per l’allineamento generato da MEM-Align è inferiore a una soglia TS. Questo caso si verifica principalmente quando c’è una lacuna nell’allineamento che non può essere identificata a causa dell’allineamento a bande.

  • Quando non esiste MEM più lungo di sl da estrarre (un caso raro)., Se sl è impostato su un valore elevato e la somiglianza tra le sequenze è bassa,

Anche se l’invio di coppie di sequenze a un algoritmo esterno comporta un calcolo aggiuntivo, il numero di sequenze inviate all’algoritmo esterno rimane piccolo se vengono scelti valori appropriati per TM e TS.

Saltare MEMs distanti

Quando la distanza tra Mi e Mj è grande, non è probabile che Mi e Mj siano MEMS adiacenti nell’allineamento., Pertanto, l’algoritmo salta l’estensione se la distanza tra Mi e Mj è più lunga di una soglia TD (riducendo ulteriormente il numero di \(S_{i}^{j}\) da valutare). Questa ottimizzazione migliora leggermente le prestazioni con un effetto collaterale trascurabile sulla precisione.