{"id":13510477,"url":"https://github.com/sigmf/SigMF","last_synced_at":"2025-03-30T16:33:39.571Z","repository":{"id":16775398,"uuid":"80623332","full_name":"sigmf/SigMF","owner":"sigmf","description":"The Signal Metadata Format Specification","archived":false,"fork":false,"pushed_at":"2024-04-12T19:31:48.000Z","size":2022,"stargazers_count":328,"open_issues_count":30,"forks_count":74,"subscribers_count":45,"default_branch":"main","last_synced_at":"2024-04-13T02:56:57.914Z","etag":null,"topics":["big-data","metadata","signals","specification","standard"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sigmf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-02-01T13:40:20.000Z","updated_at":"2024-04-14T19:22:35.576Z","dependencies_parsed_at":"2024-01-13T00:29:57.613Z","dependency_job_id":"5e62a30b-c56e-44fb-81a6-692a8159bd0f","html_url":"https://github.com/sigmf/SigMF","commit_stats":null,"previous_names":["gnuradio/sigmf"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmf%2FSigMF","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmf%2FSigMF/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmf%2FSigMF/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmf%2FSigMF/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sigmf","download_url":"https://codeload.github.com/sigmf/SigMF/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222566739,"owners_count":17004237,"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","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":["big-data","metadata","signals","specification","standard"],"created_at":"2024-08-01T02:01:40.569Z","updated_at":"2024-11-01T11:30:22.845Z","avatar_url":"https://github.com/sigmf.png","language":null,"funding_links":[],"categories":["Others","Python","big-data"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/sigmf/SigMF/blob/v1.2.0/logo/sigmf_logo.svg\" alt=\"Rendered SigMF Logo\"/\u003e\u003c/p\u003e\n\n# SigMF: The Signal Metadata Format\n\nWelcome to the SigMF project! The [SigMF specifications can be viewed here](https://sigmf.github.io/SigMF/index.html) or [downloaded as a PDF](https://sigmf.github.io/SigMF/sigmf-spec.pdf). Below we discuss why and how you might use SigMF in your projects.\n\n## Introduction\n\nSharing sets of recorded signal data is an important part of science and\nengineering. It enables multiple parties to collaborate, is often a necessary\npart of reproducing scientific results (a requirement of scientific rigor), and\nenables sharing data with those who do not have direct access to the equipment\nrequired to capture it.\n\nUnfortunately, these datasets have historically not been very portable, and\nthere is not an agreed upon method of sharing metadata descriptions of the\nrecorded data itself. This is the problem that SigMF solves.\n\nBy providing a standard way to describe data recordings, SigMF facilitates the\nsharing of data, prevents the \"bitrot\" of datasets wherein details of the\ncapture are lost over time, and makes it possible for different tools to operate\non the same dataset, thus enabling data portability between tools and workflows.\n\nSigMF signal recordings typically involve a data file (e.g., a binary file of IQ\nor RF samples) and a metadata file containing plain text that describes the data.\nTogether these files represent one recording, such as `example.sigmf-data` and\n`example.sigmf-meta`.  Here is a minimal example of a SigMF `.sigmf-meta` file:\n\n```json\n{\n    \"global\": {\n        \"core:datatype\": \"cf32_le\",\n        \"core:sample_rate\": 1000000,\n        \"core:hw\": \"PlutoSDR with 915 MHz whip antenna\",\n        \"core:author\": \"Art Vandelay\",\n        \"core:version\": \"1.2.0\"\n    },\n    \"captures\": [\n        {\n            \"core:sample_start\": 0,\n            \"core:frequency\": 915000000\n        }\n    ],\n    \"annotations\": []\n}\n```\n\n## Using SigMF\n\nThere are at least four ways you can use SigMF today, thanks to the community-supported projects:\n\n1. Within **Python**, using the [official SigMF Python package **sigmf**](https://github.com/sigmf/sigmf-python) available from pip: `pip install sigmf`.\n2. Within **C++** using the [header-only C++ library **libsigmf**](https://github.com/sigmf/libsigmf).\n3. Within **GNU Radio** using the built-in SigMF [source](https://github.com/gnuradio/gnuradio/blob/main/gr-blocks/grc/blocks_sigmf_source_minimal.block.yml) \u0026 [sink](https://github.com/gnuradio/gnuradio/blob/main/gr-blocks/grc/blocks_sigmf_sink_minimal.block.yml) blocks.\n4. Manually, using our examples and the [spec itself](https://sigmf.github.io/SigMF/sigmf-spec.pdf), even if it's simply editing a text file.\n\n\n## Contributing\n\nThe SigMF standards effort is organized entirely within this Github repository.\nQuestions, suggestions, bug reports, etc., are discussed in [the issue\ntracker](https://github.com/sigmf/SigMF/issues), feel free to create\na new issue and provide your input, even if it's not a traditional issue.\nChanges to the specification only occur through [Pull Requests](https://github.com/sigmf/SigMF/pulls).\nThis ensures that the history and background of all discussions and changes are maintained for posterity.\n\nThere is also a SigMF chat room on [GNU Radio's Matrix chat server](https://wiki.gnuradio.org/index.php/Chat)\nwhere you can ask SigMF-related questions, or participate in various discussions.\nLastly, there are monthly SigMF calls covering a variety of topics, on the third Monday of each month\nat 11:30AM Eastern/New York Time, please email marc@gnuradio.org for an invite and Zoom link.\n\nAnyone is welcome to get involved - indeed, the more people involved in the\ndiscussions, the more useful the standard is likely to be!\n\n## Extensions\n\nThe \"Core\" SigMF standard is intentionally kept limited in scope, additional metadata fields can be added through [SigMF Extensions](https://github.com/sigmf/SigMF/blob/main/sigmf-spec.md#extension-namespaces). For example, the [signal extension](https://github.com/sigmf/SigMF/blob/main/extensions/signal.sigmf-ext.md) provides a standard way to specify modulation schemes and other attributes of wireless comms signals. Several general purpose canonical extensions live within this repository directly in the [extensions directory](https://github.com/sigmf/SigMF/tree/main/extensions), while others are maintained by third parties. Below are some popular sources for SigMF extensions. To have your extension reviewed for inclusion on this list, please open a PR adding the repository to the list below:\n\n* [SigMF's Community Extension Repository](https://github.com/sigmf/community-extensions)\n* [NTIA's series of extensions](https://github.com/NTIA/sigmf-ns-ntia)\n\nIn general, extension publication pull requests should go into the Community Extension repository. Occasionally there is an extension that is so general purpose that it may be warranted to include in the core SigMF Repository `extensions` directory. Opening an issue in this repository for discussion (or noting this in a pull request in the Community Extension repository), or discussing on the SigMF Matrix Chat room is the best way to make that happen.\n\nSoftware that seeks to perform validation on metadata can open a metafile, parse which extensions are used (if any), then pull the core JSON schema plus the JSON schemas for each extension being used (and optionally, an application-specific schema), then merge the global/captures/annotations objects between all schemas, and disable `additionalProperties` for all three so that typos can be detected.\n\n## PDF Generation of Specifications Document\n\nThe main pdf is generated using the following content:\n\n1. `sigmf-schema.json` - global/captures/annotations tables and descriptions, as well as the Abstract\n1. `collection-schema.json` - Collection object documentation\n1. `additional_content.md` - mix of plaintext/markdown/latex for the remaining sections of the document\n\nThe script `docs-generator.py` uses Python, PyLaTeX, Pandoc, and Inkscape to create the specifications document in PDF and HTML formats.\n\nInstead of generating the docs locally, you can make your change (e.g., using GitHub's web interface), open up a PR, and then under GitHub's \"Actions\" menu at the top, click the run that corresponds to your PR, scroll down to \"Artifacts\", download the artifact named \"compiled_docs\", unzip it, and you should be able to see the html and pdf.\n\n## Frequently Asked Questions\n\n### Is this a GNU Radio effort?\n\n*No*, this is not a GNU Radio specific effort. This effort first emerged from\na group of GNU Radio core developers, but the goal of the project is to provide\na standard that will be useful to anyone and everyone, regardless of tool or\nworkflow.\n\n### Is this specific to wireless communications?\n\n*No*, similar to the response, above, the goal is to create something that is\ngenerally applicable to _signal processing_, regardless of whether or not the\napplication is RF or communications related.\n\n### It seems like some issues take a long time to resolve?\n\nYes, and in most cases this is by design. Since the goal of this project is\ncreate a broadly useful standards document, it is in our best interest to make\nsure we gather and consider as many opinions as possible, and produce the\nclearest and most exact language possible. This necessarily requires extreme\nattention to detail and diligence.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigmf%2FSigMF","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsigmf%2FSigMF","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigmf%2FSigMF/lists"}