es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Datos vcf a marco de datos pandas

¿Cómo puedo convertir los siguientes datos .vcf en un dataframe de pandas?

Enlace de Google Drive al archivo .txt:

Enlace de Google Drive al archivo .txt

Idealmente me gustaría tenerlo en la siguiente forma:

Imagen del ejemplo

Hasta ahora solo he podido obtener los encabezados:

import pandas as pd

f = open('clinvar_final.txt','r')

for line in f.readlines():
    if line[:5] == 'CHROM':
        vcf_header = line.strip().split('\t')

df = pd.DataFrame
df.header = vcf_header
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para convertir los datos en formato .vcf en un marco de datos de pandas, puedes usar la función read_csv de la biblioteca pandas. Sin embargo, dado que los datos están en formato VCF, necesitarás hacer algunas modificaciones antes de que los datos puedan ser leídos como un archivo CSV.

    Una forma de hacer esto es utilizando PyVCF, una biblioteca de Python para trabajar con archivos VCF. Después de instalar PyVCF, puedes usar la función Reader de la biblioteca para analizar el archivo VCF y convertirlo en un marco de datos de pandas:

    import vcf
    import pandas as pd
    
    # abre el archivo vcf utilizando la función Reader de PyVCF
    vcf_reader = vcf.Reader(open('clinvar_final.txt', 'r'))
    
    # crea una lista vacía para almacenar los registros
    records = []
    
    # itera sobre cada registro en el archivo VCF y añade los datos a la lista
    for record in vcf_reader:
        records.append(record.__dict__)
    
    # convierte la lista en un marco de datos de pandas
    df = pd.DataFrame.from_records(records)
    

    Este código leerá el archivo VCF utilizando la función Reader de PyVCF y luego iterará sobre cada registro en el archivo. Para cada registro, lo convertiremos en un diccionario utilizando la función __dict__, lo cual nos permitirá acceder a los campos del registro como claves y valores. Luego, añadiremos este diccionario a la lista records.

    Finalmente, convertiremos la lista records en un marco de datos de pandas utilizando la función from_records. El marco de datos resultante tendrá una fila por cada registro en el archivo VCF, con columnas correspondientes a los campos del registro.

    Ten en cuenta que el marco de datos resultante contendrá algunos campos y listas anidadas, como el campo samples. Es posible que necesites limpiar y manipular aún más los datos para extraer los campos de tu interés.

Comments are closed.