radiens_drive_catalog
radiens-drive-catalog
Programmatic catalog and sync tool for xdat neural recordings stored on Google Drive. Recordings are uniquely identified by (drive_path, base_name) and queryable by drive path exact match, prefix, or substring.
Classes
AmbiguousRecordingError
Bases: CatalogError
Raised when a base_name lookup matches more than one recording.
Catalog
Main interface for radiens-drive-catalog.
Wraps Google Drive scanning, local JSON catalog management, and file
download. Querying is done directly on the recordings_df and
items_df DataFrames using standard pandas operations.
Recordings are uniquely identified by (drive_path, base_name) where
drive_path is the slash-joined path from the Drive root to the
containing folder.
Example
from radiens_drive_catalog import Catalog, Config
config = Config.from_file("config.json")
catalog = Catalog(config)
catalog.scan()
hits = catalog.list_recordings(drive_path_prefix="2026-02")
path = catalog.get_recording_path("2026-02/reaching", "rat01")
catalog.prefetch(drive_path_prefix="2026-02")
print(catalog.file_tree())
Attributes
items_df
property
The full Drive items catalog as a pandas DataFrame.
Columns: name, is_folder, drive_path, drive_id, mime_type, local_path, upload_time
recordings_df
property
The full recording catalog as a pandas DataFrame.
Columns: base_name, drive_path, drive_file_ids, local_path, upload_time
Functions
download_item
Download a Drive item (file or folder) to the local data directory.
Items are stored under {local_data_dir}/{drive_path}/{name}.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
drive_path
|
str
|
The slash-joined path to the item's parent folder. |
required |
name
|
str
|
The file or folder name. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The local path to the downloaded file or folder. |
Raises:
| Type | Description |
|---|---|
EntryNotFoundError
|
If the item is not found in the catalog. |
download_recording
Download the xdat files for a recording to the local data directory.
Files are stored under {local_data_dir}/{drive_path}/.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
drive_path
|
str
|
The slash-joined path to the folder containing the recording. |
required |
base_name
|
str
|
The recording identifier (shared filename stem). |
required |
Returns:
| Type | Description |
|---|---|
str
|
The local directory path where the files were written. |
Raises:
| Type | Description |
|---|---|
EntryNotFoundError
|
If the recording is not found in the catalog. |
file_tree
Return a string rendering of the Drive tree with local-presence indicators.
Each entry is annotated as [recording], [folder], or [file]
and [local] or [not local] based on whether it has been downloaded.
Returns:
| Type | Description |
|---|---|
str
|
A multi-line indented string representing the Drive folder hierarchy. |
get_item_path
Return the local path for a Drive item, downloading if needed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
drive_path
|
str
|
The slash-joined path to the item's parent folder. |
required |
name
|
str
|
The file or folder name. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The local path to the downloaded file or folder. |
Raises:
| Type | Description |
|---|---|
EntryNotFoundError
|
If the item is not found in the catalog. |
get_recording
Look up a recording by base_name, requiring it to be unique.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
base_name
|
str
|
The recording's filename stem. |
required |
Returns:
| Type | Description |
|---|---|
RecordingEntry
|
The matching :class: |
Raises:
| Type | Description |
|---|---|
EntryNotFoundError
|
If no recording with this base_name exists. |
AmbiguousRecordingError
|
If more than one recording matches. |
get_recording_path
Return the local directory path for a recording, downloading if needed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
drive_path
|
str
|
The slash-joined path to the folder containing the recording. |
required |
base_name
|
str
|
The recording identifier (shared filename stem). |
required |
Returns:
| Type | Description |
|---|---|
str
|
The local directory path where the xdat files reside. |
Raises:
| Type | Description |
|---|---|
EntryNotFoundError
|
If the recording is not found in the catalog. |
list_items
Query the Drive items catalog and return a filtered DataFrame.
All filters are applied together (AND semantics). Omitting all arguments returns the full items catalog.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
drive_path
|
str | None
|
Exact |
None
|
drive_path_prefix
|
str | None
|
Return only rows whose |
None
|
drive_path_contains
|
str | None
|
Return only rows whose |
None
|
is_folder
|
bool | None
|
When |
None
|
list_recordings
Query the recording catalog and return a filtered DataFrame.
All filters are applied together (AND semantics). Omitting all arguments returns the full catalog.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
drive_path
|
str | None
|
Exact |
None
|
drive_path_prefix
|
str | None
|
Return only rows whose |
None
|
drive_path_contains
|
str | None
|
Return only rows whose |
None
|
prefetch
prefetch(
drive_path=None,
drive_path_prefix=None,
drive_path_contains=None,
*,
recordings=True,
items=True,
is_folder=None,
force=False,
)
Bulk-download matching recordings and items, skipping already-local entries.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
drive_path
|
str | None
|
Exact |
None
|
drive_path_prefix
|
str | None
|
Match rows whose |
None
|
drive_path_contains
|
str | None
|
Match rows whose |
None
|
recordings
|
bool
|
When |
True
|
items
|
bool
|
When |
True
|
is_folder
|
bool | None
|
Restrict item downloads to folders ( |
None
|
force
|
bool
|
When |
False
|
Returns:
| Name | Type | Description |
|---|---|---|
A |
PrefetchResult
|
class: |
scan
Scan Drive and rebuild the catalog JSON.
Any existing local_path entries are preserved so a rescan doesn't forget which recordings or items have already been downloaded.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
flat
|
bool
|
If |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
A |
ScanResult
|
class: |
CatalogError
Bases: Exception
Base class for all radiens-drive-catalog errors.
Config
dataclass
Configuration for radiens-drive-catalog.
All path fields (credentials_path, local_data_dir, catalog_path) support
~ and $ENV_VAR expansion and are resolved to absolute paths on construction.
Typically created via Config.from_file() rather than directly.
Attributes:
| Name | Type | Description |
|---|---|---|
credentials_path |
str
|
Path to the Google service account credentials JSON file. |
root_folder_id |
str
|
Google Drive folder ID of the data root folder. |
local_data_dir |
str
|
Local directory where datasets will be downloaded. |
catalog_path |
str
|
Path to the catalog JSON file (created by |
Functions
__post_init__
Expand ~ and $ENV_VARS in all path fields and resolve to absolute paths.
from_file
classmethod
Load config from a JSON file.
Resolution order when path is None:
RADIENS_DRIVE_CATALOG_CONFIGenvironment variable..secrets/config.jsonin the current working directory.config.jsonin the current working directory.~/.config/radiens-drive/config.jsonin the user's home directory./etc/radiens-drive/config.json.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str | None
|
Path to the config JSON file. When |
None
|
Returns:
| Type | Description |
|---|---|
Config
|
A |
Raises:
| Type | Description |
|---|---|
FileNotFoundError
|
If no config file can be located. |
JSONDecodeError
|
If the config file is not valid JSON. |
TypeError
|
If the JSON fields do not match the |
DriveItemEntry
Bases: TypedDict
One non-recording Drive item stored in the catalog.
Represents a single file or folder found on Drive that is not part of
an xdat recording — for example a logs/ directory, a config file,
or a writeup. No structural or semantic classification is applied; the
consumer decides what these items mean.
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
The file or folder name as it appears on Drive (e.g. |
is_folder |
bool
|
|
drive_path |
str
|
Slash-joined path from the root folder to the parent
folder of this item. Together with |
drive_id |
str
|
Google Drive ID of this file or folder. |
mime_type |
str
|
MIME type as reported by the Drive API. |
local_path |
str | None
|
Absolute local path to the downloaded file or folder, or
|
upload_time |
str | None
|
ISO 8601 |
EntryNotFoundError
Bases: CatalogError
Raised when a recording or item cannot be found in the catalog.
PrefetchResult
dataclass
Summary of a :meth:Catalog.prefetch call.
Attributes:
| Name | Type | Description |
|---|---|---|
recordings_downloaded |
int
|
Number of recordings fetched from Drive. |
recordings_skipped |
int
|
Number of recordings already available locally. |
items_downloaded |
int
|
Number of items fetched from Drive. |
items_skipped |
int
|
Number of items already available locally. |
RecordingEntry
Bases: TypedDict
One xdat recording dataset stored in the catalog.
Represents a single neural recording. The three xdat files
(_data.xdat, .xdat.json, _timestamp.xdat) share a common
base_name stem and are treated as a single unit.
Attributes:
| Name | Type | Description |
|---|---|---|
base_name |
str
|
Shared filename stem across all three xdat files.
Note: |
drive_path |
str
|
Slash-joined path from the root folder to the folder containing the recording files. |
drive_file_ids |
dict[str, str]
|
Maps file type labels ( |
local_path |
str | None
|
Absolute path to the local directory where the recording
has been downloaded, or |
upload_time |
str | None
|
ISO 8601 |
ScanResult
dataclass
Summary of a :meth:Catalog.scan call.
Attributes:
| Name | Type | Description |
|---|---|---|
recordings_new |
int
|
Recordings found on Drive not in the previous catalog. |
recordings_existing |
int
|
Recordings found on Drive already in the catalog. |
recordings_removed |
int
|
Recordings in the previous catalog not on Drive. |
items_new |
int
|
Items found on Drive not in the previous catalog. |
items_existing |
int
|
Items found on Drive already in the catalog. |
items_removed |
int
|
Items in the previous catalog not found on Drive. |