Genomics.IO 1.2.0

dotnet add package Genomics.IO --version 1.2.0
                    
NuGet\Install-Package Genomics.IO -Version 1.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Genomics.IO" Version="1.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Genomics.IO" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="Genomics.IO" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Genomics.IO --version 1.2.0
                    
#r "nuget: Genomics.IO, 1.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Genomics.IO@1.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Genomics.IO&version=1.2.0
                    
Install as a Cake Addin
#tool nuget:?package=Genomics.IO&version=1.2.0
                    
Install as a Cake Tool

Genomics — A Modern, High-Performance, Composable Genomics Foundation for .NET

CI NuGet Version .NET License: Apache-2.0 Course: MIT

This repository serves two purposes: the original Genomics for Software Engineers course in Course/, and the Genomics .NET platform it grew into. Course returners → start here.

Genomics is a .NET-native platform for genomic data processing: a strongly typed domain model, streaming parsers for the major sequencing file formats, sequence operations, indexing, algorithms, and composable pipelines: explicit interop with the established bioinformatics ecosystem (samtools, bcftools, minimap2, BWA, GATK) instead of reinventing it.

For .NET engineers, genomic data should feel like a first-class domain, not something you must always hand off to Python, Java, or C++ pipelines. That is what this platform is for.

The Course — the Original Content of This Repo

If you came here for the Genomics for Software Engineers curriculum, it lives on in Course/: the 12-week, hands-on crash course that teaches minimum-viable biology and maximum practical bioinformatics through software analogies, with a printable single-document version (genomics.docx).

The course is more than documentation: it is the learning foundation of this platform. Every concept taught there (coordinates, sequences, file formats, reads, alignments, variants) is being turned into a typed, tested, benchmarked primitive in the codebase. Learn the field in Course/, then follow how it becomes code here.

The Story

This repository grew out of a software engineer's ramp-up: joining a genomics project, finding no material between "PhD-level biology" and "tool docs for people who already know the field," and building a self-study curriculum from first principles: DNA as a data structure, the sequencer as a physical-to-digital converter, alignment as string matching, FASTA and VCF as data contracts.

Repository Layout

Path Purpose
Course/ The Genomics for Software Engineers curriculum + printable genomics.docx
docs/guides/ Step-by-step guides: quick start, then each file format (FASTQ, SAM, BAM, BAM indexes, VCF) and the sequence algorithms and pairwise alignment
Genomics.Core/ Domain foundation: 0-based/1-based genomic coordinates, chromosomes and contigs, loci and regions with interval algebra (distance, intersect, merge, subtract), normalized interval/region sets (union, intersect, subtract, complement) and a settled IntervalTree overlap index — with validation and the shared GenomicsException family every package builds on
Genomics.Sequences/ Typed molecular sequences over a compact Nucleotide primitive: DnaSequence, RnaSequence, ProteinSequence with strict alphabet validation, reverse complement, transcription, translation via the standard genetic code, content-based equality, and pairwise alignment (global, local, and seeded, with affine gaps and CIGAR output)
Genomics.Sequencing/ The sequencing domain: typed Read objects over DnaSequence + Phred QualityScores, and ReadPair groupings: the model FASTQ files load into
Genomics.IO/ Streaming, async, cancellable file-format readers and writers: FASTA, FASTQ (plain or gzip, auto-detected), VCF (headers, typed INFO/FORMAT, genotypes, gzip input), SAM (typed CIGAR/flags/tags, Alignment, gzip input), and BAM (BGZF block I/O, the binary header and record codecs, SAM⇄BAM round trips, BAI index build/.bai sidecar I/O, virtual-offset random access, and indexed region queries)
Genomics.Console/ A self-contained hands-on tour of the whole platform: run the tour
Genomics.Tests/ Unit tests: one project, folders per namespace (Core/, Sequences/, IO/, …)
Genomics.Benchmarks/ BenchmarkDotNet suites: throughput, allocations, and scaling curves for each foundation layer as features ship

Hands-on tour

Want to see the platform work end to end without writing any code? The Genomics.Console app walks through coordinates, sequence algorithms, and every supported file format using synthetic data it generates itself:

dotnet run --project Genomics.Console

It is a sample application (never packed or published), and verify runs every scenario as a self-test. See the tour guide for commands and options.

License

The platform — all code, tests, benchmarks, and project documentation — is licensed under Apache-2.0. The course materials in Course/ are licensed under MIT.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.0 100 10/3/2026
1.1.0 95 9/24/2026
1.0.0 114 9/16/2026

File-format foundation: streaming FASTA, FASTQ, SAM, VCF, and BAM readers and writers; gzip detection; BGZF block compression; the binary BAM wire format over the shared SAM record model; BAI index construction, serialization, and .bai sidecar I/O; virtual-offset random access and indexed region queries over compressed BAM.