Source code for allensdk.internal.api.queries.mtrain_queries
from typing import Optional, List
import pandas as pd
from allensdk.internal.api import PostgresQueryMixin
from allensdk.internal.api.queries.utils import (
build_in_list_selector_query)
import logging
[docs]def session_stage_from_foraging_id(
mtrain_engine: PostgresQueryMixin,
foraging_ids: Optional[List[str]] = None,
logger: Optional[logging.RootLogger] = None) -> pd.DataFrame:
"""
Get DataFrame mapping behavior_sessions.id to session_type
by querying mtrain for foraging_ids
"""
# Select fewer rows if possible via behavior_session_id
if foraging_ids is not None:
foraging_ids = [f"'{fid}'" for fid in foraging_ids]
# Otherwise just get the full table from mtrain
else:
foraging_ids = None
foraging_ids_query = build_in_list_selector_query(
"bs.id", foraging_ids)
query = f"""
SELECT
stages.name as session_type,
bs.id AS foraging_id
FROM behavior_sessions bs
JOIN stages ON stages.id = bs.state_id
{foraging_ids_query};
"""
if logger is not None:
logger.debug(f"_get_behavior_stage_table query: \n {query}")
return mtrain_engine.select(query)