Custom transformation block structure
Variable | Passed | Description |
---|---|---|
EI_API_ENDPOINT | Always | The API base URL: https://studio.edgeimpulse.com/v1 |
EI_API_KEY | Always | The organization API key with member privileges: ei_2f7f54... |
EI_INGESTION_HOST | Always | The host for the ingestion API: edgeimpulse.com |
EI_LAST_SUCCESSFUL_RUN | Always | The last time the block was successfully run, if a part of a data pipeline: 1970-01-01T00:00:00.000Z |
EI_ORGANIZATION_ID | Always | The ID of the organization that the block belongs to: 123456 |
EI_PROJECT_ID | Conditional | Passed if the transformation block is a data source for a project. The ID of the project: 123456 |
EI_PROJECT_API_KEY | Conditional | Passed if the transformation block is a data source for a project. The project API key: ei_2a1b0e... |
requiredEnvVariables
property in the parameters.json
file. You will then be prompted for the associated values for these properties when pushing the block to Edge Impulse using the CLI. Alternatively, these values can be added (or changed) by editing the block in Studio after pushing.
parameters.json
file will be passed as command line arguments to the script you defined in your Dockerfile as the ENTRYPOINT
for the Docker image. Please refer to the parameters.json documentation for further details about creating this file, parameter options available, and examples.
In addition to the items defined by you, the following arguments will be automatically passed to your custom transformation block.
Argument | Passed | Description |
---|---|---|
--in-file <file> | Conditional | Passed if operation mode is set to file . Provides the file path as a string. This is the file to be processed by the block. |
--in-directory <dir> | Conditional | Passed if operation mode is set to directory . Provides the directory path as a string. This is the directory to be processed by the block. |
--out-directory <dir> | Conditional | Passed if operation mode is set to either file or directory . Provides the directory path to the output directory as a string. This is where block output needs to be written. |
--hmac-key <key> | Conditional | Passed if operation mode is set to either file or directory . Provides a project HMAC key as a string, if it exists, otherwise '0' . |
--metadata <metadata> | Conditional | Passed if operation mode is set to either file or directory , the pass in metadata property (indMetadata ) is set to true, and the metadata exists. Provides the metadata associated with data item as a stringified JSON object. |
--upload-category <category> | Conditional | Passed if operation mode is set to file or directory and the transformation job is configured to import the results into a project. Provides the upload category (split , training , or testing ) as a string. |
--upload-label <label> | Conditional | Passed if operation mode is set to file or directory and the transformation job is configured to import the results into a project. Provides the upload label as a string. |
cliArguments
property in the parameters.json
file. Alternatively, these arguments can be added (or changed) by editing the block in Studio.
Lastly a user can be prompted for extra CLI arguments when configuring a transformation job if the allowExtraCliArguments
property is set to true
.
parameters.json
file before pushing the block to Edge Impulse or editing the block in Studio after pushing.
file
or directory
mode, new data is written to the directory given by the --out-directory <dir>
argument. For blocks operating in standalone
mode, any actions are typically achieved using API calls inside the block itself.
file
, directory
, or standalone
.
--in-file <file>
argument.
--in-directory <dir>
argument.
directory
mode and transforming a clinical dataset, you can update the metadata associated with the data item after it is processed.
To do so, your custom transformation block needs to write an ei-metadata.json
file to the directory specified in the --out-directory <dir>
argument. Please refer to the ei-metadata.json documentation for further details about this file.
file
or directory
mode will always been shown as an option in the block dropdown for transformation jobs. They cannot be used as a project data source.
Transformation blocks operating in standalone
mode can optionally be shown in the block dropdown for transformation jobs and/or in the block dropdown for project data sources.
Operating mode | Shown in block dropdown |
---|---|
file | Always |
directory | Always |
standalone | If showInCreateTransformationJob property set to true . |
Operating mode | Shown in block dropdown |
---|---|
file | Never |
directory | Never |
standalone | If showInDataSources property set to true . |
edge-impulse-blocks runner
tool. See Block runner for additional details.
If your custom transformation block is operating in either file
or directory
mode, you will be prompted for information to look up and download data (a file or a directory) for the block to operate on when using the blocks runner. This can be achieved by providing either a data item name (clinical data) or the path within a dataset for a file or directory (clinical or default data). You can also specify some of this information using the blocks runner command line arguments.
Argument | Description |
---|---|
--dataset <dataset> | Transformation blocks in file or directory mode. Files and directories will be looked up within this dataset. If not provided, you will be prompted for a dataset name. |
--data-item <data-item> | Clinical data only. Transformation blocks in directory mode. The data item will be looked up, downloaded, and passed to the container when it is run. If not provided, you will be prompted for the information required to look up a data item. |
--file <filename> | Clinical data only. Transformation blocks in file mode. Must be used in conjunction with --data-item <data-item> . The file will be looked up, downloaded, and passed to the container when it is run. If not provided, you will be prompted for the information required to look up a file within a data item. |
--skip-download | Skips downloading the data. |
--extra-args <args> | Additional arguments for your script. |
--extra-args <args>
argument.
ei-block-data
directory within your custom block directory. It will contain subdirectories for the data that has been downloaded.
file
or directory
mode, you will also need to create a data/
directory within your custom block directory and place your data used for testing here.
file
mode:
directory
mode:
standalone
mode:
example-transform-<description>
. As such, they can be found by going to the Edge Impulse account and searching the repositories for example-transform
.
Note that when using the above search term you will come across synthetic data blocks as well. Please read the repository description to identify if it is for a transformation block or a synthetic data block.
Further, several example transformation blocks have been gathered into a single repository:
Files in storage bucket cannot be accessed
Setting up mount point
<space>
key to select the bucket for mounting (and therefore the storage bucket is not added to the parameters.json file).Transformation job runs indefinitely
return 0
, exit(0)
or sys.exit(0)
) for success or with any other error code for failure.