SwiftLib

Scopo

Questo programma ottimizza una libreria di codoni degenerati per coprire l’insieme desiderato di aminoacidi in diverse posizioni pur rimanendo entro un limite di diversità per la libreria. È un modo veloce per generare piccole librerie.

Il caso tipico per cui immaginiamo che SwiftLib sia utile è questo: immagina di aver costruito 100 modelli ridisegnati di una particolare proteina in cui hai permesso a 15 residui di mutare. Per la posizione 82 (uno dei residui che hai permesso di mutare), l’alanina è apparsa 10 volte, l’arginina 35 volte, la lisina 25 volte, la leucina 20 volte, l’asparagina 5 volte, il triptofano 3 volte e la valina due volte e distribuzioni simili sono state osservate nelle altre posizioni 14. (Dovresti inserire tutti questi conteggi nella tabella di SwiftLib qui sotto.) Diciamo che stai mirando a creare una libreria per la visualizzazione del lievito e vuoi assicurarti di non superare una diversità (DNA) di 1e7. In questo caso, preferiresti avere una libreria che escludesse il triptofano atposition 82 piuttosto che una che escludesse l’arginina. L’esclusione del tripotofano rappresentaerrore: volevi qualcosa, ma non potevi ottenerlo. Il programma di ofthis di obiettivo è trovare l’assegnazione di codoni degenerati all’interno di limite di diversità di thegiven che produce l’errore minimo su tutte le posizioni beingrandomized.

Inoltre, è possibile chiedere all’algoritmo di consentire più degeneratecodons in una o più posizioni. Indica semplicemente i confini del primer equanti oligos sei disposto a comprare. L’algoritmo sceglierà quali posizioniper utilizzare più codoni degenerati per ottenere la migliore copertura. Il numero di oligostiche deve essere acquistato per coprire i residui randomizzati che si trovano all’interno degli stessi confini del primer è il prodotto del numero di codoni degenerati utilizzati in ciascuna di tali posizioni. Ad esempio, se ci sono tre residui che fanno parte dello stesso tratto usando, 2, 3 e 4 codoni degenerati, quindi per coprire tutte le combinazioni,2*3*4 = 24 oligos dovrebbero essere acquistati. Una delle parti più costose diconsiderare più codoni degenerati è enumerare tutte le combinazioni di codoni degenerati; consentire i codoni degenerati in una singola posizione richiede di guardare(153)combinazioni i. Per questo motivo non raccomandiamo di utilizzare più di 4 codoni degenerati in qualsiasi posizione.

Algoritmo

Il programma funziona con la programmazione dinamica. Se tutti gli errori sono interi, allora è possibile chiedere, per ogni posizione, quale codone degenerato ha la più piccola diversità dato che produce un dato errore. La libreria più piccola per le posizioni dato un particolare errore può essere facilmente calcolata utilizzando una semplice ricorrenza. La migliore libreria è quella con il più piccolo errore con una diversità al di sotto del limite desiderato. Il tempo di esecuzione è O (n2m2) per n posizioni e m gradazioni di errore. Nel caso precedente, n=15 e m = 100 (l’errore massimo sarebbe 100 dato da un codone che non contiene nessuno degli amminoacidi desiderati; maggiore è l’errore massimo più lungo è il tempo di esecuzione).L’analisi per l’algoritmo a codone multiplo degenerato è leggermente più complicata e sarà pubblicata a breve.

Privacy? Questo programma è implementato in JavaScript e quindi viene eseguito all’interno del browser. Non invia alcun dato da nessuna parte. Non è necessario preoccuparsi di chiunque decodifica la libreria che si sta creando.

Input

L’input per SwiftLib è una tabella di posizioni per le quali si desidera variare nella libreria e una preferenza numerica per ciascun amminoacido in queste posizioni che si desidera favorire o sfavorire. Quindi, dato l’esempio precedente, l’input sarebbe una tabella con 15 colonne (1 per ogni residuo) e la preferenza numerica per ciascun amminoacido sarebbe il numero di occorrenze di quell’amminoacido in quella posizione. Oltre a utilizzare numeri interi positivi per favorire un amminoacido, si può anche utilizzare numeri interi negativi per disfavor un amminoacido in una determinata posizione. Inoltre si può usare il ‘ * ‘e’!”caratteri jolly per specificare che l’amminoacido è richiesto (‘ * ‘) o proibito (‘!’) alla posizione data. I campi vuoti nella tabella saranno trattati come se contenessero uno ‘ 0 ‘ Per comodità, SwiftLib consente la creazione di questa tabella manualmente, attraverso un formato CSV o attraverso una raccolta di sequenze formattate FASTA.

Codice sorgente

SwiftLib è implementato in JavaScript, quindi il codice sorgente può essere scaricato aprendola console JavaScript nel tuo browser (ad esempio su un Mac in Chrome, alt-command-j). Puoi anche scaricare il codice da githubhere. Se sei interessato alla soluzione ILP (integer-linear Programming) descritta in thepaper, un tarball con un set di script python che può essere utilizzato per generare ILPinputs e per elaborare gli output del risolutore GLPK può essere scaricato qui.

Citazione

Se si utilizza questo programma nel vostro lavoro, si prega di citare:
Jacobs, Yumerefendi, Kuhlman & Uscente-Fay SwiftLib: rapido degenerare-codone-biblioteca di ottimizzazione attraverso la programmazione dinamica (2014) Ricerca Acidi Nucleici, doi: 10.1093/nar/gku1323

si Prega di inviare le domande a: leaverfa all’indirizzo e-mail dot unc dot edu.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.