Source code for allensdk.internal.api.queries.ecephys_lims_queries
from typing import List
import pandas as pd
import numpy as np
from allensdk.internal.api import PostgresQueryMixin
from allensdk.internal.api.queries.utils import build_in_list_selector_query
[docs]def donor_id_lookup_from_ecephys_session_ids(
lims_connection: PostgresQueryMixin,
session_id_list: List[int]) -> pd.DataFrame:
"""
Return a dataframe with columns
ecephys_session_id
donor_id
from a specified list of ecephys_session_ids
"""
query = f"""
SELECT
donors.id as donor_id
,ecephys_sessions.id as ecephys_session_id
FROM donors
JOIN specimens ON
specimens.donor_id = donors.id
JOIN ecephys_sessions ON
ecephys_sessions.specimen_id = specimens.id
{build_in_list_selector_query(
col='ecephys_sessions.id',
valid_list=session_id_list
)}
"""
result = lims_connection.select(query)
return result
[docs]def donor_id_list_from_ecephys_session_ids(
lims_connection: PostgresQueryMixin,
session_id_list: List[int]) -> List[int]:
"""
Get the list of donor IDs associated with a list
of ecephys_session_ids
"""
lookup = donor_id_lookup_from_ecephys_session_ids(
lims_connection=lims_connection,
session_id_list=session_id_list)
return list(np.unique(lookup.donor_id))