Releases: mach3-software/MaCh3
Release list
v2.6.0
Instruction
C++17
To allow use of new features and make move to more modern versions of ROOT package in the future MaCh3 now requires minimum C++17, while in the past it was C++14.
Renaming
GetParInit->GetParPreFit
cleanMemory-> CleanMemory
setSplinePointers -> SetSplinePointers
ThrowSinlgeParams-> ThrowSingleParams
New way of handling functional parameters
We introduced improved way of defying functional parameters. There are several advantages, but the main one is ability to have shift as result of multiple parameters.
This require changes on experiment specific, for example
RegisterIndividualFunctionalParameter("EResLep",
kEResLep,
[this](const M3::float_t* par, std::size_t iEvent) { this->EResLep(par, iEvent); });
Now will look like:
RegisterIndividualFunctionalParameter(
TutorialSamples, "EResLep", [](double const &pval, TutorialMCInfo &ev) {
ev.RecoEnu_shifted += pval * ev.ELep;
});
main difference it need to pass experiment specific event info here called TutorialSamples.
GetFromManager Syntax
Orignally GetFromManger had syntax
GetFromManager(const YAML::Node& node, const Type defval, const std::string& File, const int Line)
however this didn’t allow to have helpful errors so it was changed to
GetFromManager(const YAML::Node& node, const Type defval, const std::string& File = “”, const int Line = 1)
Default argument were left for backward compatibility, nevertheless in this release we break backward compatibility and default (not helpful) arguments are no longer used.
Wildcards
MaCh3 analysis are becoming increasingly more complex.
Wildcards helps to remove desired parameters from plotting etc more easily.
This add wildcard support to
• LLH Skip vector
• Adaptive Skip
• Process MCMC skip
This means one may need to adjust configs to ensure same results are obtained.
Unified MaCh3 CLI
We plan to move all executables to cli, this means that instead of calling ProcessMCMC one would use mach3 process. For the time being we issued deprecation warning.
What's Changed
- feat: posterior to Chi2 conversion by @KSkwarczynski in #911
- tidy: cmake improvments by @KSkwarczynski in #907
- tidy: Remove legacy xsec in SplineStucts and const correcntess by @KSkwarczynski in #910
- breaking: Rename GetParInit by @KSkwarczynski in #914
- feat: Sanitizer for adaption and flipping by @KSkwarczynski in #909
- bugfix: use mach3 double formatter to round according to sig figs in make covariance matrix by @Charlotte-Knight in #920
- tidy: Sanize DiagMCMC for hadded chains by @KSkwarczynski in #916
- breaking: Remove Toggle Fix from public API by @KSkwarczynski in #915
- breaking: C++17 by @KSkwarczynski in #918
- feat: cmake support for build type by @KSkwarczynski in #924
- feat: Update CUDA containers by @KSkwarczynski in #922
- tidy: Update ICPX container by @KSkwarczynski in #923
- feat: implement map for spline index by @Charlotte-Knight in #928
- tidy: Update README.md regarding BibTex author abbreviation by @yash-quark in #930
- tidy: Add AI policy to contributing by @KSkwarczynski in #925
- tidy: Robbins-Monore Delayed sanitzer by @KSkwarczynski in #926
- breaking: Multi-parameter functional shifts by @luketpickering in #824
- tidy: Pass Spline Index isntead of magical numbers by @KSkwarczynski in #919
- tidy: Add support for .txx file extension in Doxyfile by @KSkwarczynski in #932
- tidy: add sanitizers to likelihood fit and minor tidy by @KSkwarczynski in #931
- tidy: Tweak syntax of GetFromManager for more helpfull messages by @KSkwarczynski in #934
- feat: Safer Bots [using commit hash] by @KSkwarczynski in #936
- tidy: Remove a few todo by using c++17 features by @KSkwarczynski in #935
- feat: Allow Plotting Lib to try figure out on it's own param names by @KSkwarczynski in #929
- tidy: Updates comments in sample handler by @KSkwarczynski in #939
- tidy: bump actions/checkout from 6.0.2 to 7.0.0 in /.github/workflows by @dependabot[bot] in #942
- tidy: bump actions/stale from 10.2.0 to 10.3.0 in /.github/workflows by @dependabot[bot] in #944
- tidy: bump actions/labeler from 6.0.1 to 6.1.0 in /.github/workflows by @dependabot[bot] in #946
- tidy: bump abirismyname/create-discussion from 1.2.0 to 2.1.0 in /.github/workflows by @dependabot[bot] in #945
- tidy: Less hacky meta data for reweight by @KSkwarczynski in #938
- breaking: More Wildcards by @KSkwarczynski in #940
- tidy: Less getmin/max by @KSkwarczynski in #947
- bugfix: Reweight MCMC to use branch name than param name by @KSkwarczynski in #948
- breaking: More fleshed out doc about interface by @KSkwarczynski in #949
- tidy: Move 1D reweighting from MCMC processor to ReweitghtMCMC by @KSkwarczynski in #950
- feat: Poisson errors in post pred code by @KSkwarczynski in #937
- tidy: remove unused variables for gcc16 compatibility by @Charlotte-Knight in #954
- feat: NuMCMC Tools CI but using low memory by @KSkwarczynski in #955
- tidy: bump super-linter/super-linter from 7.4.0 to 8.7.0 in /.github/workflows by @dependabot[bot] in #957
- bugfix: Change from GetDiagonalError to GetError in python by @henry-wallace-phys in #961
- bugfix: Stop double load of stepStart in start from previous fit by @KSkwarczynski in #959
- bugfix: Matrix shift now scales with parameters original value by @henry-wallace-phys in #962
- feat: LLHMap improvements by @nosektom in #964
- bugfix: add special linking for older gcc to make it work with file system by @KSkwarczynski in #966
- feat: Allow for 1d+2d combination by @KSkwarczynski in #952
- tidy: Reduce hardcoding in binned splines by @KSkwarczynski in #953
- feat: Umbrella Sampling by @DavidRiley12345 in #960
- feat: Tiny change to error when overwriting yaml settings by @DomLangridge in #969
- feat: Add Multi Canonical Validations CI by @KSkwarczynski in #968
- tidy: Bump CPM 0.42.3 -> 0.43.1 by @KSkwarczynski in #967
- Feat: Acceptance Rate sanitizer by @henry-wallace-phys in #972
- tidy: MaCh3 logger and other common tools to multicanonical solver by @KSkwarczynski in #970
- feat: Unified binary (CLI) by @Charlotte-Knight in #917
- breaking: More vebose yaml getter by @KSkwarczynski in #973
- bugfix: wpedantic compilation by @KSkwarczynski in #971
- tidy: Add description to CLI modules by @KSkwarczynski in #977
- tidy: Update Doxygen after recent CLI updates by @KSkwarczynski in #974
- tidy: More pedantic/strict Umbrella Solver by @KSkwarczynski in #975
- breaking: Fix typo by @KSkwarczynski in #978
Full Changelog: v2.5.1...v2.6.0
v2.5.1
What's Changed
- feat: Additional Python Binding Utility by @henry-wallace-phys in #864
- feat: Update CODEOWNERS by @luketpickering in #867
- feat: Add 2.5.0 to footer by @KSkwarczynski in #868
- bugfix: Wsuggest-override only for newer gcc by @KSkwarczynski in #865
- tidy: move code duplicates to plotting utils by @KSkwarczynski in #869
- feat: Post Pred Correlations by @KSkwarczynski in #870
- tidy: Move legacy decisions from Base to Generic by @KSkwarczynski in #872
- tidy: Add documenation for Sample Handler interface by @KSkwarczynski in #874
- feat: add PDGs to GetMassFromPDG by @Jude412 in #876
- feat: Add NuDock to doxyfile by @KSkwarczynski in #875
- feat: More Compact Sample Config by @KSkwarczynski in #882
- bugfix: When selecting step scale based on LLH scan now accout for gloabal scale by @KSkwarczynski in #881
- feat: NuDock Werror by @KSkwarczynski in #878
- tidy: Fix typo in license by @henry-wallace-phys in #885
- tidy: Update newsletter and labeler by @KSkwarczynski in #886
- bugfix: Can't have Sample Handler with Same name by @KSkwarczynski in #883
- feat: Linspace and logspace binning in ReturnKinematicParameter by @Jude412 in #889
- bugfix: Newsletter by @KSkwarczynski in #888
- feat: Even more useful python bindings by @henry-wallace-phys in #871
- feat: Add NuDock Validations to CI workflow by @KSkwarczynski in #895
- tidy: Remove memory leaks (minor) in PSO code by @KSkwarczynski in #877
- tidy: make bots run at 12 not midnight by @KSkwarczynski in #901
- feat: Update CPM.cmake version to 0.42.3 by @KSkwarczynski in #894
- tidy: Const Correctness and Remove Duplciates in Param Handler by @KSkwarczynski in #884
- feat: Reduce duplicates when defining features for mach3-config by @KSkwarczynski in #891
- tidy: Composite Squash by @KSkwarczynski in #897
- feat: Port Marvin's code which produce unitarity traingles by @KSkwarczynski in #893
- feat: Add check for bins with 0 entries by @KSkwarczynski in #896
- tidy: add deprecation warning for GetModeHist1D by @KSkwarczynski in #904
- tidy: Remove Duplicates in ReturnHistsBySelection by @KSkwarczynski in #903
- feat: Prevent using gaussian prior and circular prior by @KSkwarczynski in #905
- tidy: Remove 7D Loop in splines by @KSkwarczynski in #890
- feat: PostPred By Mode by @KSkwarczynski in #899
- tidy: Short documentation about spline suffix by @KSkwarczynski in #902
Full Changelog: v2.5.0...v2.5.1
v2.5.0
Instruction
Name Changes
We continue changing names of classes, variables etc to better represent what they are emant. Name are often results of legacy choices which often no longer describe tru meaning.
Classes
SampleHandlerBase->SampleHandlerInterface
SampleHandlerFD> SampleHandlerBase
SMonolith->UnbinnedSplineHandler
Variables
MCSamples->MCEvents
Methods
retPointer->RetPointer
GetNsamples->GetNSamples
PrintNominal->PrintPreFitValues
PrintNominalCurrProp->PrintPrefitCurrPropValues
Namespace
M3Utils->M3::Utils
Other
#ifdef DEBUG -> #ifdef MACH3_DEBUG
GPU Spline Hardcoding
In the past in GPU code number of splines was hardcoded on compile time. This is no longer case. Therefore, cmake variable N_Splines is no longer needed
MCEvents struct
Variables like target and mode are used only during setup thus were removed. They are accessed via ReturnKinematicParameter and needed to be added as TargetNucleus.
Fewer Virtual Functions
We reduced number of virtual functions. Now have removed the following:
double ReturnKinematicParameter(std::string KinematicParamter, int iEvent)
std::vector<double> ReturnKinematicVector(const std::string& KinematicParameter, int iEvent)
const double* GetPointerToKinematicParameter(const std::string& KinematicParameter, int iEvent)
default is now const int for both KinematicParameter and iEvent
Ability to pass multiple files
To allow to pass multiple files it requeiren changing sample config
mtuplefile: numu_x_numu"
becomes
mtuplefile: ["numu_x_numu"]
In addition SubSamples has been changed to OscChannels
Const correctness
Several function which are virtual were changed to not take std::vectorstd::string but rather const std::vectorstd::string&. Updating should be easy but this allow to reach safer and faster argument passing.
Initialsie data
We introduced void InitialsieData pure virtual function. In the past only way to add data histogram was via method of AddData, this require to prepare histograms in external tools. Therefore goal of new function is first of all allow loading data from flat root trees (since pure virtual any format will work). Another advantage this enforces data is initialised after SampleHandlerBase constructor.
SampleName
MaCh3 had the ability to apply cuts based on sample name. However, in past, sample name was same as SampleHandler Name. Once we allowed to have multiple samples in one object, cut was being done based on SampleHandlerName.
This isn't sufficient for some more complex analyses.
Now cuts apply based on SamleName (individual). Thus, a new field is required
SampleHandlerName-> Name of object
SampleTitle-> Simply fancy name
SampleName-> Tag used to define by which syst to be affected
By default, if SampleName is not defined code will use SampleHandlerName which should reduce number of changes for people not needing this feature.
What's Changed
- breaking: Reduce number of pure virtual ReturnKinematicXXX functions by @luketpickering in #815
- breaking: MCEvents by @luketpickering in #816
- breaking: EventInfo member pointers by @luketpickering in #820
- breaking: Namespace Conisteancy by @KSkwarczynski in #839
- breaking: Stop Hardcdoding NSplines and RetPointer float/double by @KSkwarczynski in #838
- breaking: Fully unify weight pointers by @KSkwarczynski in #836
- breaking: Farewell to SampleHandlerFD by @KSkwarczynski in #840
- breaking: NuDock to work in debug mode by @KSkwarczynski in #841
- feat: python bindings by @ewanwm in #828
- breaking: Ability to pass multiple MC files per channel and const correctness by @KSkwarczynski in #842
- tidy: NuDock to dependancy graph by @KSkwarczynski in #845
- bugfix: remove debugging cmake printout by @ewanwm in #847
- feat: More binning tools by @KSkwarczynski in #846
- breaking: Data Initialization Hook by @KSkwarczynski in #848
- bugfix: FLOAT_T M3::float_t conversion by @KSkwarczynski in #849
- bugfix: SampleHandlerBase::Selection is left empty by initialize by @luketpickering in #851
- feat: GetPostfitParam to not plot empty hist by @KSkwarczynski in #844
- tidy: Remove deprecated Cmake Settings by @KSkwarczynski in #852
- feat: NonUniform binning to 2DVarHist by @KSkwarczynski in #850
- feat: Bump NuOscillator by @KSkwarczynski in #853
- bugfix: Remove individual step scale printing from set indiv scale by @henry-wallace-phys in #858
- tidy: Capture remianing NuOsc by @KSkwarczynski in #857
- feat: Implement usage for plotting manager by @KSkwarczynski in #859
- breaking: remove nominal by @KSkwarczynski in #860
- breaking: Improve cuts based on SampleName by @KSkwarczynski in #855
- breaking: Break down FarDetectorCoreInfoStruct.h by @KSkwarczynski in #856
- tidy: Move PCA debug to utils by @KSkwarczynski in #862
- feat: Configurable bin width scaling in plotting lib by @KSkwarczynski in #863
Full Changelog: v2.4.2...v2.5.0
v2.4.2
What's Changed
- feat: CI Composite Jobs by @KSkwarczynski in #790
- bugfix: Allow post pred from NDonly by @KSkwarczynski in #791
- tidy: Removing duplciates by @KSkwarczynski in #792
- feat: Masking for IsEventInside by @KSkwarczynski in #793
- bugfix: Improve starting from previous chain by @KSkwarczynski in #795
- feat: Documentation Overhaul by @KSkwarczynski in #798
- feat: Sigma Var Overlay plotting by @KSkwarczynski in #796
- feat: Allow different Spline Class for FD by @pgranger23 in #797
- feat: Post Pred and Flexible binning by @KSkwarczynski in #800
- tidy: Reamde updates by @KSkwarczynski in #801
- feat: Bump NuOsc v1.4.5 by @KSkwarczynski in #804
- feat: Port Rate analysis from ND280 by @KSkwarczynski in #805
- feat: Doxygen for MP by @KSkwarczynski in #803
- tidy: Binning Sanitizer by @KSkwarczynski in #802
- bugfix: Removed weird diplsay issue in bibligoraphy by @KSkwarczynski in #807
- bugfix: Fix LLH for PostPred pvalue for non 1D hists by @KSkwarczynski in #806
- tidy: Remove depracated Weight_On_SplineBySpline_Basis by @KSkwarczynski in #809
- tidy: bump actions/upload-artifact from 6 to 7 in /.github/workflows by @dependabot[bot] in #810
- bugfix: Fix debug on ARM64 by @KSkwarczynski in #813
- feat: Add FinaliseShifts hook by @luketpickering in #819
- tidy: Rename modify weights by @KSkwarczynski in #811
- tidy: outsource msot of DumpMatrixToFile to utils by @KSkwarczynski in #812
- feat: Allow to run Init SampleHandler without ParamHandler by @KSkwarczynski in #814
- feat: Predictive LLH by @KSkwarczynski in #817
- feat: Make binned splines work with ND like intputs by @KSkwarczynski in #821
- tidy: SampleHandlerFD_data become vectors by @luketpickering in #823
- feat: Additional binning specifiers by @luketpickering in #822
- feat: Input file use in GetStepScaleBasedOnLLHScan by @menailj in #829
- feat: Add unroll by @KSkwarczynski in #830
- feat: Information Criterion by @KSkwarczynski in #827
- feat: Ability to set KinemBounds for splines by @KSkwarczynski in #826
- tidy: bump geekyeggo/delete-artifact from 5 to 6 in /.github/workflows by @dependabot[bot] in #832
- feat: Separate GetMCSpectrum and GetDataSpectrum by @Jude412 in #834
- feat: nudock integration by @hank-hua in #750
- tidy: detach test statistic from manager by @KSkwarczynski in #833
- feat: Rate pvalue by @KSkwarczynski in #835
New Contributors
Full Changelog: v2.4.1...v2.4.2
v2.4.1
What's Changed
- tidy: Remove Duplicates in LLH by @KSkwarczynski in #778
- feat: Low mem CI by @KSkwarczynski in #780
- tidy: bump YAML by @KSkwarczynski in #779
- tidy: More SampleHandler Sanitizers by @KSkwarczynski in #784
- feat: Skip Reset if there are no shifts by @KSkwarczynski in #782
- bugfix: Do not plot error for flat prior by @KSkwarczynski in #781
- tidy: Add GLoBESN and tidy cmake by @KSkwarczynski in #786
- tidy: Expand safe include by @KSkwarczynski in #785
- feat: Replace atomic with reduction in reweighting loop by @KSkwarczynski in #787
- tidy: Remove obsolete code in PlotMCMCDiag by @KSkwarczynski in #789
- feat: Remove SigmaVarLegacy by @KSkwarczynski in #788
Full Changelog: v2.4.0...v2.4.1
v2.4.0
Instruction
Flexible Binning
This release introduces the ability to use both N-Dimensional binning, previously only worked with 2D, and ability to use non-uniform but rectangular bins.
This requires to modify config used for sample definitions.
Before
Binning:
XVarStr : "RecoNeutrinoEnergy"
XVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.]
YVarStr : "TrueQ2"
YVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 5]
now
Binning:
VarStr : ["RecoNeutrinoEnergy", "TrueQ2"]
VarBins: [ [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.],
[0., 0.5, 1., 1.25, 1.5, 1.75, 2., 5] ]
Uniform: true
New form has same information (other than whether uniform or not) but allow scaling easily to more dimensions
Chain Format Change
Due to historical reasons, SampleHanlderGeneric parameter in MCMC chain were called xsec_. Due to being increasingly confusing as xsec_ was also naming flux, detector parameters, it was changed to param_. This will sadly break backward compatibility of the reading chain. Therefore, we recommend to either compare processed Chians or use different software versions for plotting chains produce before this change.
Renaming/Capital class naming unification
To have consistent class naming convention, there was minor renaming
manager->Manager
FarDetectorCoreInfoStruct->EventInfo
as well as some minor function rename
SigmaVarFD -> SigmaVar
SigmaVar -> SigmaVarLegacy
GetHist Format
Previously, GetMCHist(sample, dimension) was returning projection for given sample to given dimension. Now it is simply GetHist(sample). The problem was this was impossible to maintain with more than 1diemsnion and even more impossible with non-uniform binning. For getting 1D projection from 2D we already had functionality in Get1DVarHist. Therefore, GetMCHist will return histogram representing currently used MC, while for projection we recommend using Get1DVarHist or Get2DVarHist.
What's Changed
- breaking: Capital Letter by @KSkwarczynski in #745
- breaking: Reduce hacking of X and Y Var by @KSkwarczynski in #747
- tidy: bump CPM by @KSkwarczynski in #749
- tidy: Triangle Plot by @KSkwarczynski in #748
- bugfix: FindBin tweak for underflow by @KSkwarczynski in #753
- breaking: Change Binning InputFormat and modify GetMCHist by @KSkwarczynski in #751
- feat: NDim binning (uniform) by @KSkwarczynski in #754
- feat: triangle plot polishing by @nosektom in #756
- tidy: Avoid caching pip by @KSkwarczynski in #752
- tidy: Remove FD legacy code by @KSkwarczynski in #755
- bugfix: Violin Plot by @KSkwarczynski in #759
- breaking: xsec_ -> param_ by @KSkwarczynski in #760
- breaking: SigmaVarFD -> SigmaVar by @KSkwarczynski in #761
- bugfix: missing option in the CombineMaCh3Chains exec by @nosektom in #764
- bugfix: Correctly add data from array by @KSkwarczynski in #765
- bugfix: No longer requeir RHat chains to be in same directory by @KSkwarczynski in #762
- feat: Sigma Var Event Rates by @KSkwarczynski in #763
- feat: NonUniform Binning by @KSkwarczynski in #758
- Feat: add parameter tuning to Covariance factory by @henry-wallace-phys in #767
- feat: Fancy Labels for Sigma Var Plotting by @KSkwarczynski in #766
- feat: Expand GetMCHist to other dimensions by @KSkwarczynski in #768
- breaking: Remove Setup Binning by @KSkwarczynski in #771
- tidy: Less CopyPasting for Get1DVarHistByModeAndChannel by @KSkwarczynski in #772
- tidy: Modified function for file Opening in ParameterHandlerBase Init by @mfel3 in #776
- feat: Pretify kineamtics to style manager by @KSkwarczynski in #770
- tidy: Avoid Copy Paste in CalcNormBins by @KSkwarczynski in #775
- feat: LLHMap, n-dimensional likelihood scan by @nosektom in #777
New Contributors
Full Changelog: v2.3.2...v2.4.0
v2.3.2
What's Changed
- tidy: bump actions/upload-artifact from 5 to 6 in /.github/workflows by @dependabot[bot] in #717
- bugfix: fixed floating point error that occured when Ntoys or chain length was too small (<10) by @pfaffm in #718
- tidy: Stop archiving archive... by @KSkwarczynski in #716
- tidy: compatability up to gcc15 and c++23 by @Charlotte-Knight in #719
- tidy: Comments and better messages by @KSkwarczynski in #715
- bugfix: yaml CPM by @KSkwarczynski in #727
- tidy: Adaptive Sanitizer by @KSkwarczynski in #732
- tidy: suppress annoying warnings from ROOT by @KSkwarczynski in #720
- feat: LLH around central value by @KSkwarczynski in #729
- feat: Pie Plot by @KSkwarczynski in #731
- tidy: Processor tidy by @KSkwarczynski in #734
- tidy: MaCh3 on MacOS + instructions for installation with micromamba by @Charlotte-Knight in #725
- feat: Fast MaCh3 Combine Chain by @KSkwarczynski in #722
- feat: Squash bot by @KSkwarczynski in #733
- feat: Introduce Definitions.dox by @KSkwarczynski in #735
- tidy: GetPenaltyTerm by @KSkwarczynski in #736
- feat: PlottingUtils integration into Matrix Plotter by @KSkwarczynski in #739
- tidy: GPU Sanitizer by @KSkwarczynski in #740
- feat: Add SetSubThrowMatrix to ParameterHandlerBase by @luketpickering in #741
- tidy: Small theoretical improvement on GPU spline eval (very minor) by @pgranger23 in #742
- feat: Y bin migration by @KSkwarczynski in #738
- feat: Custom Nominal Bin Finding by @KSkwarczynski in #743
- tidy: Avoid memory allocation in FindBin by @KSkwarczynski in #744
- Feat: Add ability to save MC info to output ttree by @henry-wallace-phys in #711
New Contributors
Full Changelog: v2.3.1...v2.3.2
v2.3.1
What's Changed
- bugfix: Improve CI memory managment by @KSkwarczynski in #693
- bugfix: Set Osc channel by @KSkwarczynski in #691
- tidy: bump actions/checkout from 5 to 6 in /.github/workflows by @dependabot[bot] in #696
- feat: Preditcitve Plotting with one file by @KSkwarczynski in #700
- feat: MCMC Processor proper class by @KSkwarczynski in #697
- bugfix: LLH scan plotting by @ewanwm in #692
- tidy: More helpfull YAML error messages by @KSkwarczynski in #699
- tidy: Helpfull error when comapring yaml by @KSkwarczynski in #703
- bugfix: Improve Prior/Posterior Predictive by @KSkwarczynski in #706
- feat: Make Posterior Predictives Work With 2D Binnings by @BenJarg in #654
- bugfix: Correctly set isDecomposedPCA by @KSkwarczynski in #702
- feat: Ability to overwrite osc weight by @KSkwarczynski in #695
- tidy: Sanitizer to make sure we don't have params with duplicate names by @KSkwarczynski in #698
- feat: Add PrintProgress by @KSkwarczynski in #704
- tidy: Improve RidgePlot by @KSkwarczynski in #708
- feat: Improve predictive plotting by @KSkwarczynski in #707
- feat: skipping of parameters during adaptation by @hank-hua in #710
- tidy: Remove obsolete and add NuOsc sanitizer by @KSkwarczynski in #709
- bugfix: fix MaCh3Factory docs by @Charlotte-Knight in #713
- feat: beta params (mc statistical uncertainty) by @KSkwarczynski in #712
New Contributors
- @Charlotte-Knight made their first contribution in #713
Full Changelog: v2.3.0...v2.3.1
v2.3.0
Instruction
Multiple Samples in one object
The SampleHandlerFD class could store only a single sample. Conceptually, one can think of SampleHandler as a class describing samples for a single detector. Because if we even use the same simulation and have the same inputs, they could be stored in a single object.
This change was motivated by two reasons. First, performance-wise, it is faster to use multiple samples in one object. This allows for obtaining better cache locality, as for example, spline operations are happening at the same time, rather than code jumping between splines for 1 sample, then performing shifts for sample 1 and then spline operation for sample 2 and so on.
Another argument is that having all events in one object means that in the future, MaCh3 could support between-sample migration (right now, only event migration within a single sample).
Config Modification
Now, within SampleHandler config, we have separated settings describing the whole object/detector, like likelihood type, and there are settings for individual samples, like binning or osc channels, etc.
Example can be seen here
High-level interface
This change also requires modification at the executable level.
Previously, one was able to get a histogram using.
Auto Hist1D = SampleHandler->GetMCHist(NDim);While the new code would look like this
for(int iSample = 0; iSample < SampleHandler->GetNsamples(); iSample ++) {
Auto Hist1D = SampleHandler->GetMCHist(iSample , NDim);
}Weight Pointers now are set inside the core
MaCh3 uses so-called weight pointers to set pointers to spline weight, oscillation weight, etc. This is done on the setup, which allows during run time to achieve much better performance.
Previously, the SetupWeightPointers function was pure virtual, and it was required from the experiment to implement this. This was because the experiment may want to apply POT scaling or some other correction.
What is new is that now multiple weights, like the aforementioned spline, are set within MaCh3. Hence, SetupWeightPointers is no longer pure virtual. Since we still need to apply special experiment-specific weights, we now have AddAdditionalWeightPointers functions where you can implement your custom weights.
What's Changed
- breaking: Multiple Samples in one object by @KSkwarczynski in #639
- tidy: Update documentation by @KSkwarczynski in #653
- bugfix: Throw error when parameter is fixed to a value out of bounds by @henry-wallace-phys in #661
- tidy: Minor Bin Speedup by @KSkwarczynski in #660
- tidy: float/double to MCMC Processor by @KSkwarczynski in #659
- feat: More histogram getters by @KSkwarczynski in #658
- tidy: Sanitizer for Adaptive MCMC by @KSkwarczynski in #657
- feat: Robbins-Monro scaling to adaptive MCMC by @henry-wallace-phys in #662
- tidy: bump actions/upload-artifact from 4 to 5 in /.github/workflows by @dependabot[bot] in #669
- feat: Bump NuOsc to 1.4.4 by @KSkwarczynski in #666
- feat: LTO by @KSkwarczynski in #664
- bugfix: Avoid collpase in autocorrelation code by @KSkwarczynski in #668
- feat: Update to store global step scale when using RM adaptive by @henry-wallace-phys in #671
- bugfix: Save scaled adaptive matrix by @henry-wallace-phys in #674
- bugfix: Add mathmore by @KSkwarczynski in #673
- tidy: increase use of custom TOpen by @KSkwarczynski in #672
- feat: Sanitizer for Spline File by @KSkwarczynski in #670
- bugfix: Stop autocorr plotting hardcoding by @KSkwarczynski in #678
- tidy: Tag info to contributing by @KSkwarczynski in #677
- bugfix: LLH Scan per sample by @KSkwarczynski in #681
- tidy: Doxygen updates by @KSkwarczynski in #682
- breaking: Setup Weight Pointers in Core by @KSkwarczynski in #663
- bugfix: Bring back ice cream to plotting by @KSkwarczynski in #683
- bugfix: Save matrix correctly by @henry-wallace-phys in #676
- feat: Violin plots with 3 plots by @KSkwarczynski in #685
- feat: 2D Sigma var plotting by @KSkwarczynski in #675
- feat: Enhance setting parameters fixed/free, set them fixed/free by groups by @nosektom in #688
- tidy: Simply tidy by @KSkwarczynski in #687
Full Changelog: v2.2.3...v2.3.0
v2.2.3
What's Changed
- feat: Bump NuOscillator version by @dbarrow257 in #581
- tidy: bump actions/first-interaction from 2 to 3 in /.github/workflows by @dependabot[bot] in #587
- tidy: Fill MC Hist more scalable by @KSkwarczynski in #588
- tidy: MCMC Processor Sanitizers by @KSkwarczynski in #585
- feat: Spline Verbosity by @KSkwarczynski in #584
- tidy: bump actions/checkout from 4 to 5 in /.github/workflows by @dependabot[bot] in #586
- tidy: Improve Plotting param overlay by @KSkwarczynski in #590
- bugfix: Reset Step Size when loading adapt matrix by @KSkwarczynski in #589
- bugfix: Store correct syst/sample likelihoods when saving steps in MCMC by @henry-wallace-phys in #583
- feat: Update NuOscillator to v1.4.3 by @dbarrow257 in #596
- tidy: Update CPM from 0.40.2 to 0.42.0 by @KSkwarczynski in #595
- tidy: unify wheter step is UInt or Int by @KSkwarczynski in #594
- feat: Matrix Param Group Plot by @KSkwarczynski in #592
- feat: Allow to decrease entires in MCMC Processor by @KSkwarczynski in #597
- feat: Introduce Global bin number offset by @KSkwarczynski in #598
- tidy: Safer Plotting by @KSkwarczynski in #591
- feat: delayed rejection implementation by @henry-wallace-phys in #606
- bugfix: Proper doxygen for Delayed by @KSkwarczynski in #609
- bugfix: remove unnecessary extra update when adapting by @henry-wallace-phys in #611
- feat: Enforce Same Binning for posterior compasion by @KSkwarczynski in #600
- feat: Smear Contours by @KSkwarczynski in #605
- feat: MCMC Processor support for chains with weight by @KSkwarczynski in #612
- feat: arithmetic, Gaussian, HPD for outputting cov YAMLs by @hank-hua in #575
- feat: Tag Doxygen Bot by @KSkwarczynski in #615
- feat: Ability to swithc to previous doxygen versions by @KSkwarczynski in #617
- tidy: Fix doxygen warnings by @KSkwarczynski in #619
- tidy: Updated docuemantion by @KSkwarczynski in #614
- feat: 2D Comparison by @KSkwarczynski in #616
- tidy: Make Separate Function for migration lookup by @KSkwarczynski in #607
- tidy: bump actions/stale from 9 to 10 in /.github/workflows by @dependabot[bot] in #621
- tidy: bump actions/labeler from 5 to 6 in /.github/workflows by @dependabot[bot] in #620
- feat: Fast Spline Loading for Binned Splines by @KSkwarczynski in #599
- bugfix: tittle->title by @henry-wallace-phys in #622
- bugfix: Use correclty Sample Name in Spline Code by @KSkwarczynski in #603
- feat: Add Kochanek Bartels spline interpoaltion by @KSkwarczynski in #608
- tidy: MaCh3 mode alternative constructor by @KSkwarczynski in #613
- feat: All Osc Engines in container by @KSkwarczynski in #602
- tidy: More Fancy WebPage by @KSkwarczynski in #623
- bugfix: Safer Path appending by @KSkwarczynski in #604
- bugfix: Update Ubutnu build by @KSkwarczynski in #630
- feat: Make Bin lookup more scalable by @KSkwarczynski in #631
- feat: Custom Binning in ProcessMCMC by @KSkwarczynski in #625
- tidy: Unify Sasmple Index Getter by @KSkwarczynski in #626
- feat: Dynamic algorithm name by @KSkwarczynski in #627
- bugfix: more tittle -> title by @yash-quark in #635
- bugfix: Fix buggy canvasname in ProcessMCMC by @yash-quark in #636
- feat: Find_Pacakge CI by @KSkwarczynski in #628
- tidy: Stop Zero Correlations by @KSkwarczynski in #632
- bugfix: Stop segfault in Plot LLH by @KSkwarczynski in #634
- feat: Speedy Cholesky decomposition by @KSkwarczynski in #637
- feat: Adapt to work with multiple samples by @KSkwarczynski in #633
- bugfix: Correclty display math in doxygen by @KSkwarczynski in #640
- feat: Sigma Var Plotting by @KSkwarczynski in #642
- tidy: bump peter-evans/create-or-update-comment from 4 to 5 in /.github/workflows by @dependabot[bot] in #647
- bugfix: ICPX memory by @KSkwarczynski in #648
- feat: Process mcmc reweighting plots by @DavidRiley12345 in #645
- Bugfix: sample handler python binding by @ewanwm in #649
- Bugfix: allow CIPythonValidations again by @ewanwm in #650
- feat: Predictive Plotting by @KSkwarczynski in #643
- tidy: bump github/codeql-action from 3 to 4 in /.github/workflows by @dependabot[bot] in #652
New Contributors
- @DavidRiley12345 made their first contribution in #645
Full Changelog: v2.2.2...v2.2.3