BioFSharp.FileFormats.INSDC 0.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package BioFSharp.FileFormats.INSDC --version 0.1.0
                    
NuGet\Install-Package BioFSharp.FileFormats.INSDC -Version 0.1.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="BioFSharp.FileFormats.INSDC" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BioFSharp.FileFormats.INSDC" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="BioFSharp.FileFormats.INSDC" />
                    
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 BioFSharp.FileFormats.INSDC --version 0.1.0
                    
#r "nuget: BioFSharp.FileFormats.INSDC, 0.1.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 BioFSharp.FileFormats.INSDC@0.1.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=BioFSharp.FileFormats.INSDC&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=BioFSharp.FileFormats.INSDC&version=0.1.0
                    
Install as a Cake Tool

BioFSharp.INSDC

Logo

Read/write support for INSDC XML records — BioProject, Study, Sample, Experiment, Run, Analysis, Submission, Receipt — as a direct dependency of BioFSharp.

Packages

Package Purpose
BioFSharp.FileFormats.INSDC C# type model auto-generated from the ENA SRA XSDs via dotnet-xscgen.
BioFSharp.IO.INSDC F# wrapper exposing read / readString / write / writeString per INSDC entity.

The C# split exists because there is no F# equivalent of XmlSchemaClassGenerator. Both packages target netstandard2.0.

Repo layout

.
├── build/                                  FAKE build project
├── docs/                                   Placeholder — no fsdocs site is published from this repo
├── plans/implementation.md                 Authoritative implementation plan
├── src/
│   ├── BioFSharp.FileFormats.INSDC/        C# generated type model
│   │   ├── schemas/                          Committed ENA XSDs
│   │   └── Generated/                          Tool output — do not hand-edit
│   └── BioFSharp.IO.INSDC/                 F# wrapper
└── tests/BioFSharp.INSDC.Tests/            xunit tests, with committed ENA fixtures

Build

First-time setup:

dotnet tool restore     # installs the pinned dotnet-xscgen

Then:

build.cmd               # Windows
./build.sh              # macOS / Linux

Other targets:

build.cmd runtests
build.cmd pack
build.cmd regenerateInsdcTypes   # only when the XSDs change

Generated type naming

dotnet xscgen derives C# type names mechanically from the XSDs, which produces verbose names like AnalysisTypeAnalysisTypeTranscriptomeAssembly. We clean these up via src/BioFSharp.FileFormats.INSDC/schemas/typename-substitutions.txt, passed to the tool with --tnsf. The substitution file:

  • Has one rule per line in the form A:<xscgen-default-name>=<substitute> (the A: prefix matches any type/member; lines starting with # are comments).
  • Documents its naming rules (A–F) in a header block — read those before adding rules so renames stay consistent.
  • Is the only place to change a generated type's name; never hand-edit files under Generated/.

To add or change a substitution:

  1. Edit typename-substitutions.txt. The left side is the name xscgen would emit without any substitution (the original XSD-derived path); the right side is the desired C# identifier. Pick a substitute that does not collide with another type — xscgen falls back to a generic name (e.g. <Name>Item) if the substitute clashes with an existing default.
  2. Run build.cmd regenerateInsdcTypes (or ./build.sh regenerateInsdcTypes).
  3. Commit both the updated substitution file and the regenerated files under src/BioFSharp.FileFormats.INSDC/Generated/.

Caveats:

  • xscgen's substitution file does not accept regex or dotted/nested names — Foo.Bar would emit invalid C# (class Foo.Bar). Substitutes must be flat C# identifiers.
  • Stay consistent with the rules already documented in the file's header. If a rename does not fit any existing rule, add a new lettered rule alongside the others.

Contributing

See AGENTS.md for repo conventions and plans/implementation.md for the implementation roadmap.

Documentation lives in the base BioFSharp docs rather than in this repo.

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 was computed.  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 (4)

Showing the top 4 NuGet packages that depend on BioFSharp.FileFormats.INSDC:

Package Downloads
BioFSharp.IO.INSDC

F# read/write support for INSDC (International Nucleotide Sequence Database Collaboration) XML records — BioProject, Study, Sample, Experiment, Run, Analysis, Submission, Receipt.

BioFSharp.INSDC.SQLite

SQLite-backed store for INSDC (International Nucleotide Sequence Database Collaboration) records — deconstructs BioProject, Study, BioSample, Experiment, and Run values into a normalized schema and reconstructs them on read.

BioFSharp.INSDC.ArcIR

INSDC-specific F1 adapter that maps BioProject, Study, Sample, Experiment, Run, Analysis, Submission, and Receipt records into the target-neutral BioFSharp.ArcIR graph.

BioFSharp.INSDC.Crawler

Crawls INSDC (International Nucleotide Sequence Database Collaboration) records from ENA — enumerates every run, experiment, sample, and study connected to a project accession and persists them via the BioFSharp.INSDC.SQLite store.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.0 203 8/28/2026
0.2.1 230 7/9/2026
0.2.0 231 7/9/2026
0.1.0 127 5/21/2026

initial release of the generated C# type model and F# wrapper for the INSDC file formats.
The type model covers all schemas from https://ftp.ebi.ac.uk/pub/databases/ena/doc/xsd/sra_1_5, but IO only supports the most common ones for now:
- BioProject
- Study
- BioSample
- Experiment
- Run
- Submission
- Analysis