def __init__( self, session_name: str, events_window_s: int = 3, firing_rate_window: int = 100, ): self.session_name = session_name self.hairpin = Session.on_hairpin(self.session_name) self.events_window = events_window_s * 60 self.firing_rate_window = firing_rate_window # start logging recorder.start(base_folder=self.base_folder, name=session_name, timestamp=False) # get session data self.fetch()
from loguru import logger from pathlib import Path from tpd import recorder from myterial import blue_grey_dark import draw from data.dbase.db_tables import ROICrossing from data import arena from analysis._visuals import move_figure from analysis import visuals folder = Path(r"D:\Dropbox (UCL)\Rotation_vte\Locomotion\analysis\behavior") recorder.start(base_folder=folder, folder_name="roi_crossings", timestamp=False) ''' Plots an overview of ROI crossings for each ROI and saves the data as a .h5 file for further analysis ''' # TODO save with tracking data from all body parts for animation making for ROI in arena.ROIs_dict.keys(): # create figure and draw ROI image f = plt.figure(figsize=(20, 12)) f.suptitle(ROI) f._save_name = f"roi_{ROI}" axes = f.subplot_mosaic(""" AABC AADE
from data.dbase._tracking import calc_angular_velocity from kinematics.msd import MSD from kinematics import time from geometry import Path from matplotlib import rc rc("font", **{"family": "sans-serif", "sans-serif": ["Helvetica"]}) rc("text", usetex=False) folder = Path( # r"/Users/federicoclaudi/Dropbox (UCL)/Rotation_vte/Presentations/Presentations/Fiete lab" r'D:\Dropbox (UCL)\Rotation_vte\Presentations\Presentations\Fiete lab' ) recorder.start( base_folder=folder.parent, folder_name=folder.name, timestamp=False ) """ Fit MSD model to turn trajectories in mice """ # %% # load and clean roi crossings ROI = "T3" MIN_DUR = 1.3 _bouts = pd.read_hdf( paths.analysis_folder / "behavior" / "saved_data" / f"{ROI}_crossings.h5" ).sort_values("duration")
from fcutils.progress import track from fcutils.path import files, from_json sys.path.append("./") from data.dbase.db_tables import ROICrossing, LocomotionBouts, Tracking from data import arena # base_folder = Path(r"D:\Dropbox (UCL)\Rotation_vte\Locomotion\analysis\behavior") base_folder = Path( "/Users/federicoclaudi/Dropbox (UCL)/Rotation_vte/Locomotion/analysis/behavior" ) recorder.start( base_folder=base_folder, folder_name="saved_data", timestamp=False, ) save_folder = base_folder / "saved_data" # ---------------------------------------------------------------------------- # # save roi crossings # # ---------------------------------------------------------------------------- # def save_rois(): tracking = {} for ROI in arena.ROIs_dict.keys(): # fetch from database crossings = pd.DataFrame((ROICrossing * ROICrossing.InitialCondition & f'roi="{ROI}"' & "mouse_exits=1").fetch())
base_folder = Path(r"D:\Dropbox (UCL)\Rotation_vte\Locomotion\analysis") """ Plot a few exploratory plots for each session a recording was performed on. 1. Overview of tracking data """ sessions = (db_tables.ValidatedSession * db_tables.Session & "is_recording=1" & 'arena="openarena"') for session in sessions: # start a new recorder sesssion recorder.start(base_folder=base_folder, name=session["name"], timestamp=False) # load tracking data body_tracking = db_tables.Tracking.get_session_tracking(session["name"], body_only=True) downsampled_tracking = db_tables.Tracking.get_session_tracking( session["name"], body_only=True) data_utils.downsample_tracking_data(downsampled_tracking, factor=10) # get locomotion bouts bouts = db_tables.LocomotionBouts.get_session_bouts(session["name"]) # crate figure f = plt.figure(figsize=(24, 12)) axes = f.subplot_mosaic("""
f = plot_roi_crossing(bout, step=4) recorder.add_figures(svg=False) plt.close(f) def animate_all(ROI: str, FPS: int): """ Creates an amimation for each bout in a ROI """ bouts = pd.read_hdf(paths.analysis_folder / "behavior" / "roi_crossings" / f"{ROI}_crossings.h5") for bout_n in range(len(bouts)): animate_one(ROI, bout_n, FPS) if __name__ == "__main__": recorder.start( paths.analysis_folder / "behavior", "roi_crossings_animations", timestamp=False, ) ROI = "T2" FPS = 10 BOUT_ID = 2 animate_one(ROI, BOUT_ID, FPS) # animate_all(ROI, FPS) recorder.describe()
sys.path.append("./") import matplotlib.pyplot as plt import pandas as pd from loguru import logger from pathlib import Path from tpd import recorder from myterial import salmon, teal, indigo import draw from data.dbase.db_tables import Tracking, ValidatedSession from fcutils.progress import track folder = Path(r"D:\Dropbox (UCL)\Rotation_vte\Locomotion\analysis") recorder.start(base_folder=folder, folder_name="all_tracking", timestamp=False) ''' Plot the tracking for each session to check that everything is ok ''' sessions = ValidatedSession().fetch('name') for session in track(sessions): save_name = folder / 'all_tracking' / (session + '.png') if save_name.exists() or 'open' in session: continue tracking = Tracking.get_session_tracking(session, body_only=False, movement=False)
"RSPagl5", "RSPagl6", "RSPd1", "RSPd2", ) # ---------------------------------------------------------------------------- # # plot probes # # ---------------------------------------------------------------------------- # # get all recordings recordings = pd.DataFrame(Recording.fetch()) for i, recording in recordings.iterrows(): # start logging rname = recording["name"] recorder.start(base_folder=base_folder, name=rname, timestamp=False) # get units units = pd.DataFrame((Unit * Unit.Spikes & dict(recording)).fetch()) logger.info(f'processing recording: "{rname}" - {len(units)} units') # get tracking data # load tracking data tracking = Tracking.get_session_tracking(rname, body_only=True) # get probe rsites = pd.DataFrame((Probe.RecordingSite & dict(recording)).fetch()) for n, unit in units.iterrows(): x, y, speed = ( tracking["x"].values,
import matplotlib.pyplot as plt import numpy as np import pandas as pd from pathlib import Path sys.path.append("./") from fcutils.plot.figure import clean_axes from tpd import recorder from data.dbase.db_tables import Probe from analysis.visuals import plot_probe_electrodes base_folder = Path(r"D:\Dropbox (UCL)\Rotation_vte\Locomotion\analysis") recorder.start(base_folder=base_folder, name="probes_reconstructions", timestamp=False) ''' For each reconstructed probe it plots the position of the electros ''' TARGETS = ( "PRNr", "PRNc", "CUN", "GRN", "MB", "PPN", "RSPagl1", "RSPagl2/3", "RSPagl5",
import matplotlib.pyplot as plt import pandas as pd from loguru import logger from pathlib import Path import numpy as np from tpd import recorder import draw from data.dbase import db_tables from fcutils.progress import track from data import data_utils from analysis import visuals folder = Path(r"D:\Dropbox (UCL)\Rotation_vte\Locomotion\analysis") recorder.start(base_folder=folder, folder_name="all_units", timestamp=False) # %% ''' Save a plot with basic stuff for each unit ''' # get sessions and tracking sessions = (db_tables.ValidatedSession * db_tables.Session & 'is_recording=1').fetch('name') logger.info(f'Found {len(sessions)} recordings') for session in track(sessions): if 'open' in session: continue logger.info('Fetching tracking') tracking = db_tables.Tracking.get_session_tracking(session, movement=False)
from loguru import logger from rich.logging import RichHandler from pyinspect import install_traceback install_traceback() logger.configure(handlers=[{ "sink": RichHandler(markup=True), "format": "{message}" }]) from tpd import recorder try: recorder.start(base_folder=".", folder_name="logs", timestamp=False) except PermissionError: recorder.start(base_folder=".", folder_name="logs", timestamp=True)