Source code for allensdk.internal.api.queries.compound_lims_queries
from typing import List
import pandas as pd
from allensdk.internal.api import PostgresQueryMixin
from allensdk.internal.api.queries.ecephys_lims_queries import (
donor_id_list_from_ecephys_session_ids)
from allensdk.internal.api.queries.utils import build_in_list_selector_query
[docs]def behavior_sessions_from_ecephys_session_ids(
lims_connection: PostgresQueryMixin,
ecephys_session_id_list: List[int]
) -> pd.DataFrame:
"""
Get a DataFrame listing all of the behavior sessions that
mice from a specified list of ecephys sessions went through
Parameters
----------
lims_connection: PostgresQueryMixin
ecephys_session_id_list: List[int]
The ecephys sessions used to find the mice used to find
the behavior sessions
Returns
-------
mouse_to_behavior: pd.DataFrame
Dataframe with columns
mouse_id
behavior_session_id
session_type
date_of_acquisition
date_of_birth
ecephys_session_id
genotype
sex
equipment_name
listing every behavior session the mice in question went through
"""
donor_id_list = donor_id_list_from_ecephys_session_ids(
lims_connection=lims_connection,
session_id_list=ecephys_session_id_list)
query = f"""
SELECT
donors.external_donor_name as mouse_id
,behavior.id as behavior_session_id
,behavior.stimulus_name as session_type
,behavior.date_of_acquisition as date_of_acquisition
,behavior.ecephys_session_id as ecephys_session_id
,donors.date_of_birth as date_of_birth
,donors.full_genotype as genotype
,genders.name as sex
,equipment.name as equipment_name
FROM donors
JOIN behavior_sessions AS behavior
ON behavior.donor_id = donors.id
JOIN genders
ON genders.id = donors.gender_id
JOIN equipment
ON equipment.id = behavior.equipment_id
{build_in_list_selector_query(
col='donors.id',
valid_list=donor_id_list
)}
"""
mouse_to_behavior = lims_connection.select(query)
return mouse_to_behavior