- V 0.3.0.1: The golden tests can not run on stackage as it stands, so I hid them behind an environment variable.
- V 0.3.0.0: Major update with multiple breaking changes and new features:
- Added a new mechanism to draw random age samples from a CalPDF (`sampleAgesFromCalPDF :: AgeSamplingConf -> CalPDF -> RandomAgeSample`). This is available from the command line with the options `samplesFile`, `--seed`, and `-n`/`--nrSamples`.
- Added a new concept to the `CalExpr` data type: Age ranges with uniform probability for each year in the range (`TimeWindowBP` and `TimeWindowBCAD`).
- Reworked the encoding and evaluation mechanism for calibration expressions:
- Introduced the `NamedCalExpr` as a wrapper around `CalExpr` with an identifier, and then adjusted the ID generation for `CalPDF`s to prioritize this identifier.
- Reworked the CLI DSL to support a standardized configuration language syntax implemented in a new module `ParserHelpers.hs`. This introduces a set of flexible functions (`calExpr()`, `uncalC14()`, `rangeBP()`, `rangeBCAD()`, `sum()` and `product()`) which generally complement the previously available syntax and operators. The old syntax is mostly preserved as syntactic sugar for the new, more standardized syntax. Unfortunately this is not entirely seamless: The change breaks some expressions that were valid before (e.g. `"3000,30 + 3020,50"`). They now require additional parentheses to pass (so e.g. `"(3000,30) + (3020,50)"`).
- Added some unit tests to cover the increasingly complex DSL.
- Changed the output files from .csv to .tsv and to a more meaningful and consistent set of column names.
- Slightly adjusted the rendering of the pretty, human-focussed command line output.
- Updated and improved the command line documentation.
- Renamed some CLI arguments:
- `--calibrationCurveFile` -> `--calCurveFile`
- `--calCurveSegmentFile` -> `--calCurveSegFile`
- `--calCurveMatrixFile` -> `--calCurveMatFile`
- Changed the CLI behaviour with `--calCurveSegFile` and `--calCurveMatFile`: currycarbon now fails with these options if the first sample is not a single, uncalibrated radiocarbon date (so `uncalC14()`).
- Added a simple golden test system with some basic calls to the `currycarbon` CLI tool.
- Switched to a new GHC version (v9.4.7) and stackage resolver version (lts-21.17).
- V 0.2.1.2: Maintenance: Switched to a newer compiler/resolver version, lifted some dependency restrictions, ran stylish-haskell on the entire codebase, updated the github actions, deprecated the haddock documentation for the dev version on GitHub.
- V 0.2.1.1: Lifted some restrictions regarding the upper version bounds of dependencies.
- V 0.2.1.0: Added a mechanism to detect terminal encoding and fall back on a simpler CLI plot if it is not UTF-8.
- V 0.2.0.1: Brought sample names back to default CLI output.
- V 0.2.0.0: Added sum (and product) calibration and made the necessary changes to various interfaces (including CLI) to make this functionality accessible.
- V 0.1.2.0: Added simple summary data (`CalRangeSummary` with calibrated median age + begin and end of 1- and 2-sigma ranges) to `CalC14` and the CLI output and plot. The latter got refactored and enhanced in the process. `HDR`s are now "ordered", so `_hdrstart` actually stores the older and `_hdrstop` the younger date.
- V 0.1.1.0: Complete rewrite of the CLI output handling to avoid a memory leak.
- V 0.1.0.0: Switch to PVP versioning (https://pvp.haskell.org/).
- V 0.24.4: Removed big dependencies bytestring and statistics.
- V 0.24.3: Multiple changes in .cabal to make cabal check happy.
- V 0.24.2: Found and fixed another severe bug in `renderCalCurve`.
- V 0.24.1: Fixed a serious bug in `renderCalCurveMatrix`.
- V 0.24.0: Introduced more precise data types to distinguish years BP and years BC/AD.
- V 0.23.1: Small changes to the instances of some general types.
- V 0.23.0: Renamed multiple functions to make the naming of operations for parsing, reading, from-file reading, rendering and writing consistent across data types.
- V 0.22.0: Changed the interface of the important `calibrateDates` function with a new config data type `CalibrateDatesConf`.
- V 0.21.3: Refactored the calibration curve interpolation.
- V 0.21.2: Introduced doctest and added some tiny examples/tests to try it out.
- V 0.21.1: Split up the calibration module for better readability.
- V 0.21.0: Added a neat CLI density plot for calibrated dates.
- V 0.20.2: Some performance improvements for the calibration of large numbers of dates.
- V 0.20.1: Better (parsing) error handling.
- V 0.20.0: Added an option `--allowOutside` to allow for calibrations to run outside the range of the calibration curve.
- V 0.19.0: Added functionality to filter out dates outside of the range of the calibration curve and report an error in this case.
- V 0.18.0: Implemented calibration with a StudentT distribution to mimic Bchron and established that as the new default. Reimplemented the `--method` option of the CLI tool to reflect that change.
- V 0.17.0: Changed argument order in the `CalCurve` data type to adjust to the order in `.14C` files.
- V 0.16.0: Refactoring in the library to simplify and clarify the interface.
- V 0.15.0: Added another calibration algorithm (following the implementation by Andrew Parnell in Bchron) and a method switch for the CLI.
- V 0.14.0: Introduced strictness, which brought a significant increase in performance. See the discussion here: https://old.reddit.com/r/haskell/comments/picjy6/how_could_i_improve_the_performance_of_my/.
- V 0.13.0: Major rewrite with the vector library - includes multiple bugfixes, but is surprisingly slow.
- V 0.12.0: Renamed some core functions.
- V 0.11.0: Made calibration curve interpolation optional and turned it off by default.
- V 0.10.0: Simplified CLI interface by dropping the `calibrate` subcommand (`currycarbon` is sufficient now) and by repurposing `-q` from `--quickOut` to `--quiet`.
- V 0.9.0: Made `--hdrFile` output a lot more machine-readable.
- V 0.8.0: Added option `--calibrationCurveFile` to calibrate with different calibration curves.
- V 0.7.2: More documentation, small changes in code layout and renamed CLI module that provides `runCalibrate`.
- V 0.7.1: Added type documentation with haddock and replaced the existing types with record types.
- V 0.7.0: Changed the date input interface once more.
- V 0.6.0: Changed the date input interface, because parenthesis can be part of valid lab numbers.
- V 0.5.2: Fixed parallel evaluation (deepseq forced memory-intensive, non-lazy behaviour).
- V 0.5.1: Added github release action (copied from poseidon-hs).
- V 0.5.0: Added file input for dates to calibrate.
- V 0.4.0: Made output calibrated dates negative numbers for BC and positive for AD - and adjusted HDR printing accordingly.
- V 0.3.2: Some optimisation.
- V 0.3.1: Added automatic filling of unknown sample names.
- V 0.3.0: Simplified interface.
- V 0.2.1: Removed ascii plot functionality.
- V 0.2.0: Added parallel processing for the main calibration operation.
- V 0.1.0: First basically working version.