An OBO file format parser, written in F#.
open OBO.NET
let testOntology = OboOntology.fromFile true filepath
OOP style (recommended):
let myOboTerm =
OboTerm.Create(
"TO:00000000",
Name = "testTerm",
CreatedBy = "myself"
)
Functional style:
let myOboTerm =
OboTerm.create
"TO:00000000"
(Some "testTerm")
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
(Some "myself")
None
let myOntology = OboOntology.create [myOboTerm] []
OboOntology.toFile "myOboOntology.obo" myOntology
is_a
s of a Termlet termOfInterest = testOntology.Terms[5]
let isAs = OboOntology.getIsAs termOfInterest testOntology
// output is a list of (input OboTerm * is_a OboTerm (if it exists in the given OboOntology))
is_a
s of a Term recursivelylet termOfInterest = testOntology.Terms[5]
let isAs = testOntology.GetParentOntologyAnnotations(termOfInterest.Id)
// output is an ISADotNet.OntologyAnnotation list
let isAsTerms = isAs |> List.map (fun oa -> testOntology.GetTerm(oa.TermAccessionString.ToString()))
// output is an OboTerm list
let termOfInterest = testOntology.Terms[5]
let relatedTerms = OboOntology.getRelatedTerms termOfInterest testOntology
// output is a list of (input OboTerm * relation as string * related OboTerm (if it exists in the given OboOntology))
let termOfInterest = testOntology.Terms[5]
let synonyms = OboOntology.tryGetSynonyms termOfInterest testOntology
// output is a seq of (TermSynonymScope * synonymous OboTerm (if it exists in the given OboOntology))
TermRelations are abstractions of all relations that an OboTerm can have with another one. Such TermRelations can be
Empty of SourceTerm
(if there is no TermRelation between a SourceTerm and a TargetTerm),TargetMissing of Relation * SourceTerm
(if there is a TermRelation between a SourceTerm and a TargetTerm but the TargetTerm is missing), Target of Relation * SourceTerm * TargetTerm
.
Relation is of generic type 'a
and can therefore be of any type that you prefer (e.g. string
or a custom-made Record or Union).let termOfInterest = testOntology.Terms[5]
let targetOfInterest = testOntology.Terms[7]
let emptyTermRelation = Empty termOfInterest
let targetMissingTermRelation = TargetMissing ("unconnected_to", termOfInterest)
let targetTermRelation = Target ("connected_to", termOfInterest, targetOfInterest)
// exemplary
type MyRelation =
| IsA
| HasA
| PartOf
| ConnectedTo
| Unknown of string
let targetTermRelation' = Target (ConnectedTo, termOfInterest, targetOfInterest)
let termOfInterest = testOntology.Terms[5]
let relations = OboOntology.getRelations termOfInterest testOntology
// output is a list of TermRelations<string> (includes all relationships and is_as)
If not already done, install .NET SDK >= 6.
In any shell, run build.cmd <target>
where <target>
may be
<target>
is empty, it just runs dotnet build after cleaning everythingRunTests
to run unit tests
RunTestsWithCodeCov
to run unit tests with code coverageReleaseNotes semver:<version>
where <version>
may be major
, minor
, or patch
to update RELEASE_NOTES.mdPack
to create a NuGet release
PackPrelease
to create a NuGet prereleaseBuildDocs
to create docs
BuildDocsPrerelease
to create prerelease docsWatchDocs
to create docs and run them locallyWatchDocsPrelease
to create prerelease docs and run them locallyPublishNuget
to create a NuGet release and publish it
PublishNugetPrelease
to create a NuGet prerelease and publish it