witzit - What In The Zap Is That?
witzit --- What In The Zap Is That?
AI categorization of spectra from LIBS/XRF analyzers.
Example Jupyter plot from SciAps X-555 XRF:
Get system dependency and upgrade Python pip. Perhaps do something like this, or set up a Python virtual environment.
sudo apt update sudo apt install git python3-pip python3-virtualenv
pysalx repo contains scripts for interacting with the device.
Install that too.
git clone https://spacecruft.org/spacecruft/pysalx.git cd pysalx/ # Set the date ./scripts/pysalx-date-set # whatever else... ..
Clone Git Repo
Get source code with
requirements.txt installs a Tensorflow without
GPU support. You can edit the
requirements.txt file to change
which is supported. The "generic" version supports both.
XXX tensorflow not available in pip 2023-01.
git clone https://spacecruft.org/spacecruft/witzit cd witzit/ virtualenv -p python3 env source env/bin/activate pip install --upgrade pip pip install -r requirements.txt deactivate
witzit-load--- Load and text display data from SciAps or Olympus XRF.
witzit-plot--- Plot a sample from a SciAps X-555 or Olympus Vanta-M.
witzit-plot2png--- Plot a sample from a SciAps X-555 or Olympus Vanta-M and save to PNG.
Development is most easily done under Jupyter with Tensorboard
for training models. These files are in the
witzit-plot.ipynb--- witzit Jupyter notebook, plotting application for SciAps X-555 or Olympus Vanta-M.
witzit-predict.ipynb--- witzit Jupyter notebook, prediction application.
witzit-train.ipynb--- witzit Jupyter notebook, training application.
Note: Files in the
data/ directory may be deleted and/or manipulated
by scripts in this application.
Note well, the
data/ directory is ignored by git, and is a temporary
directory where data to be processed is stored. For example, if you have
a main original archive of 10,000 samples and you want to process just 1,000
of them, they would be copied to the
Data is also stored here, which can also be deleted/moved by scripts:
Each element sample will be stored under here:
Each element model will be stored under here:
Temporary logs during training may be written to the gitignored
HOWTO USE. Getting closer...
# Example: debian@workstation:~/spacecruft/witzit$ ./witzit-load-x555 energy (eV) 2048 0 20.590676 0 1 45.021816 0 2 69.452957 0 3 93.884097 0 ... 1023 25013.647367 175 1024 25038.078508 173 1025 25062.509648 155 1026 25086.940789 193 ... 2047 50031.135199 1
Run jupyter thusly:
cd witzit/notebooks jupyter-lab
SciAps LIBS Analyzer
SciAps XRF Analyzer
Olympus XRF Analyzer
Deep Learning Algorithm
Can use lots from
def uncompiled_model(): model = Sequential([ Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)), MaxPooling2D(), Conv2D(32, 3, padding='same', activation='relu'), MaxPooling2D(), Conv2D(64, 3, padding='same', activation='relu'), MaxPooling2D(), Flatten(), Dense(512, activation='relu'), Dense(1, activation='sigmoid') ]) return model
Amazingly (to me), the paper
Classification of radioxenon spectra with deep learning algorithm
(2021) by Azimi, et al. uses nearly the identical CNN
wut uses, indicating it may be a very good base to start from.
Paper is non-gratis science:
Sequence() diagram is pulled from the Azimi paper, but is the
same as in
wut, so makes a good reference.
https://www.sciencedirect.com/science/article/abs/pii/S0265931X21001909 Classification of radioxenon spectra with deep learning algorithm
https://www.sciencedirect.com/science/article/pii/S0030401822000402 Deep convolutional neural networks as a unified solution for Raman spectroscopy-based classification in biomedical applications
https://www.sciencedirect.com/science/article/abs/pii/S058485472030313X Automatic preprocessing of laser-induced breakdown spectra using partial least squares regression and feed-forward artificial neural network: Applications to Earth and Mars data
https://www.sciencedirect.com/science/article/abs/pii/S0584854719306068 Determination of minor metal elements in steel using laser-induced breakdown spectroscopy combined with machine learning algorithms
https://www.sciencedirect.com/science/article/abs/pii/S1386142521009380 Feature selection of infrared spectra analysis with convolutional neural network
Setup like above, and also:
cd witzit/ source env/bin/activate pip install -r requirements-dev.txt
Then before committing new code, make sure it is enprettified:
pysalx--- Unofficial scripts for interacting with the SciAps LIBS and XRF analyzers.
wut?--- What U Think? SatNOGS Observation AI.
Alpha software under development. Need to check:
- API: 501 Not Implemented spacecruft/pysalx#2
Unofficial, unaffiliated with SciAps or Olympus.
License: GPLv3 or any later version.
Copyright © 2019-2023, Jeff Moe.