Examples ======== The `Examples `_ folder contains example scripts (!) of how SciScripts can be used for experiments and analysis. Here is a walkthrough for the `Examples/FilteringAndPlotting.py `_ script. Load data from an open-ephys recording folder: .. code-block:: python In [1]: import numpy as np In [2]: from sciscripts.IO import IO In [3]: from sciscripts.Analysis import Analysis In [4]: from sciscripts.Analysis.Plot import Plot In [5]: Folder = 'DataSet/2018-08-13_13-25-45_1416' In [6]: Data, Rate = IO.DataLoader(Folder) Loading recording1 ... Loading recording2 ... Loading recording3 ... Loading recording4 ... Loading recording5 ... Loading recording6 ... Loading recording7 ... Loading recording8 ... Converting to uV... Select a recording and filter it: .. code-block:: python In [7]: Proc = list(Data.keys())[0] # Select 1st rec processor In [8]: DataExp = list(Data[Proc].keys())[0] # Select 1st experiment In [9]: Rec0 = Data[Proc][DataExp]['0'][:,:8] # Select the 1st 8 channels In [10]: Rate0 = Rate[Proc][DataExp] In [11]: Time0 = np.arange(Rec0.shape[0])/Rate0 Plot 50ms of raw channels: .. code-block:: python In [12]: Plot.AllCh(Rec0[:int(Rate0*0.05),:], Save=True, File='Plot1', Ext=['png']) .. image:: Plot1.png Filtering in theta and gamma bands: .. code-block:: python In [13]: Rec0Theta = Analysis.FilterSignal(Rec0, Rate0, Frequency=[4,12], Order=2) Filtering channel 1 ... Filtering channel 2 ... Filtering channel 3 ... Filtering channel 4 ... Filtering channel 5 ... Filtering channel 6 ... Filtering channel 7 ... Filtering channel 8 ... In [14]: Rec0Gamma = Analysis.FilterSignal(Rec0, Rate0, Frequency=[30,100], Order=3) Filtering channel 1 ... Filtering channel 2 ... Filtering channel 3 ... Filtering channel 4 ... Filtering channel 5 ... Filtering channel 6 ... Filtering channel 7 ... Filtering channel 8 ... Plot raw, theta and gamma: .. code-block:: python In [15]: Window = int(Rate0/2) ...: plt = Plot.plt # This is exactly the same as `import matplotlib.pyplot as plt` ...: Fig, Axes = plt.subplots(1,3) ...: Axes[0] = Plot.AllCh(Rec0[:Window,:], Time0[:Window], Ax=Axes[0], lw=0.7) ...: Axes[1] = Plot.AllCh(Rec0Theta[:Window,:], Time0[:Window], Ax=Axes[1], lw=0.7) ...: Axes[2] = Plot.AllCh(Rec0Gamma[:Window,:], Time0[:Window], Ax=Axes[2], lw=0.7) ...: ...: AxArgs = {'xlabel': 'Time [s]'} ...: for Ax in Axes: Plot.Set(Ax=Ax, AxArgs=AxArgs) ...: ...: Axes[0].set_ylabel('Voltage [µv]') ...: Axes[0].set_title('Raw signal') ...: Axes[1].set_title('Theta [4-12Hz]') ...: Axes[2].set_title('Gamma [30-100Hz]') ...: ...: Plot.Set(Fig=Fig) # apply tight layout and hide fig patch ...: Fig.savefig('Plot2.png') ...: plt.show() .. image:: Plot2.png More scripts using this package for real experiments and analysis can be found at `Examples `_.