Skip to content

Commit

Permalink
Format docstrings
Browse files Browse the repository at this point in the history
  • Loading branch information
troyraen committed Dec 4, 2024
1 parent 0db074f commit b7437fd
Show file tree
Hide file tree
Showing 9 changed files with 168 additions and 172 deletions.
42 changes: 25 additions & 17 deletions spectroscopy/code_src/data_structures_spec.py
Original file line number Diff line number Diff line change
@@ -1,50 +1,56 @@
# setup to store the light curves in a data structure
# setup to store the spectra in a data structure
import pandas as pd


class MultiIndexDFObject:
"""
Pandas MultiIndex data frame to store & manipulate multiband light curves
Pandas MultiIndex data frame to store & manipulate spectra.
Examples
--------
# Initialize Pandas MultiIndex data frame for storing the light curve
df_lc = MultiIndexDFObject()
# Initialize Pandas MultiIndex data frame for storing the spectra
df_spec = MultiIndexDFObject()
#make a single multiindex dataframe
dfsingle = pd.DataFrame(dict(flux=[0.1], err=[0.1], time=[time_mjd], objectid=[ccount + 1], /
band=[mission], label=lab)).set_index(["objectid", "label", "band", "time"])
# Make a single multiindex dataframe
df_single = pd.DataFrame(dict(wave=[0.1], flux=[0.1], err=[0.1], instrument=[instrument_name],
objectid=[ccount + 1], filter=[filter_name],
mission=[mission_name], label=[lab]))
df_single = df_single.set_index(["objectid", "label", "filter", "mission"])
# Append to existing MultiIndex light curve object
df_lc.append(dfsingle)
#Show the contents
df_lc.data
# Append to existing MultiIndex object
df_spec.append(dfsingle)
# Show the contents
df_spec.data
"""

def __init__(self, data=None):
"""Create a MultiIndex DataFrame that is empty if data is None, else contains the data.
"""
Create a MultiIndex DataFrame that is empty if data is None, else contains the data.
Parameters
----------
data : pd.DataFrame, optional
Dataframe to store in the `data` attribute.
"""

index = ["objectid", "label", "filter", "mission"]
columns = ["wave", "flux", "err", "instrument"]
self.data = pd.DataFrame(columns=index + columns).set_index(index)
if data is not None:
self.append(data)

def append(self, x):
"""Add a new band of light curve data to the dataframe
"""
Add a new spectra data to the dataframe.
Parameters
----------
x : Pandas dataframe
contains columns [flux, fluxerr] and multi-index [objectid, label, band, time]
Contains columns ["wave", "flux", "err", "instrument"]
and multi-index ["objectid", "label", "filter", "mission"].
"""

if isinstance(x, self.__class__):
# x is a MultiIndexDFObject. extract the DataFrame
new_data = x.data
Expand All @@ -65,11 +71,13 @@ def append(self, x):
self.data = pd.concat([self.data, new_data])

def remove(self, x):
""" Drop a light curve from the dataframe
"""
Drop a row from the dataframe.
Parameters
----------
x : list of values
Index values identifying rows to be dropped.
Index values identifying rows to be dropped.
"""

self.data = self.data.drop(x)
19 changes: 9 additions & 10 deletions spectroscopy/code_src/desi_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,23 @@


def DESIBOSS_get_spec(sample_table, search_radius_arcsec):
'''
Retrieves DESI and BOSS spectra for a list of sources.
"""
Retrieve DESI and BOSS spectra for a list of sources.
Note, that we can also retrieve SDSS-DR16 spectra here, which
leads to similar results as SDSS_get_spec().
Parameters
----------
sample_table : `~astropy.table.Table`
Table with the coordinates and journal reference labels of the sources
search_radius_arcsec : `float`
sample_table : astropy.table.Table
Table with the coordinates and journal reference labels of the sources.
search_radius_arcsec : float
Search radius in arcseconds. Here its rather half a box size.
Returns
-------
df_lc : MultiIndexDFObject
The main data structure to store all spectra
'''
MultiIndexDFObject
The spectra returned from the archive.
"""

# Set up client
client = SparclClient()
Expand Down Expand Up @@ -98,4 +97,4 @@ def DESIBOSS_get_spec(sample_table, search_radius_arcsec):
)).set_index(["objectid", "label", "filter", "mission"])
df_spec.append(dfsingle)

return (df_spec)
return df_spec
38 changes: 20 additions & 18 deletions spectroscopy/code_src/herschel_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,19 @@

def find_max_flux_column(df):
"""
Analyzes a DataFrame with flux columns and returns the column with the largest sum.
Analyze a DataFrame with flux columns and returns the column with the largest sum.
Args:
df (pandas.DataFrame): The DataFrame containing columns with "flux" in the name.
Parameters
----------
df : pandas.DataFrame
The DataFrame containing columns with "flux" in the name.
Returns:
str: The name of the column with the largest sum of values containing "flux".
Returns
-------
str
The name of the column with the largest sum of values containing "flux".
"""


# Filter column names containing "flux"
flux_cols = [col for col in df.columns if "flux" in col.lower()]

Expand All @@ -44,27 +47,26 @@ def find_max_flux_column(df):

def Herschel_get_spec(sample_table, search_radius_arcsec, datadir,
delete_downloaded_data=True):
'''
Retrieves Herschel spectra from a subset of modes for a list of sources.
"""
Retrieve Herschel spectra from a subset of modes for a list of sources.
Parameters
----------
sample_table : `~astropy.table.Table`
Table with the coordinates and journal reference labels of the sources
search_radius_arcsec : `float`
sample_table : astropy.table.Table
Table with the coordinates and journal reference labels of the sources.
search_radius_arcsec : float
Search radius in arcseconds.
datadir : `str`
datadir : str
Data directory where to store the data. Each function will create a
separate data directory (for example "[datadir]/HST/" for HST data).
delete_downloaded_data: `bool`, optional
Should the tarfiles be deteled after spectra are extracted?
delete_downloaded_data : bool, optional
Whether the tar files be deleted after spectra are extracted.
Returns
-------
df_spec : MultiIndexDFObject
The main data structure to store all spectra
'''
MultiIndexDFObject
The spectra returned from the archive.
"""

# Initialize multi-index object:
df_spec = MultiIndexDFObject()
Expand Down
19 changes: 9 additions & 10 deletions spectroscopy/code_src/keck_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,21 @@


def KeckDEIMOS_get_spec(sample_table, search_radius_arcsec):
'''
Retrieves Keck DEIMOS on COSMOS spectra for a list of sources.
"""
Retrieve Keck DEIMOS on COSMOS spectra for a list of sources.
Parameters
----------
sample_table : `~astropy.table.Table`
Table with the coordinates and journal reference labels of the sources
search_radius_arcsec : `float`
sample_table : astropy.table.Table
Table with the coordinates and journal reference labels of the sources.
search_radius_arcsec : float
Search radius in arcseconds.
Returns
-------
df_lc : MultiIndexDFObject
The main data structure to store all spectra
'''
MultiIndexDFObject
The spectra returned from the archive.
"""

# Initialize multi-index object:
df_spec = MultiIndexDFObject()
Expand Down Expand Up @@ -84,4 +83,4 @@ def KeckDEIMOS_get_spec(sample_table, search_radius_arcsec):
)).set_index(["objectid", "label", "filter", "mission"])
df_spec.append(dfsingle)

return (df_spec)
return df_spec
Loading

0 comments on commit b7437fd

Please sign in to comment.