API Reference¶
This is the class and function reference page of SpecDAL.
Spectrum¶
-
class
specdal.containers.spectrum.
Spectrum
(name=None, filepath=None, measurement=None, measure_type='pct_reflect', metadata=None, interpolated=False, stitched=False, jump_corrected=False, verbose=False)¶ Class that represents a single spectrum
- name: string
- Name of the spectrum.
- filepath: string (optional)
- Path to the file to read from.
- measurement: pandas.Series
- Spectral measurement
- metadata: OrderedDict
- Metadata associated with spectrum
Spectrum object stores a single spectral measurement using pandas.Series with index named: “wavelength”.
-
get_pct_reflect
(dataframe)¶ Helper function to calculate pct_reflect from other columns
pd.Series object for pct_reflect
-
interpolate
(spacing=1, method='slinear')¶
-
jump_correct
(splices, reference, method='additive')¶
-
read
(filepath, measure_type, verbose=False)¶ Read measurement from a file.
-
stitch
(method='mean')¶
Collection¶
-
class
specdal.containers.collection.
Collection
(name, directory=None, spectra=None, measure_type='pct_reflect', metadata=None, flags=None)¶ Represents a dataset consisting of a collection of spectra
-
append
(spectrum)¶ insert spectrum to the collection
-
data
¶ Get measurements as a Pandas.DataFrame
-
data_with_meta
(data=True, fields=None)¶ Get dataframe with additional columns for metadata fields
- data: boolean
- whether to return the measurement data or not
- fields: list
- names of metadata fields to include as columns. If None, all the metadata will be included.
pd.DataFrame: self.data with additional columns
-
flags
¶ A dict of flags for each spectrum in the collection
-
groupby
(separator, indices, filler=None)¶ Group the spectra using a separator pattern
- OrderedDict consisting of specdal.Collection objects for each group
- key: group name value: collection object
-
interpolate
(spacing=1, method='slinear')¶
-
jump_correct
(splices, reference, method='additive')¶
-
max
(append=False, ignore_flagged=True)¶
-
mean
(append=False, ignore_flagged=True)¶
-
median
(append=False, ignore_flagged=True)¶
-
min
(append=False, ignore_flagged=True)¶
-
plot
(*args, **kwargs)¶
-
read
(directory, measure_type='pct_reflect', ext=['.asd', '.sed', '.sig', '.pico', '.light'], recursive=False, verbose=False)¶ read all files in a path matching extension
-
spectra
¶ A list of Spectrum objects in the collection
-
std
(append=False, ignore_flagged=True)¶
-
stitch
(method='max')¶
-
to_csv
(*args, **kwargs)¶
-
-
specdal.containers.collection.
df_to_collection
(df, name, measure_type='pct_reflect')¶ Create a collection from a pandas.DataFrame
- df: pandas.DataFrame
- Must have spectrum.name as index and metadata or wavelengths as columns
- name: string
- Name to assign to collection
c: specdal.Collection object
Operators¶
Specdal’s operators perform on both pandas and specdal objects. In the following operations, pandas series and dataframes correspond to specdal’s spectrum and collection, respectively.
-
specdal.operators.
get_column_types
(df)¶ Returns a tuple (wvl_cols, meta_cols), given a dataframe.
Wavelength column is defined as columns with a numerical name (i.e. decimal). Everything else is considered metadata column.
-
specdal.operators.
stitch
(series, method='max')¶ Stitch the regions with overlapping wavelength
series: pandas.Series object
- method: string
- How to compute final value in case of overlap. “mean”,”median”,”min”, or “max”.
-
specdal.operators.
jump_correct
(series, splices, reference, method='additive')¶ Correct for jumps in non-overlapping wavelengths
- splices: list
- list of wavelength values where jumps occur
- reference: int
- position of the reference band (0-based)
-
specdal.operators.
interpolate
(series, spacing=1, method='slinear')¶ Interpolate the array into given spacing
series: pandas.Series object
- spacing: int
- wavelength spacing to interpolate at (in nm)
- method: string
- “slinear” or “cubic”
-
specdal.operators.
proximal_join
(base_df, rover_df, on='gps_time_tgt', direction='nearest')¶ Perform proximal join and return a new dataframe.
- base_df: pandas.DataFrame
- DataFrame of reference measurements
- rover_df: pandas.DataFrame
- DataFrame of target measurements
- proximal: pandas.DataFrame object
- proximally processed dataset ( rover_df / base_df )
As a side-effect, the rover dataframe is sorted by the key Both base_df and rover_df must have the column specified by on. This column must be the same type in base and rover.
-
specdal.operators.
derivative
(series)¶ Calculate the spectral derivative. Not Implemented Yet.
Readers¶
Specdal’s readers parse a variety of input formats into the common specdal.containers.spectrum.Spectrum data type. Readers are used internally py Specturm and Collection when constructed with the filename argument, but can also be used individually.
-
specdal.readers.
read
(filepath, read_data=True, read_metadata=True, verbose=False)¶ Calls a reader function based on the extension of the passed filename. .asd: read_asd .sig: read_sig .sed: read_sed .pico: read_pico
-
specdal.readers.asd.
read_asd
(filepath, read_data=True, read_metadata=True, verbose=False)¶ Read asd file for data and metadata
2-tuple of (pd.DataFrame, OrderedDict) for data, metadata
-
specdal.readers.sig.
read_sig
(filepath, read_data=True, read_metadata=True, verbose=False)¶ Read asd file for data and metadata
2-tuple of (pd.DataFrame, OrderedDict) for data, metadata
-
specdal.readers.sed.
read_sed
(filepath, read_data=True, read_metadata=True, verbose=False)¶ Read sed file for data and metadata
2-tuple of (pd.DataFrame, OrderedDict) for data, metadata
-
specdal.readers.pico.
read_pico
(filepath, read_data=True, read_metadata=True, verbose=False)¶ Read pico file for data and metadata
2-tuple of (pd.DataFrame, OrderedDict) for data, metadata
Filters¶
Specdal’s filters operate on Collection objects, splitting them into “good” and “bad” spectra based on certain criteria.
-
specdal.filters.
filter_white
(collection, wavelength0=0, wavelength1=10000, group='mean')¶ Filter white reference spectra from collection
- good: specdal.containers.Collection
- A new collection made of the spectra that passed the filter
- bad: specdal.containers.Collection
- A new collection made of the spectra that failed the filter
-
specdal.filters.
filter_threshold
(collection, wavelength0, wavelength1, low, high, group='mean')¶ Filter the spectra from collection that have a value outside of (low,high). Parameters ———- collection: specdal.containers.collection.Collection
the collection to filter- wavelength0: float
- the starting wavelength to filter
- wavelength1: float
- the ending wavelength to filter
- low: float
- minimum allowed value between wavelength0 and wavelength1
- high: float
- maximum allowed value between wavelength0 and wavelength1
- group: string
- if there are multiple data points between wavelength0 and wavelength1, average them this way. Options: “mean”, “median”, “min”, “max”
- good: specdal.containers.Collection
- A new collection made of the spectra that passed the filter
- bad: specdal.containers.Collection
- A new collection made of the spectra that failed the filter
-
specdal.filters.
filter_std
(collection, wavelength0, wavelength1, std_thresh, group='mean')¶ Filter the spectra from collection that have a standard deviation outside a certain threshold.
- collection: specdal.containers.collection.Collection
- the collection to filter
- wavelength0: float
- the starting wavelength to filter
- wavelength1: float
- the ending wavelength to filter
- std_thresh: float
- remove spectra outside of std_thresh standard deviations from the mean
- group: string
- if there are multiple data points between wavelength0 and wavelength1, average them this way. Options: “mean”, “median”, “min”, “max”
- good: specdal.containers.Collection
- A new collection made of the spectra that passed the filter
- bad: specdal.containers.Collection
- A new collection made of the spectra that failed the filter
GUI¶
Specdal provides a Tkinter-based GUI for plotting and manually flagging spectra from Collections.
-
class
specdal.gui.viewer.
ColorPickerDialog
(parent, start_color=(0, 0, 0))¶
-
class
specdal.gui.viewer.
PlotConfigDialog
(parent, xlim=(0, 1), ylim=(0, 1), title='', xlabel='', ylabel='')¶
-
class
specdal.gui.viewer.
ToolBar
(canvas_, parent, ax)¶ -
home
()¶ Override home method to return to home of most recent plot
-
-
class
specdal.gui.viewer.
Viewer
(parent, collection=None, with_toolbar=True)¶ -
jump_correct
()¶ Only performs jump correction on 1000 and 1800 wvls and 1 reference
-
save_flag
()¶ save flag to self.flag_filepath
-
save_flag_as
()¶ modify self.flag_filepath and call save_flag()
-
stitch
()¶ Can’t stitch one spectrum and plot the collection
-
update
()¶ Update the plot
-
update_selected
(to_add=None)¶ Update, only on flaged
-