Domanda

Sto lavorando a una piccola applicazione e sto pensando di integrare BLAST o altre ricerche di allineamento locale nella mia applicazione. La mia ricerca ha generato solo programmi, che devono essere installati e chiamati come programma esterno.

C'è un modo per me di implementarlo da zero? Qualche libreria prefabbricata forse?

È stato utile?

Soluzione 3

Mi sono appena imbattuto nella cosa che avrei voluto: NCBI C ++ Toolkit. Grazie per tutti i suggerimenti però.

Altri suggerimenti

Deve essere in C, o anche C ++ va bene? In tal caso, potresti consultare la libreria SeqAn qui .

Questo è un argomento che ha anche a che fare con la riproducibilità dei risultati: è sempre meglio usare il binario dell'esplosione grezza fornito da NCBI o UCSC, perché faciliterà la riproduzione dei risultati da parte di altri scienziati e ti farà risparmiare un molto tempo speso per scrivere test (più tempo di quanto tu possa immaginare).

Per il lavoro quotidiano ho spesso usato exonerate , uno strumento scritto in C che può eseguire sia l'allineamento globale che locale, ha una semplice interfaccia simile a unix e non richiede di formattare l'input come con l'esplosione.

Inoltre, tieni presente che le persone di solito usano una combinazione di makefile e script per definire una pipeline, invece di chiamare tutto da uno script: la maggior parte dei linguaggi di programmazione non è buona per definire pipeline, mentre strumenti di compilazione automatizzati come Make non sono utili per attività di scripting. Dai un'occhiata a questi esempi: http://skam.sourceforge.net/skam-intro.html http://swc.scipy.org/lec/build.html

L'algoritmo BLAST è stato implementato ~ 20 anni fa, è ora un algoritmo molto grande e non riesco a immaginare che possa essere facilmente implementato da zero. Puoi provare a scoprirlo guardando le fonti del programma "blastall" nel NCBI toolkit . Un algoritmo pairwise più semplice (Swith Waterman, Needleman-Wunsch) dovrebbe essere più facile da implementare:

Biologia molecolare computazionale: un'introduzione ha un codice per Smith-Waterman e altri algoritmi di allineamento della programmazione dinamica.

Uso NetBLAST tramite il binario del client blastcl3. Credo che il binario blastcl3 sia un client piuttosto sottile per il servizio web NetBLAST.

In tal caso, non dovrebbe essere troppo difficile annusare i pacchetti e implementare il proprio client. A seconda del caso d'uso, questo potrebbe essere più veloce / più semplice dell'implementazione del proprio algoritmo di allineamento. Tuttavia, introduce una dipendenza dai servizi web dell'NCBI.

http: //www.ncbi.nlm.nih .gov / personale / Tao / URLAPI / netblast.html

Ho pubblicato una domanda simile ( eseguendo BLAST (bl2seq) senza creare file di sequenza )

Fondamentalmente, la risposta che mi è venuta in mente era eseguire questo comando:

bl2seq -i<(echo sequence1) -j(echo sequence2) -p blastn

Questo invia il risultato del comando echo al programma bl2seq (blast 2 sequences).

Ma non sono riuscito a farlo funzionare tramite il sistema di chiamata da Python

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top