{"id":21191816,"url":"https://github.com/edgeimpulse/transformation-blocks","last_synced_at":"2025-06-28T11:04:07.105Z","repository":{"id":199460974,"uuid":"694251216","full_name":"edgeimpulse/transformation-blocks","owner":"edgeimpulse","description":"Repository that contains transformation blocks examples","archived":false,"fork":false,"pushed_at":"2025-02-10T10:40:01.000Z","size":9654,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-22T02:12:18.030Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause-clear","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edgeimpulse.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-20T16:10:29.000Z","updated_at":"2025-03-25T17:35:34.000Z","dependencies_parsed_at":"2023-10-14T14:08:49.440Z","dependency_job_id":"842c167c-f721-4ed6-b999-0767a3b5bf83","html_url":"https://github.com/edgeimpulse/transformation-blocks","commit_stats":null,"previous_names":["edgeimpulse/transformation-blocks"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/edgeimpulse/transformation-blocks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgeimpulse%2Ftransformation-blocks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgeimpulse%2Ftransformation-blocks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgeimpulse%2Ftransformation-blocks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgeimpulse%2Ftransformation-blocks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edgeimpulse","download_url":"https://codeload.github.com/edgeimpulse/transformation-blocks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgeimpulse%2Ftransformation-blocks/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262419742,"owners_count":23308097,"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":[],"created_at":"2024-11-20T19:05:26.755Z","updated_at":"2025-06-28T11:04:07.084Z","avatar_url":"https://github.com/edgeimpulse.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transformation block examples\n\nThis repository contains examples of Edge Impulse transformation blocks.\n\nFor more information on how to set up a transformation block, please head to Edge Impulse documentation, [Custom blocks -\u003e Transformation blocks](https://docs.edgeimpulse.com/docs/edge-impulse-studio/organizations/custom-blocks/transformation-blocks)\n\n## Examples\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eName\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n      \u003cth\u003eMode\u003c/th\u003e\n      \u003cth\u003eProgramming language\u003c/th\u003e\n      \u003cth\u003ePublic docker image (optional)\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/hello-edge/\"\u003eHello Edge\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eprint \u003ccode\u003ehello +name\u003c/code\u003e on the transformation job logs\u003c/td\u003e\n      \u003ctd\u003eStandalone\u003c/td\u003e\n      \u003ctd\u003eBash\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_hello-edge\" target=\"_blank\"\u003eedgeimpulse/ei-transform_hello-edge:latest\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n     \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/utils-access-data/\"\u003eUtils - Access data\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eUtility example to explain how to access data\u003c/td\u003e\n      \u003ctd\u003eStandalone | Data item | File\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_utils-access-data\" target=\"_blank\"\u003eedgeimpulse/ei-transform_utils-access-data:latest\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/fetch-kaggle-dataset/\"\u003eFetch Kaggle Dataset\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eImport a dataset hosted on Kaggle to your bucket\u003c/td\u003e\n      \u003ctd\u003eStandalone\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei_transform_fetch-kaggle-dataset\" target=\"_blank\"\u003eedgeimpulse/ei_transform_fetch-kaggle-dataset:latest\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/create-graphs-standalone/\"\u003eCreate graphs (Standalone)\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eGenerate a helper graph from sensor CSV\u003c/td\u003e\n      \u003ctd\u003eStandalone\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_create-graphs-standalone\" target=\"_blank\"\u003eedgeimpulse/ei-transform_create-graphs-standalone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/create-graphs-in-file/\"\u003eCreate graphs (in-file)\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eGenerate a helper graph from sensor CSV\u003c/td\u003e\n      \u003ctd\u003eFile\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_create-graphs-in-file\" target=\"_blank\"\u003eedgeimpulse/ei-transform_create-graphs-standalone-in-file\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/check-files-exist/\"\u003eCheck file existance\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eAdd ei_check metadata on file existance\u003c/td\u003e\n      \u003ctd\u003eData item\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_check-files-exist\" target=\"_blank\"\u003eedgeimpulse/ei-transform_check-files-exist\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/merge-csv/\"\u003eMerge CSV\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eMerge CSV files on a given key\u003c/td\u003e\n      \u003ctd\u003eData item\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_merge-csv\" target=\"_blank\"\u003eedgeimpulse/ei-transform_merge-csv\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/merge-audio-time-series-csv/\"\u003eMerge Audio and CSV\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eMerge audio file and time-series csv\u003c/td\u003e\n      \u003ctd\u003eData item\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_merge-audio-time-series-csv\" target=\"_blank\"\u003eedgeimpulse/ei-transform_merge-audio-time-series-csv\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/resample-csv/\"\u003eResample CSV\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eUpsample or downsample CSV files with a constant frequency\u003c/td\u003e\n      \u003ctd\u003eFile\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_resample-csv\" target=\"_blank\"\u003eedgeimpulse/ei-transform_resample-csv\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/split-csv/\"\u003eSplit CSV\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eSplit CSV files into smaller CSV files defined by a split interval\u003c/td\u003e\n      \u003ctd\u003eFile\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_split-csv\" target=\"_blank\"\u003eedgeimpulse/ei-transform_split-csv\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ca href=\"/sync-scp-dataset/\"\u003eSync SCP Dataset\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003eFetch files using scp and sync with organization dataset\u003c/td\u003e\n      \u003ctd\u003eStandalone\u003c/td\u003e\n      \u003ctd\u003ePython\u003c/td\u003e\n      \u003ctd\u003e\u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/edgeimpulse/ei-transform_sync-scp-dataset\" target=\"_blank\"\u003eedgeimpulse/ei-transform_sync-scp-dataset\u003c/td\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Bring the examples to your organization\n\n### Using the Docker Image\n\nTo use the examples, a README.md instruction file will be provided inside the example repositories. Sometimes, a public docker image will also be provided to quickly test so you don't need to import it and clone the entire repository.\n\nIf you want to quickly test the transformation blocks, head to your Edge Impulse organizaton, go to **Custom blocks**-\u003e**Transformation** and click on **+ Add new transformation block**:\n\nReplace the **Docker Container** by the one provided in the example above, the operation type and the optional parameters (check the examples README.md instruction to set the parameters):\n\n![Add new transformation](assets/studio-create-transformation-hello-edge.png).\n\n### Using Edge Impulse CLI\n\nTo modify the code and push the blocks to your organization, you will need to use [Edge Impulse CLI](https://docs.edgeimpulse.com/docs/tools/edge-impulse-cli).\n\n1. Clone this repository:\n\n```\ngit clone https://github.com/edgeimpulse/transformation-blocks.git\n```\n\n2. Navigate to the desired example:\n\n```\ncd transformation-blocks/hello-edge\n```\n\n3. Create the transformation block:\n\n```\nedge-impulse-block init\n```\n\n4. Push the transformation block to your organization:\n\n```\nedge-impulse-block push\n```\n\n## Contributing to this repository\n\nWe welcome contributions to this repository. Both improvements to our own transformation blocks, as well as new and well-tested transformation blocks for other use cases. Make sure to provide a public dataset - or subset of this dataset - so everyone can reproduce your workflow seamlessly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgeimpulse%2Ftransformation-blocks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedgeimpulse%2Ftransformation-blocks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgeimpulse%2Ftransformation-blocks/lists"}