- V 0.4.0.0: Another major update:
- Added more calibration curves next to
intcal20
:shcal20
andmarine20
. Renamed theCurrycarbon.CalCurves.IntCal20
module to justCurrycarbon.CalCurves
. In the CLI,--calCurveFile
is now just--calCurve
, and it allows to either select the different packaged curves or read arbitrary .14c files. - Added a new CLI plot element to the output of individual dates.
renderCLIPlotCalCurve
plots a relevant section of the calibration curve. - Added the command line options
--noTrimCalCurve
and--noTrimOutCalPDF
to allow control over the pre- and post-calibration trimming behaviour for radiocarbon dates. - Changed the way products between calibration expressions are computed in
evalCalExpr
. Input expressions in a multiplication are now calibrated for the entire length of the calibration curve. This allows to compute proper products and not fail in case of non-overlapping output. - Changed the way calibration curves are embedded in currycarbon. This now uses the brilliant
file-embed
library. - Changed the interface of the core calibration functions.
CalibrateDatesConf
no longer includes theCalibrationMethod
, socalibrateDates
andevalNamedCalExpr
functions need it as an extra argument.calibrateDateBchron
andcalibrateDateMatrixMult
now takeCalibrateDatesConf
and not its individual elements. - Moved from Float to Double for probability densities and all functions that interact with them.
- Added a new output option
--basicFile
to the CLI to enable simple per-expression output: The minimum start and maximum end of the high probability density regions and the median age. In this contextwriteCalC14
was split intowriteCalC14HDR
andwriteCalC14CalRangeSummary
in the library. - Added little axis labels (BC/AD) to the command line plot to improve readability.
- Changed the release pipeline: Now again with a windows executable. currycarbon-macOS was replaced by currycarbon-macOS-X64 and currycarbon-macOS-ARM64.
- Switched to a new GHC version (v9.6.6) and stackage resolver version (lts-22.43).
- Added more calibration curves next to
- 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 optionssamplesFile
,--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
andTimeWindowBCAD
). - Reworked the encoding and evaluation mechanism for calibration expressions:
- Introduced the
NamedCalExpr
as a wrapper aroundCalExpr
with an identifier, and then adjusted the ID generation forCalPDF
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()
andproduct()
) 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.
- Introduced the
- 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 (souncalC14()
). - 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).
- Added a new mechanism to draw random age samples from a CalPDF (
- 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) toCalC14
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 typeCalibrateDatesConf
. - 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.