tomo_mapper

The SEM-FIB-Tomography Mapper is a tool designed for mapping SEM (Scanning Electron Microscope) images and SEM-FIB Tomography metadata to a uniform, schema-compliant json format.

https://github.com/kit-data-manager/tomo_mapper

Science Score: 65.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
    Organization kit-data-manager has institutional domain (www.scc.kit.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.5%) to scientific vocabulary

Keywords

cli
Last synced: 4 months ago · JSON representation ·

Repository

The SEM-FIB-Tomography Mapper is a tool designed for mapping SEM (Scanning Electron Microscope) images and SEM-FIB Tomography metadata to a uniform, schema-compliant json format.

Basic Info
  • Host: GitHub
  • Owner: kit-data-manager
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 2.19 MB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 18
  • Releases: 0
Topics
cli
Created 11 months ago · Last pushed 4 months ago
Metadata Files
Readme License Citation Codemeta

README.md

Tests Coverage Status License

SEM-FIB-Tomography Mapper

Overview

SEM-FIB-Tomography Mapper is a tool designed for mapping SEM (Scanning Electron Microscope) images and SEM-FIB Tomography metadata to a uniform, schema-compliant json format. This project includes functionality for both SEM and tomography mapping, sharing a common mapping concept.

The target format of the mapper follows pre-defined schemas developed for metadata description of SEM microscopy and SEM-FIB tomography, respectively. Technical information is contained in this repository, for further conceptional description see

  • Joseph, R., Chauhan, A., Eschke, C., Ihsan, A. Z., Jalali, M., Jäntsch, U., Jung, N., Shyam Kumar, C. N., Kübel, C., Lucas, C., Mail, M., Mazilkin, A., Neidiger, C., Panighel, M., Sandfeld, S., Stotzka, R., Thelen, R., & Aversa, R. (2021). Metadata schema to support FAIR data in scanning electron microscopy. CEUR-WS.Org. https://doi.org/10.5445/IR/1000141604
  • Pauly, C., Joseph, R. E., Vitali, E. G. G., Aversa, R., Stotzka, R., Mücklich, F., Engstler, M., Hermann, H.-G., & Fell, J. (2024). Metadata schema and mapping service for FIB/SEM serial-sectioning and computed tomography. https://doi.org/10.5445/IR/1000175919

Usage

1. Python Command Line Interface

Prerequisites

Minimal supported python version: 3.10

Cloning the Repository

To get started, clone the repository and navigate to the project directory: git clone https://github.com/kit-data-manager/tomo_mapper.git cd tomo_mapper

Setting Up the Environment

You can optionally set up a virtual environment. Depending on your environment, you may have to use the python3 alias instead of python for the following commands.

Install the required dependencies: pip install -r requirements.txt

Running the Mapper

To run the mapper, use the mapping_cli module: python -m mapping_cli

1. SEM Mapping

Use the sem subcommand for SEM mapping. The mapper expects a map file, an image or image metadata file, and a JSON output path: python -m mapping_cli sem -m <map_file> -i <image or metadata file> -o <json_output_path>

For further information about the necessary map file, see Mapping README

2. Tomography Mapping

Use the tomo subcommand for tomography mapping. The mapper expects a map file, a zip file or input data folder, and a JSON output path: python -m mapping_cli tomo -m <map_file> -i <zip_file or folder> -o <json_output_path>

For further information about the necessary map file, see Parsing README

For further information about mappings used internally, see Mapping README

In cases with no need of tweaking the parsing map file there is a shortcut option to use the supplied vendor-specific default map.

Example usage python -m mapping_cli tomo -dm TF -i <zip_file or folder> -o <json_output_path>

This is equivalent to the following command run from the project folder of this repo python -m mapping_cli tomo -m "./src/resources/maps/parsing/inputmap_thermofisher.json" -i <zip_file or folder> -o <json_output_path>

To get the current available default map options, check tomo --help.

2. Command Line Interface Executable

Each release contains the python CLI as platform-specific packaged executable. Usage is identical to use with python, just replace python -m mapping_cli with the platform-specific executable.

3. Usage as plugin for the Mapping-Service

The mapper can be used as a plugin for the kit-data-manager/Mapping-Service. The necessary gradle project to build the plugin is included in the plugin subfolder. For details on how to build the jar file, see the "Build with Gradle" step in the github actions pipeline for the plugin integration test.

Plugin and Python code base share the same semantic versioning, so the plugin version always indicates the specific script version used for mapping. This behaviour can be explicitly overriding (for example for testing or for working with older versions of the mapping service). To do this, on gradle build time provide the environment variable VERSION_OVERRIDE_BY_BRANCH. The variable needs to contain a branch name of this repo and branch deletion may break a plugin in use. Only use this option very carefully. Do not use this option for production.

