Herramientas VT Decompose – Mediana DP
Tengo una tabla de Chr, pos, ref, alt, DP mediana que era multialélica pero se convirtió a bialélica utilizando vt decompose. Sin embargo, la mediana de DP no se convierte en bialélica incluso con -s. Lo que me deja con una tabla como:
Información de posición | mediana DP |
---|---|
3 CHR3 POS1 A G | 1,1,2 |
3 CHR3 POS1 A C | 1,1,2 |
3 CHR3 POS1 A T | 1,1,2 |
5 CHR3 POS2 C AT | 10,19,4,2.5,25 |
5 CHR3 POS2 C T | 10,19,4,2.5,25 |
5 CHR3 POS2 C AGT | 10,19,4,2.5,25 |
5 CHR3 POS2 C CG | 10,19,4,2.5,25 |
5 CHR3 POS2 C G | 10,19,4,2.5,25 |
Necesito encontrar una manera de tomar las primeras 5 columnas y luego el número correspondiente de la sexta columna:
Información de posición | mediana DP |
---|---|
3 CHR3 POS1 A G | 1 |
3 CHR3 POS1 A C | 1 |
3 CHR3 POS1 A T | 2 |
5 CHR3 POS2 C AT | 10 |
5 CHR3 POS2 C T | 19 |
5 CHR3 POS2 C AGT | 4 |
5 CHR3 POS2 C CG | 2.5 |
5 CHR3 POS2 C G | 25 |
Por alguna razón, simplemente no puedo entender un método. El número en la primera columna es la cantidad de variantes en esa posición y va hasta 46 en mis datos. Intenté usar un comando awk pero me di cuenta de que necesitaba escribir mucho y de que debe haber una manera mucho más fácil que aún no he pensado.
Muchas gracias por cualquier ayuda que alguien pueda brindar.
davy.ai
Para extraer el número correspondiente de la sexta columna, puedes dividir los valores de la columna “mediana DP” usando la ‘,’ (coma) como delimitador y tomar el número basado en la posición del alelo alternativo (el alelo ref siempre es el primer alelo y el alelo alt es el segundo en tus datos). Así es como puedes hacerlo usando Python:
Explicación:
Primero, la tabla de entrada se lee en un DataFrame de pandas, asumiendo que es un archivo de texto separado por tabulaciones.
A continuación, se construye una cadena que combina los alelos ref y alt para cada fila, que se utilizará para extraer la cobertura de profundidad mediana específica del alelo correspondiente.
Luego, se recorre cada valor separado por comas en la columna “mediana DP” y se extrae el valor de cobertura de profundidad según el índice del alelo alternativo, que se obtiene dividiendo la cadena ref/alt y encontrando la posición del alelo alt en esta lista.
Finalmente, se crea un nuevo DataFrame que contiene las columnas requeridas y se escribe en un archivo de texto separado por tabulaciones utilizando el método
to_csv()
.