All changes important to the user will be documented in this file.
[3.4.0] - 2021-7-23¶
Peter’s emcee wrapper, available at PyPWA.mcmc
System tests are now located in tests/system_tests
PyMask will now return exit values on call
PySimulate has been removed since it was limited in use, and it’s functionality has been consumed by the PyPWA scripting libs.
2D Gauss introductory tutorial to the documentation
CuPy support for Likelihoods and Simulation. This means we now officially support NVIDIA GPU acceleration, however for now it is limited to a single GPU. If there is enough demand for this to be expanded on, support for multiple GPUs will be added.
Particle now requires a charge to be supplied during the creation of the object. GAMP has also been modified to support the Charge being passed through to the Particle
Depreciated internal options that were passed to Minuit have been replaced with the modern alternatives.
Likelihoods were spawning multiple processes even when USE_MP was set to false. This has been corrected, and will avoid spawning extra processes as it was intended.
Particle Pools can now compared against other Particle Pools to see if they are storing the same content.
Regression from 3.2.0 where Gamp would not write out data to disk. This time by wrapping the data in a float, which should catch instances where the value stored is a pure scalar, verses instances where the data is an array with a len == 1
Particles can now be masked again, the mask is no longer silently deleted when passed to the object.
Numpy’s warning about numpy.float being deprecation should be resolved.
Any warnings about the LaTeX in the Likelihood’s Docstrings being deprecated should be resolved as well.
Gamp no longer combines particles with the same ID
Fixed issue where display_raw would fail in Jupyter with Particles
Vectors now support iPython and Jupyter Pretty printing
Vector sanitization function has improved handling of non-array inputs
FourVectors variable order is now in the correct order
Vectors now work with inputs that aren’t arrays
Patched issue with GAMP failing to write to file
pwa.pandas_to_numpyto convert Pandas data types to Numpy Structured Arrays, and
pwa.to_contiguousto convert DataFrames and Structured Arrays columns to contiguous arrays for quicker processing and C/Fortran Support
New experimental file format ParticleGZ, a direct-to-memory file format using pickle, csv, and Tar/GZ to compress data into a single archive for easy use.
Reference documentation to the Read The Docs for the various modules in PyPWA.
Initial examples section added.
Users now have to option to request structured Numpy arrays or Pandas DataFrames from
pwa.cachenow defaults to intermediate caching, and has to be disabled for use with caching files
Vectors str and repr field now output the mean of their theta, phi, as well as particle id and mass if they are available.
Vectors now wrap individual numpy arrays instead of a single structured array or DataFrame. This was done to improve performance of the vector as well as to make it C contiguous.
pwa.writewould fail to write CSV Numpy Arrays
pwa.writewould occasionally fail to detect DataFrames
Vectors would occasionally replace their fields with just their x values.
ProjectDatabasehas been added handle large data manipulation on disk instead of in memory.
Reader/Writer now share path of the file being operated on.
Binning now works in both fixed count and ranges, and can be done entirely in memory.
Initial Jupyter and IPython support.
Adding lego plotting.
Likelihoods are now standalone objects that can be combined with any optimizer.
Resonance support now builtin using
DataFramesas a backbone. Resonances are now saved as a two sheet excel file, and can be modified using the supplied wave and resonance objects.
Adds support for
Numexprto accelerate computation.
Simulation can be done as two separate parts through
Github Templates to help users and developers contribute to PyPWA
Separate release tag from version info
Package info is now stored in
pydatahas officially been updated to PyPWA 3.0.
Structured Arrays have been replaces for Pandas
DataFramesin some cases. Vectors still based on
numpyarrays to maintain performance.
Reactions have been merged into
Vectors have been simplified to be easier to test while still being powerful to use.
ProcessInterfacesnow must be closed after use. This includes all Likelihood objects.
pwa.datahas been refactored to be easier to be completely usable by itself.
SlotTablehas been removed in favor of
Project. Both use
PyTablesfor the backend.
Unsupported Python versions removed from package’s classifiers.
GAMP no longer claims that it can read PF files.
Cache will correctly report invalid when it’s contents differ from the source file.
monte_carlo_simulationand likelihoods now correctly handle exceptions that occur in the child processes.
Pipes are correctly closed now.
Extended Log-likelihood is now correctly calculated
Sv Writer will now write data.
Kv Reader will now read data.
numpyreader and writer.
Adds a helper script to clean the project directory of caches.
Adds initial documentation for PyPWA.
Added support for 3 Vectors, 4 Vectors, and Particles
ParticlePoolto aid in working with multiple Particles
Added a binning utility that supports multiple binning variables and dimensions
PyTablessupport, so that large datasets can be easily managed
All program names have been lowercased
Configuration package has been compressed into a single module
PySimulatenow is a library that has no UI, and has a UI portion that exclusively works with interfacing
Fuzzywuzzyis now optional
Process package is now a single module. Interface no longer uses
Bulk of program functionality moved to libs, progs being just for UI
Builtin Plugins moved to
libs, old plugin’s plugins have still reside in plugins, but under a package with the appropriate name. I.E. data plugins are in plugins/data.
All file related libs have been moved to libs/file
Combined optimizers with fit library
GAMP was updated to use Particles and ParticlePool
Files with extra newline should parse correctly now
CSV and TSV files will be lf instead of crlf on linux systems now
Nestle Minimization. There is currently no clear way to have Minuit and Nestle to operate with each other nicely. Implementation for multiple optimizers will remain, as well as new associated issues created.
Removed support for all version of Python before 3.7
Setup would pull in unstable Yaml parser
Process Plugin support for List Data
Adds Exception handling to Processes
PyMask support for multiple masking files.
PyFit will now filter out events if the Bin value is 0
The user can
XORmasks together with PyMask
Removed previous_event from Process Interface
Duplex Pipes are used over Simplex Pipes for Duplex Processes
get_file_lengthto using a binary buffered search.
Split interface’s plugins and internals to their own separate file based on the interfaces purpose.
PyFit no longer assumes bins are named
'BinN'you must specify Bin names in
Multiplier effect for the Minimizers has been moved to the individual likelihoods.
PyMask defaults to
ANDoperations instead of
PyFit will now shutdown correctly when killed with Ctrl-C or other interrupt.
The ChiSquared will no longer be multiplied by -1 when being minimized.
Data Parser’s Cache would crash on very large files.
Argument Parser for simple programs where a configuration file would be unneeded overhead for the user.
Numpy Data support for single arrays and pass fail files.
Data Plugin now has two array types, Single Array and Columned Array
Memory and Iterator objects now imported into PyPWA
Iterators report length now
PyMaskto mask and translate data
Plugin Loader now returns initialized objects
Moved all shell related items into a package called shell inside progs
Renamed ‘blank shell module’ to ‘blank program module’
Removed support for boolean and float arrays from EVIL Parser
Renamed internal GAMP type to Tree type
Split flat data into Columned data and standard arrays
ChiSquare and Empty likelihoods are now actually usable
setup.pywould fail on
setuptoolsversions < 20
Log Likelihood Plugin