Attpc-spyral

Latest version: v0.18.0

Safety actively analyzes 723400 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 8 of 9

0.6.0

This is a big release and represents the biggest change to Spyral and it's usage so far! Spyral is now an installable package using
`pip install attpc_spyral` and focuses on a new analysis Pipeline. The default pipeline (v0.5.0 and earlier) still exists, but it is now much easier to inject new analysis by adding custom phases. There is a lot here, too much for just one release note, so we direct you to the updated [documentation](https://attpc.github.io/Spryal) for more complete details.

- Add Pipeline and Phase abstract concepts
- Re-implement original Phases as defaults
- Overhaul docs for new system
- Re-organize repo for better usage as a package
- Remove unused utilities and dependencies

0.5.0

This release is focused on the removal of Nearest-Neighbor Smoothing (NNS) from the clustering phase and accounting for all of the downstream effects. Some of the highlights are

- Removal of NNS! Finally! This was an old artifact from the Dalitz clustering method, which could have dramatic and often times unpredictable effects on the data, including the Particle ID.
- Removal of NNS revealed previously ignored artifact-ing in the point cloud data in the z-coordinate due to the improper handling of conversion from GET TimeBuckets to floating point values. Previously was a simple cast to float, which would result in "clumps" of data in z. Now cast to float and add a random smearing on the interval of [0.0, 1.0) in time buckets. This accurately represents the sampling behavior in the data.
- Removal of NNS as well as user reports revealed bug where point cloud data could sometimes become NaN or Inf if values outside the legal detector volume were attempted to be sent through the electric field correction. Illegal points are now pruned at the clustering phase.
- Removal of NNS necessitated a change to the clustering algorithm. No longer cluster on charge. Without NNS, charge is too diffuse to cluster on. This also allowed simplification of scales as all scales are in the same base units (mm). Only scaling applied is to scale the z-axis to match the x and y axis to avoid over emphasis of z separation in data. These changes affect the recommended default value for epsilon in HDBSCAN. Now recommend value of 10.0 for `cluster_selection_epsilon`.
- Smoothing factor in estimation phase also needs to be increased. New recommended value is 100.0 (verified with scipy).

Documentation is updated. Notebooks updated. Dependency versions have been bumped in this release, so please reinstall the requirements.txt.

This is a big change to the analysis, and can effect the data outcome. Please use caution when updating, and report any issues or unexpected behavior!

0.4.0

This release changes the way that Spyral interprets ion chamber data as well as adding the parsing of FRIBDAQ scalers. Below is a list of major features and their impact.

- FRIBDAQ scalers are now extracted in the pointcloud phase. Scalers are written to their own dataframe and are stored in the scalers directory of the workspace.
- The ion chamber analysis received a bunch of fixes. The multiplicity threshold is now applied more intuitively. The ion chamber delay is now accounted for using a new parameter in the config `ic_delay_time_bucket`. This new parameter allows the user to set the ion chamber delay; all peaks before the delay are discarded and the first peak after (or at) the delay is used as the triggering peak. Also fixed a bug in how the ion chamber offset was applied to point clouds.
- Some small improvements to the progress bars
- Some small bugfixes to notebooks
- Update examine_ic.ipynb for changes to ion chamber.
- Fix some documentation mistakes
- Bump a few deps

This release introduces a new configuration parameter, so please update any existing configuration files you are using. This release also bumps the version of a few dependencies, so please re-install the dependencies in requirements.txt.

0.3.1

This is the v0.3.1 release of Spyral. This is a minor update to address two major edge cases that could cause crashing behavior:

- Spline creation can fail for two major reasons: too few points (less than 5) or the data is not monotonic in z. We now catch these events and drop them, with a warning in the log files.
- On some Linux flavors, multiprocessing defaults to using `fork` instead of `spawn` to start processes. `fork` does not play well with the parallel backend used by polars. So now we strictly require the use of `spawn` to start child processes.

After some testing we also refactored and stabilized the solver_interp code. Unless a revelation occurs, this method most likely will not change dramatically moving forward.

example_analysis.ipynb was also refactored to showcase the use of the vector library bundled as part of spyral-utils.

0.3.0

In this release of Spyral, a major change was made to the way that we perform the estimation phase. We now use smoothing splines to generate a smoothed trajectory for estimating parameters such as dEdx and Brho. This results in significantly improved resolution in the particle ID spectrum in particular!

Below is a brief summary:
- Smoothing splines in estimation. Significant resolution gains in PID at cost of some runtime performance.
- Minor bugfixes in estimation which could result in strange vertex position choices
- Bump versions of many deps. In particular, rocket-fft which was not working for python 3.12.

Since dependencies were updated, please use the requirements.txt to update your local environment after updating!

Documentation is also updated for this release

0.2.0

For this release there are two major changes to Spyral.

- The first is a change to the way we handle the IC analysis. Previously, the IC had peaks rejected by looking for coincidences with the Si detector. This allowed us to extract the "true" IC peak as well as optionally correct the start time of the GET event. The parameter `event_correct_ic_time` was used to control whether the time correction was applied, but the Si-IC coincidence was *always* applied. Now, if `event_correct_ic_time` is set to false, the Si-IC coincidence will not be applied and only the raw IC signal will be considered.
- The second is the move of the ParticleID class to spyral-utils. This makes a particle ID gate more portable and usable for further analysis. Additionally, a new dependency was added to spyral-utils, [vector](https://vector.readthedocs.io). This allows for more complete four-vector analyses.

There were also minor fixes to the particle ID notebook which should make it less brittle to runs where the IC data was not present.

Page 8 of 9

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.