Skip to content

Commit

Permalink
Merge pull request #86 from callumrollo/MOchiara-patch-6
Browse files Browse the repository at this point in the history
[FEAT] Add output check to the test
  • Loading branch information
MOchiara authored Nov 11, 2024
2 parents 079f404 + db0d6b6 commit 9d24ca9
Showing 1 changed file with 40 additions and 16 deletions.
56 changes: 40 additions & 16 deletions tests/test_tools.py
Original file line number Diff line number Diff line change
@@ -1,42 +1,66 @@
import pytest
from glidertest import fetchers, tools
import matplotlib.pyplot as plt
import math
import numpy as np


def test_plots():
def test_plots(start_prof=0, end_prof=100):
ds = fetchers.load_sample_dataset()
tools.plot_basic_vars(ds, end_prof=int(ds.PROFILE_NUMBER.max()))
fig, ax = tools.plot_basic_vars(ds,start_prof=start_prof, end_prof=end_prof)
assert ax[0].get_ylabel() == 'Depth (m)'
assert ax[0].get_xlabel() == f'Average Temperature [C] \nbetween profile {start_prof} and {end_prof}'
return fig


def test_up_down_bias():
def test_up_down_bias(v_res=1, xlabel='Salinity'):
ds = fetchers.load_sample_dataset()
fig, ax = plt.subplots()
df = tools.updown_bias(ds, var='PSAL', v_res=1)
tools.plot_updown_bias(df, ax, xlabel='Salinity')
df = tools.updown_bias(ds, var='PSAL', v_res=v_res)
bins = np.unique(np.round(ds.DEPTH,0))
ncell = math.ceil(len(bins)/v_res)
assert len(df) == ncell
tools.plot_updown_bias(df, ax, xlabel=xlabel)
lims = np.abs(df.dc)
assert ax.get_xlim() == (-np.nanpercentile(lims, 99.5), np.nanpercentile(lims, 99.5))
assert ax.get_ylim() == (df.depth.max() + 1, -df.depth.max() / 30)
assert ax.get_xlabel() == xlabel



def test_chl():
def test_chl(var1='CHLA', var2='BBP700'):
ds = fetchers.load_sample_dataset()
tools.optics_first_check(ds, var='CHLA')
tools.optics_first_check(ds, var='BBP700')
ax = tools.optics_first_check(ds, var=var1)
assert ax.get_ylabel() == var1
ax = tools.optics_first_check(ds, var=var2)
assert ax.get_ylabel() == var2
with pytest.raises(KeyError) as e:
tools.optics_first_check(ds, var='nonexistent_variable')


def test_quench_sequence():
def test_quench_sequence(xlabel='Temperature [C]',ylim=45):
ds = fetchers.load_sample_dataset()
if not "TIME" in ds.indexes.keys():
ds = ds.set_xindex('TIME')
fig, ax = plt.subplots()
tools.plot_section_with_srss(ds, 'CHLA')
tools.plot_section_with_srss(ds, 'CHLA', ax,ylim=ylim)
assert ax.get_ylabel() == 'Depth [m]'
assert ax.get_ylim() == (ylim, -ylim / 30)

dayT, nightT = tools.day_night_avg(ds, sel_var='TEMP')
fig, ax = plt.subplots()
tools.plot_daynight_avg(dayT, nightT, ax, xlabel='Temperature [C]')
assert len(nightT.dat.dropna()) > 0
assert len(dayT.dat.dropna()) > 0

fig, ax = tools.plot_daynight_avg(dayT, nightT,xlabel=xlabel)
assert ax.get_ylabel() == 'Depth [m]'
assert ax.get_xlabel() == xlabel

def test_temporal_drift():
def test_temporal_drift(var='DOXY'):
ds = fetchers.load_sample_dataset()
fig, ax = plt.subplots(1, 2)
tools.check_temporal_drift(ds,'DOXY', ax)
tools.check_temporal_drift(ds,var, ax)
assert ax[1].get_ylabel() == 'Depth (m)'
assert ax[0].get_ylabel() == var
assert ax[1].get_xlim() == (np.nanpercentile(ds[var], 0.01), np.nanpercentile(ds[var], 99.99))
tools.check_temporal_drift(ds,'CHLA')

def test_profile_check():
Expand All @@ -50,4 +74,4 @@ def test_check_monotony():
temperature_monotony = tools.check_monotony(ds.TEMP)
assert profile_number_monotony
assert not temperature_monotony


0 comments on commit 9d24ca9

Please sign in to comment.