Feat/cli helpers header parity - #60
Draft
pravirkr wants to merge 6 commits into
Draft
Conversation
- Introduce CandidateTable plus TimeSeries.search / find_pulses / ffa as a library-first alternative to SIGPROC seek, peak, best, and ffa. - Candidates are CSV with SI units. - Document usage in a new tutorial.
|
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Port the remaining SIGPROC IO / reduction / fake tools into thin
spp_*CLIs on top of the existing sigpyproc API. We aim to make sigpyproc a modern successor, not a C/Fortran clone; functional equivalence is prioritized over bit-identical numerics (except for byte-copy I/O). A modern search API andspp_searchCLI (FFT + harmonics, FFA, single pulses, harmonic clustering).Should close #18.
What's included
Inspect and extract
spp_header: print (sigproc / pfits / fbh5), get, keys-help, in-place update, and--dry-runBefore/After tablespp_extract: time range (--start-sec/--duration), channel list or range;extract_chansnow sets per-channelfch1spp_stats: per-channel mean / std / skew / kurtosis (text or CSV)Clean and reduce
Filterbank.requantizeactually packs bits (Rescale+BitsInfo.quantize)spp_decimate,spp_bandpass,spp_zerodm(Eatough / PRESTO weighted zero-DM)spp_clean: RFI mask, zap channels, zap times (zap_blockincore/rfi.py)Combine
sigpyproc.combine: time-merge and frequency-splice (lives outsideio/so readers are not imported there)spp_merge,spp_spliceFREQUENCY_STARTheaders are detected and rejected with a clear error (linearfch1/foffonly)Dedisperse and fold
spp_dedisperse tim | subband | tree | plankernels.taylor_tree) and Levin DM plan (core/dmplan.py)spp_foldwrites.npz+ ASCII profileFake data
simulation.pulsar+spp_fake {noise,pulsar,pulse}Search
CandidateTable(QTable, SI units, CSV only)PowerSpectrum.find_peaks— running median/MAD SNR, local maximaTimeSeries.search- resample → rfft →FourierSeries.deredden→form_spec→ harmonic folds →find_peaksTimeSeries.find_pulses- boxcar bank + greedy dead-time (not oneMatchedFiltercall, notpeak.ftime-halving)TimeSeries.ffa+kernels.ffa_stage— Staelin/Mueller tree; periods in seconds on the APIspp_search {fft,pulses,ffa,cluster}Tutorial
docs/tutorials/search.md, wired into Get StartedSIGPROC mapping
seek/findTimeSeries.search/spp_search fftpeakTimeSeries.find_pulses/spp_search pulsesbest(non-plot)CandidateTable.cluster/spp_search clusterffaTimeSeries.ffa/spp_search ffa.prd/.bst/ PGPLOT