Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/molpopgen/demes-rs
rust tools for the demes ecosystem
https://github.com/molpopgen/demes-rs
demography population-genetics population-genomics rust simulation
Last synced: about 2 months ago
JSON representation
rust tools for the demes ecosystem
- Host: GitHub
- URL: https://github.com/molpopgen/demes-rs
- Owner: molpopgen
- License: mit
- Created: 2022-04-25T16:35:23.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-25T17:25:17.000Z (3 months ago)
- Last Synced: 2024-10-12T16:37:26.133Z (2 months ago)
- Topics: demography, population-genetics, population-genomics, rust, simulation
- Language: Rust
- Homepage:
- Size: 666 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# demes-rs
![CI tests](https://github.com/molpopgen/demes-rs/workflows/CI/badge.svg)
[rust](https://www.rustlang.org) tools for the
[demes](https://popsim-consortium.github.io/demes-spec-docs/main/introduction.html#sec-intro)
specification.This repository contains the following rust crates:
* [demes](https://crates.io/crates/demes) implements the specification and a graph builder.
* [demes-forward](https://crates.io/crates/demes-forward) provides a means to handle graphs forwards in time.
* [demes-forward-capi](https://crates.io/crates/demes-forward-capi) is a C interface to `demes-foward`.## Developer information
### Cloning the repository and running the test suite
```sh
git clone https://github.com/molpopgen/demes-rs --recurse-submodules
cd demes-rs
cargo test
```To clone using [gh](https://cli.github.com/),
```
gh clone molpopgen/demes-rs -- --recurse-submodules
```### Pull requests
* Pull requests should be rebased down to one commit.
* Commit messages for CHANGELOGs should be
[conventional](https://www.conventionalcommits.org/en/v1.0.0/).
* We **strongly** suggest running semver checks locally.
While we run these upon merge into `main`, it is better to know
ahead of time if a PR breaks API. It is even better to
avoid API breakage altogether!```sh
cargo install cargo-semver-checks
cargo semver-checks check-release
```### Generating CHANGELOG updates
* We use [git-cliff](https://github.com/orhun/git-cliff)
* To update a CHANGELOG for a given crate, use include paths.
For example:```sh
git cliff -u --include-path "demes/**" --tag v0.4.0 -p demes/CHANGELOG.md
```The configuration file for cliff is present in the workspace root.
### Tagging a release
The workspace layout of this repository makes version tagging a bit fiddly.
We also need the tags to play with with `git-cliff` (see above).When we tag a version, we use the following date-based pattern:
```
vDD_Month_YYY
```For example:
```
v29_Sep_2023
```### Viewing the documentation locally
```
cargo doc --open
```### Calculating code coverage
First, install `tarpaulin`:
```sh
cargo install cargo-tarpaulin
```Then,
```sh
cargo tarpaulin --tests --ignore-tests -o html
```Finally, open `tarpaulin-report.html` with your favorite browser.
### Dependency updates
We have disabled `dependabot` updates to `cargo` dependencies for this repository.
We found that it was usually doing minor version updates and cluttering the commit history.
We will periodically do updates manually instead.