コード例 #1
0
    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()
コード例 #2
0
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
コード例 #3
0
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")
コード例 #4
0
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("""
コード例 #6
0
    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()
コード例 #7
0
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)
コード例 #8
0
    "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,
コード例 #9
0
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",
コード例 #10
0
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)
コード例 #11
0
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)