2010-07-07 39 views
6

¿Cómo puedo obtener la secuencia genómica de manera eficiente usando Python? Por ejemplo, de un archivo .fa u otro formato de fácil obtención. Básicamente quiero una interfaz fetch_seq (chrom, strand, start, end) que devolverá la secuencia [start, end] en el cromosoma dado en el capítulo especificado.¿Obtención de secuencia genómica de manera eficiente en Python?

De manera análoga, ¿existe una interfaz de python programática para obtener los puntajes de phastCons?

gracias.

Respuesta

3

Véase mi respuesta a su pregunta sobre Biostar en:

http://biostar.stackexchange.com/questions/1639/getting-genomic-sequences-and-phastcons-scores-using-python-from-ensembl-ucsc

Uso SeqIO con archivos FASTA y que pondremos en objetos de registro para cada elemento en el archivo. Luego puede hacer:

region = rec.seq[start:end] 

para sacar rebanadas. Lo bueno de utilizar una biblioteca estándar es que no tiene que preocuparse por los saltos de línea en el archivo fasta original.

+1

Estoy de acuerdo en que este enfoque es realmente elegante porque tiene una biblioteca estándar para usar, pero creo que es muy lenta. Si supone un archivo fasta sin líneas nuevas, simplemente puede "buscar" las coordenadas en el archivo que creo que es mucho más rápido, y no requiere que cargue todos los archivos fasta de cada cromosoma en la memoria. ¿Hay alguna manera de lograr el mismo tipo de eficiencia con una biblioteca estándar como biopython? Gracias. – user248237dfsf

+0

No está exactamente claro lo que está buscando, pero acepto que una solución personalizada adaptada a sus archivos específicos será más rápida que una solución más general. En la práctica, la mayoría de los archivos FASTA tienen saltos de línea y lo que no, por lo que prefiero ser general, pero su experiencia puede variar. –

+0

Sé que este es un hilo viejo, pero espero que alguien más lo notará y mostrará noticias más recientes. Samtools (samtools.sourceforge.net) tiene una función llamada faidx que le permite hacer exactamente esto en la línea de comando. Pysam (https://github.com/pysam-developers/pysam) contiene muchos de los métodos de samtools, pero parece que no puedo hacer funcionar la función faidx.: P En el peor de los casos, puedo ajustar la herramienta de línea de comandos, pero me gustaría algo "nativo" si es posible. –

1

Eche un vistazo a biopython, que tiene soporte para varios formatos de secuencia de genes. Específicamente, tiene soporte para FASTA and GenBank files, por nombrar un par.

+0

Sí, pero puedo ver que solo admite la lectura de registros de FASTA, no la búsqueda de secuencias ... si quisiera buscar una secuencia (inicio, fin) de FASTA, necesitaría una formato sin líneas nuevas y la interfaz correcta y no creo que BioPython lo permita. Sin embargo, tal vez me perdí algo. ¿Podría señalar el documento pertinente sobre esto? ¡Gracias! – user248237dfsf

4

Recuperando datos de la secuencia de archivos de gran tamaño de los cromosomas humanos puede ser memoria en cuanto ineficiente , por lo tanto, si busca eficiencia computacional, puede formatear los datos de la secuencia en una cadena binaria empaquetada y buscar según la ubicación del byte. Escribí rutinas para hacer esto en perl (disponible here), y python tiene el mismo pack and unpack routines, por lo que se puede hacer, pero solo vale la pena si se está ejecutando en problemas con archivos grandes en una máquina limitada. De lo contrario, use biopython SeqIO

Cuestiones relacionadas