YOKOFAKUN: Jugando con los esquemas #GA4GH y #Avro: mi libreta

(Wikipedia) Avro: “Avro es un marco de serialización de datos y llamadas a procedimientos remotos desarrollado dentro de Apache Hadoop proyecto. Usa JSON para definir tipos de datos y protocolos, y serializa datos en un formato binario compacto. Su uso principal es en Apache Hadoop, donde puede proporcionar tanto un formato de serialización para datos persistentes como un formato de conexión para la comunicación entre los nodos de Hadoop y desde los programas cliente a los servicios de Hadoop”.
Primero, descargamos el java herramientas y bibliotecas para Apache Avro
curl -L -o avro-tools-1.7.7.jar "http://www.eng.lsu.edu/mirrors/apache/avro/avro-1.7.7/java/avro-tools-1.7.7.jar"
A continuación, descargamos el esquemas definido por el ga4gh de github
curl -L -o schema.zip "https://github.com/ga4gh/schemas/archive/v0.5.1.zip"
unzip schema.zip
rm schema.zip

$ find -name "*.avdl"
./schemas-0.5.1/src/main/resources/avro/readmethods.avdl
./schemas-0.5.1/src/main/resources/avro/common.avdl
./schemas-0.5.1/src/main/resources/avro/wip/metadata.avdl
./schemas-0.5.1/src/main/resources/avro/wip/metadatamethods.avdl
./schemas-0.5.1/src/main/resources/avro/wip/variationReference.avdl
./schemas-0.5.1/src/main/resources/avro/variants.avdl
./schemas-0.5.1/src/main/resources/avro/variantmethods.avdl
./schemas-0.5.1/src/main/resources/avro/beacon.avdl
./schemas-0.5.1/src/main/resources/avro/references.avdl
./schemas-0.5.1/src/main/resources/avro/referencemethods.avdl
./schemas-0.5.1/src/main/resources/avro/reads.avdl
Esos esquemas pueden ser compilado en java utilizando las avro-herramientas
$ java -jar avro-tools-1.7.7.jar compile protocol schemas-0.5.1/src/main/resources/avro/ ./generated
Input files to compile:
  schemas-0.5.1/src/main/resources/avro/variants.avpr
  
$ find generated/org/ -name "*.java"
generated/org/ga4gh/GAPosition.java
generated/org/ga4gh/GAVariantSetMetadata.java
generated/org/ga4gh/GACall.java
generated/org/ga4gh/GAException.java
generated/org/ga4gh/GACigarOperation.java
generated/org/ga4gh/GAVariantSet.java
generated/org/ga4gh/GAVariants.java
generated/org/ga4gh/GAVariant.java
generated/org/ga4gh/GACallSet.java
generated/org/ga4gh/GACigarUnit.java
Como prueba, la siguiente fuente de Java utiliza las clases generadas por avro para crear nueve variantes y serializarlas en Avro

Compilar, archivar y ejecutar:

#compile classes
javac -d generated -cp avro-tools-1.7.7.jar -sourcepath generated:src generated/org/ga4gh/*.java src/test/TestAvro.java
# archive
jar cvf generated/ga4gh.jar -C generated org -C generated test
# run
java -cp avro-tools-1.7.7.jar:generated/ga4gh.jar test.TestAvro > variant.avro

Usamos avro-tools para convertir el archivo generado variante.avro a json

java -jar avro-tools-1.7.7.jar tojson variant.avro

Producción:

El Makefile completo

Eso es todo,
Pedro

Fuente del artículo

Deja un comentario