base
lacuna.io.downloaders.base
¶
Base classes and registry for connectome downloaders.
This module provides: - ConnectomeSource: Configuration for a fetchable connectome - FetchConfig: User-specified fetch configuration - FetchProgress: Progress tracking for downloads - FetchResult: Outcome of a fetch operation - CONNECTOME_SOURCES: Registry of available connectomes - get_api_key: API key resolution helper
BaseDownloader
¶
Bases: ABC
Abstract base class for downloaders.
Source code in src/lacuna/io/downloaders/base.py
__init__(source)
¶
Initialize downloader with source configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
source
|
ConnectomeSource
|
Configuration for the connectome source. |
required |
Source code in src/lacuna/io/downloaders/base.py
download(output_path, progress_callback=None)
abstractmethod
¶
Download files to output path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
output_path
|
Path
|
Directory to download files to. |
required |
progress_callback
|
callable
|
Function called with FetchProgress updates. |
None
|
Returns:
| Type | Description |
|---|---|
list[Path]
|
List of downloaded file paths. |
Source code in src/lacuna/io/downloaders/base.py
ConnectomeSource
dataclass
¶
Configuration for a fetchable connectome source.
Source code in src/lacuna/io/downloaders/base.py
article_id = None
class-attribute
instance-attribute
¶
Figshare article ID for API-based downloads.
citation = ''
class-attribute
instance-attribute
¶
Citation text for this connectome dataset.
dataverse_server = 'https://dataverse.harvard.edu'
class-attribute
instance-attribute
¶
Dataverse server URL.
default_batches = 10
class-attribute
instance-attribute
¶
Default number of HDF5 batches (functional only).
description
instance-attribute
¶
User-facing description of the connectome.
display_name
instance-attribute
¶
Human-readable name (e.g., 'GSP1000 Functional Connectome').
download_url = None
class-attribute
instance-attribute
¶
Direct download URL for Figshare files (deprecated, use article_id).
estimated_size_gb = 0.0
class-attribute
instance-attribute
¶
Estimated download size in GB for user information.
mask_url = None
class-attribute
instance-attribute
¶
URL to download brain mask if required.
n_subjects = 0
class-attribute
instance-attribute
¶
Number of subjects in the connectome.
name
instance-attribute
¶
Unique identifier (e.g., 'gsp1000', 'dtor985').
persistent_id = None
class-attribute
instance-attribute
¶
DOI for Dataverse datasets (e.g., 'doi:10.7910/DVN/ILXIKS').
requires_mask = False
class-attribute
instance-attribute
¶
Whether brain mask is needed for processing.
source_type
instance-attribute
¶
Download source requiring specific authentication/handling.
space = 'MNI152NLin6Asym'
class-attribute
instance-attribute
¶
Coordinate space.
type
instance-attribute
¶
Connectome type determining processing pipeline.
DownloaderProtocol
¶
Bases: Protocol
Protocol for source-specific downloaders.
Source code in src/lacuna/io/downloaders/base.py
download(output_path, progress_callback=None)
¶
FetchConfig
dataclass
¶
Configuration for a connectome fetch operation.
Source code in src/lacuna/io/downloaders/base.py
api_key = None
class-attribute
instance-attribute
¶
Dataverse API key (for GSP1000). Can also use DATAVERSE_API_KEY env var.
batches = 10
class-attribute
instance-attribute
¶
Number of HDF5 batch files for functional connectomes.
connectome
instance-attribute
¶
Connectome name to fetch (e.g., 'gsp1000', 'dtor985').
force = False
class-attribute
instance-attribute
¶
Overwrite existing files and registrations.
keep_original = True
class-attribute
instance-attribute
¶
Keep original downloaded files after processing.
output_dir
instance-attribute
¶
Directory for processed output files.
register = True
class-attribute
instance-attribute
¶
Automatically register connectome after processing.
register_name = None
class-attribute
instance-attribute
¶
Custom name for registration. Defaults to source name (e.g., 'GSP1000').
resume = True
class-attribute
instance-attribute
¶
Resume interrupted downloads.
from_cli_args(args)
classmethod
¶
Create config from CLI arguments.
Source code in src/lacuna/io/downloaders/base.py
get_api_key()
¶
Get API key from config, env var, or config file.
Source code in src/lacuna/io/downloaders/base.py
FetchProgress
dataclass
¶
Progress information for fetch operations.
Source code in src/lacuna/io/downloaders/base.py
bytes_total = 0
class-attribute
instance-attribute
¶
Total bytes for current download.
bytes_transferred = 0
class-attribute
instance-attribute
¶
Bytes transferred in current download.
current_file
instance-attribute
¶
Name of file currently being processed.
download_percent
property
¶
Current file download percentage.
files_completed
instance-attribute
¶
Number of files completed.
files_total
instance-attribute
¶
Total number of files to process.
message = ''
class-attribute
instance-attribute
¶
Human-readable status message.
percent_complete
property
¶
Overall percentage completion.
phase
instance-attribute
¶
Current operation phase.
FetchResult
dataclass
¶
Result of a connectome fetch operation.
Source code in src/lacuna/io/downloaders/base.py
connectome_name
instance-attribute
¶
Name of the fetched connectome.
download_time_seconds = 0.0
class-attribute
instance-attribute
¶
Time spent downloading.
duration_seconds = 0.0
class-attribute
instance-attribute
¶
Total operation time in seconds.
error = None
class-attribute
instance-attribute
¶
Error message if success=False.
output_dir
instance-attribute
¶
Directory containing processed files.
output_files = field(default_factory=list)
class-attribute
instance-attribute
¶
List of created output files.
processing_time_seconds = 0.0
class-attribute
instance-attribute
¶
Time spent processing.
register_name = None
class-attribute
instance-attribute
¶
Name used for registration, or None if not registered.
registered = False
class-attribute
instance-attribute
¶
Whether the connectome was registered.
success
instance-attribute
¶
Whether the operation completed successfully.
warnings = field(default_factory=list)
class-attribute
instance-attribute
¶
Non-fatal warnings encountered.
summary()
¶
Generate human-readable summary.
Source code in src/lacuna/io/downloaders/base.py
get_api_key(cli_key=None)
¶
Get API key using priority order: CLI > env var > config file.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
cli_key
|
str
|
API key provided via CLI argument. |
None
|
Returns:
| Type | Description |
|---|---|
str or None
|
The API key, or None if not found. |