Skip to content

Conversation

@t-b
Copy link
Collaborator

@t-b t-b commented Feb 28, 2025

  • FFT size fix using 2^l + 3^k logic, closes: PSX: Make it faster #1663
  • psx accepted average fix: return real amplitude for double expontential
  • average fit for reject, undet, all, add into column on the right
  • Add default values for filter frequencies:
sweepFilter: Default values for low/high, order defaults to 4
low cutoff  = 1 / (3 * pi * riseTau)
high cutoff = 1 / (3 * pi * decayTau)
deconvFilter: Default values for low/high, order defaults to 4
low cutoff  = 1 / (4 * pi * riseTau)
high cutoff = 1 / (4 * pi * decayTau)
  • Add y value from PSX_CalculateOnsetTime into psxEvent and psxstats
  • add the fit results as a wave in psx
  • the "block size" control doesn't respect the "current combo" checkbox state
  • add peakThreshold in () behind numberOfSDs in the JWN to document it
  • Add V_mode and all other missing entries from StatsQuantiles to postProc output for stats in psxStats
  • Prep PR: PSX prep #2471
  • TB: Dig up store/results code from slack
  • Tim provides Poc for figuring out psxKernel parameters from scratch
  • Approval from Tim
  • Fix conflicts
  • Fix commits a bit
  • Fix tests
  • Update ihf documentation
Old Todos

So this should be ready for a first test. I've adapted `psxKernel` and `psxStats` to allow passing in multiple selections.

  • Fix assertion, https://aiephys.slack.com/archives/C06P3MYEV6H/p1742330027060869
  • PSX multiple selections (only that) #2376
  • Yesterday, we chatted about moving the baseline search before peak_t, and I think
    that still makes sense. The baseline search shouldn't search past the previous
    peak_t. With the baseline_t of the event available, PSX_CalculateEventPeak, instead
    of using prevDeconvPeak_t to constrain the search, can use the event
    baseline_tinstead. The above makes adding a peakfinding operation, which I suggested
    yesterday, unnecessary.
  • Tweak accept fit average logic: The start point for the fit should be calculated via rise time calculation (20% of amplitude, add control "fit start amplitude"). Use that for onset and peak methods.
  • Debug session with Tim
  • Polish code
    • // TODO add vertical dashed lines at positions
      // 3 checkboxes to turn all of these on/off below suppress update
      // peak_t
      // baseline_t
    • Fix assertion when restoring PSX panel with accepted fit checkbox checked
  • Add three taus to stats
  • Wait for Tim's changes
  • Fix function comment PSX_AppendTracesToAllEventGraph
  • https://aiephys.slack.com/archives/D6WGZV2V8/p1743629846161639
  • Fix slow/fast tau
  • Excel import could be better, see UpdateInfoButtonHelp: Set machine-readable text for C&P #2424
  • Commit cleanup
  • Add psxBPSweepFilter (BP = bandpass) and back down order for sweep/deconv. Handle the high/low frequency input arguments for the user such that the filtering is always bandpass.
  • Rename psxDeconFilter to include the filter type acronym (is this also a bandpass filter?). Manage the frequency arguments for the user such that it doesn't matter what order they are provided.
# psxSweepFilter(lowFreq, highFreq [, order = 6])
# back down on having nonfinite values in filtered data, order -2, output passing order
# back down on deconv order as well, same approach
# use code from Tim to determine the highest possible, reapply that order to all sweep data

@timjarsky

This comment was marked as outdated.

@timjarsky timjarsky assigned t-b and unassigned timjarsky Mar 7, 2025
@t-b

This comment was marked as outdated.

@t-b

This comment was marked as outdated.

