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.