import pandas as pd
from plio.io import io_spectral_profiler
from libpyhat import spectral_data
[docs]
def spectral_profiler(f):
"""
Generate DataFrame from spectral profiler data.
parameters
----------
f : str
file path to spectral profiler file
"""
sp_io = io_spectral_profiler.Spectral_Profiler(f)
meta = sp_io.ancillary_data
meta.columns = pd.MultiIndex.from_tuples(
[('meta', i) for i in meta.columns]
)
meta[('meta', 'id')] = meta.index
df = sp_io.spectra.transpose()
df.columns = pd.MultiIndex.from_tuples([('wvl', i) for i in df.columns])
indices = pd.MultiIndex.to_list(
df.index
) # read indices and put them in metadata columns
df[('meta', 'id')] = [i[0] for i in indices]
df[('meta', 'spect_type')] = [i[1] for i in indices]
sp = pd.merge(meta, df, how="inner", on=[('meta', 'id')])
sp = spectral_data.SpectralData(sp, spect_label='wvl', meta_label='meta')
return sp