To find out tested alignments between plugin versions and mapping-service versions check the following table:

| Plugin version | mapping-service version | |----------------|------------------------| | v1.0.0, v1.1.0 | v1.0.5), v1.1.1) |

*) Plugin needs to be built with version override to work with the specified version of the mapping-service

Testing

Run tests using pytest: pytest

Supported instruments and formats

Due to the large range and variety of vendors, instruments and setups we cannot guarantee successful mapping for all cases. The following list provides the minimal range of formats, that have been tested via sample data.

Image Metadata (SEM and Tomography Mapping)

  • tiff format
    • Carl Zeiss SEM (Zeiss instruments, tag 34118)
    • FibicsXML (Zeiss instruments, tag 51023)
    • FEI Helios (FEI / Thermofisher, tag 34682)
  • text format
    • Tescan hdr files
    • JEOL txt files

Tomography metadata

  • XML format
    • ATLAS3D-Job (Zeiss)
    • ATLAS3D-Setup (Zeiss)
    • EMProject (Thermofisher)
    • ProjectData (Thermofisher)
    • TomographyProject (Tescan)
  • HDR format
    • Dataset_info (Tescan)

Acknowlegdements

This work is supported by the consortium NFDI-MatWerk, funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under the National Research Data Infrastructure – NFDI 38/1 – project number 460247524.

All sample and test data included in this repository, if not otherwise specified, was contributed by participant projects of NFDI-Matwerk. Special thanks to participant project pp13.

Owner

  • Name: KIT Data Manager
  • Login: kit-data-manager
  • Kind: organization
  • Email: webmaster@datamanger.kit.edu
  • Location: Karlsruhe, Germany

Generic software and recommendations for FAIR research data management by DEM.

Citation (CITATION.cff)

cff-version: 1.2.0
message: If you use this software, please cite it using these metadata.
type: software
title: SEM-FIB-Tomo mapper
abstract: SEM-FIB-Tomography Mapper is a tool designed for mapping SEM (Scanning Electron
  Microscope) images and SEM-FIB Tomography metadata to a uniform, schema-compliant
  json format.
version: v1.1.0
keywords:
- SEM
- Tomography
- TIFF
- metadata
- extraction
- schema
authors:
- orcid: https://orcid.org/0000-0003-3974-3728
  given-names: Germaine
  family-names: Götzelmann
- orcid: https://orcid.org/0000-0002-6745-3464
  given-names: Gabin Thibaut
  family-names: Oumbe Tekam
- orcid: https://orcid.org/0000-0002-6368-2067
  given-names: Pauly
  family-names: Christoph
- orcid: https://orcid.org/0000-0003-2534-0063
  given-names: Rossella
  family-names: Aversa
- given-names: Frank
  family-names: Mücklich
- given-names: Michael
  family-names: Engstler
- given-names: Jonas
  family-names: Fell
- given-names: Sabine
  family-names: Schlabach
- family-names: Szabo
  given-names: Dorothee-Vinga
  orcid: https://orcid.org/0000-0002-5139-8771
contact:
- orcid: https://orcid.org/0000-0003-3974-3728
  given-names: Germaine
  family-names: Götzelmann
- orcid: https://orcid.org/0000-0002-6745-3464
  given-names: Gabin Thibaut
  family-names: Oumbe Tekam
license: Apache-2.0
repository-code: https://github.com/kit-data-manager/tomo_mapper

CodeMeta (codemeta.json)

