MIxS-MInAS / extension-ancient

A MIxS extension proposal for 'ancient' samples
Creative Commons Zero v1.0 Universal
2 stars 0 forks source link

extension-ancient

A MIxS extension proposal for 'ancient DNA' samples.

Repository Structure

The repo is laid out as follows:

Update workflows

  1. Gather all feedback from feedback sessions (feedback/) and development workshops (proposals/<upcoming_version>) in the forms of JSONs
  2. Coordination team makes two branch and associated PRs:
    • <upcoming version>-termupdates
    • <upcoming version>-newterms
  3. Update existing terms and add new terms in/to the src/mixs/schema/ancient.yaml file on the two branches
    • Updates as per the aggregated feedback under proposals/, but can be evaluated or 'vetoed' for technical reasons
    • Important: try to make one commit for each new term and term update, with a descriptive message as to the change.
    • For each term, all changes to (description, examples, etc.) should be in one commit and described in the commit message (this will allow us further automate release notes)
  4. Coordination team cross-reviews the two PRs and merge in
  5. In a new PR, generate additional JSON and TSV files based on instructions on technical notes (containing all changes/new terms)
    • The YAML -> JSON conversion will include LinkML schema validation, so additional correction PRs made be required at this point!
  6. Make a release with the following format
    • Tag: vX.X.X
    • Title: vX.X.X
    • Generate release notes based on a cleaned up git log --oneline that has the git hash and the informative commit message
    • Set as latest
  7. Go to the MInAS repo and make an updated mega-yaml plus release following instructions there

Technical notes

Use the YAML (in as far as possible similar format as MIxS LinkML structure) as the source of truth.

JSON Conversion

To generate the JSON version, install LinkML

pip install linkml

And run the following command, assuming root of repo:

gen-json-schema src/mixs/schema/ancient.yml > src/mixs/schema/ancient.json

MIxS TSV Style Conversion

To convert to the original MIxS TSV style, we can use a script developed by @TurboMam.

This script has been copied and modified very slightly to include the python3 shebang, and is placed under scripts until properly packaged for the MIxS project.

To use this script, you only need python3 and no other dependencies (it seems).

In the root of this directory run:

./scripts/linkml2class_tsvs.py --schema-file src/mixs/schema/ancient.yml --output-dir projects/class-model-tsvs/

Latest tag

We use a GitHub action to generate a special 'latest' tag that points to the commit of the latest release. This allows a more 'user friendly' URL for downloading a specific file, rather than making users have to download a release tarball and extract a specific file.