{"id":19671242,"url":"https://github.com/cgohlke/sdtfile","last_synced_at":"2025-10-07T22:51:35.327Z","repository":{"id":60722863,"uuid":"242422013","full_name":"cgohlke/sdtfile","owner":"cgohlke","description":"Read Becker \u0026 Hickl SDT files.","archived":false,"fork":false,"pushed_at":"2025-05-10T19:42:06.000Z","size":54,"stargazers_count":13,"open_issues_count":1,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-28T17:44:19.071Z","etag":null,"topics":["fluorescence-lifetime-spectroscopy","fluorescence-microscopy-imaging","format-reader","life-sciences-image","photon-counting","python"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/sdtfile","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cgohlke.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-22T22:41:34.000Z","updated_at":"2025-09-17T20:23:01.000Z","dependencies_parsed_at":"2022-10-03T21:19:34.054Z","dependency_job_id":"9c5d60c0-91b5-4228-b9ef-4f58a656cb3b","html_url":"https://github.com/cgohlke/sdtfile","commit_stats":{"total_commits":69,"total_committers":2,"mean_commits":34.5,"dds":0.3623188405797102,"last_synced_commit":"dabd2d616c6e8f4c2d12f103499fbd66cc74e53e"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/cgohlke/sdtfile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgohlke%2Fsdtfile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgohlke%2Fsdtfile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgohlke%2Fsdtfile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgohlke%2Fsdtfile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cgohlke","download_url":"https://codeload.github.com/cgohlke/sdtfile/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgohlke%2Fsdtfile/sbom","scorecard":{"id":272527,"data":{"date":"2025-08-11","repo":{"name":"github.com/cgohlke/sdtfile","commit":"16bd644f3b7c8528be0f9998dd6e07bcfae27938"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"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":"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":"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":"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":"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":"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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: BSD 3-Clause \"New\" or \"Revised\" License: 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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2025.5.10 not signed: https://api.github.com/repos/cgohlke/sdtfile/releases/217797990","Warn: release artifact v2025.3.25 not signed: https://api.github.com/repos/cgohlke/sdtfile/releases/208269164","Warn: release artifact v2024.12.6 not signed: https://api.github.com/repos/cgohlke/sdtfile/releases/189479199","Warn: release artifact v2024.11.24 not signed: https://api.github.com/repos/cgohlke/sdtfile/releases/187177943","Warn: release artifact v2024.5.24 not signed: https://api.github.com/repos/cgohlke/sdtfile/releases/157461693","Warn: release artifact v2025.5.10 does not have provenance: https://api.github.com/repos/cgohlke/sdtfile/releases/217797990","Warn: release artifact v2025.3.25 does not have provenance: https://api.github.com/repos/cgohlke/sdtfile/releases/208269164","Warn: release artifact v2024.12.6 does not have provenance: https://api.github.com/repos/cgohlke/sdtfile/releases/189479199","Warn: release artifact v2024.11.24 does not have provenance: https://api.github.com/repos/cgohlke/sdtfile/releases/187177943","Warn: release artifact v2024.5.24 does not have provenance: https://api.github.com/repos/cgohlke/sdtfile/releases/157461693"],"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"}}]},"last_synced_at":"2025-08-17T13:44:13.547Z","repository_id":60722863,"created_at":"2025-08-17T13:44:13.547Z","updated_at":"2025-08-17T13:44:13.547Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278861029,"owners_count":26058632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"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":["fluorescence-lifetime-spectroscopy","fluorescence-microscopy-imaging","format-reader","life-sciences-image","photon-counting","python"],"created_at":"2024-11-11T17:08:15.509Z","updated_at":"2025-10-07T22:51:35.322Z","avatar_url":"https://github.com/cgohlke.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"..\n  This file is generated by setup.py\n\nRead Becker \u0026 Hickl SDT files\n=============================\n\nSdtfile is a Python library to read SDT files produced by Becker \u0026 Hickl\nSPCM software. SDT files contain time correlated single photon counting\ninstrumentation parameters and measurement data. Currently only the\n\"Setup \u0026 Data\", \"DLL Data\", and \"FCS Data\" formats are supported.\n\n`Becker \u0026 Hickl GmbH \u003chttp://www.becker-hickl.de/\u003e`_ is a manufacturer of\nequipment for photon counting.\n\n:Author: `Christoph Gohlke \u003chttps://www.cgohlke.com\u003e`_\n:License: BSD-3-Clause\n:Version: 2025.5.10\n:DOI: `10.5281/zenodo.10125608 \u003chttps://doi.org/10.5281/zenodo.10125608\u003e`_\n\nQuickstart\n----------\n\nInstall the sdtfile package and all dependencies from the\n`Python Package Index \u003chttps://pypi.org/project/sdtfile/\u003e`_::\n\n    python -m pip install -U sdtfile\n\nSee `Examples`_ for using the programming interface.\n\nSource code and support are available on\n`GitHub \u003chttps://github.com/cgohlke/sdtfile\u003e`_.\n\nRequirements\n------------\n\nThis revision was tested with the following requirements and dependencies\n(other versions may work):\n\n- `CPython \u003chttps://www.python.org\u003e`_ 3.10.11, 3.11.9, 3.12.10, 3.13.3 64-bit\n- `NumPy \u003chttps://pypi.org/project/numpy/\u003e`_ 2.2.5\n\nRevisions\n---------\n\n2025.5.10\n\n- Support Python 3.14.\n\n2025.3.25\n\n- Fix shape of data with routing channels.\n- Drop support for Python 3.9, support Python 3.13.\n\n2024.12.6\n\n- Fix read MeasureInfo fields as scalars (breaking).\n- Update some structure field names with BH reference (breaking).\n- Parse some SetupBlock binary structures (#7).\n- Include more information in str(SdtFile).\n- Add subtype to FileRevision.\n\n2024.11.24\n\n- Update MEASURE_INFO_EXT struct to SPCM v.9.9 (breaking).\n\n2024.5.24\n\n- Fix docstring examples not correctly rendered on GitHub.\n\n2024.4.24\n\n- Support NumPy 2.\n\n2023.9.28\n\n- Update structs to SPCM v.9.66 (breaking).\n- Shorten MEASURE_INFO struct to meas_desc_block_length.\n\n2023.8.30\n\n- …\n\nRefer to the CHANGES file for older revisions.\n\nReferences\n----------\n\n1. W Becker. The bh TCSPC Handbook. 9th Edition. Becker \u0026 Hickl GmbH 2021.\n   pp 879.\n2. SPC_data_file_structure.h header file. Part of the Becker \u0026 Hickl\n   SPCM software installation.\n\nExamples\n--------\n\nRead image and metadata from a \"SPC Setup \u0026 Data File\":\n\n.. code-block:: python\n\n    \u003e\u003e\u003e sdt = SdtFile('image.sdt')\n    \u003e\u003e\u003e int(sdt.header.revision)\n    588\n    \u003e\u003e\u003e sdt.info.id[1:-1]\n    'SPC Setup \u0026 Data File'\n    \u003e\u003e\u003e int(sdt.measure_info[0].scan_x)\n    128\n    \u003e\u003e\u003e len(sdt.data)\n    1\n    \u003e\u003e\u003e sdt.data[0].shape\n    (128, 128, 256)\n    \u003e\u003e\u003e sdt.times[0].shape\n    (256,)\n\nRead data and metadata from a \"SPC Setup \u0026 Data File\" with multiple data sets:\n\n.. code-block:: python\n\n    \u003e\u003e\u003e sdt = SdtFile('fluorescein.sdt')\n    \u003e\u003e\u003e len(sdt.data)\n    4\n    \u003e\u003e\u003e sdt.data[3].shape\n    (1, 1024)\n    \u003e\u003e\u003e sdt.times[3].shape\n    (1024,)\n    \u003e\u003e\u003e int(sdt.setup.bh_bin_hdr['soft_rev'])\n    850\n\nRead image data from a \"SPC FCS Data File\" as numpy array:\n\n.. code-block:: python\n\n    \u003e\u003e\u003e sdt = SdtFile('fcs.sdt')\n    \u003e\u003e\u003e sdt.info.id[1:-1]\n    'SPC FCS Data File'\n    \u003e\u003e\u003e len(sdt.data)\n    1\n    \u003e\u003e\u003e sdt.data[0].shape\n    (512, 512, 256)\n    \u003e\u003e\u003e sdt.times[0].shape\n    (256,)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgohlke%2Fsdtfile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcgohlke%2Fsdtfile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgohlke%2Fsdtfile/lists"}