{
  "@context": [
    "https://doi.org/10.5063/schema/codemeta-2.0",
    "https://w3id.org/software-iodata",
    "https://raw.githubusercontent.com/jantman/repostatus.org/master/badges/latest/ontology.jsonld",
    "https://schema.org",
    "https://w3id.org/software-types"
  ],
  "@type": "SoftwareSourceCode",
  "author": [
    {
      "@type": "Person",
      "givenName": "Germaine",
      "familyName": "Gtzelmann",
      "@id": "https://orcid.org/0000-0003-3974-3728",
      "identifier": "https://orcid.org/0000-0003-3974-3728"
    },
    {
      "@type": "Person",
      "givenName": "Gabin Thibaut",
      "familyName": "Oumbe Tekam",
      "@id": "https://orcid.org/0000-0002-6745-3464",
      "identifier": "https://orcid.org/0000-0002-6745-3464"
    }
  ],
  "name": "SEM-FIB-Tomo mapper",
  "description": "SEM-FIB-Tomography Mapper is a tool designed for mapping SEM (Scanning Electron Microscope) images and SEM-FIB Tomography metadata to a uniform, schema-compliant json format.",
  "version": "v1.1.0",
  "keywords": [
    "SEM",
    "Tomography",
    "TIFF",
    "metadata",
    "extraction",
    "schema"
  ],
  "maintainer": [
    {
      "@type": "Person",
      "givenName": "Germaine",
      "familyName": "Gtzelmann",
      "@id": "https://orcid.org/0000-0003-3974-3728",
      "identifier": "https://orcid.org/0000-0003-3974-3728"
    },
    {
      "@type": "Person",
      "givenName": "Gabin Thibaut",
      "familyName": "Oumbe Tekam",
      "@id": "https://orcid.org/0000-0002-6745-3464",
      "identifier": "https://orcid.org/0000-0002-6745-3464"
    }
  ],
  "license": [
    "https://spdx.org/licenses/Apache-2.0"
  ],
  "codeRepository": "https://github.com/kit-data-manager/tomo_mapper",
  "contributor": [
    {
      "@type": "Person",
      "givenName": "Pauly",
      "familyName": "Christoph",
      "@id": "https://orcid.org/0000-0002-6368-2067",
      "identifier": "https://orcid.org/0000-0002-6368-2067"
    },
    {
      "@type": "Person",
      "givenName": "Rossella",
      "familyName": "Aversa",
      "@id": "https://orcid.org/0000-0003-2534-0063",
      "identifier": "https://orcid.org/0000-0003-2534-0063"
    },
    {
      "@type": "Person",
      "givenName": "Frank",
      "familyName": "Mcklich"
    },
    {
      "@type": "Person",
      "givenName": "Michael",
      "familyName": "Engstler"
    },
    {
      "@type": "Person",
      "givenName": "Jonas",
      "familyName": "Fell"
    },
    {
      "@type": "Person",
      "givenName": "Sabine",
      "familyName": "Schlabach"
    },
    {
      "@type": "Person",
      "givenName": "Dorothee-Vinga",
      "familyName": "Szabo",
      "@id": "https://orcid.org/0000-0002-5139-8771",
      "identifier": "https://orcid.org/0000-0002-5139-8771"
    }
  ]
}

GitHub Events

Total
  • Create event: 37
  • Release event: 5
  • Issues event: 31
  • Delete event: 22
  • Issue comment event: 11
  • Public event: 1
  • Push event: 146
  • Pull request review comment event: 3
  • Pull request review event: 6
  • Pull request event: 47
Last Year
  • Create event: 37
  • Release event: 5
  • Issues event: 31
  • Delete event: 22
  • Issue comment event: 11
  • Public event: 1
  • Push event: 146
  • Pull request review comment event: 3
  • Pull request review event: 6
  • Pull request event: 47

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 29
  • Total pull requests: 40
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 2 days
  • Total issue authors: 2
  • Total pull request authors: 3
  • Average comments per issue: 0.17
  • Average comments per pull request: 0.23
  • Merged pull requests: 30
  • Bot issues: 0
  • Bot pull requests: 4
Past Year
  • Issues: 29
  • Pull requests: 40
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 2 days
  • Issue authors: 2
  • Pull request authors: 3
  • Average comments per issue: 0.17
  • Average comments per pull request: 0.23
  • Merged pull requests: 30
  • Bot issues: 0
  • Bot pull requests: 4
Top Authors
Issue Authors
  • GGoetzelmann (28)
  • gabinoumbe (1)
Pull Request Authors
  • GGoetzelmann (33)
  • dependabot[bot] (4)
  • gabinoumbe (3)
Top Labels
Issue Labels
enhancement (3) mapping:tomo (3) bug (1) wontfix (1) mapping:sem (1)
Pull Request Labels
java (4) dependencies (4) enhancement (1) mapping:tomo (1) mapping:sem (1)

Dependencies

.github/workflows/installer.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
.github/workflows/installer_nuitka.yml actions
  • Nuitka/Nuitka-Action main composite
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
.github/workflows/python-app.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
requirements.dist.txt pypi
  • deepmerge *
  • jsonpath-ng *
  • pandas *
  • pillow *
  • pydantic *
  • requests *
  • validators *
  • xmltodict *
requirements.txt pypi
  • deepmerge >=2.0
  • jsonpath-ng >=1.7
  • pandas *
  • pillow >=10.3
  • pydantic >=2.10
  • pytest >=7.4
  • pytest-cov >=6.0
  • requests *
  • validators >=0.34
  • xmltodict >=0.14