@t-b t-b assigned timjarsky and unassigned t-b Mar 11, 2025
@t-b t-b assigned t-b and unassigned timjarsky Mar 18, 2025
@t-b t-b force-pushed the bugfix/2362-psx-support-multiple-selections branch from f508957 to f23db8a Compare March 19, 2025 14:41
@t-b t-b assigned timjarsky and t-b and unassigned t-b and timjarsky Mar 19, 2025
@t-b t-b changed the title Support multiple select statements Various PSX fixes Mar 25, 2025
@t-b t-b force-pushed the bugfix/2362-psx-support-multiple-selections branch from 1332271 to 08deb18 Compare March 26, 2025 18:12
@t-b t-b assigned timjarsky and unassigned timjarsky Mar 26, 2025
@t-b t-b force-pushed the bugfix/2362-psx-support-multiple-selections branch 4 times, most recently from a12c1dd to 193bf80 Compare April 8, 2025 19:46
@timjarsky

This comment was marked as outdated.

@timjarsky
Copy link
Collaborator

@t-b I also tested pasting the average fit results into Excel. The row formatting is correct. However, Excel plots all the columns in one column. Excel is dumb. To correct this, paste into Excel, select the cells, select Data from the menu, select Text to Columns, and select the appropriate delimiter in the Excel pop-up GUI.

@timjarsky
Copy link
Collaborator

timjarsky commented Apr 8, 2025

@t-b there may also be issues with the indivdual decay tau values. For example in this case I'm getting a negative weighted tau.

image

timjarsky and others added 29 commits October 29, 2025 22:40
New MiES algorithmic utility for band pass filtering with Nan, Inf, and
ringing rejection and automatic order reduction
Rename it to psxDeconvBPFilter to make it clear that this is a bandpass
filter, see also PSX_DeconvoluteSweepData.

And also reorder the filter frequencies for the user to avoid an
assertion.
Due to implementation details of how FilterIIR implements band pass
filters the used order is always even. If required, odd values are increased by one so
that they are even.

Document that and also make them even already when we get them. We can as
well adap the default value to be even already.
Define all variables at the top, reword the documentation.
When PSX_OperationSweepGathering returns 1 as error code, we wrote the
code so that idx is not incremented in this case. The idea in d359a7a
(PSX_Operation: Handle partial results better, 2024-02-27) was that we
don't want holes in the output wave. But the code was buggy as it, after
an error, would reuse the same data again, and thus error out again, and
therefore ignoring all data behind the first combination with an error.

Fix that by introducing separate indizes for reading and writing.
The FFT algorithm used by Igor Pro requires the prime factors of the data
points to be small, the documentation even says < 5. A real world dataset
with size 2308332 was way too slow and all time was spent in FFT. This
number factors into {2,2,3,13,14797} so this is really not small.

We now fix that by padding the data to the next power of two, this should
also not influence the result.
We now have average fits for all states (accept, reject, undet, all) and
not only accept.

The GUI was also redesigned to accomodate the new checkboxes and buttons.
These routines allow to calculate all values between 2^1 and 2^30 which
have 2 and 3 as prime factors. This helps in deciding a good cut off value
for FFT as it only performs when the primes are smaller than 5.
The FFT implementation in Igor Pro requires the prime factors of the
length to be < 5 for speedy execution.

For some cases these prime factors can be very large (~1e5) and thus FFT
would be dead slow, i.e. in the order of minutes on common machines.

We now employ a data shortening to a size which has only 2 and 3 as prime
factors, which makes FFT very fast. This is only done if we have prime
factors larger than a 1000 in the original size.
We now reserve space for the defaults in the
psxDeconvBPFilter/psxSweepBPFilter operations so that we can later on add
the calculated defaults, which need parameters from psxKernel, can be
added via PSX_AddDefaultFilterFrequencies.
And allow querying them from psxstats.
This is convenient for documentation purposes although this is not an
input parameter.
Ever since 7aa2be6 (PSX: Add average fit for all states, 2025-06-04) we
are using the per-combo index for gathering the
eventKernelAmp/eventOnsetTime/eventPeakTime values.

This is wrong as we must use the index of the displayed events.
@t-b t-b force-pushed the bugfix/2362-psx-support-multiple-selections branch from a497d56 to ba0dc32 Compare October 29, 2025 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PSX: Make it faster

3 participants