From cc3ff6dfff5a2356f6f23699026b3422130ba378 Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 29 Apr 2024 15:22:57 -0400 Subject: [PATCH 1/5] remove broken legacy c++ stuff from setup --- setup.py | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/setup.py b/setup.py index e65a079..8e7785d 100644 --- a/setup.py +++ b/setup.py @@ -1,27 +1,6 @@ #!/usr/bin/env python -from distutils.core import setup, Extension -from distutils.command.build_ext import build_ext -import numpy -import git - -class CustomBuildExtCommand(build_ext): - """build_ext command for use when numpy headers are needed.""" - - def run(self): - - # Import numpy here, only when headers are needed - import numpy - # Add numpy headers to include_dirs - self.include_dirs.append(numpy.get_include()) - - # Call original build_ext command - build_ext.run(self) - -_legacy_c = Extension('wormdatamodel.data._legacy_c', - sources = ['wormdatamodel/data/_legacy_c.cpp'], - include_dirs = [], - extra_compile_args=['-O3','-D_FILE_OFFSET_BITS=64'])# +from distutils.core import setup # Get git commit info to build version number/tag #repo = git.Repo('.git') @@ -37,5 +16,4 @@ def run(self): author='Francesco Randi', author_email='francesco.randi@gmail.com', packages=['wormdatamodel','wormdatamodel.data','wormdatamodel.signal'], - ext_modules=[_legacy_c] ) From 824fc508f19668994c87839b087932718c06a8ae Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 6 May 2024 14:10:32 -0400 Subject: [PATCH 2/5] debug numpy int --- .gitignore | 1 + wormdatamodel/data/recording.py | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index b55118c..20332b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ build/ *__pycache__* line.select +*.egg-info/ \ No newline at end of file diff --git a/wormdatamodel/data/recording.py b/wormdatamodel/data/recording.py index 0afefa3..68d4837 100644 --- a/wormdatamodel/data/recording.py +++ b/wormdatamodel/data/recording.py @@ -1,7 +1,10 @@ -import numpy as np import os import json import pickle +from packaging.version import Version + +import numpy as np + import wormdatamodel as wormdm class recording: @@ -128,10 +131,10 @@ class recording: # Optogenetics optogeneticsN = 0 - optogeneticsFrameCount = np.zeros(optogeneticsN, dtype=np.int) - optogeneticsNPulses = np.zeros(optogeneticsN, dtype=np.int) - optogeneticsRepRateDivider = np.zeros(optogeneticsN, dtype=np.int) - optogeneticsNTrains = np.zeros(optogeneticsN, dtype=np.int) + optogeneticsFrameCount = np.zeros(optogeneticsN, dtype=np.int64) + optogeneticsNPulses = np.zeros(optogeneticsN, dtype=np.int64) + optogeneticsRepRateDivider = np.zeros(optogeneticsN, dtype=np.int64) + optogeneticsNTrains = np.zeros(optogeneticsN, dtype=np.int64) optogeneticsTimeBtwTrains = np.zeros(optogeneticsN) optogeneticsTargetX = np.zeros(optogeneticsN) optogeneticsTargetY = np.zeros(optogeneticsN) @@ -674,9 +677,9 @@ def load_optogenetics(self): Line.pop(0) if Line[-1]=="": Line.pop(-1) self.optogeneticsN = len(Line) - self.optogeneticsFrameCount = np.zeros(self.optogeneticsN, dtype=np.int) - self.optogeneticsNPulses = np.zeros(self.optogeneticsN, dtype=np.int) - self.optogeneticsRepRateDivider = np.zeros(self.optogeneticsN, dtype=np.int) + self.optogeneticsFrameCount = np.zeros(self.optogeneticsN, dtype=np.int64) + self.optogeneticsNPulses = np.zeros(self.optogeneticsN, dtype=np.int64) + self.optogeneticsRepRateDivider = np.zeros(self.optogeneticsN, dtype=np.int64) self.optogeneticsTargetX = np.zeros(self.optogeneticsN) self.optogeneticsTargetY = np.zeros(self.optogeneticsN) self.optogeneticsTargetZ = np.zeros(self.optogeneticsN) @@ -686,7 +689,7 @@ def load_optogenetics(self): self.optogeneticsTime = ["None"]*self.optogeneticsN #These won't be populated in this case - self.optogeneticsNTrains = np.zeros(self.optogeneticsN, dtype=np.int) + self.optogeneticsNTrains = np.zeros(self.optogeneticsN, dtype=np.int64) self.optogeneticsTimeBtwTrains = np.zeros(self.optogeneticsN) for i in np.arange(self.optogeneticsN): @@ -707,10 +710,10 @@ def load_optogenetics(self): Line.pop(0) if Line[-1]=="": Line.pop(-1) self.optogeneticsN = len(Line) - self.optogeneticsFrameCount = np.zeros(self.optogeneticsN, dtype=np.int) - self.optogeneticsNPulses = np.zeros(self.optogeneticsN, dtype=np.int) - self.optogeneticsRepRateDivider = np.zeros(self.optogeneticsN, dtype=np.int) - self.optogeneticsNTrains = np.zeros(self.optogeneticsN, dtype=np.int) + self.optogeneticsFrameCount = np.zeros(self.optogeneticsN, dtype=np.int64) + self.optogeneticsNPulses = np.zeros(self.optogeneticsN, dtype=np.int64) + self.optogeneticsRepRateDivider = np.zeros(self.optogeneticsN, dtype=np.int64) + self.optogeneticsNTrains = np.zeros(self.optogeneticsN, dtype=np.int64) self.optogeneticsTimeBtwTrains = np.zeros(self.optogeneticsN) self.optogeneticsTargetX = np.zeros(self.optogeneticsN) self.optogeneticsTargetY = np.zeros(self.optogeneticsN) From b4fa7846000094faa2471e20d5b5c4e2cb0468af Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 6 May 2024 14:23:04 -0400 Subject: [PATCH 3/5] moved several uninstallable packages to localized imports --- .gitignore | 3 ++- setup.py | 1 + wormdatamodel/data/__init__.py | 1 - wormdatamodel/data/volume.py | 3 ++- wormdatamodel/signal/signal.py | 14 +++++++++----- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 20332b0..7588e8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ build/ *__pycache__* line.select -*.egg-info/ \ No newline at end of file +*.egg-info/ +.idea \ No newline at end of file diff --git a/setup.py b/setup.py index 8e7785d..59d6387 100644 --- a/setup.py +++ b/setup.py @@ -16,4 +16,5 @@ author='Francesco Randi', author_email='francesco.randi@gmail.com', packages=['wormdatamodel','wormdatamodel.data','wormdatamodel.signal'], + install_requires=['sklearn', 'matplotlib'], ) diff --git a/wormdatamodel/data/__init__.py b/wormdatamodel/data/__init__.py index a1d6005..8784a10 100644 --- a/wormdatamodel/data/__init__.py +++ b/wormdatamodel/data/__init__.py @@ -1,6 +1,5 @@ __all__ = ['recording','volume','load_frames_legacy','redToGreen','genRedToGreen'] from .recording import recording -from ._legacy_c import load_frames_legacy from .volume import volume from .redtogreen import redToGreen, genRedToGreen diff --git a/wormdatamodel/data/volume.py b/wormdatamodel/data/volume.py index e16cbd5..98e0ed8 100644 --- a/wormdatamodel/data/volume.py +++ b/wormdatamodel/data/volume.py @@ -1,5 +1,4 @@ import numpy as np -import mistofrutta as mf class volume: @@ -10,4 +9,6 @@ def __init__(self, frames, z, dx=0.4, dy=0.4): self.z = z def plot(self, wait=False): + import mistofrutta as mf + mf.plt.hyperstack(self.frames, order='zc', cmap='viridis', wait=wait) diff --git a/wormdatamodel/signal/signal.py b/wormdatamodel/signal/signal.py index eaecf3e..6729357 100644 --- a/wormdatamodel/signal/signal.py +++ b/wormdatamodel/signal/signal.py @@ -1,7 +1,6 @@ # Authors: Milena Chakraverti-Wuerthwein and Francesco Randi import numpy as np -import matplotlib.pyplot as plt import warnings import os import pickle @@ -12,9 +11,7 @@ from scipy.io import loadmat as sioloadmat from copy import deepcopy as deepcopy from datetime import datetime -import mistofrutta.struct.irrarray as irrarray import wormdatamodel as wormdm -import savitzkygolay as sg from sklearn.decomposition import FastICA class Signal: @@ -95,6 +92,7 @@ def __init__(self, data, info, description = None, Detect and correct instantaneous photobleaching. Use only for the red signal. Default: False. ''' + import mistofrutta.struct.irrarray as irrarray self.data = data; self.info = info; @@ -630,6 +628,8 @@ def median_filter(self, i=None): self.log("Median filtering on "+affected_neurons,False) def get_derivative(self,data,n,poly): + import savitzkygolay as sg + deriv = np.zeros_like(data) derker = sg.get_1D_filter(n,poly,1) #derker = savgol_coeffs(n,poly,deriv=1) @@ -823,6 +823,7 @@ def appl_photobl(self, j=None, verbose=True): #def get_photobl_fit(self, X, k=None): def corr_inst_photobl(self, j=None, poly_width=111, photobl_duration=3, min_distance=30): + import savitzkygolay as sg if j is None: iterate_over = np.arange(self.data.shape[1]) @@ -923,7 +924,8 @@ def trim(self,stride_name, adjust = None): trimmed.data can now be copied and reshaped into a multidimensional numpy array. ''' - + import mistofrutta.struct.irrarray as irrarray + try: start = self.data.firstIndex[stride_name]; strideLength = np.diff(start); @@ -1064,6 +1066,8 @@ def rolling_window(a, window): @staticmethod def get_causal_sg(n,poly): + import savitzkygolay as sg + order = np.arange(poly+1) out = np.zeros(n) for i in order: @@ -1098,7 +1102,7 @@ def remove_outliers(y,std_th=2.): y2[outl] = y2[outl-1] return y2 - + @classmethod def get_matchless_nan_th_from_file(cls,folder): fname = folder+cls.matchless_nan_th_fname From c4d96f334512af23757560541d528b353637c2f1 Mon Sep 17 00:00:00 2001 From: Cody Baker <51133164+CodyCBakerPhD@users.noreply.github.com> Date: Mon, 6 May 2024 14:56:44 -0400 Subject: [PATCH 4/5] Update wormdatamodel/data/recording.py --- wormdatamodel/data/recording.py | 1 - 1 file changed, 1 deletion(-) diff --git a/wormdatamodel/data/recording.py b/wormdatamodel/data/recording.py index 68d4837..d88af52 100644 --- a/wormdatamodel/data/recording.py +++ b/wormdatamodel/data/recording.py @@ -1,7 +1,6 @@ import os import json import pickle -from packaging.version import Version import numpy as np From 7c9bfd94a6bd888d53cab9ce90ac0fbfdb86200f Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 13 May 2024 14:18:06 -0400 Subject: [PATCH 5/5] fixed dependency name --- .gitignore | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 7588e8c..5b31b3d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ build/ *__pycache__* line.select *.egg-info/ -.idea \ No newline at end of file +.idea diff --git a/setup.py b/setup.py index 59d6387..1da4216 100644 --- a/setup.py +++ b/setup.py @@ -16,5 +16,5 @@ author='Francesco Randi', author_email='francesco.randi@gmail.com', packages=['wormdatamodel','wormdatamodel.data','wormdatamodel.signal'], - install_requires=['sklearn', 'matplotlib'], + install_requires=['scikit-learn', 'matplotlib'], )