- pinned numpy dependency to <1.20 to fix incompatibility with lalsuite 6.81
- updated ephemerides instructions and citation requests in README
- fixed setup of FrequencyModulatedArtifactWriter class
- matplotlib will no longer be automatically forced to
agg
, but only ifenv["DISPLAY"]
is not set - improved default scaling of MCMC corner plots
- fixed missing unit for
tp
binary parameter in MCMC default plot labels
- LALSuite >= 6.80 now required
- simplified calls to F-stat prediction
- Writer:
- internal cleanup of sftfilenames vs sftfilepath
- SFTs are validated at end of
run_makefakedata()
- core and search classes: improved and fixed non-standard detection statistics
- fixed basic twoFX and BSGL computation logic for transient and semicoherent cases, generalized to Ndet>2
- reorganised methods for these computations
- additional results are stored as class attributes
- for transients, the detection statistic is now called explicitly
maxTwoF
- grid classes now initiate their
.search
object at instantiation instead of at firstrun()
call
- bugfix for
MCMCSearch.plot_prior_posterior()
- documentation now available from https://pyfstat.readthedocs.io
- and examples can be run on https://mybinder.org/v2/gh/PyFstat/PyFstat/master
- still being improved
- added
gridcorner
module for plotting GridSearch results - removed the specialist grid-based classes which were deprecated in 1.9.0
- internal changes to search classes
- should ideally not change anything for standard CW use cases
- but fix some corner cases and make for more robustness
- made tstart,tend optional in
get_fullycoherent_twoF()
- adapted most high-level search classes to this change
- grid searches now internally use named-column ndarrays
- some cleanup to keys storage in MCMC classes
- changed
helper_functions.get_doppler_params_output_format()
to return dict - fixed sorting of output fmt specifiers for both MCMC and grid classes
- changed
GridSearch.inititate_search_object()
to internal method_initiate_search_object()
- line-robust statistics are now always stored and returned as log10BSGL (for consistency with LALSuite)
- made various class methods private that had no obvious end-user use case
MCMCSearch.run()
: initiate search object before checking for old dataMCMCGlitchSearch.plot_cumulative_max()
: add savefig option (defaults to false)GridSearch.plot_2D()
: renamendsave
option tosavefig
for consistency with other plotting functions- removed unused
ComputeFstat.get_full_CFSv2_output()
- removed unused helper functions:
compute_P_twoFstarcheck()
compute_pstar()
twoFDMoffThreshold()
- new example
other_examples/PyFstat_example_spectrogram.py
- some improvements to tests and examples
- KNOWN ISSUES: implementation of line-robust statistic BSGL will need to be overhauled
- new class
InjectionParametersGenerator
- draws dicts of parameters from arbitrary priors
- can then be directly passed e.g. to Writer as
**params
- and derived
AllSkyInjectionParametersGenerator
- deprecate various grid-based specialist classes:
- these were all more or less unmaintained since a long time
- SliceGridSearch
- GridUniformPriorSearch
- SlidingWindow
- FrequencySlidingWindow
- EarthTest
- DMoff_NO_SPIN
- will be removed in next version unless users speak up
- these were all more or less unmaintained since a long time
- big overhaul of cumulative twoF calculations and plotting
- Writer: fix expected sftfilepattern in multi-IFO and custom-TSFT cases
- fixed internal consistency of parameter names:
- Freq->F0 and phi0->phi for all PyFstat classes/functions
- consistent conversion to lalappas arguments
- fixed parsing of injectSqrtSX and assumeSqrtSX arguments
- helper_functions.predict_fstat() no longer takes
**kwargs
- new instructions and helpful scripts for setting up developer environments (venv or conda)
- various improvements to test suite
- GridSearch: will now always include the end point in each 1D parameter points array
- restored MCMCSearch.plot_chainconsumer() to a workable state
- optional dependency checked and documented more cleanly
- the injections parameter option for this is actually called "truth" not "truths
- fixed checks of injection parameter keys for other MCMC plotting functions
- improved GridSearch.check_old_data_is_okay_to_use()
- minor logging improvements for Writer, GridSearch, TransientGridSearch
- new binary_mcmc_vs_grid example
- minor improvements to tests and other examples
- LALSuite 6.76 now required
- predict_fstat() helper function made more flexible
- Writer: fixed check_cached_data_okay_to_use() for multiple IFOs
- MCMCSearch and derived classes now store sampler as an attribute
- fixes to MCMC plotting
- proper scaling of injection parameters in walker plots
- proper display of prior (not logprior) in prior_posterior comparisons
- consistently close figure objects after saving
- all classes now announce their creation to the logger
- flake8 compliance
- code style now complying to stricter black 20.8b standards
- improvements to examples
- Writer: fix binary tp handling and clean up injection parameter parsing
- MCMCSearch plotting improvements:
- add injection parameters through "truths" kwarg
- F->2F fixes
- fix failures for single-parameter posteriors
- removed unused Bunch class
- refactored some core functions into BaseSearchClass methods or moved to helper_functions
- removed deprecated options/functions:
- ComputeFstat option estimate_covering_band
- Writer options minStartTime, maxStartTime
- MCMCSearch.get_median_stds()
- new internal class SearchForSignalWithJump which SemiCoherentGlitchSearch and GlitchWriter inherit from
- Writer classes, including several backwards-incompatbile changes:
- removed lots of default values where there isn't really a logical "default"; e.g. detectors and signal parameters now always need to be explicitly set.
- more flexible setup getting info from noiseSFTs (tstart, duration now optional and used as constraints)
- can now auto-estimate SFT frequency band if not set by user (assuming a single-template search)
- added manual ephemerides options
- removed add_noise option, same behaviour can still be controlled through options sqrtSX or noiseSFTs
- no .cff file generated any more if h0==0 (no signal)
- verbose option for make_cff() and make_data() methods
- clearer error messages in many cases
- ComputeFstat, SemiCoherentSearch and derived classes:
- fixed internal maxStartTime default if not set by user
- by that, fixed the SemiCoherentSearch segments auto-setup
- added Tsft as user option
- clearer error and logging messages
- improved helper_functions.get_sft_array()
- extended, cleaned up and further modularised test suite
- updated examples to changes in Writer and other classes
- fixed semi-coherent search bug introduced in 1.5.0:
- last segment was always skipped due to off-by-one error in segment boundary calculation.
- MCMC searches:
- extended print_summary() with new get_summary_stats() helper and deprecated get_median_stds()
- fixes to some of the more exotic prior types.
- Extended MCMC test coverage.
- The only change in this release is an updated README to point to the new 1.5+ Zenodo record.
- new default coverage band behaviour for all search classes:
- estimate from search ranges (GridSearch) or prior (MCMCSearch) unless minCoverFreq, maxCoverFreq set
- negative values can be used to reproduce old default of setting from SFT width
- explicit option estimate_covering_band deprecated
- semicoherent searches:
- sped up by only calling ComputeTransientFstatMap once per point
- BSGL now computed from summed F-stats, not for each segment
- per-segment results now stored in attribute twoF_per_segment instead of det_stat_per_segment
- MCMC searches: save twoF for each sample to .dat file
- Writer:
- options minStartTime, maxStartTime deprecated
- always use tstart, duration for actual data range
- and use transientStartTime, transientTau for transients
- transient-on-GPU output file writing fix
- examples:
- all output now goes to a directory "PyFstat_example_data"
- added mcmc_vs_grid_simple_example
- small fixes to search classes:
- get_max_twoF() fixed for TransientGridSearch
- fix column header format for per-Doppler-point transient Fmn output files
- fixed regexp deprecation warning
- throw warning if using MCMCSearch.generate_loudest() called for transients
- Writer: fix SFT counting for non-contiguous or overlapping SFTs
- now fully python3.8 compatible
- now using versioneer for versioning
- require lalsuite>=6.72
- added docker images, provided through github packages
- Writer class:
- new options randSeed, noiseSFTs and windowing
- change default sqrtSX from 1 to 0
- improved support for sources in binaries
- search classes:
- improved support for sources in binaries
- additional file outputs for MCMC (including full posterior samples)
- improved output file headers with version and options strings
- improved MCMC walker plotting
- implemented CFS feature injectSqrtSX
- manual ephemerides option
- new options estimate_covering_band and RngMedWindow
- extended get_covering_band() to deal with fkdot bands
- improved GridSearch logic to reuse (or not) old results
- removed injection_helper_functions module
- fixed placement of temporary output files
- improved error handling for lal programs
- added 1to1 test against CFSv2
- reorganised and improved examples
- various minor bug fixes and code cleanup
- python3 migration
- enforce black style checker
- smarter ephemerides finding
- pycuda as optional dependency
- improved test suite
- improved logic in Writer class
- fixes to ComputeFstat flags handling
- various minor bug fixes
- reorganised examples
- timing of transient F-stat map function
- see git commit history