{"id":41035814,"url":"https://github.com/spaulaus/dsp_toolkit","last_synced_at":"2026-01-22T10:33:10.745Z","repository":{"id":17180440,"uuid":"19947819","full_name":"spaulaus/dsp_toolkit","owner":"spaulaus","description":"Functions useful for analyzing digitized signals.","archived":false,"fork":false,"pushed_at":"2024-10-26T19:47:34.000Z","size":732,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-09T17:08:25.212Z","etag":null,"topics":["cfd","constant-fraction-discrimination","digital-signal-processing","digitized-waveforms","pixie16","tracefilter","xiallc"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spaulaus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-19T15:46:04.000Z","updated_at":"2024-10-28T00:53:32.000Z","dependencies_parsed_at":"2022-09-11T02:22:56.302Z","dependency_job_id":null,"html_url":"https://github.com/spaulaus/dsp_toolkit","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/spaulaus/dsp_toolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spaulaus%2Fdsp_toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spaulaus%2Fdsp_toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spaulaus%2Fdsp_toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spaulaus%2Fdsp_toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spaulaus","download_url":"https://codeload.github.com/spaulaus/dsp_toolkit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spaulaus%2Fdsp_toolkit/sbom","scorecard":{"id":840711,"data":{"date":"2025-08-11","repo":{"name":"github.com/spaulaus/dsp_toolkit","commit":"e07bc7302507cc72dc8ca6555ba1bd3f87dc16e7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T20:24:44.296Z","repository_id":17180440,"created_at":"2025-08-23T20:24:44.297Z","updated_at":"2025-08-23T20:24:44.297Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28661874,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cfd","constant-fraction-discrimination","digital-signal-processing","digitized-waveforms","pixie16","tracefilter","xiallc"],"created_at":"2026-01-22T10:33:10.219Z","updated_at":"2026-01-22T10:33:10.737Z","avatar_url":"https://github.com/spaulaus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Digital Signal Processing Toolkit\n\nThis code started as a C++ program to perform trapezoidal filtering to a digitized signal from\n[XIA LLC's Pixie-16 hardware](https://www.xia.com/dgf_pixie-16.html). The original sample code came\nfrom a VB program using [IGOR](https://www.wavemetrics.com/) as its base. It fairly well\napproximates the filter calculations that happen on a Pixie-16 module. These algorithms are mostly\nfocused around XIA's hardware and function, but can be applied to **any** digitized signal.\n\n## Installation\n\n`pip install dsp-toolkit`\n\n### Verify installation\n\nYou can verify the installation by opening up a python console and executing the following\n\n```python\nfrom dsp_toolkit.sample_data import sample_traces as st\nimport dsp_toolkit.filtering.filters as ft\n\nfilter = ft.calculate_trapezoidal_filter(st.plastic_scintillator, 10, 5)\nprint(filter)\n```\n\nYour results should be identical to\n\n```python\nresults = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0.4, 0.5,\n           0.2, 0.6, 0.7, 0.3, 0.0, 0.0, 0.0, -0.1, -0.3, -0.1, -0.1, -0.1, 0.1, 0.0, -0.1, 0.3,\n           0.3, 0.2, 0.0, -0.3, -0.1, 0.0, 0.0, 0.1, -0.1, -0.2, 0.2, 0.2, 0.0, -0.2, -0.2, 0.0,\n           0.1, 0.0, 0.0, -0.2, 0.4, 0.9, 0.8, 0.7, 0.6, 0.5, 0.7, 0.8, 0.6, 6.5, 74.8, 267.0,\n           574.5, 912.4, 1215.2, 1463.4, 1657.5, 1805.4, 1909.0, 1921.7, 1789.9, 1526.5, 1220.0,\n           940.1, 703.5, 456.4, 129.2, -278.9, -695.9, -1063.5, -1359.4, -1583.3, -1749.9, -1866.3,\n           -1888.6, -1764.0, -1505.7, -1198.9, -912.5, -676.4, -497.0, -363.7, -266.1, -191.3,\n           -130.7, -85.5, -56.4, -38.8, -28.2, -21.0, -15.7, -10.8, -10.3, -16.8, -23.2, -24.7,\n           -23.0, -18.6, -12.4, -7.0]\n```\n\nFor more detailed usage checkout\nthe [Demo notebook](https://github.com/spaulaus/dsp_toolkit/blob/master/docs/demo.ipynb).\n\n## Module Descriptions\n\n### filtering\n\nImplements a simple trapezoidal filter without any bells and whistles. We also include a simple RC\nlow-pass filter used for conditioning signals.\n\nXIA LLC uses [trapezoidal filtering](https://doi.org/10.1109/NSSMIC.2008.4774600) to calculate\ntrigger positions and energies. The functions in this script approximate the Pixie-16 on-board\ncalculations. We have functions to calculate\n\n* trigger positions,\n* signal baseline,\n* signal energy,\n* energy sums,\n* and trigger and energy responses.\n\nWe've made no attempt to convert bins to time. Users can do this trivially if they know the sampling\nfrequency of their signal.\n\n### sample_data\n\nThe sample data include both energy spectra, and digitized signals. The signals can be used with the\nvarious filtering and fitting functions. The energy spectra can be used with pileup calculations.\n\n### signal_pileup\n\nTakes a user provided energy distribution (either binned or raw) and calculates signal pileups based\non trapezoidal filter parameters and count rates. We've also provided some macros that can be used\nwith the CERN ROOT program. Those scripts served as the basis for the python functions.\n\n### timing\n\nProvides both fitting and constant fraction discrimination (CFD) functions. We implement both a\ntraditional CFD, and a CFD described in XIA's Pixie-16 Manual. We implement a couple of different\nfitting functions. The `vandle` function is the most tested and used function.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspaulaus%2Fdsp_toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspaulaus%2Fdsp_toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspaulaus%2Fdsp_toolkit/lists"}