Skip to content

Releases: DrCytometer/AutoSpectral

Version 1.0.2: better memory management

21 Feb 13:14

Choose a tag to compare

Some small improvements to reduce spikes in memory usage while unmixing FCS files. To be improved further later.

Version 1.0.0: Faster unmixing

13 Feb 14:50

Choose a tag to compare

  • Version 1.0.0 brings a revamp to how AutoSpectral identifies the best spectra on a per-cell basis. The theory behind it remains the same--we are still trying to identify the variation in the autofluorescence and fluorophores that best reduces the residual on a per-cell basis. Now, however, we do not need to do that using brute force. Instead, we can search only through variants (or autofluorescences) that align with a given cell's residual. Thus we can pre-screen the variants to a select few and then test just those. This means we can figure out the solution in way less time. It also means that a native R implementation of the algorithm is possible in R in a somewhat reasonable time frame. So, that may help for anyone struggling to use the fast C++ version in AutoSpectralRcpp.
  • Since we can now quickly identify which variants are useful for a given cell, we can test more variants, allowing a finer-grained view of the variation, which may improve unmixing quality.
  • Autofluorescence extraction and fluorophore variation extraction are now modified to allow searching for more variation, focusing on "problematic" cells that remain far from where they should be when the first batch of variation is applied. This is most helpful for extracting autofluorescence in complex tissue samples, where AutoSpectral previously struggled to deal with the last few messy cells. Use "refine = TRUE" for this.
  • Speed in unmixing should be the biggest change, particularly if you run using AutoSpectralRcpp.
  • When extracting autofluorescence using get.af.spectra() with "refine = TRUE", you will now get a set of plots showing you the unmixed data for the channels most affected by the autofluorescence ("worst channels"). The same channels will be plotted after a single round of autofluorescence extraction per cell (as in AutoSpectral v0.9.2 and earlier) as well as after the second round, using data from more difficult
    cells. To see this, run with refine = TRUE.
  • Autofluorescence is now assigned to each cell using a shortcut to "project" where the AF will impact on fluorophore or residual space. This is especially fast for residual-based assignment.
  • Perhaps most importantly, discontinuities that sometimes appeared in the data after unmixing using per-cell-fluorophore optimization, particularly with the "fast" approximation, should now be gone or at least greatly diminished.

Version 0.9.0: A bit faster

23 Dec 13:57

Choose a tag to compare

Version 0.9.0 implements a few modest changes to speed up the unmixing and general processing. Benchmarking suggests this can be about 2x faster.

The underlying parallelization now operates differently and enables switching depending on the type of operating system you're working on. Several bugs have been patched, including things affecting the reading of Opteon FCS files and processing of certain control:negative pairings in get.spectral.variants(). More checks have now been implemented in check.control.file() to counteract issues I hadn't considered.

New features include:

  • Unmixing matrix can be saved via save.unmixing.matrix()
  • Weights can be calculated via calculate.weights()
  • Plotting of unmixing matrix in get.fluorophore.spectra

See the NEWS for more details.

Version 0.8.7: Support for A5SE and Cytek Northern Lights

01 Dec 10:49

Choose a tag to compare

Version 0.8.7 provides support for the BD FACSymphony A5SE spectral flow cytometer. Call get.autospectral.param( cytometer = "a5se" ). It also provides more explicit support for the 3-laser (violet, blue, red) Northern Lights version of the Cytek Aurora (get.autospectral.param( cytometer = "auroraNL" ).

New features include automatic plotting of the unmixing and hotspot matrices when get.fluorophore.spectra() is called.

There is a Shiny helper app to assist in the creation of the control files required to set up AutoSpectral runs. For this, visit: https://github.com/DrCytometer/AutoSpectralHelper

Finally, the weighting for unmixing Discover A8 and S8 files has been changed to fall in line with other cytometers and will no longer rely on QSPE values.

Version 0.8.6: improvements to plotting

22 Nov 13:42

Choose a tag to compare

Version 0.8.6 fixes issues with the plotting. It also allows more user control over the plotting using color palettes and gives more access to the plotting functions. spectral.ribbon.plot() should now be usable for any data you'd like.

Some issues that should be fixed:
-messy density/pseudocolor plots of the gates
-gaps in the spectral ribbon plots
-more control over the biexponential transform in create.biplot

Other changes:
-parallel arguments are now provided, rather than relying on asp$parallel
-several unused functions have been removed
-fluorophore matching for the creation of the control file should work better now

That should be the main stuff. There shouldn't be any changes in how the data are processed at present.

v0.8.5

14 Nov 09:03

Choose a tag to compare

This version has been tested for the basic workflow on simple datasets from all supported cytometers.