=========================== HEROS Data Archiver =========================== The HEROS data archiver subscribes to the :code:`new_data` event of a HERO and saves its payload to a file path. The filename for a given frame is then constructed using `Jinja2 `_ using the given meta data given as a dictionary. This allows to do math and postprocessing within the template. For details on what can be implemented with templates, please refer to the official `Jinja2 documentation `_. Setup ----- The data archiver can be started with BOSS as any other class using a json string as in the following example .. code:: json { "_id": "my-camera-capturer", "classname": "herostools.actor.HERODataArchiver", "arguments": { "object_selector": "my-camera", "default_metadata": { "file_path": "/mnt/mystorage/images" }, "save_template": "{{ file_path }}/testimg-{{ '%04d' % ( frame / 2 ) |round(0, 'floor') }}-{{ frame % 2 }}.npy" } } The template generates file paths like the following .. code:: bash /mnt/mystorage/images/testimg-0000-0.npy /mnt/mystorage/images/testimg-0000-1.npy /mnt/mystorage/images/testimg-0001-0.npy assuming that :code:`frame` is a running iterator provided by the payload metadata. For example a camera abstracting from :external+herosdevices:py:class:`herosdevices.core.templates.CameraTemplate` will generate such an event.