
[{"content":"I am a computer scientist, software engineer, and mathematician. My work primarily centers on data compression, high performance software (especially in Rust), and long-term AI research in the Paradigms of Intelligence team at Google.\nI also dedicate a significant part of my time to organizing Computer Science competitions. In particular, I am a member of the International Technical Committee of IOI (International Olympiads in Informatics), and I help organize various competitions in Italy and Switzerland. Recently, I was the main organizer of the European Girls Olympiads in Informatics 2026.\nMain Projects # 1. Image \u0026amp; Data Compression # JPEG XL: I was one of the main contributors of the libjxl reference encoder, standardization effort and format research. I am the main developer of jxl-rs, a fast Rust JPEG XL decoder used both in Firefox and Chrome.\nHigh-Speed Encoders (fpnge / fjxl): I wrote very fast PNG and JXL encoders. Slides about those encoders, with links to code on GitHub, can be found here.\nrbrotli-enc: I designed a fast, SIMD-based Rust Brotli encoder.\nIn my pursuit of faster compression code, I also contributed to a few features in the Rust language itself, most notably stabilizing target_feature_11 and working on designing better abstractions and features around SIMD code.\n2. Olympiads-related projects # wasm-ide: An entirely client-side IDE for C, C++ and Python, with full LSP integration. Nightly version here.\npixie: A system to automate the installation and management of computers during a large-scale informatics competition.\ntypst-translation: A typst-based system for translating task statements to different languages.\nI am also one of the main maintainers of various contest and task preparation software, such as CMS and task-maker-rust\n3. Publications # See my Google Scholar page.\nA notable recent work is the Mesanet paper.\nUniversity degrees \u0026amp; theses # PhD in Computer Science, University of Pisa, Pisa (2017-2021) Compression Techniques for Large Graphs: Theory and Practice (pdf, slides).\nMaster\u0026rsquo;s degree in Computer Science, Scuola Normale Superiore, Pisa (2015-2017)\nA new algorithmic framework for enumerating commutable set properties (pdf, slides).\nBachelor\u0026rsquo;s degree in Mathematics, Scuola Normale Superiore, Pisa (2012-2015)\nRicerca veloce di pattern comuni a due grafi (pdf, slides).\nPersonal Interests # Video Games: I enjoy JRPGs, city builders and good storytelling. Chrono Trigger is one of my favourite games of all time. For a more recent game, I really enjoyed playing Clair Obscur\nMusic: I frequently listen to classical, orchestral, and epic soundtrack music while working.\nScience Fiction \u0026amp; Fantasy: I really like reading books and manga, watching movies and anime. My favourite genres are science fiction and fantasy (especially if time travel is involved).\n","date":"8 September 2026","externalUrl":null,"permalink":"/about/","section":"Luca Versari","summary":"","title":"About me","type":"page"},{"content":"","date":"8 September 2026","externalUrl":null,"permalink":"/","section":"Luca Versari","summary":"","title":"Luca Versari","type":"page"},{"content":"I\u0026rsquo;ve spent the last months trying to figure out how to use data from Whole Genome Sequencing on various DNA analysis websites. While the output of WGS gives you all the information given by sites like 23-and-me and more, wrangling it into the correct format is a non-trivial task.\nAfter uncountable attempts, and many hours of CPU time, today I finally managed to produce an apparently correct file in 23-and-me format.\nDisclaimer: I am not a biologist, so the information below might be inaccurate, misleading, or even incorrect.\nWhole Genome Sequencing # Very briefly, the process of genome sequencing nowadays proceeds by\ncreating multiple copies of the DNA using PCR slicing up the DNA in short chunks reading a brief part of each chunk (100-150 bases) The output of this procedure is a set of so-called reads, and is usually saved in a format called FASTA (or FASTQ when a quality index for each basis is provided).\nAfterwards, the reads are aligned on a reference genome, i.e. for each read its most likely start and end position are determined (compared to a fixed assembly of the human genome). The DNA service that I used (DanteLabs) uses the human assembly 37 for this purpose.\nThe output of this procedure is typically a BAM file. This file contains all the information that was determined by the sequencing procedure.\nThe next step is Variant Calling, in which some algorithm determines what are the differences between the reference genome and the provided BAM file. The resulting file is a VCF (Variant Call Format) file. The most common type of differences are SNPs, Single Nucleotide Polymorphisms, and correspond to variations of a single DNA basis.\nSome services provide you a VCF file, but sometimes it\u0026rsquo;s just a filtered one, i.e. with just a subset of the SNPs. Trying to overcome this limitation motivated this journey: extracting all the information from a BAM file to be able to construct a 23-and-me file.\nFirst step: variant calling # After multiple attempts, I decided to use deepvariant for variant calling. Assuming that you are in the folder containing your BAM file, the following commands should run the variant calling procedure:\nwget ftp://ftp.ensembl.org/pub/release-75/fasta/homo_sapiens/dna/Homo_sapiens.GRCh37.75.dna.primary_assembly.fa.gz gunzip Homo_sapiens.GRCh37.75.dna.primary_assembly.fa.gz sudo docker run -v \u0026#34;/data:/data\u0026#34; -v \u0026#34;$(pwd)\u0026#34;:\u0026#34;/input\u0026#34; -v \u0026#34;$(pwd):/output\u0026#34; \\ google/deepvariant:\u0026#34;${BIN_VERSION}\u0026#34; /opt/deepvariant/bin/run_deepvariat \\ --model_type=WGS --ref=/input/Homo_sapiens.GRCh37.75.dna.primary_assembly.fa \\ --reads=/input/YOUR_BAM_FILE.bam --output_vcf=/output/calls.vcf \\ --output_gvcf=/output/calls.gvcf --num_shards=$(nproc) \\ --intermediate_results_dir=/data/genome This command assumes that you have a BAM file using the genome assembly 37, and that your /data/ folder contains sufficient free space. This procedure will take roughly a couple of days.\nSecond step: annotation # We now need to annotate the variants, assigning to each of them their names. This can be done as follows:\nwget ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606_b150_GRCh37p13/VCF/00-All.vcf.gz tabix 00-All.vcf.gz bgzip calls.vcf tabix calls.vcf.gz bcftools annotate -a 00-All.vcf.gz -c ID -Oz -o YOUR_NAME.annotated.vcf.gz calls.vcf.gz Third step: conversion to 23-and-me format # This uses code provided at https://github.com/2sh/vcf-to-23andme.git. We will use a different template file, more up to date, which you can find here.\npython vcf-to-23andme/data_to_db.py YOUR_NAME.annotated.vcf.gz vcf output_db.sql python vcf-to-23andme/db_to_23.py output_db.sql 23andme_v5_blank.txt genome_YOUR_NAME_v5_Full_20200228144640.txt This should be all!\n","date":"22 September 2020","externalUrl":null,"permalink":"/post/dna/","section":"Posts","summary":"","title":"Conversion between DNA analysis services","type":"post"},{"content":"","date":"22 September 2020","externalUrl":null,"permalink":"/post/","section":"Posts","summary":"","title":"Posts","type":"post"},{"content":"","date":"1 September 2020","externalUrl":null,"permalink":"/archives/","section":"Luca Versari","summary":"","title":"Archives","type":"page"},{"content":"Hello everyone! I just created this personal website, after almost 27 years of silence about myself.\nI hope you\u0026rsquo;ll enjoy visiting this website in the future, when it actually contains something :)\nStay tuned!\n","date":"1 September 2020","externalUrl":null,"permalink":"/post/hello/","section":"Posts","summary":"","title":"Hello!","type":"post"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","externalUrl":null,"permalink":"/true/","section":"True","summary":"","title":"True","type":"true"},{"content":"","externalUrl":null,"permalink":"/vs/","section":"Vs","summary":"","title":"Vs","type":"vs"}]