# Semi-ATE's Metis
Streaming conversion from [STDF](https://en.wikipedia.org/wiki/Standard_Test_Data_Format) to [pandas](https://pandas.pydata.org/) [dataframe](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)s in [HDF5](https://www.hdfgroup.org/solutions/hdf5/) containers.

[![CI](https://github.com/Semi-ATE/Metis/workflows/CI/badge.svg?branch=main)](https://github.com/Semi-ATE/Metis/actions?query=workflow%3ACI)
[![CD](https://github.com/Semi-ATE/Metis/workflows/CD/badge.svg)](https://github.com/Semi-ATE/Metis/actions?query=workflow%3ACD)

[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/Semi-ATE/Metis?color=blue&label=GitHub&sort=semver)](https://github.com/Semi-ATE/Metis/releases/latest)
[![GitHub commits since latest release (by date)](https://img.shields.io/github/commits-since/Semi-ATE/Metis/latest)](https://github.com/Semi-ATE/Metis)
[![PyPI](https://img.shields.io/pypi/v/Semi-ATE-Metis?color=blue&label=PyPI)](https://pypi.org/project/Semi-ATE-Metis/)


[![GitHub issues](https://img.shields.io/github/issues/Semi-ATE/Metis)](https://github.com/Semi-ATE/Metis/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/Semi-ATE/Metis)](https://github.com/Semi-ATE/Metis/pulls)

[![codecov](https://codecov.io/gh/Semi-ATE/Metis/branch/main/graph/badge.svg?token=BAP0H9OMED)](https://codecov.io/gh/Semi-ATE/Metis)

## what's in a name : Metis in Greek mythology

Metis (/ˈmɛtɪs/; Ancient Greek: Μῆτις, romanized: Mêtis, lit. 'wisdom', 'skill', or 'craft'), in ancient Greek religion, was a mythical goddess, an Oceanid nymph, daughter of the Titans Oceanus and Tethys.

By the era of Greek philosophy in the 5th century BC, Metis had become the mother of wisdom and deep thought, but her name originally connoted "magical cunning" and was as easily equated with the trickster powers of Prometheus as with the "royal metis" of Zeus. The Stoic commentators allegorised Metis as the embodiment of "prudence", "wisdom" or "wise counsel", in which form she was inherited by the Renaissance.

The Greek word metis meant a quality that combined wisdom and cunning. This quality was considered to be highly admirable, the hero Odysseus being the embodiment of it. In the Classical era, metis was regarded by Athenians as one of the notable characteristics of the Athenian character.

--- source : [wikipedia](https://en.wikipedia.org/wiki/Metis_(mythology))

## Project goals

- Convert [STDF](https://en.wikipedia.org/wiki/Standard_Test_Data_Format) streams (real-time, so as they are being generated by testers!) into [pandas data frames](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) located in a [HDF5](https://www.hdfgroup.org/solutions/hdf5/) container without the loss of **<ins>ANY</ins>** information! ([gstreamer](https://gstreamer.freedesktop.org/) pipelines are to be used in conjunction with our [STDF](https://github.com/Semi-ATE/STDF) library) 
- All measuremets (probing, final-test, PCM, ...) of the same [LOT](https://en.wikipedia.org/wiki/Lot_number) will be centralized in <ins>the same</ins> HDF5 file.
- Automatic report generation tools (command line ones, so they can run server-side) shall be added on top of the HDF5 containers. (cfr. : [autoreports.pptx](documentation/reports/autoreports.pptx))
- Graphical data investigation/visualization tools (as plug-ins to [spyder](https://www.spyder-ide.org/)) shall be added on top of the HDF5 containers.

Result : 
- No more fiddling around with STDF parsers!
- No more endless waiting for an STDF parser to parse the data. 
  - Production data is available for analysis and auto-reporting 1 second after a tester is finished.
  - Data can be observed WHILE the tester is running.
- Custom tools and dashboards (à la "[Voilà](https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93)"?) can be set up from this level also much easier!
