Observed since 21 Oct, 11:26 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Generated from aind-library-template
APIs to access analysis results in the AIND behavior pipeline.
pip install aind-analysis-arch-result-access
See the demo notebook for comprehensive examples.
New: Now supports both the AIND Analysis Framework and Han's original pipeline with full backward compatibility.
from aind_analysis_arch_result_access import get_mle_model_fitting
# Get MLE fitting results for a specific session
df = get_mle_model_fitting(
subject_id="730945",
session_date="2024-10-24"
)
print(df.columns)
# Index(['_id', 'nwb_name', 'session_date', 'status', 'subject_id',
# 'analysis_time', 'agent_alias', 'n_trials', 'log_likelihood',
# 'prediction_accuracy', 'k_model', 'AIC', 'BIC', 'LPT', 'LPT_AIC',
# 'LPT_BIC', 'params', 'prediction_accuracy_test',
# 'prediction_accuracy_fit', 'prediction_accuracy_test_bias_only',
# 'pipeline_source', 'analysis_tag', 'S3_location', 'latent_variables',
# 'qvalue_spread'],
# dtype='object')
print(df[["agent_alias", "n_trials", "AIC", "pipeline_source"]])
# agent_alias n_trials AIC pipeline_source
# 0 QLearning_L1F0_CKfull_softmax 394 241.922187 han's analysis pipeline
# 1 QLearning_L1F1_CKfull_softmax 394 238.848589 han's analysis pipeline
# 2 ForagingCompareThreshold 394 242.957376 han's analysis pipeline
# ...
By default, all framework versions are queried (aind-analysis-framework v0.1 and v0.2),
and the returned analysis_tag column tells you which version each record came from
(NaN for Han's pipeline). To pin a single version:
df = get_mle_model_fitting(
subject_id="820688",
analysis_tag="aind-analysis-framework v0.2", # or a list of tags
)
By default, only the most recent analysis version is returned (prefers AIND Framework if available):
# Default: only fetch the most recent version
df = get_mle_model_fitting(
subject_id="778869",
session_date="2025-07-26",
only_recent_version=True # default
)
# Found 8 records in AIND Analysis Framework
# Found 12 records in Han's prototype analysis pipeline
# Total: 20 MLE fitting records!
# --- After filtering for successful fittings: 14 records (6 skipped) ---
# --- After filtering for most recent versions: 8 records ---
# AIND Analysis Framework: 8
# Han's prototype analysis pipeline: 0
To get results from both pipelines:
# Get all versions from both pipelines
df = get_mle_model_fitting(
subject_id="778869",
session_date="2025-07-26",
only_recent_version=False
)
# Found 8 records in AIND Analysis Framework
# Found 12 records in Han's prototype analysis pipeline
# Total: 20 MLE fitting records!
# --- After filtering for successful fittings: 14 records (6 skipped) ---
# WARNING: Duplicated records for the same session and agent_alias!
# You should check the nwb_name, n_trials, or pipeline_source
# to select the ones you want.
# Get all sessions for a specific model
df = get_mle_model_fitting(
subject_id="730945",
agent_alias="QLearning_L2F1_CK1_softmax"
)
df = get_mle_model_fitting(
subject_id="730945",
session_date="2024-10-24",
if_download_figures=True,
download_path="./mle_figures"
)
Example figure:
df = get_mle_model_fitting(
from_custom_query={
"analysis_results.fit_settings.agent_alias": "QLearning_L2F1_CK1_softmax",
"analysis_results.n_trials": {"$gt": 600},
},
if_include_latent_variables=False
)
print(df.shape)
# (807, 22)
from aind_analysis_arch_result_access.han_pipeline import get_session_table
df_master = get_session_table(if_load_bpod=False) # `if_load_bpod=True` will load additional 4000+ old sessions from bpod
# Get only recent sessions
df_recent = get_session_table(if_load_bpod=False, only_recent_n_month=6) # Last 6 months
Get logistic regression results from one session:
from aind_analysis_arch_result_access.han_pipeline import get_logistic_regression
import pandas as pd
df_logistic = get_logistic_regression(
df_sessions=pd.DataFrame({
"subject_id": ["769253"],
"session_date": ["2025-03-12"],
}),
model="Su2022",
)
Get logistic regression results in batch:
df_logistic = get_logistic_regression(
df_master.query("subject_id == '769253'"), # All sessions from a single subject
model="Su2022",
if_download_figures=True, # Also download fitting plots
download_path="./tmp",
)
To use the software, in the root directory, run
pip install -e .
To develop the code, run
pip install -e .[dev]
There are several libraries used to run linters, check documentation, and run tests.
coverage run -m unittest discover && coverage report
interrogate .
flake8 .
black .
isort .
For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use Angular style for commit messages. Roughly, they should follow the pattern:
<type>(<scope>): <short summary>
where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:
The table below, from semantic release, shows which commit message gets you which release type when semantic-release runs (using the default configuration):
| Commit message | Release type |
|---|---|
fix(pencil): stop graphite breaking when too much pressure applied | |
feat(pencil): add 'graphiteWidth' option | |
perf(pencil): remove graphiteWidth optionBREAKING CHANGE: The graphiteWidth option has been removed.The default graphite width of 10mm is always used for performance reasons. | (Note that the BREAKING CHANGE: token must be in the footer of the commit) |
To generate the rst files source files for documentation, run
sphinx-apidoc -o docs/source/ src
Then to create the documentation HTML files, run
sphinx-build -b html docs/source/ docs/build/html
More info on sphinx installation can be found here.
Note: Private repositories require Read the Docs for Business account. The following instructions are for a public repo.
The following are required to import and build documentations on Read the Docs:
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version, and other tools you might need
build:
os: ubuntu-24.04
tools:
python: "3.13"
# Path to a Sphinx configuration file.
sphinx:
configuration: docs/source/conf.py
# Declare the Python requirements required to build your documentation
python:
install:
- method: pip
path: .
extra_requirements:
- dev
Here are the steps for building docs in Read the Docs. See here for detailed instructions:
Once a project is created successfully, you will be able to configure/modify the project's settings; such as Default version, Default branch etc.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.2.0 | 26 Jul 2026 | 13 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 11:26 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:10759c51262f5a084c167592e6f7fcea8aab307e174f627895f23b6a42d5661a