|
| 1 | +# V1.0.1.1: new release pipeline |
| 2 | + |
| 3 | +This minor release replaces the pipeline to produce static `xerxes` executables for every release. |
| 4 | + |
| 5 | +Just like `trident`, `xerxes` will now be available in the following pre-compiled versions: |
| 6 | + |
| 7 | +- `xerxes-conda-linux` (for bioconda) |
| 8 | +- `xerxes-Linux` (build on Ubuntu 20.04 for X64 architecture) |
| 9 | +- `xerxes-macOS-ARM64` (build on macOS 14 for ARM64 architecture) |
| 10 | +- `xerxes-macOS-X64` (build on macOS 13 for X64 architecture) |
| 11 | +- `xerxes-Windows` |
| 12 | + |
| 13 | +`xerxes` now also depends on the latest poseidon-hs version 1.5.0.1. |
| 14 | + |
| 15 | +# V1.0.1.0: FST fix and better user input checks |
| 16 | + |
| 17 | +This release fixes a bug in the estimation of FST. We have now exactly implemented the estimator presented in Bhatia et al. 2013 |
| 18 | +(see whitepaper), and confirmed numerical equivalence with estimation by admixtools. |
| 19 | + |
| 20 | +We have also now checked for degenerate statistics (for example F2(A, A) or F3(A, B, A)) and in those cases now output exactly zero. |
| 21 | +Previously, due to bias corrections, results could become negative. |
| 22 | + |
| 23 | +Finally, we have implemented a check for illegal sample sizes. In particular for F3(A, B, C), where C is a haploid outgroup, we now |
| 24 | +throw a helpful error that one should rather use F3vanilla, since F3 in that case is undefined due to its use of the heterozygosity of |
| 25 | +C in the bias-correction term (see whitepaper). |
| 26 | + |
| 27 | +# V1.0.0.2: performance-fix due to update of poseidon-hs dependency |
| 28 | + |
| 29 | +This release simply updates the dependency on poseidon-hs, which in turn [fixed a performance leak](https://github.com/poseidon-framework/poseidon-hs/releases/tag/v1.4.0.3) with our entity selection framework. |
| 30 | + |
| 31 | +# V1.0.0.1: specify package-versions in fstats, genotype ploidy and whitepaper |
| 32 | + |
| 33 | +This release updates to the latest version of poseidon-hs (v1.4.0.2), which introduced a major clarification and improvement of the entity-selection language, that also powers the selection language to specify groups in fstats and define the statistics. |
| 34 | + |
| 35 | +In particular, appending a version of a package after the package-name is now possible, both in group selection and statistic definitions. For example, here is a possible fstats configuration file: |
| 36 | + |
| 37 | +```YAML |
| 38 | +groupDefs: |
| 39 | + Group1: ["*package1-v1.0.0*", "group2", "<pac1-v2.3.4:group:name>"] |
| 40 | +fstats: |
| 41 | +- type: F2 |
| 42 | + a: ["Group1", "Spanish"] |
| 43 | + b: ["Han", "CEU2"] |
| 44 | +``` |
| 45 | +
|
| 46 | +Second, fstats now uses the information in the column "Genotype_Ploidy" from the Janno file to improve bias-correction. Specifically, haploid samples contribute only one chromosome to the count in the bias-correction formula. |
| 47 | +
|
| 48 | +We also now added a whitepaper (available under `docs/`), which details the bias-correction and many other aspects of the mathematical basis for F-Statistics. The whitepaper may expand to other aspects of xerxes in the future. |
| 49 | + |
| 50 | +# V0.3.4.0: Poseidon 2.7.1 and running admixpops in chunks |
| 51 | + |
| 52 | +This release yet again updates the version of poseidon-hs (to v1.2.1.0). This enables `xerxes` to read Poseidon packages of version 2.7.1. We also switched to a newer stack resolver version and updated the GitHub Actions for automatic testing. |
| 53 | + |
| 54 | +One new feature was added: The code for the `admixpops` subcommand was refactored to include a new input flag `--inChunks`. This allows to sample not just on the level of individual SNPs for the construction of artificial ancestry-chimeras, but also in chunks, so longer stretches of SNPs of length `--chunkSize`. Please note that `admixpops` remains experimental with no guarantees of correctness. |
| 55 | + |
| 56 | +# V0.3.2.0: Poseidon 2.7.0 and fstats-block-output |
| 57 | + |
| 58 | +- This release updates the underlying Poseidon library, which makes this version now compatible with newest Poseidon packages of version 2.7.0. |
| 59 | +- We also added a new feature to `xerxes fstats` to output statistics per Jackknife-block. |
| 60 | +- The output was also prettified using our central log-functionality. |
| 61 | +- The GHC compiler which this package depends upon has also been updated to a much newer release than the version before. In particular, this new compiler runs on the newest Mac M2 Macbook-Pros (which the previous ones did not). |
| 62 | + |
| 63 | +# V0.3.0.0: Added a first implementation of admixpops |
| 64 | + |
| 65 | +For this release we integrated the very experimental artificial ancestry generation subcommand `admixpops` into xerxes (formerly a component of a tool called [paagen](https://github.com/nevrome/paagen)). We also added some innovations from trident for logging, error handling and code maintenance. |
| 66 | + |
| 67 | +`admixpops` allows to generate individuals with randomized genotype profiles based on arbitrary input populations. Running it for example with the following `--admixString` would yield an artificial individual `Ind1` with 10% ancestry from the reference population Mbuti, 20% from Han, and 70% from French: `"[Ind1:Pop1](Mbuti=10+Han=20+French=70)"`. The implemented algorithm is (trivial) SNP-wise weighted random-sampling. `admixpops` is therefore only an experimental feature and the current implementation will likely change in the future. |
| 68 | + |
| 69 | +In the process of adding it to xerxes, we also upgraded the latter with some of the (recent) improvements in trident. From a user-perspective the only relevant changes are the new general options `--logMode` and `--errLength`, which give you more control over the logging output and error messages. |
| 70 | + |
| 71 | +# V0.2.1.0: Optimized fstats with allele-frequency lookups |
| 72 | + |
| 73 | +This release internally optimizes the core loop by creating lookup tables for allele frequencies, so that they can be reused for the various statistics. |
| 74 | + |
| 75 | +Code has been refactored and unit tests introduced. |
| 76 | + |
| 77 | +Logging is partly implemented with Co-Log now, but not fully yet. |
| 78 | + |
| 79 | +# V0.2.0.0: New config file input, ascertainment and adhoc-groups Latest |
| 80 | + |
| 81 | +This is a big release with three new features in Xerxes fstats: |
| 82 | + |
| 83 | +1.) A new input option for F-Statistics using a YAML configuration file, supporting automatic looping through multiple statistics. |
| 84 | +2.) The option of entering SNP ascertainment, using allele frequency bounds in a reference population |
| 85 | +3.) The option of defining adhoc-groups, for example to exclude outlier individuals from populations without changing the genotype data files. |
| 86 | + |
| 87 | +See documentation on https://poseidon-framework.github.io/#/xerxes |
0 commit comments