BioFSharp.FileFormats.INSDC
0.1.0
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
<PackageReference Include="BioFSharp.FileFormats.INSDC" Version="0.1.0" />
<PackageVersion Include="BioFSharp.FileFormats.INSDC" Version="0.1.0" />
<PackageReference Include="BioFSharp.FileFormats.INSDC" />
paket add BioFSharp.FileFormats.INSDC --version 0.1.0
#r "nuget: BioFSharp.FileFormats.INSDC, 0.1.0"
#:package BioFSharp.FileFormats.INSDC@0.1.0
#addin nuget:?package=BioFSharp.FileFormats.INSDC&version=0.1.0
#tool nuget:?package=BioFSharp.FileFormats.INSDC&version=0.1.0
BioFSharp.INSDC
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>(theA: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:
- 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. - Run
build.cmd regenerateInsdcTypes(or./build.sh regenerateInsdcTypes). - 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.Barwould 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 | Versions 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. |
-
.NETStandard 2.0
- System.ComponentModel.Annotations (>= 5.0.0)
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.
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