An open API service indexing awesome lists of open source software.

https://github.com/nfdi4plants/arc-validate

Libraries and CLI tools for creation, consumption, and execution of ARC validation packages
https://github.com/nfdi4plants/arc-validate

arc dataplant docker dotnet expecto fsharp isa-dotnet nfdi4plants unit-testing validation

Last synced: 3 months ago
JSON representation

Libraries and CLI tools for creation, consumption, and execution of ARC validation packages

Awesome Lists containing this project

README

          

# arc-validate

Home of all the tools and libraries to create and run validation of ARCs:

- **ARCExpect** ([docs :notebook:](https://nfdi4plants.github.io/arc-validate/ARCExpect/introduction.html)) - easy to use and understand APIs to create and execute validation cases.
- **ARCValidationPackages** ([docs :notebook:](https://nfdi4plants.github.io/arc-validate/ARCValidationPackages/introduction.html)) - package for installing, updating, and executing ARC validation packages.
- **arc-validate/** ([docs :notebook:](https://nfdi4plants.github.io/arc-validate/arc-validate/introduction.html)) - CLI tool that offers commands for validating ARCs and managing validation packages.

## Docker container

This repository provides a [docker container](https://github.com/nfdi4plants/arc-validate/pkgs/container/arc-validate) that has the `arc-validate` tool pre-installed for using it in [DataHUB](https://git.nfdi4plants.org/explore)-CI jobs.

Use the containers tagged with [main](https://github.com/nfdi4plants/arc-validate/pkgs/container/arc-validate/174978018?tag=main) for production use.

## Project aim

Validation of ARCs based on:
- **ARCTokenization**: Structural ontologies for file formats (for parsing/tokenizing files): INVMSO, STDMSO, ASSMSO
- **OBO.NET**:
- parsing ontologies, generation of **OBO graphs** based on ontology term relation
- code genearation of ontology modules with accessible terms
- **ARCGraph**: Graph representation of file content based on structural ontologies via **OBO graph**
- **Graph-based** completion of File content (missing cells -> empty tokens) via **ARCGraph**
- **ARCExpect.Core**: Expecto-like API for validation
- **ARCExpect**: ARC aware API for validation cases
- **Validation Packages**: API for installing and executing additional validation packages

## Project layout

### Dependency visualization

```mermaid
flowchart TD

ControlledVocabulary("ControlledVocabulary:
Data model for CVs")
ARCTokenization("ARCTokenization:
Tokenization of ARCs into CVs")
OBO.NET("OBO.NET:
OBO Ontology data model and parsing")
ARCGraph("ARCGraph:
Graph based on structural ontologies")
ARCExpect("ARCExpect:
ARC aware API for validation")
ARCExpect.Core("ARCExpect.Core:
Expecto-like API for validation")
ARCValidationPackages("ARCValidationPackages:
API for additional validation packages")
arc-validate("arc-validate:
validation CLI tool")

arc-validate --depends on--> ARCExpect
arc-validate --depends on--> ARCValidationPackages
ARCTokenization --depends on--> ControlledVocabulary
ARCTokenization --depends on--> OBO.NET
ARCExpect --depends on--> ARCExpect.Core
ARCExpect --depends on--> ARCGraph
ARCExpect --depends on--> ARCTokenization
ARCGraph --depends on--> ARCTokenization
ARCGraph --depends on--> OBO.NET
```

### Libraries used

#### ARCExpect

- [ARCTokenization](https://github.com/nfdi4plants/ARCTokenization)
- [AVPRIndex](https://github.com/nfdi4plants/arc-validate-package-registry)
- [OBO.NET](https://github.com/CSBiology/OBO.NET)
- [Graphoscope](https://github.com/fslaborg/Graphoscope)
- [Cytoscape.NET](https://github.com/fslaborg/Cytoscape.NET)
- [AnyBadge.NET](https://github.com/kMutagene/AnyBadge.NET)
- [FSharp.SystemTextJson](https://github.com/Tarmil/FSharp.SystemTextJson)
- [FSharpAux](https://github.com/CSBiology/FSharpAux)
- [FsSpreadsheet](https://github.com/fslaborg/FsSpreadsheet)
- [Expecto](https://github.com/haf/expecto)

### ARCValidationPackages

- [Fake.DotNet.Cli](https://github.com/fsprojects/FAKE)
- [FsHttp](https://github.com/fsprojects/FsHttp)
- [AVPRIndex](https://github.com/nfdi4plants/arc-validate-package-registry)
- [AVPRClient](https://github.com/nfdi4plants/arc-validate-package-registry)

#### arc-validate

- ARCExpect
- ARCValidationPackages
- [Argu](https://github.com/fsprojects/Argu)
- [Expecto](https://github.com/haf/expecto)
- [Spectre.Console](https://github.com/spectreconsole/spectre.console)

## Development

For how to contribute to and how to develop on this project, please read the [Contributing guidelines](https://github.com/nfdi4plants/arc-validate/blob/release/CONTRIBUTING.md).

Just call `build.sh` or `build.cmd` depending on your OS.

### Test

test setup is interconnected with production services, running tests for the compiled `arc-validate` tool with validation packages with source https://avpr.nfdi4plants.org.

since testing the cli tool relies on it being compiled via `dotnet publish`, either use the build scripts or manually publish `arc-validate` to the `/publish` folder when using e.g. TestExplorers.

```bash
build.sh runtests
```

```bash
build.cmd runtests
```

### Create Nuget package

```bash
build.sh pack
```