From 68b9aa15695ee0d2c552bf62df108153e9d5b800 Mon Sep 17 00:00:00 2001 From: Kevin Anchukaitis Date: Thu, 30 Nov 2023 13:59:49 -0700 Subject: [PATCH] Modification to readers plus small changes to dplpy and pyproject (#55) * mostly change to readers for RWL files 1. change readers to handle series IDs of different lengths and the potential for negative (B.C.) years 2. removed directory change in __init__ so that default is path where the notebook or script is * Update __init__.py * Update readers.py --------- Co-authored-by: Michele Cosi <54603048+CosiMichele@users.noreply.github.com> --- .gitignore | 5 +++ dplpy/__init__.py | 4 +-- dplpy/detrend.py | 4 ++- dplpy/dplpy.py | 8 ----- dplpy/new.ipynb | 29 ++++++++++++++++ dplpy/readers.py | 20 +++++------ dplpy/series_corr.py | 1 - dplpy/writers.py | 34 ++++++------------- pyproject.toml | 16 ++++----- tests/integs/test_integ_chron.py | 3 ++ .../integs/test_integ_readers_and_writers.py | 10 ------ tests/unit/test_readers.py | 8 ++--- tests/unit/test_writers.py | 4 +-- 13 files changed, 73 insertions(+), 73 deletions(-) diff --git a/.gitignore b/.gitignore index 213bfbe..96458ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ +# Scripts for testing +src/test_*.py +src/*.txt +src/misc.py + # IDE stuff .DS_Store .vscode/ diff --git a/dplpy/__init__.py b/dplpy/__init__.py index 4ed234c..86b4c3a 100644 --- a/dplpy/__init__.py +++ b/dplpy/__init__.py @@ -2,7 +2,7 @@ __author__ = "Tyson Lee Swetnam" __email__ = "tswetnam@arizona.edu" -__version__ = "0.1.testing" +__version__ = "0.1" __copyright__ = """ dplPy for tree ring width time series analyses @@ -28,13 +28,11 @@ import os import sys -os.chdir(os.path.dirname(os.path.realpath(__file__))) lpath = os.path.dirname(os.path.realpath(__file__)) sys.path.append(lpath) del os, sys - _hard_dependencies = ("pandas", "numpy", "scipy", "csaps", "matplotlib", "statsmodels") _missing_dependencies = [] diff --git a/dplpy/detrend.py b/dplpy/detrend.py index f0526f4..8a71478 100644 --- a/dplpy/detrend.py +++ b/dplpy/detrend.py @@ -42,13 +42,14 @@ def detrend(data: pd.DataFrame | pd.Series, fit="spline", method="residual", plot=True, period=None): if isinstance(data, pd.DataFrame): + res = pd.DataFrame(index=pd.Index(data.index)) to_add = [res] for column in data.columns: to_add.append(detrend_series(data[column], column, fit, method, plot, period=None)) output_df = pd.concat(to_add, axis=1) return output_df.rename_axis(data.index.name) - + elif isinstance(data, pd.Series): return detrend_series(data, data.name, fit, method, plot) else: @@ -89,6 +90,7 @@ def detrend_series(data, series_name, fit, method, plot, period=None): if plot: fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(7,3)) + axes[0].plot(x, y, "k-", x, yi, "r-", linewidth=2) axes[0].set_xlabel('Year') axes[0].set_ylabel('Length') diff --git a/dplpy/dplpy.py b/dplpy/dplpy.py index 086cda1..e308fb2 100644 --- a/dplpy/dplpy.py +++ b/dplpy/dplpy.py @@ -206,14 +206,6 @@ def write_from_parser(args): def series_corr_from_parser(args): series_corr(input=args.input) -def series_corr_from_parser(args): - series_corr(input=args.input) - -def common_interval_from_parser(args): - common_interval(input=args.input) - -def rbar_from_parser(args): - rbar(input=args.input) # creates whitespace print("") diff --git a/dplpy/new.ipynb b/dplpy/new.ipynb index 99497b2..8cbc73e 100644 --- a/dplpy/new.ipynb +++ b/dplpy/new.ipynb @@ -295,6 +295,8 @@ "data": { "image/png": "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seHAm9r/CpgkIjNEZETQgSIyQkSmi8j0n376KdLFzItiMBiywbp167jxxhszinbpPra8vDwljW7d55Pbb7+dNWvWMGnSpAq9rtPnbohO3lVORPphifsV2uaDlFLdgQHAeSLSx+94pdR4pVQPpVSPxo0bR71mJlk2GAwGAC699FJGjx7NSy+9lPY53H3sXuLu1XgYOHAgxxxzTNrXTQenkZGtOnTdunWMGTOGb7/9NjCdMcjik9cgNiLSGZgADFBK/eJsV0qttP+uFpEXgZ7Ah1m8brZOZTAYdmCcmOdbt25N+xxu4fay0r0G2b355psp2yqKbNWh77//Ptdffz0zZ87klVde8U1nxD0+ebtjItIKeAE4XSm1QNteR0R2cr4DRwCeI+4zuHY2T2cwGAxp4xZ3Lyu9UBa5ynb3gPO71q1bF5iuKrjl161bR/369bn77rsr5Hq5nAr3JDAN6CAiy0VkuIiMFJGRdpJrgYbAf11T3poAH4vIbOAz4HWlVOGOMDEYDIYMiNLnXiji7pAtA8n5rb/99huvvvqqb7psWu6LFi1i06ZNoem2bduW1fteWlrKunXrKmyqY87c8kqpISH7zwbO9ti+BOiSekT2MC4eg8FQKETpcy+Uue9xLPfly5cD0KKF/0QoRzxnz57Nsccey7JlyzzTZ8tjUFZWRrt27Tj66KMDGxMA1atXZ6+99uLLL7PjOHaea0V5IczCMQaDwZBHKpPlHmdAXcuWLZOO8cL9Wzdv3uyZLpMxDTpOIynqdMN58+Zl5bqw/RlWlHFpTFiDwVBl+O6775g+PetBLXNKFHEvFMvdIdtu+TCy9fude50PA8+5trHcc8S6desSI1yjoJRixYoVga4lg8FQGLRp0waouHnh2bhOulPh8kHU33vNNddESuf+rX6im62lXp17HSbuBxxwQFaup1PRbvkdznKvX78+69evj5z+lltuoWXLltx55505zJXBYNhRqYyj5cPE8dZbb018D8p7VHFv3bp1Sh7SIaq452L1OeOWLzCcFuill16KUorFixcXTLQog8FQ+amKbvlatWolvv/222++6aK65XfbbbfE90zuRT4bSRXtlt+hxD0dUa5evTpgDegYPXo0bdu25R//+Ee2s2YwGPLIN998w6effpr28ZMnT05bOKqiW75mzZqJ77/+mrzESGlpacLNHtVy19Nl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\n", "text/plain": [ +<<<<<<< HEAD +======= "
" ] }, @@ -326,6 +328,7 @@ "data": { "image/png": "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seHAm9r/CpgkIjNEZETQgSIyQkSmi8j0n376KdLFzItiMBiywbp167jxxhszinbpPra8vDwljW7d55Pbb7+dNWvWMGnSpAq9rtPnbohO3lVORPphifsV2uaDlFLdgQHAeSLSx+94pdR4pVQPpVSPxo0bR71mJlk2GAwGAC699FJGjx7NSy+9lPY53H3sXuLu1XgYOHAgxxxzTNrXTQenkZGtOnTdunWMGTOGb7/9NjCdMcjik9cgNiLSGZgADFBK/eJsV0qttP+uFpEXgZ7Ah1m8brZOZTAYdmCcmOdbt25N+xxu4fay0r0G2b355psp2yqKbNWh77//Ptdffz0zZ87klVde8U1nxD0+ebtjItIKeAE4XSm1QNteR0R2cr4DRwCeI+4zuHY2T2cwGAxp4xZ3Lyu9UBa5ynb3gPO71q1bF5iuKrjl161bR/369bn77rsr5Hq5nAr3JDAN6CAiy0VkuIiMFJGRdpJrgYbAf11T3poAH4vIbOAz4HWlVOGOMDEYDIYMiNLnXiji7pAtA8n5rb/99huvvvqqb7psWu6LFi1i06ZNoem2bduW1fteWlrKunXrKmyqY87c8kqpISH7zwbO9ti+BOiSekT2MC4eg8FQKETpcy+Uue9xLPfly5cD0KKF/0QoRzxnz57Nsccey7JlyzzTZ8tjUFZWRrt27Tj66KMDGxMA1atXZ6+99uLLL7PjOHaea0V5IczCMQaDwZBHKpPlHmdAXcuWLZOO8cL9Wzdv3uyZLpMxDTpOIynqdMN58+Zl5bqw/RlWlHFpTFiDwVBl+O6775g+PetBLXNKFHEvFMvdIdtu+TCy9fude50PA8+5trHcc8S6desSI1yjoJRixYoVga4lg8FQGLRp0waouHnh2bhOulPh8kHU33vNNddESuf+rX6im62lXp17HSbuBxxwQFaup1PRbvkdznKvX78+69evj5z+lltuoWXLltx55505zJXBYNhRqYyj5cPE8dZbb018D8p7VHFv3bp1Sh7SIaq452L1OeOWLzCcFuill16KUorFixcXTLQog8FQ+amKbvlatWolvv/222++6aK65XfbbbfE90zuRT4bSRXtlt+hxD0dUa5evTpgDegYPXo0bdu25R//+Ee2s2YwGPLIN998w6effpr28ZMnT05bOKqiW75mzZqJ77/+mrzESGlpacLNHtVy19Nl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\n", "text/plain": [ +>>>>>>> main "
" ] }, @@ -901,6 +904,8 @@ ] }, { +<<<<<<< HEAD +======= "name": "stdout", "output_type": "stream", "text": [ @@ -1071,6 +1076,7 @@ ] }, { +>>>>>>> main "data": { "text/html": [ "
\n", @@ -1238,6 +1244,28 @@ " \n", " ...\n", " ...\n", +<<<<<<< HEAD + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", +======= " NaN\n", " NaN\n", " NaN\n", @@ -1248,6 +1276,7 @@ " NaN\n", " NaN\n", " 0.317647\n", +>>>>>>> main " \n", " \n", " 1860-1899\n", diff --git a/dplpy/readers.py b/dplpy/readers.py index 922c47f..98cf188 100644 --- a/dplpy/readers.py +++ b/dplpy/readers.py @@ -60,8 +60,8 @@ def readers(filename: str, skip_lines=0, header=False): else: errorMsg = """ -Unable to read file, please check that you're using a supported type -Accepted file types are .csv and .rwl +Unable to read the file, please check that you're using a supported type +Accepted file types are currently .csv and .rwl Example usages: >>> import dplpy as dpl @@ -81,7 +81,7 @@ def readers(filename: str, skip_lines=0, header=False): series_data.set_index('Year', inplace = True, drop = True) # Display message to show that reading was successful - print("\nSUCCESS!\nFile read as:", FORMAT, "file\n") + print("File read successfully as:", FORMAT, "file\n") # Display names of all the series found print("Series names:") @@ -95,7 +95,7 @@ def process_rwl_pandas(filename, skip_lines, header): with open(filename, "r") as rwl_file: file_lines = rwl_file.readlines()[skip_lines:] - + rwl_data, first_date, last_date = read_rwl(file_lines) if rwl_data is None: return None @@ -126,7 +126,7 @@ def read_rwl(lines): for line in lines: line = line.rstrip("\n") - + if line[7] != '-' and line[6] != '-': series_id = line[:8].strip() iyr = int(line[8:12]) @@ -139,13 +139,13 @@ def read_rwl(lines): if series_id not in rwl_data: rwl_data[series_id] = {} - + dataline = [line[i:i+6] for i in range(12, len(line), 6) if line[i:i+6].strip()] - + # keep track of the first and last date in the dataset line_start = int(iyr) first_date = min(first_date, line_start) - last_date = max(last_date, (line_start+len(dataline)-1)) + last_date = max(last_date, (line_start+len(dataline)-1)) # will implement some standardization here so that all data read is consistent, and all data written in rwl # can be written to one of the two popular precisions. @@ -159,8 +159,6 @@ def read_rwl(lines): continue data = float(int(dataline[i])) except ValueError as valerr: # Stops reader, escalates to give the user an error when unexpected formatting is detected. - print("Error:", valerr) - print("See line:", line) return None, None, None rwl_data[series_id][line_start+i] = data - return rwl_data, first_date, last_date \ No newline at end of file + return rwl_data, first_date, last_date diff --git a/dplpy/series_corr.py b/dplpy/series_corr.py index 1ae8d47..eca244e 100644 --- a/dplpy/series_corr.py +++ b/dplpy/series_corr.py @@ -38,7 +38,6 @@ from autoreg import ar_func_series from chron import chron from xdate import get_ar_lag, correlate, compare_segment, get_bins, get_crit - import pandas as pd import numpy as np import scipy diff --git a/dplpy/writers.py b/dplpy/writers.py index ea139e5..f0ce137 100644 --- a/dplpy/writers.py +++ b/dplpy/writers.py @@ -108,40 +108,28 @@ def write_rwl(data, file): start = data[series].first_valid_index() end = data[series].last_valid_index() i = start - - if i < 0: - file.write(series.ljust(7)) - file.write(str(i).rjust(5)) - else: - file.write(series.ljust(8)) - file.write(str(i).rjust(4)) + file.write(series.rjust(6) + "\t") + file.write(str(i).rjust(4) + "\t") while i <= end: if np.isnan(data[series][i]): - file.write(str(-9999).rjust(6)) + file.write(str(-9999)) file.write("\n") while i <= end and np.isnan(data[series][i]): i += 1 if i <= end: - if i < 0: - file.write(series.ljust(7)) - file.write(str(i).rjust(5)) - else: - file.write(series.ljust(8)) - file.write(str(i).rjust(4)) + file.write(series.rjust(6) + "\t") + file.write(str(i).rjust(4) + "\t") continue - file.write((f"{data[series][i]:.3f}").lstrip('0').replace('.', '').rjust(4, '0').rjust(6)) + file.write((f"{data[series][i]:.3f}").lstrip('0').replace('.', '').rjust(4, '0') + "\t") i += 1 if i % 10 == 0: file.write("\n") - if i < 0: - file.write(series.ljust(7)) - file.write(str(i).rjust(5)) - else: - file.write(series.ljust(8)) - file.write(str(i).rjust(4)) - - file.write(str(-9999).rjust(6)) + file.write(series.rjust(6) + "\t") + file.write(str(i).rjust(4) + "\t") + + + file.write(str(-9999)) file.write("\n") diff --git a/pyproject.toml b/pyproject.toml index 6c5c0cc..ef558e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta" [project] name="dplpy" -description="dendrochronology library for Python" +description="Dendrochronology Program Library for Python" readme="README.md" version="0.1" authors=[ @@ -16,16 +16,12 @@ authors=[ {name='Kevin Anchukaitis', email='kanchukaitis@arizona.edu'}, ] license={file='LICENSE'} -requires-python = '>=3.10' +requires-python = '>=3.11' dependencies=[ - "numpy>=1.22.4,<2; python_version<'3.11'", - "numpy>=1.23.2,<2; python_version=='3.11'", - "numpy>=1.26.0,<2; python_version>='3.12'", - "pandas>=2.0.0", - + "pandas>=2.1.1", + "numpy>=1.26.0", "csaps==1.1.0", - "matplotlib>=3.8.0", - "statsmodels>=0.13.5; python_version>='3.10'", - "statsmodels>=0.14.0; python_version>='3.12'", + "matplotlib>=3.8.1", + "statsmodels>=0.14.0", "scipy>=1.11.3" ] diff --git a/tests/integs/test_integ_chron.py b/tests/integs/test_integ_chron.py index cdb81b3..432b639 100644 --- a/tests/integs/test_integ_chron.py +++ b/tests/integs/test_integ_chron.py @@ -1,7 +1,10 @@ import pytest import dplpy as dpl +import pandas as pd +import os def test_chron_no_prewhiten_no_biweight(): + print(os.getcwd()) data = dpl.readers("../tests/data/csv/ca533.csv") res = dpl.chron(data, biweight=False, prewhiten=False, plot=False) diff --git a/tests/integs/test_integ_readers_and_writers.py b/tests/integs/test_integ_readers_and_writers.py index f8c63d1..cea5d6b 100644 --- a/tests/integs/test_integ_readers_and_writers.py +++ b/tests/integs/test_integ_readers_and_writers.py @@ -50,13 +50,3 @@ def test_read_and_write_long_rwl(tmp_path): pd.testing.assert_frame_equal(ca667, ca667_alt) -def test_read_and_write_weird_rwl(tmp_path): - wwr = dpl.readers("../tests/data/rwl/wwr.rwl") - - write_path = os.path.join(tmp_path, "test_write") - - dpl.write(wwr, write_path, "rwl") - - wwr_alt = dpl.readers(write_path + ".rwl") - - pd.testing.assert_frame_equal(wwr, wwr_alt) \ No newline at end of file diff --git a/tests/unit/test_readers.py b/tests/unit/test_readers.py index ae52f46..6b0c77c 100644 --- a/tests/unit/test_readers.py +++ b/tests/unit/test_readers.py @@ -60,15 +60,15 @@ def mock_open_output(file_path, open_type): ) if file_path == "valid_rwl_correct_format.rwl": - wrapper.write("SeriesA 1 10 30 50 70 999\n") - wrapper.write("SeriesB 1 200 400 600 800 -9999\n") + wrapper.write("SeriesA 1 10 30 50 70 999\n") + wrapper.write("SeriesB 1 200 400 600 800 -9999\n") wrapper.seek(0,0) elif file_path == "valid_rwl_with_headers.rwl": wrapper.write("Header line 1\n") wrapper.write("Header line 2\n") wrapper.write("Header line 3\n") - wrapper.write("SeriesA 1 10 30 50 70 999\n") - wrapper.write("SeriesB 1 200 400 600 800 -9999\n") + wrapper.write("SeriesA 1 10 30 50 70 999\n") + wrapper.write("SeriesB 1 200 400 600 800 -9999\n") wrapper.seek(0,0) else: raise OSError("File not found") diff --git a/tests/unit/test_writers.py b/tests/unit/test_writers.py index 8e61a0c..c5f5d39 100644 --- a/tests/unit/test_writers.py +++ b/tests/unit/test_writers.py @@ -71,8 +71,8 @@ def test_write_rwl(tmpdir): dpl.write(input_df, file.strpath[:-4], "rwl") - expected_rwl_lines = ['SeriesA 1 0100 0300 0500 0700 -9999\n', - 'SeriesB 1 0200 0400 0600 0800 -9999\n'] + expected_rwl_lines = ['SeriesA\t 1\t0100\t0300\t0500\t0700\t-9999\n', + 'SeriesB\t 1\t0200\t0400\t0600\t0800\t-9999\n'] assert expected_rwl_lines == file.readlines()