From 96d0fe87d7aba09349b2d01e2ca1d99f289d2666 Mon Sep 17 00:00:00 2001 From: Vineet Tiruvadi Date: Wed, 30 Mar 2022 23:03:58 -0700 Subject: [PATCH 1/2] reorganize --- analysis/actuation_modes/alpha_response.py | 49 ++++++++++++------- analysis/actuation_modes/tensor_decomp.py | 28 ----------- analysis/actuation_modes/voltage_response.py | 15 ++---- .../Emotion_DTI.py | 0 .../Targeting_DTI.py | 0 .../support_model.py | 0 .../net_support/group_network_support.ipynb | 40 ++++++++------- scripts/pyvista_test.py | 6 +++ 8 files changed, 64 insertions(+), 74 deletions(-) delete mode 100644 analysis/actuation_modes/tensor_decomp.py rename analysis/{eeg_support => support_model}/Emotion_DTI.py (100%) rename analysis/{eeg_support => support_model}/Targeting_DTI.py (100%) rename analysis/{eeg_support => support_model}/support_model.py (100%) create mode 100644 scripts/pyvista_test.py diff --git a/analysis/actuation_modes/alpha_response.py b/analysis/actuation_modes/alpha_response.py index 8f37774..be46eea 100644 --- a/analysis/actuation_modes/alpha_response.py +++ b/analysis/actuation_modes/alpha_response.py @@ -9,35 +9,50 @@ """ -from DBSpace.control import proc_dEEG -import DBSpace as dbo -from DBSpace.visualizations import EEG_Viz -from DBSpace.control.TVB_DTI import DTI_support_model, plot_support_model +#%% +from dbspace.control import offline_segments +from dbspace.viz.MM import EEG_Viz +from dbspace.control.DTI_support import DTI_support_model, plot_support_model -import scipy.stats as stats import numpy as np import matplotlib.pyplot as plt import seaborn as sns -sns.set_context('paper') -sns.set(font_scale=3) -sns.set_style('white') -import pickle -import cmocean +sns.set_context("paper") +sns.set(font_scale=3) +sns.set_style("white") -pt_list = ['906','907','908'] +pt_list = ["906", "907", "908"] ## Basic initialization methods, need to suppress figures from these and clean these up -eFrame = proc_dEEG.proc_dEEG(pts=pt_list,procsteps='conservative',condits=['OnT','OffT']) +eFrame = offline_segments.network_action_dEEG( + pts=pt_list, + procsteps="conservative", + condits=["OnT", "OffT"], + config_file="../../assets/config/targeting_experiment.json", +) eFrame.standard_pipeline() #%% Generate the control modes -#eFrame.OnT_ctrl_modes(pt='POOL') #THIS HAS BEEN MOVED TO control_modes.py +# eFrame.OnT_ctrl_modes(pt='POOL') #THIS HAS BEEN MOVED TO control_modes.py #%% Plot the median response -eFrame.topo_median_response(do_condits=['OnT','OffT'],pt='POOL',band='Alpha',use_maya=True,scale_w_mad=False,avg_func=np.mean) -#eFrame.topo_median_variability(do_condits=['OnT','OffT'],pt='POOL',band='Alpha',use_maya=False) +eFrame.topo_median_response( + do_condits=["OnT", "OffT"], + pt="POOL", + band="Alpha", + use_maya=True, + scale_w_mad=False, + avg_func=np.mean, +) +# eFrame.topo_median_variability(do_condits=['OnT','OffT'],pt='POOL',band='Alpha',use_maya=False) #%% Plot individual patients for pp in pt_list: - eFrame.topo_median_response(do_condits=['OnT','OffT'],pt=pp,band='Alpha',use_maya=True,scale_w_mad=False) -#eFrame.topo_median_variability(do_condits=['OnT','OffT'],pt='POOL',band='Alpha',use_maya=False) \ No newline at end of file + eFrame.topo_median_response( + do_condits=["OnT", "OffT"], + pt=pp, + band="Alpha", + use_maya=True, + scale_w_mad=False, + ) +# eFrame.topo_median_variability(do_condits=['OnT','OffT'],pt='POOL',band='Alpha',use_maya=False) diff --git a/analysis/actuation_modes/tensor_decomp.py b/analysis/actuation_modes/tensor_decomp.py deleted file mode 100644 index da11779..0000000 --- a/analysis/actuation_modes/tensor_decomp.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -Created on Fri Dec 20 17:06:33 2019 - -@author: virati -Separate script just for control mode analysis of ONT (and OFFT) -""" - - -from DBSpace.control import proc_dEEG -import DBSpace as dbo -from DBSpace.visualizations import EEG_Viz -from DBSpace.control.TVB_DTI import DTI_support_model, plot_support_model - -import seaborn as sns -import cmocean -sns.set_context('paper') -sns.set(font_scale=3) -sns.set_style('white') - -## Basic initialization methods, need to suppress figures from these and clean these up -eFrame = proc_dEEG.proc_dEEG(pts=['906','907','908'],procsteps='conservative',condits=['OnT','OffT']) -eFrame.standard_pipeline() - -#%% - -eFrame.topo_OnT_ctrl_tensor(pt='POOL') diff --git a/analysis/actuation_modes/voltage_response.py b/analysis/actuation_modes/voltage_response.py index c4e7b7e..d269c3e 100644 --- a/analysis/actuation_modes/voltage_response.py +++ b/analysis/actuation_modes/voltage_response.py @@ -7,18 +7,12 @@ Script to load and characterize Voltage-sweep data; Most likely just from 906 """ +import matplotlib.pyplot as plt +import numpy as np from dbspace.control.stream_buffers import streamEEG from dbspace.utils.structures import nestdict - -import itertools -from sklearn.metrics import confusion_matrix - -import matplotlib.pyplot as plt -import numpy as np - -import pickle - from dbspace.viz.MM import EEG_Viz +from sklearn.metrics import confusion_matrix #%% #First, let's bring in the timeseries from DBS906 Voltage Sweep Experiment @@ -61,6 +55,7 @@ #Need to go into each channel and figure out which ones "GROW" and which ones don't from scipy.stats import linregress + def isMonotonic(A): return (all(A[i] <= A[i + 1] for i in range(len(A) - 1)) or @@ -74,4 +69,4 @@ def isMonotonic(A): chann_mono[cc] = (voltage_diff > 0).all() chann_monoish[cc] = np.sum(voltage_diff > 0) > 4 -EEG_Viz.plot_3d_scalp(chann_monoish,unwrap=True) \ No newline at end of file +EEG_Viz.plot_3d_scalp(chann_monoish,unwrap=True) diff --git a/analysis/eeg_support/Emotion_DTI.py b/analysis/support_model/Emotion_DTI.py similarity index 100% rename from analysis/eeg_support/Emotion_DTI.py rename to analysis/support_model/Emotion_DTI.py diff --git a/analysis/eeg_support/Targeting_DTI.py b/analysis/support_model/Targeting_DTI.py similarity index 100% rename from analysis/eeg_support/Targeting_DTI.py rename to analysis/support_model/Targeting_DTI.py diff --git a/analysis/eeg_support/support_model.py b/analysis/support_model/support_model.py similarity index 100% rename from analysis/eeg_support/support_model.py rename to analysis/support_model/support_model.py diff --git a/notebooks/net_support/group_network_support.ipynb b/notebooks/net_support/group_network_support.ipynb index fa90c1e..aef0b39 100644 --- a/notebooks/net_support/group_network_support.ipynb +++ b/notebooks/net_support/group_network_support.ipynb @@ -325,35 +325,37 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/home/virati/Dropbox/projects/Research/MDD-DBS/Ephys/DBSpace/src/dbspace/control/offline_segments.py:1912: DeprecationWarning: invalid escape sequence \\g\n", - " \"\"\" The old method of generating a stack from our observations\n", - "/home/virati/Dropbox/projects/Research/MDD-DBS/Ephys/cortical_signatures/.venv/lib/python3.8/site-packages/seaborn/rcmod.py:400: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", - " if LooseVersion(mpl.__version__) >= \"3.0\":\n", - "/home/virati/Dropbox/projects/Research/MDD-DBS/Ephys/cortical_signatures/.venv/lib/python3.8/site-packages/setuptools/_distutils/version.py:351: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", - " other = LooseVersion(other)\n", - "/home/virati/Dropbox/projects/Research/MDD-DBS/Ephys/DBSpace/src/dbspace/control/offline_segments.py:1912: DeprecationWarning: invalid escape sequence \\g\n", - " \"\"\" The old method of generating a stack from our observations\n" + "/home/virati/Dropbox/projects/Research/MDD-DBS/Ephys/cortical_signatures/.venv/lib/python3.8/site-packages/mne/channels/montage.py:186: DeprecationWarning: `np.str` is a deprecated alias for the builtin `str`. To silence this warning, use `str` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.str_` here.\n", + "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", + " ch_names_ = data['f0'].astype(np.str)\n" ] }, { - "ename": "KeyError", - "evalue": "'conservative'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m/home/virati/Dropbox/projects/Research/MDD-DBS/Ephys/cortical_signatures/notebooks/net_support/group_network_support.ipynb Cell 6'\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m do_coherence \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m\n\u001b[1;32m 18\u001b[0m \u001b[39m## Basic initialization methods, need to suppress figures from these and clean these up\u001b[39;00m\n\u001b[0;32m---> 19\u001b[0m eFrame \u001b[39m=\u001b[39m offline_segments\u001b[39m.\u001b[39;49mnetwork_action_dEEG(config_file\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39m../../assets/config/stream_config.json\u001b[39;49m\u001b[39m\"\u001b[39;49m,\n\u001b[1;32m 20\u001b[0m pts\u001b[39m=\u001b[39;49mpt_list, procsteps\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39mconservative\u001b[39;49m\u001b[39m\"\u001b[39;49m, condits\u001b[39m=\u001b[39;49m[\u001b[39m\"\u001b[39;49m\u001b[39mOnT\u001b[39;49m\u001b[39m\"\u001b[39;49m, \u001b[39m\"\u001b[39;49m\u001b[39mOffT\u001b[39;49m\u001b[39m\"\u001b[39;49m]\n\u001b[1;32m 21\u001b[0m )\n\u001b[1;32m 22\u001b[0m eFrame\u001b[39m.\u001b[39mstandard_pipeline()\n\u001b[1;32m 23\u001b[0m eFrame\u001b[39m.\u001b[39mband_distrs()\n", - "File \u001b[0;32m~/Dropbox/projects/Research/MDD-DBS/Ephys/DBSpace/src/dbspace/control/offline_segments.py:74\u001b[0m, in \u001b[0;36mnetwork_action_dEEG.__init__\u001b[0;34m(self, pts, config_file, procsteps, condits, pretty_mode, polyfix)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mlabel_map \u001b[39m=\u001b[39m {\u001b[39m\"\u001b[39m\u001b[39mOnT\u001b[39m\u001b[39m\"\u001b[39m: \u001b[39m1\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39mOffT\u001b[39m\u001b[39m\"\u001b[39m: \u001b[39m0\u001b[39m}\n\u001b[1;32m 73\u001b[0m \u001b[39m# Load in the data\u001b[39;00m\n\u001b[0;32m---> 74\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mts_data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mload_data(pts)\n\u001b[1;32m 76\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39meeg_locs \u001b[39m=\u001b[39m mne\u001b[39m.\u001b[39mchannels\u001b[39m.\u001b[39mread_montage(\n\u001b[1;32m 77\u001b[0m \u001b[39m\"\u001b[39m\u001b[39m/home/virati/Dropbox/GSN-HydroCel-257.sfp\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 78\u001b[0m )\n\u001b[1;32m 80\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mgen_output_variables()\n", - "File \u001b[0;32m~/Dropbox/projects/Research/MDD-DBS/Ephys/DBSpace/src/dbspace/control/offline_segments.py:136\u001b[0m, in \u001b[0;36mnetwork_action_dEEG.load_data\u001b[0;34m(self, pts)\u001b[0m\n\u001b[1;32m 133\u001b[0m \u001b[39mfor\u001b[39;00m condit \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcondits:\n\u001b[1;32m 134\u001b[0m ts_data[pt][condit] \u001b[39m=\u001b[39m defaultdict(\u001b[39mdict\u001b[39m)\n\u001b[0;32m--> 136\u001b[0m temp_data \u001b[39m=\u001b[39m loadmat(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mtargeting_config[\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mprocsteps][pt][condit])\n\u001b[1;32m 138\u001b[0m \u001b[39mfor\u001b[39;00m epoch \u001b[39min\u001b[39;00m keys_oi[condit]:\n\u001b[1;32m 139\u001b[0m ts_data[pt][condit][epoch] \u001b[39m=\u001b[39m temp_data[epoch]\n", - "\u001b[0;31mKeyError\u001b[0m: 'conservative'" + "name": "stdout", + "output_type": "stream", + "text": [ + "Doing standard init pipeline\n", + "Pooling Patient Observations\n", + "Computing Bootstrap Median Response for POOL\n", + "Plotting Distribution for Bands\n" ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ diff --git a/scripts/pyvista_test.py b/scripts/pyvista_test.py new file mode 100644 index 0000000..6d1745d --- /dev/null +++ b/scripts/pyvista_test.py @@ -0,0 +1,6 @@ +from pyvista import examples +mesh = examples.download_st_helens() +warped = mesh.warp_by_scalar('Elevation') +surf = warped.extract_surface().triangulate() +surf = surf.decimate_pro(0.75) # reduce the density of the mesh by 75% +surf.plot(cmap='gist_earth') \ No newline at end of file From faa554f4d42d21a4809ee952a2d0e2a4e69974f9 Mon Sep 17 00:00:00 2001 From: Vineet Tiruvadi Date: Thu, 31 Mar 2022 14:43:44 -0700 Subject: [PATCH 2/2] toggled mayavi --- analysis/actuation_modes/alpha_response.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analysis/actuation_modes/alpha_response.py b/analysis/actuation_modes/alpha_response.py index be46eea..565fc10 100644 --- a/analysis/actuation_modes/alpha_response.py +++ b/analysis/actuation_modes/alpha_response.py @@ -40,7 +40,7 @@ do_condits=["OnT", "OffT"], pt="POOL", band="Alpha", - use_maya=True, + use_maya=False, scale_w_mad=False, avg_func=np.mean, ) @@ -52,7 +52,7 @@ do_condits=["OnT", "OffT"], pt=pp, band="Alpha", - use_maya=True, + use_maya=False, scale_w_mad=False, ) # eFrame.topo_median_variability(do_condits=['OnT','OffT'],pt='POOL',band='Alpha',use_maya=False)