Aunque se explicarán más en detalle en cada sección del binario correspondiente, existen una serie de pautas generales que funcionan para una gran mayoría de los comandos.
Para los binarios a los que se les pase algún flag de tabla de entrada (en la mayoría de casos con el flag -i, pero en otros casos como en 'intersect_columns' con los flags -a y -b), dichas tablas pueden venir en formato de texto plano, pero también se pueden cargar comprimidas en gzip utilizando el flag '--compressed_in'. Por ejemplo:
desaggregate_column_data -i patients_and_phens.gz -x 2 --compressed_in -o desaggregated.txt
Además, para aquellos comandos que solo necesiten una tabla de entrada (como 'aggregate_column_data', 'desaggregate_column_data' o 'transpose_table', pero no 'intersect_columns'), se puede utilizar un guión '-' con el flag de input para indicar que el contenido de la tabla proviene por stdout (por ejemplo fruto de un pipe de un comando anterior), pudiendo venir también comprimido. Por ejemplo:
cat patients_and_phens.txt | script_que_devuelve_datos_comprimidos | desaggregate_column_data -i - -x 2 --compressed_in
En los scripts que devuelvan algún tipo de output (generalmente con el flag -o), de manera similar, también se puede utilizar el flag --compressed_out para que el resultado se devuelva comprimido en gzip. Además, si no se indica un flag de output (omitiendo '-o archivo_salida') y el script solo devuelve una tabla, el contenido se devuelve al stdout en vez de ser escrito en archivo, por lo que puede aprovecharse para pipear en otro script. Por ejemplo:
desaggregate_column_data -i patients_and_phens.txt -x 2 --compressed_out | script_que_utiliza_datos_comprimidos
Se pueden usar ambos flags a la vez, de manera que se pueda recibir una tabla comprimida y devolverla también comprimida. Por ejemplo:
desaggregate_column_data -i patients_and_phens.gz -x 2 --compressed_in --compressed_out -o desaggregated.gz
O utilizando pipes:
cat patients_and_phens.txt | script_que_devuelve_datos_comprimidos | desaggregate_column_data -i - -x 2 --compressed_in --compressed_out | script_que_utiliza_datos_comprimidos
Finalmente, el flag --transposed se puede utilizar en todos aquellos scripts que carguen y/o escriban tablas, y al utilizarlo, se aplicará la transposición de la tabla en el momento de carga así como de manera previa a la escritura de la misma.
Se utiliza en una tabla para dada una columna como referencia, que tenga valores repetidos, por ejemplo un identificador, agregarte el/los valores de otra(s) columna(s) en función de la de referencia.
En este caso, se agregan los valores de la segunda columna en función de los valores de la primera columna. Para ello el flag -i hace referencia a la tabla de entrada, el flag -x a la columna que queremos usar de referencia (en base 1) y el flag -a la columna que queremos agregar (base 1). Además, con el flag -s podemos escoger el separador que se utilice para la agregación.
Input
| as | 1 | 20 |
| as | 2 | 30 |
| zz | 3 | 100 |
| zz | 4 | 110 |
aggregate_column_data -i tables/cluster_genes_dis_desagg_3cols -x 1 -s , -a 2
Output
| as | 1,2 |
| zz | 3,4 |
En este caso, se agregan los valores de la segunda y tercera columnas en función de la primera columna.
Input
| as | 1 | 20 |
| as | 2 | 30 |
| zz | 3 | 100 |
| zz | 4 | 110 |
aggregate_column_data -i tables/cluster_genes_dis_desagg_3cols -x 1 -s , -a 2,3
Output
| as | 1,2 | 20,30 |
| zz | 3,4 | 100,110 |
Si se tuvieran dos columnas como referencia y no queremos agregarla, pero que tampoco se pierda, se puede utilizar el flag -x para pasar más de una columna como referencia (además de más de una columna como agregación). Además del método de agregación deseado.
Input
| A | as | 1 | 20 |
| A | as | 2 | 30 |
| B | zz | 3 | 100 |
| B | zz | 4 | 110 |
aggregate_column_data -i tables/cluster_genes_dis_desagg_4cols -x 1,2 -a 3,4
Output
| A | as | 1,2 | 20,30 |
| B | zz | 3,4 | 100,110 |
A parte de concatenar los valores en la(s) columna(s) de interés (opción por defecto), también se pueden utilizar otros método de agregación utilizando el flag -A, como media ("mean"), mediana ("median"), valor máximo ("max") y valor mínimo ("min")
Ahora tiene otros métodos de agregación disponibles: suma ("sum"), desviación estándar ("std"), varianza ("var"), rango intercuartílico ("IQR"), percentil 25 ("PC25") y percentil 75 ("PC75"), además de conteo ("count").
Vamos a ver un ejemplo con la media de los valores de las columnas 2 y 3, en función de la columna 1.
Input
| as | 1 | 20 |
| as | 2 | 30 |
| zz | 3 | 100 |
| zz | 4 | 110 |
aggregate_column_data -i tables/cluster_genes_dis_desagg_3cols -x 1 -a 2,3 -A mean
Output
| as | 1.5 | 25.0 |
| zz | 3.5 | 105.0 |
Nos sirve para acabar en una columna con el identificador y en la otra con la cantidad de veces que se repetía ese identificador cuando estaba en formato desagregado
Input
| as | 1 | 20 |
| as | 2 | 30 |
| zz | 3 | 100 |
| zz | 4 | 110 |
aggregate_column_data -i tables/cluster_genes_dis_desagg_3cols -x 1 -a 2 -A count
Output
| as | 2 |
| zz | 2 |
Se utiliza para filtrar registros de una o más tablas en funcion a una o varias keywords en una o más columnas
Este script permite filtrar registros de una o varias tablas (si se usa el wildcard * en un path a archivo del flag -i se pueden cargar varias tablas y aplicar todo lo de este apartado para varias tablas, aunque en estos ejemplos se mostrará el caso solo para una tabla) en función de una o varias keywords aplicada a una o más columnas, por lo que es un script bastante versatil y completo, aunque pueda parecer complejo. Se enseñarán varios ejemplos aumentando la complejidad del caso para entender mejor su funcionamiento.
Los argumentos más básicos que se usarán siempre serán la tabla de entrada (flag -i), las columnas que se devolverán (flag -c), la columna que contiene las keywords (flag -f), la keyword/s a buscar (flag -k), -m o --match_mode para indicar si queremos que la keyword esté incluida (opción "i") en la columna (es decir match parcial) o que esté al completo (opción "c"), es decir, match completo. Finalmente con el flag -s o --search se indica (cuando queremos match en varias columnas) si queremos que el match sea completo (opción "c"), es decir, que se cumpla la keyword buscada en cada columna, o algún (some) match en alguna columna (opción "s")
. Lo más esencial es entender como se construye el string de keywords de búsqueda. El patrón es el siguiente:
key1_col1&key2_col1%key1_col2&key2_col2 donde cada keyword se separa por un "&" (quieres un keyword u otro en una determinada columna) y cada columna por un "%"
Vamos empezar con un caso básico en el que vamos a quedarnos con aquellos registros que contengan la keyword MONDO:0017999 (en flag -k) en la columna 1 (flag -f) de
la tabla long_disease_cluster (flag -i). Además queremos que sea el match completo de la palabra (-m c) y nos retorne las columnas 1 y 2 de los registros resultantes (flag -c)
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_rand |
| MONDO:0014823 | 25_ref |
| MONDO:0017999 | 36_rand |
| MONDO:0017999 | 53_ref |
| MONDO:0017999 | 53_rand |
| MONDO:0011142 | 53_rand |
| MONDO:0009833 | 53_ref |
| MONDO:0009594 | 54_rand |
| MONDO:0010193 | 54_ref |
| MONDO:0012176 | 62_rand |
| MONDO:0011142 | 66_ref |
| MONDO:0013969 | 1189_rand |
column_filter -i tables/long_disease_cluster -c 1,2 -f 1 -k MONDO:0017999 -s c -m c
Output
| MONDO:0017999 | 36_rand |
| MONDO:0017999 | 53_ref |
| MONDO:0017999 | 53_rand |
Como vemos visto, el ejemplo anterior nos devuelve varios MONDOs que cumplen la condición de match completo en la columna 1. Vamos a ampliar el caso anterior para que solo nos devuelva el MONDO que en la segunda columna (flag -f) tiene el cluster '53_ref'
Input
column_filter -i tables/long_disease_cluster -c 1,2 -f 1,2 -k MONDO:0017999%53_ref -s c -m c
Output
| MONDO:0017999 | 53_ref |
Vamos a obtener las filas que contienen o bien "MONDO:0008995" o bien "MONDO:0013969".
Input
column_filter -i tables/long_disease_cluster -c 1,2 -f 1 -k MONDO:0008995&MONDO:0013969 -s c -m c
Output
| MONDO:0008995 | 19_ref |
| MONDO:0013969 | 1189_rand |
Vamos a obtener las filas que contengan el substring "ref" en la segunda columna (cambiando el flag -m o --mode a i (de include)).
Input
column_filter -i tables/long_disease_cluster -c 1,2 -f 2 -k ref -s c -m i
Output
| MONDO:0008995 | 19_ref |
| MONDO:0014823 | 25_ref |
| MONDO:0017999 | 53_ref |
| MONDO:0009833 | 53_ref |
| MONDO:0010193 | 54_ref |
| MONDO:0011142 | 66_ref |
Si lo que nos interesa no es obtener los registros que cumplen el patrón, sino los que no lo cumplen, podemos usar el flag -r o --reverse. Esto es válido tanto para un match completo como parcial. En este caso vamos a enseñar el mismo ejemplo que el anterior, pero con el caso reverso, por lo que en vez de obtener los registros que contienen "ref", obtendremos los que no lo contienen ("rand")
Input
column_filter -i tables/long_disease_cluster -c 1,2 -f 2 -k ref -s c -m i --reverse
Output
| MONDO:0007172 | 22_rand |
| MONDO:0017999 | 36_rand |
| MONDO:0017999 | 53_rand |
| MONDO:0011142 | 53_rand |
| MONDO:0009594 | 54_rand |
| MONDO:0012176 | 62_rand |
| MONDO:0013969 | 1189_rand |
En el caso que filtrabamos por MONDO:0017999 en la primera columna, vimos que encontrabamos 3 clústeres, 36_rand, 53_ref y 53_rand. En este caso, para quedarnos con distintos subsets, podemos utilizar el match parcial. Por ejemplo, para quedarnos con los MONDO:0017999 del cluster 53
Input
column_filter -i tables/long_disease_cluster -c 1,2 -f 1,2 -k MONDO:0017999%53 -s c -m i
Output
| MONDO:0017999 | 53_ref |
| MONDO:0017999 | 53_rand |
Y para quedarnos con los MONDO:0017999 de clusteres random
Input
column_filter -i tables/long_disease_cluster -c 1,2 -f 1,2 -k MONDO:0017999%rand -s c -m i
Output
| MONDO:0017999 | 36_rand |
| MONDO:0017999 | 53_rand |
Hasta ahora hemos estado viendo como hacer matches que se cumplan en todas las columnas. Si queremos buscar keywords en varias columnas pero que el patrón se cumpla solo en ALGUNA de las columnas, podemos cambiar el -s o --search a "s" (some)
Por ejemplo, si queremos quedarnos con los registros que contengan MONDO:0008995 o MONDO:0013969 en la primera columna o 22_rand o 66_ref en la segunda columna, podemos hacer lo siguiente:
Input
column_filter -i tables/long_disease_cluster -c 1,2 -f 1,2 -k MONDO:0008995&MONDO:0013969%22_rand&66_ref -s s -m c
Output
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_rand |
| MONDO:0011142 | 66_ref |
| MONDO:0013969 | 1189_rand |
Pasa una tabla del formato long al formato wide
En ocasiones, al trabajar con flujos como el de autoflow, lanzamos tareas paralelizadas con distintas conmbinaciones de trabajo, por ejemplo: red (ORPHA y MONDO) y tipo de clustering (CPM y HLC) y volcamos distintas métricas en un archivo común, del estilo:
| ORPHA | CPM | N_CLUSTERS | 500 |
| ORPHA | CPM | CLUSTER_SIZE | 10 |
| ORPHA | HLC | N_CLUSTERS | 600 |
| ORPHA | HLC | CLUSTER_SIZE | 12 |
| MONDO | CPM | N_CLUSTERS | 550 |
| MONDO | CPM | CLUSTER_SIZE | 11 |
| MONDO | HLC | N_CLUSTERS | 650 |
| MONDO | HLC | CLUSTER_SIZE | 13 |
En lo que vemos que las dos primeras columnas son factores (red y tipo de clustering), la tercera es la métrica medida y la cuarta es el valor
que toma la misma. Que es lo que se llamaría el formato "long" de una tabla (ejemplo de casos long y wide)
Sin embargo, para poder utilizar algunos métodos de graficado de CanvasXpress o para ver la tabla de métricas de una forma más sencilla,
necesitamos transformar esta tabla a un formato "wide". Es en este caso cuando se utiliza el método create_metric_table.
Este método es un tanto especial en cuanto a la mayoría de sus parámetros son posicionales. Por orden, los argumentos son:
Siendo los tres obligatorios.
Imaginando que tenemos una tabla de entrada con las columnas que representan "nombre de la red, tipo de clustering, tipo de red, métrica, valor" , el comando sería algo como:
Input
| red1 | HLC | genes | cl_num | 1988 |
| red1 | HLC | genes | cl_size_mean | 10 |
| red2 | CPM | genes | cl_num | 2000 |
| red2 | CPM | genes | cl_size_mean | 15 |
| red3 | HLC | phenotypes | cl_num | 3000 |
| red3 | HLC | phenotypes | cl_size_mean | 20 |
| red4 | CPM | phenotypes | cl_num | 4000 |
| red4 | CPM | phenotypes | cl_size_mean | 25 |
create_metric_table tables/long_table red,metodo,tipo outputs/wide_table
Output
| red | metodo | tipo | cl_num | cl_size_mean |
| red1 | HLC | genes | 1988 | 10 |
| red2 | CPM | genes | 2000 | 15 |
| red3 | HLC | phenotypes | 3000 | 20 |
| red4 | CPM | phenotypes | 4000 | 25 |
Opcionalmente, se puede pasar un flag -c para devolver otra tabla con los valores corruptos, es decir, aquellos que no se han podido transformar a formato wide porque falta algún valor de los factores.
Se utiliza en una tabla para dada una columna como referencia, que tenga valores repetidos, por ejemplo un identificador, agregarte el/los valores de otra(s) columna(s) en función de la de referencia.
En este caso, se desagregan los valores de la tercera columna, amoldando el resto de columnas según la cantidad de valores en cada fila de la tercera columna. Para ello el flag -i hace referencia a la tabla de entrada, el flag -x a la columna que queremos desagregar (en base 1). Con el flag -s indicamos el separador que se ha utilizado en esa columna agregada.
Input
| HGNC:21197 | mRNA | 483_ref,1039_ref,1071_ref |
| HGNC:21143 | mRNA | 211_ref,4705_ref |
| HGNC:21457 | tRNA | 305_ref,304_ref |
desaggregate_column_data -i tables/cluster_genes_dis_agg -x 3 -s ,
Output
| HGNC:21197 | mRNA | 483_ref |
| HGNC:21197 | mRNA | 1039_ref |
| HGNC:21197 | mRNA | 1071_ref |
| HGNC:21143 | mRNA | 211_ref |
| HGNC:21143 | mRNA | 4705_ref |
| HGNC:21457 | tRNA | 305_ref |
| HGNC:21457 | tRNA | 304_ref |
Si existe más de una columna agregada, se puede indicar con el flag -x, separándolas por comas. Se asume que todos las columnas agregadas van a tener la misma cantidad de elementos para una determinada fila (ejemplo 1 columna con pat1,pat2,pat y otra con male,male,female).
Input
| HGNC:21197 | mRNA | SNP1,SNP3,SNP4 | 483_ref,1039_ref,1071_ref |
| HGNC:21143 | mRNA | SNP5,SNP6 | 211_ref,4705_ref |
| HGNC:21457 | tRNA | SNP12,SNP13 | 305_ref,304_ref |
desaggregate_column_data -i tables/cluster_genes_dis_agg2 -x 3,4 -s ,
Output
| HGNC:21197 | mRNA | SNP1 | 483_ref |
| HGNC:21197 | mRNA | SNP3 | 1039_ref |
| HGNC:21197 | mRNA | SNP4 | 1071_ref |
| HGNC:21143 | mRNA | SNP5 | 211_ref |
| HGNC:21143 | mRNA | SNP6 | 4705_ref |
| HGNC:21457 | tRNA | SNP12 | 305_ref |
| HGNC:21457 | tRNA | SNP13 | 304_ref |
Convertir una tabla de formato excel a formato plano (CSV,TSV,etc).
En este ejemplo se muestra cómo convertir una tabla de formato excel a formato plano (CSV,TSV,etc). El archivo de excel con 2 hojas es el siguiente:
Vamos a sacar las 3 primeras columnas de la primera hoja del archivo special_files/scRNAseq.xlsx y convertirlo en formato plano tabular. Para ello utilizamos el flag -i para el archivo de entrada, -c para las columnas a extraer y -s para la hoja a utilizar.
Input
excel_to_tabular -i special_files/scRNAseq.xlsx -c 1,2,3 -s 1
Output
| genes | cell1 | cell2 |
| gene1 | 3 | 0 |
| gene2 | 0 | 4 |
| gene3 | 0 | 0 |
| gene25000 | 0 | 3 |
En este caso, sacamos las dos primeras y dos últimas columnas de la segunda hoja del mismo archivo
Input
excel_to_tabular -i special_files/scRNAseq.xlsx -c 1-2,4-5 -s 2
Output
| genes | cell5 | cell7 | cell15000 |
| gene5 | 36 | 3 | 54 |
| gene6 | 0 | 67 | 5 |
| gene8 | 50 | 3 | 9 |
| gene25000 | 6 | 87 | 8 |
Si queremos sacar todas las columnas, pero no sabemos de antemano cuantas son, podemos utilizar el valor 0 para indicar que queremos todas las columnas.
Input
excel_to_tabular -i special_files/scRNAseq.xlsx -c 0 -s 1
Output
| genes | cell1 | cell2 | cell3 | cell10000 |
| gene1 | 3 | 0 | 7 | 4 |
| gene2 | 0 | 4 | 5 | 5 |
| gene3 | 0 | 0 | 4 | 0 |
| gene25000 | 0 | 3 | 0 | 0 |
A parte de las columnas, también se pueden elegir las filas que sacar de la tabla (por defecto, se sacan todas, pero podemos seleccionar las que queramos)
En este caso, vamos a obtener las filas 1,3 y las columnas 1,3,4 de la primera hoja
Input
excel_to_tabular -i special_files/scRNAseq.xlsx -r 1,3 -c 1,3,4 -s 1
Output
| genes | cell2 | cell3 |
| gene2 | 4 | 5 |
Este binario presenta cierto solapamiento con el el binario "column_filter", si bien el solapamiento no 100% ya que column_filter acepta los keywords mediante una string y este binario acepta un archivo de una columna con los términos a filtrar.
Se utiliza para filtrar las filas que nos interesan de una o más tablas en función a una serie de valores que se pasan
Tenemos nuestra tabla con la primera columna teniendo el identificador de una red (la que nos interesa para poder filtrar), y las otras columnas siendo factores y metrica-valor. Tenemos otro archivo en el que tenemos los identificadores de las redes que queremos filtrar (red1 y red3).
Pasamos la tabla de interés tabla como input al flag -i y la columna en la que están los valores que filtrarán las filas con el flag -c. El archivo de una columna con los IDs de redes que queremos filtrar se pasan al flag -t. Pasamos el path a la carpeta (si, a una carpeta, ya que el flag de input -f puede aceptar más de una tabla, separada por comas, para ser filtrada) en el que queremos que se escriba la/s tabla/s filtrada/s con el flag -o y podemos añadir un prefijo para el nombre de la tabla de salida si nos interesa (en este caso usamos "filtered_" en este caso) con el flag --prefix
Input
| red1 | HLC | genes | cl_num | 1988 |
| red1 | HLC | genes | cl_size_mean | 10 |
| red2 | CPM | genes | cl_num | 2000 |
| red2 | CPM | genes | cl_size_mean | 15 |
| red3 | HLC | phenotypes | cl_num | 3000 |
| red3 | HLC | phenotypes | cl_size_mean | 20 |
| red4 | CPM | phenotypes | cl_num | 4000 |
| red4 | CPM | phenotypes | cl_size_mean | 25 |
Archivo de 1 columna con los registros que queremos filtrar
| red1 |
| red3 |
filter_by_list -f tables/long_table -c 1 -t tables/nets_to_filter --prefix filtered_ -o outputs
Output
outputs/filtered_long_table
| red1 | HLC | genes | cl_num | 1988 |
| red1 | HLC | genes | cl_size_mean | 10 |
| red3 | HLC | phenotypes | cl_num | 3000 |
| red3 | HLC | phenotypes | cl_size_mean | 20 |
Si en vez de querer quedarnos con todas las filas que tengan los términos de la tabla que pasamos con el flag -t, queremos quedarnos con todas las filas que no tengan esos términos, podemos activar el flag booleano --blacklist.
Repitiendo el mismo ejemplo anterior, pero activando ese flag, tenemos:
Input
| red1 | HLC | genes | cl_num | 1988 |
| red1 | HLC | genes | cl_size_mean | 10 |
| red2 | CPM | genes | cl_num | 2000 |
| red2 | CPM | genes | cl_size_mean | 15 |
| red3 | HLC | phenotypes | cl_num | 3000 |
| red3 | HLC | phenotypes | cl_size_mean | 20 |
| red4 | CPM | phenotypes | cl_num | 4000 |
| red4 | CPM | phenotypes | cl_size_mean | 25 |
Archivo de 1 columna con los registros que queremos omitir
| red1 |
| red3 |
filter_by_list -f tables/long_table -c 1 -t tables/nets_to_filter --prefix blackfiltered_ -o outputs --blacklist
Output
outputs/blackfiltered_long_table
| red2 | CPM | genes | cl_num | 2000 |
| red2 | CPM | genes | cl_size_mean | 15 |
| red4 | CPM | phenotypes | cl_num | 4000 |
| red4 | CPM | phenotypes | cl_size_mean | 25 |
Si en vez de querer filtrar los elementos de la tabla por un match exacto, queremos que sea por un match parcial, podemos activar el flag booleano --not_exact_match
En la tabla siguiente, vamos a quedarnos con todos los clústeres de referencia y descartar los random, indicando que los valores que queremos filtrar en nuestra tabla de entrada dada con el flag -i están en la segunda columna (-c 2) y el archivo que pasamos para filtrar con el flag -t solo tiene el valor 'ref', que será usado para hacer un match parcial al haber usado el flag --not_exact_match
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_rand |
| MONDO:0014823 | 25_ref |
| MONDO:0017999 | 53_rand |
| MONDO:0009833 | 53_ref |
| MONDO:0009594 | 54_rand |
| MONDO:0010193 | 54_ref |
| MONDO:0012176 | 62_rand |
| MONDO:0011142 | 66_ref |
| MONDO:0013969 | 1189_rand |
Archivo de 1 columna con los registros que queremos filtrar
| ref |
filter_by_list -f tables/disease_cluster_ref_rnd -c 2 -t tables/clusts_to_filter --prefix ref_filtered_ -o outputs --not_exact_match
Output
outputs/ref_filtered_disease_cluster_ref_rnd
| MONDO:0008995 | 19_ref |
| MONDO:0014823 | 25_ref |
| MONDO:0009833 | 53_ref |
| MONDO:0010193 | 54_ref |
| MONDO:0011142 | 66_ref |
Como se ha comentado antes, el flag -f acepta múltiples tablas separadas por comas. Es por ello que el flag -o para el output indica carpeta de salida y no archivo de salida. Además, si vamos a escribir los archivos en la misma carpeta, podemos utilizar el flag --prefix para que no se escriban con el mismo nombre y nos reemplacen las tablas de entrada.
Por lo tanto, podemos filtrar varias tablas a la vez utilizando el mismo archivo de filtrado. Esto es util si tenemos distintos archivos de métricas con los mismos identificadores y queremos filtrar todos ellos por los mismos términos.
Se utiliza para obtener un subset de la tabla original, con las columnas pedidas por el usuario
La tabla de entrada se indica con el flag -i. Las columnas a obtener se indican con el flag -c, siendo índices numéricos en base 1, separados por comas, y pudiendo utilizar un guión para seleccionar rango de columnas.
En este caso, vamos a coger las columnas 1,3,4 y 5 , que como veremos, para mostrar la funcionalidad, lo hacemos pidiendo la columna 1 y luego las columnas 3-5.
Input
| col-1 | col-2 | col-3 | col-4 | col-5 |
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
get_columns -i tables/simple_table -c 1,3-5
Output
| col-1 | col-3 | col-4 | col-5 |
| 1 | 3 | 4 | 5 |
| 6 | 8 | 9 | 10 |
| 11 | 13 | 14 | 15 |
Si se activa el flag -H para indicar que la tabla tiene header, podemos pedir entonces también las columnas que nos interesan dando sus nombres separados por comas. (OJO: la tabla puede tener header igualmente, que si nos interesa indicar las columnas por índices numéricos, podemos utilizar el script igualmente sin activar el flag -H, tal y como hemos hecho en el ejemplo anterior)
En este caso, vamos a coger las columnas col-1,col-3,col-4 y col-5, las mismas del ejemplo anterior, pero esta vez utilizando el nombre del cabecero de cada columna. Como veremos, en el caso de indicar columnas por nombres, también podemos utilizar el guión si nos interesa obtener un rango de columnas entre esas 2, pero en este caso utilizando "%-%" como separador del rango de las dos columnas (para evitar problemas con el guión como parte de nombre de la columna, tal y como se está viendo en este ejemplo, escogido a propósito)
Input
| col-1 | col-2 | col-3 | col-4 | col-5 |
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
get_columns -i tables/simple_table -H -c col-1,col-3%-%col-5
Output
| col-1 | col-3 | col-4 | col-5 |
| 1 | 3 | 4 | 5 |
| 6 | 8 | 9 | 10 |
| 11 | 13 | 14 | 15 |
Un script muy versatil en torno a la unión de dos tablas
El caso más básico será obtener los registros comunes de dos columnas de dos tablas distintas. Para este caso (además de todos los siguientes) el funcionamiento es simple: tenemos los flag -a y -b para indicar las dos tablas de interés, y los flags -A y -B para indicar las columnas de interés en las respectivas tablas. El flag -s nos servirá para indicar el separador (tabulador por defecto). Por defecto se obtienen los identificadores que estén en las dos tablas (inner join), que es el valor por defecto del flag --keep, aunque luego veremos otros casos de uso
Vamos a ver un ejemplo con dos tablas , ambas con una columna que tienen identificadores de enfermedad de MONDO, para encontrar los registros comunes entre ambas tablas.
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla B
| MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | HGNC:16873 | mRNA |
| MONDO:0012866 | HGNC:21197 | mRNA |
intersect_columns -a tables/disease_cluster -b tables/disease_gene -A 1 -B 1 -s \t
Output
| MONDO:0010193 |
| MONDO:0008995 |
Si no nos interesa obtener solo los registros comunes de las dos tablas en esa columna, sino también obtener el resto de columnas de ambas tablas, podemos usar el flag -full
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla B
| MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | HGNC:16873 | mRNA |
| MONDO:0012866 | HGNC:21197 | mRNA |
intersect_columns -a tables/disease_cluster -b tables/disease_gene -A 1 -B 1 -s \t --keep c --full
Output
| MONDO:0010193 | 54_ref | MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | 19_ref | MONDO:0008995 | HGNC:16873 | mRNA |
Hemos visto antes un ejemplo de inner join, que es el caso por defecto. Con el binario de table_linker podemos también podemos utilizar los casos de left join. y right join.
No obstante, con intersect_columns podemos podemos obtener los registros específicos de una tabla, ya sea la A o la B, utilizando el flag --keep. Por ejemplo, si queremos quedarnos con los registros que son específicos de la tabla A, podemos usar el flag --keep a. Y si además nos interesa quedarnos con el resto de columnas de la tabla A para los registros específicos de esta tabla, también podemos usar el flag --full. En el próximo ejemplo, enseñamos como devolver los registros específicos de la tabla A , pero sin devolver el resto de columnas (que podríamos hacer con el flag --full)
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla B
| MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | HGNC:16873 | mRNA |
| MONDO:0012866 | HGNC:21197 | mRNA |
intersect_columns -a tables/disease_cluster -b tables/disease_gene -A 1 -B 1 --keep a
Output
| MONDO:0007172 |
De la misma manera, si queremos quedarnos con los registros específicos de la tabla B, podemos usar el flag --keep b. Finalmente, si queremos los registros específicos de la tabla A y los específicos de la tabla B, podemos usar el flag --keep ab (este caso sería el complementario de --keep c, en el que se obtenían los comunes de ambos). Vamos a mostrar este caso, devolviendo además el resto de columnas de las 2 tablas para esos registros
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla B
| MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | HGNC:16873 | mRNA |
| MONDO:0012866 | HGNC:21197 | mRNA |
intersect_columns -a tables/disease_cluster -b tables/disease_gene -A 1 -B 1 --keep ab --full
Output
| MONDO:0007172 | 22_ref | |
| MONDO:0012866 | HGNC:21197 | mRNA |
Aunque este binario tenga cierto solapamiento de uso con "intersect_columns" y "table_linker" la diferencia que veo es que puede unir N cantidad indefinida de tablas (basándose en que la columna para realizar la unión de todas las tablas sea siempre la primera)
Se utiliza para realizar un merge de N cantidad de tablas en base a su primera columna con identificadores compartidos.
En este script, el argumento para las tablas de entrada es posicional (pudiendo unir N cantidad de tablas), con los paths a las tablas a unir separadas por espacios. Tiene un argumento, --fill_character, que se utiliza para rellenar los campos vacíos (aquellos registros que en una tabla tienen datos pero en otra no), que por defecto está a "-"
En este caso, se unen las tablas tables/disease_cluster, tables/disease_gene y tables/mondo_to_orpha, y se rellenan los campos vacíos con "NA".
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Segunda tabla
| MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | HGNC:16873 | mRNA |
| MONDO:0012866 | HGNC:21197 | mRNA |
Tercera tabla
| MONDO:0008995 | ORPHA:3472 |
| MONDO:0012866 | ORPHA:171629 |
merge_tabular tables/disease_cluster tables/disease_gene tables/mondo_to_orpha --fill_character 'NA'
Output
| MONDO:0008995 | 19_ref | HGNC:16873 | mRNA | ORPHA:3472 |
| MONDO:0007172 | 22_ref | 'NA' | 'NA' | 'NA' |
| MONDO:0010193 | 54_ref | HGNC:3527 | tRNA | 'NA' |
| MONDO:0012866 | 'NA' | HGNC:21197 | mRNA | ORPHA:171629 |
Se utiliza para obtener el número de ocurrencias de todos los términos en una columna de una tabla
Se indica la tabla a utilizar con el flag -i y la columna (indice basado en 1) en la que queremos obtener los conteos con el flag -x
Vamos a ver la cantidad de ocurrencias de los distintos términos en la columna 2 de la tabla 'cluster_genes_dis_agg'
Input
| HGNC:21197 | mRNA | 483_ref,1039_ref,1071_ref |
| HGNC:21143 | mRNA | 211_ref,4705_ref |
| HGNC:21457 | tRNA | 305_ref,304_ref |
records_count -i tables/cluster_genes_dis_agg -x 2
Output
| mRNA | 2 |
| tRNA | 1 |
Se utiliza cuando tenemos una tabla con datos que tiene alguna columna con una serie de identificadores (ej: ensemblIDs y terminos GO asociados) y tenemos otra tabla a parte que queremos utilizar como diccionario para traducir unos valores por otros (ej: tabla con EnsemblIDs y su gene symbol correspondiente)
Tenemos nuestra tabla con datos de Identificadores de MONDO y cluster/es donde se ha encontrado esa enfermedad de MONDO. Luego tenemos otro archivo que nos relaciona cada identificador de MONDO con su identificador de ORPHA correspondiente. Utilizamos ese archivo para traducir los identificadores de MONDO por los de ORPHA en la primera tabla
Pasamos la primera tabla como input al flag -i y el diccionario al flag -I. Luego indicamos que queremos reemplazar los términos de la columna 1 de la tabla de entrada con el flag -c, y que queremos utilizar la columna 1 del diccionario como clave de búsqueda con el flag -f (from). Finalmente, indicamos que queremos reemplazar los términos de la columna 1 por los términos de la columna 2 del diccionario con el flag -t (to).
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla diccionario para reemplazar
| MONDO:0008995 | ORPHA:3472 |
| MONDO:0012866 | ORPHA:171629 |
standard_name_replacer -i tables/disease_cluster -I tables/mondo_to_orpha -c 1 -f 1 -t 2
Output
| ORPHA:3472 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Como hemos podido comprobar en el ejemplo anterior, si no hay un término en el diccionario para un identificador de la tabla de entrada, ese identificador se queda sin traducir. Si queremos eliminar esos registros que no se han podido traducir, podemos añadir el flag -u al comando.
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla diccionario para reemplazar
| MONDO:0008995 | ORPHA:3472 |
| MONDO:0012866 | ORPHA:171629 |
standard_name_replacer -i tables/disease_cluster -I tables/mondo_to_orpha -c 1 -f 1 -t 2 -u
Output
| ORPHA:3472 | 19_ref |
Se utiliza para obtener un subset de la tabla original, empezando por la fila X y cogiendo Y filas desde ahí.
La tabla de entrada se indica con el flag -i. La fila por la que se empieza con el flag -s o --start_line (indice basado en 1) y la cantidad de filas que se extraen desde ese punto con el flag -l o --lines_to_subset. Además, si la tabla original tiene un header y se quiere mantener en la tabla subseteada, se puede utilizar el flag -H o --header
En este caso, vamos a coger 4 filas de la tabla de métricas, empezando por la fila 3 y manteniendo el header.
Input
| sample | initial_total_sequences | initial_read_max_length | initial_read_min_length | initial_%gc | |
| CTL_1_cell | 11437331.0 | 76.0 | 35.0 | 45.0 | |
| CTL_1_exo | 10668412.0 | 76.0 | 35.0 | 48.0 | |
| CTL_2_cell | 20503996.0 | 76.0 | 35.0 | 44.0 | |
| CTL_2_exo | 9322480.0 | 76.0 | 35.0 | 47.0 | |
| CTL_3_cell | 20342853.0 | 76.0 | 35.0 | 46.0 | |
| CTL_3_exo | 18394272.0 | 76.0 | 35.0 | 48.0 | |
| CTL_4_cell | 15729473.0 | 76.0 | 35.0 | 45.0 | |
| CTL_4_exo | 12505200.0 | 76.0 | 35.0 | 49.0 | |
| CTL_5_cell | 12829784.0 | 76.0 | 35.0 | 45.0 | |
| CTL_5_exo | 9072750.0 | 76.0 | 35.0 | 49.0 | |
| DOX_1_cell | 37629252.0 | 76.0 | 35.0 | 45.0 | |
| DOX_1_exo | 21945299.0 | 76.0 | 35.0 | 46.0 | |
| DOX_2_cell | 17915632.0 | 76.0 | 35.0 | 44.0 | |
| DOX_2_exo | 5919977.0 | 76.0 | 35.0 | 50.0 |
subset_table -i tables/metrics_table -s 3 -l 4 -H
Output
| sample | initial_total_sequences | initial_read_max_length | initial_read_min_length | initial_%gc | |
| CTL_2_cell | 20503996.0 | 76.0 | 35.0 | 44.0 | |
| CTL_2_exo | 9322480.0 | 76.0 | 35.0 | 47.0 | |
| CTL_3_cell | 20342853.0 | 76.0 | 35.0 | 46.0 | |
| CTL_3_exo | 18394272.0 | 76.0 | 35.0 | 48.0 |
Si se quiere partir la tabla en distintos archivos, cada uno con K líneas, se puede utilizar el flag -k o --chunk_size en vez de los flags -s y -l. En este caso el flag de output -o indica la carpeta donde se guardarán los archivos.
En este caso, vamos a partir la tabla de clusters de enfermedades en distintos archivos, cada uno con 4 líneas (veremos que el ultimo se queda con 2, ya que la tabla inicial tiene 10 registros)
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_rand |
| MONDO:0014823 | 25_ref |
| MONDO:0017999 | 53_rand |
| MONDO:0009833 | 53_ref |
| MONDO:0009594 | 54_rand |
| MONDO:0010193 | 54_ref |
| MONDO:0012176 | 62_rand |
| MONDO:0011142 | 66_ref |
| MONDO:0013969 | 1189_rand |
subset_table -i tables/disease_cluster_ref_rnd -k 4 -o outputs/subset_table
Output
outputs/subset_table/disease_cluster_ref_rnd_chunk0
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_rand |
| MONDO:0014823 | 25_ref |
| MONDO:0017999 | 53_rand |
outputs/subset_table/disease_cluster_ref_rnd_chunk1
| MONDO:0009833 | 53_ref |
| MONDO:0009594 | 54_rand |
| MONDO:0010193 | 54_ref |
| MONDO:0012176 | 62_rand |
outputs/subset_table/disease_cluster_ref_rnd_chunk2
| MONDO:0011142 | 66_ref |
| MONDO:0013969 | 1189_rand |
Si se quiere partir la tabla en una cantidad fija de N archivos , cada uno de ellos con la misma cantidad de registros, se puede utilizar el flag -n o --number_of_files en vez de los flags -s y -l o --chunk_size. En este caso el flag de output -o también indica la carpeta donde se guardarán los archivos.
En este caso, vamos a partir la tabla de clusters de enfermedades en 2 archivos
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_rand |
| MONDO:0014823 | 25_ref |
| MONDO:0017999 | 53_rand |
| MONDO:0009833 | 53_ref |
| MONDO:0009594 | 54_rand |
| MONDO:0010193 | 54_ref |
| MONDO:0012176 | 62_rand |
| MONDO:0011142 | 66_ref |
| MONDO:0013969 | 1189_rand |
subset_table -i tables/disease_cluster_ref_rnd -n 2 -o outputs/subset_table2
Output
outputs/subset_table2/disease_cluster_ref_rnd_chunk0
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_rand |
| MONDO:0014823 | 25_ref |
| MONDO:0017999 | 53_rand |
| MONDO:0009833 | 53_ref |
outputs/subset_table2/disease_cluster_ref_rnd_chunk1
| MONDO:0009594 | 54_rand |
| MONDO:0010193 | 54_ref |
| MONDO:0012176 | 62_rand |
| MONDO:0011142 | 66_ref |
| MONDO:0013969 | 1189_rand |
Parte del comportamiento de este binario se puede emular usando el binario "intersect_columns" con los flags adecuados, pero no sé si hay algo que no sea redudante entre los dos binarios
Se utiliza para realizar un merge de dos tablas en base a una columna con identificadores compartidos.
Se utiliza como tabla base la que se da con el flag -i, y la que se va a mergear con el flag -l, la co. Esto sería equivalente a un left join. Para obtener un right join, tan solo tendríamos que alternar los flags que damos a cada tabla (hacer un left join pero con la linker como input)
Por defecto, se espera que el identificador en la tabla input esté en la primera columna, y todo el resto de columnas de esta tabla se mantendrán. Con respecto a la tabla linker, podemos indicar la columna que contiene el identificador con el flag --id_linker (por defecto a 0), y las columnas que queremos mantener en el merge, separadas por comas, con el flag --columns2linker (por defecto a 1)
Tambien tenemos el flag -s para indicar que separador queremos para la tabla resultante (por defecto tabulación)
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla a enlazar
| MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | HGNC:16873 | mRNA |
| MONDO:0012866 | HGNC:21197 | mRNA |
table_linker -i tables/disease_cluster -l tables/disease_gene -s
Output
| MONDO:0008995 | 19_ref | HGNC:16873 |
| MONDO:0007172 | 22_ref | |
| MONDO:0010193 | 54_ref | HGNC:3527 |
Utilizamos el flag --columns2linker para indicar que queremos las dos columnas de la tabla linker, no solo la primera. Usamos también el flag --id_linker para indicar qué columna contiene los identificadores para el merge en la tabla linker, aunque en este caso coincida con el valor por defecto
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla a enlazar
| MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | HGNC:16873 | mRNA |
| MONDO:0012866 | HGNC:21197 | mRNA |
table_linker -i tables/disease_cluster -l tables/disease_gene --columns2linker 2,3 --id_linker 1
Output
| MONDO:0008995 | 19_ref | HGNC:16873 | mRNA |
| MONDO:0007172 | 22_ref | ||
| MONDO:0010193 | 54_ref | HGNC:3527 | tRNA |
Para mantener solo los registros comunes a ambas tablas podemos usar el flag --drop. Esto sería equivalente a un inner join
Input
| MONDO:0008995 | 19_ref |
| MONDO:0007172 | 22_ref |
| MONDO:0010193 | 54_ref |
Tabla a enlazar
| MONDO:0010193 | HGNC:3527 | tRNA |
| MONDO:0008995 | HGNC:16873 | mRNA |
| MONDO:0012866 | HGNC:21197 | mRNA |
table_linker -i tables/disease_cluster -l tables/disease_gene --columns2linker 2,3 --drop
Output
| MONDO:0008995 | 19_ref | HGNC:16873 | mRNA |
| MONDO:0010193 | 54_ref | HGNC:3527 | tRNA |
Añade una o varias etiquetas (ej: factores adicionales de una variable y su valor) a todas las filas de una tabla
Se pasa la tabla a la que se quiere añadir los tags con el flag -i y un string con los tags separados por comas al flag -t
Input
| cl_num | 1988 |
| cl_size_min | 1 |
| cl_size_max | 296 |
| cl_size_median | 3.0 |
| cl_size_mean | 4.667505030181086 |
| cl_nodes_mean | 1.0 |
| cl_nodes | 9279 |
| cl_pairs | 147578 |
tag_table -i tables/cluster_stats -t red1,colapsada,traducida
Output
| red1 | colapsada | traducida | cl_num | 1988 |
| red1 | colapsada | traducida | cl_size_min | 1 |
| red1 | colapsada | traducida | cl_size_max | 296 |
| red1 | colapsada | traducida | cl_size_median | 3.0 |
| red1 | colapsada | traducida | cl_size_mean | 4.667505030181086 |
| red1 | colapsada | traducida | cl_nodes_mean | 1.0 |
| red1 | colapsada | traducida | cl_nodes | 9279 |
| red1 | colapsada | traducida | cl_pairs | 147578 |
Si en vez de pasarle un string separado por comas con los tags, se le pasa el nombre de un archivo, cmdtabs puede reconocerlo y en ese caso cargar el contenido del archivo para utilizarlo como tags. Se especifica en este caso con el flag -s cual es el separador en ese archvio
Input
| cl_num | 1988 |
| cl_size_min | 1 |
| cl_size_max | 296 |
| cl_size_median | 3.0 |
| cl_size_mean | 4.667505030181086 |
| cl_nodes_mean | 1.0 |
| cl_nodes | 9279 |
| cl_pairs | 147578 |
Tabla usada en el flag -t con los tags a añadir a la tabla de entrada (1 fila con los valores separados por tabulación)
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm |
tag_table -i tables/cluster_stats -t tables/tracker -s
Output
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_num | 1988 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_size_min | 1 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_size_max | 296 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_size_median | 3.0 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_size_mean | 4.667505030181086 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_nodes_mean | 1.0 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_nodes | 9279 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_pairs | 147578 |
Si le pasamos varios archivos separados por comas, leerá y utilizará cada uno de ellos para añadir los tags
Input
| cl_num | 1988 |
| cl_size_min | 1 |
| cl_size_max | 296 |
| cl_size_median | 3.0 |
| cl_size_mean | 4.667505030181086 |
| cl_nodes_mean | 1.0 |
| cl_nodes | 9279 |
| cl_pairs | 147578 |
Tablas usadas en el flag -t con los tags a añadir a la tabla de entrada (1 fila con los valores separados por tabulación)
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm |
tag_table -i tables/cluster_stats -t tables/tracker,tables/tracker -s
Output
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_num | 1988 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_size_min | 1 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_size_max | 296 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_size_median | 3.0 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_size_mean | 4.667505030181086 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_nodes_mean | 1.0 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_nodes | 9279 |
| MERGED_net_no_raw_cpm | MERGED | no | no | cpm | MERGED_net_no_raw_cpm | MERGED | no | no | cpm | cl_pairs | 147578 |
Se utiliza para convertir una tabla en formato TSV,CSV, etc en una tabla con la sintaxis necesaria para ser añadida a LaTeX
Se da la tabla con el flag -i
Input
| as | 1 | 20 |
| as | 2 | 30 |
| zz | 3 | 100 |
| zz | 4 | 110 |
transform_to_latex -i tables/cluster_genes_dis_desagg_3cols
Output
| \hline |
| as & 1 & 20 \\ \hline |
| as & 2 & 30 \\ \hline |
| zz & 3 & 100 \\ \hline |
| zz & 4 & 110 \\ \hline |
Si se quiere obtener un backbone algo más detallado con el que luego rellenar los campos restantes, se puede utilizar el parámetro --whole o -w
Input
| as | 1 | 20 |
| as | 2 | 30 |
| zz | 3 | 100 |
| zz | 4 | 110 |
transform_to_latex -i tables/cluster_genes_dis_desagg_3cols --whole
Output
| \begin{table}[!htbp] |
| \centering |
| \caption{} |
| \begin{tabular}{|l|l|l|} |
| \hline |
| as & 1 & 20 \\ \hline |
| as & 2 & 30 \\ \hline |
| zz & 3 & 100 \\ \hline |
| zz & 4 & 110 \\ \hline |
| \end{tabular} |
| \label{table:cluster_genes_dis_desagg_3cols} |
| \end{table} |
Se utiliza para transponer una tabla
Se transpone la tabla que se da con el flag -i
Input
| as | 1 | 20 |
| as | 2 | 30 |
| zz | 3 | 100 |
| zz | 4 | 110 |
transpose_table -i tables/cluster_genes_dis_desagg_3cols
Output
| as | as | zz | zz |
| 1 | 2 | 3 | 4 |
| 20 | 30 | 100 | 110 |