Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 4 additions & 31 deletions bnd/__init__.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,6 @@
import logging
import warnings
# Package interface
from .cli import dl, up, to_pyal, batch_ks
from .data_transfer import upload_session, download_session, download_animal

__all__ = [dl, up, to_pyal, batch_ks, upload_session, download_session, download_animal]

# Create a logger for the package
def set_logging(
file_name: str,
) -> logging.Logger:
"""
Set project-wide logging

Parameters
----------
file_name: str
Name of the module being logged

Returns
-------
logger: logging.Logger
logger object
"""
logging.basicConfig(level=logging.INFO, format="%(levelname)s - %(message)s")
logging.captureWarnings(True)

logger = logging.getLogger(file_name)

def custom_warning_handler(message, category, filename, lineno, file=None, line=None):
logger.warning(f"{category.__name__}: {message}")

# Set the custom handler
warnings.showwarning = custom_warning_handler

return logger
8 changes: 4 additions & 4 deletions bnd/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from rich import print

from bnd.config import (
from .config import (
_check_is_git_track,
_check_root,
_check_session_directory,
Expand All @@ -17,9 +17,9 @@
get_last_session,
list_session_datetime,
)
from bnd.data_transfer import download_session, upload_session
from bnd.pipeline import _check_processing_dependencies
from bnd.update_bnd import check_for_updates, update_bnd
from .data_transfer import download_session, upload_session
from .pipeline import _check_processing_dependencies
from .update_bnd import check_for_updates, update_bnd

# Create a Typer app
app = typer.Typer(
Expand Down
2 changes: 1 addition & 1 deletion bnd/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from datetime import datetime
from pathlib import Path

from bnd import set_logging
from .logger import set_logging

logger = set_logging(__name__)

Expand Down
15 changes: 13 additions & 2 deletions bnd/data_transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import shutil
from pathlib import Path

from bnd import set_logging
from bnd.config import _load_config, list_session_datetime
from .logger import set_logging
from .config import _load_config, list_session_datetime

logger = set_logging(__name__)

Expand Down Expand Up @@ -132,3 +132,14 @@ def download_session(session_name: str, file_extension: str, max_size_MB: float,
logger.info(f'"{file.name}" is too large. Skipping.')

logger.info("Download complete.")

def download_animal(animal_name: str, file_extension: str, max_size_MB: float, do_video: bool) -> None:
"""
Download a session from the server.
"""
config = _load_config()

remote_animal_path = config.get_remote_animal_path(animal_name)
_,session_list = list_session_datetime(remote_animal_path)
for session_name in session_list:
download_session(session_name, file_extension, max_size_MB, do_video)
33 changes: 33 additions & 0 deletions bnd/logger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import logging
import warnings


# Create a logger for the package
def set_logging(
file_name: str,
) -> logging.Logger:
"""
Set project-wide logging

Parameters
----------
file_name: str
Name of the module being logged

Returns
-------
logger: logging.Logger
logger object
"""
logging.basicConfig(level=logging.INFO, format="%(levelname)s - %(message)s")
logging.captureWarnings(True)

logger = logging.getLogger(file_name)

def custom_warning_handler(message, category, filename, lineno, file=None, line=None):
logger.warning(f"{category.__name__}: {message}")

# Set the custom handler
warnings.showwarning = custom_warning_handler

return logger
6 changes: 3 additions & 3 deletions bnd/pipeline/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

def _check_processing_dependencies():
try:
from bnd.pipeline.kilosort import run_kilosort_on_session
from bnd.pipeline.nwb import run_nwb_conversion
from bnd.pipeline.pyaldata import run_pyaldata_conversion
from .kilosort import run_kilosort_on_session
from .nwb import run_nwb_conversion
from .pyaldata import run_pyaldata_conversion
except Exception as e:
raise ImportError(
f"Could not import processing dependencies: {e}. Update your environment "
Expand Down
4 changes: 2 additions & 2 deletions bnd/pipeline/kilosort.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from kilosort import run_kilosort
from kilosort.utils import PROBE_DIR, download_probes

from bnd import set_logging
from bnd.config import Config, _load_config
from ..logger import set_logging
from ..config import Config, _load_config
from ..config import find_file

logger = set_logging(__name__)
Expand Down
12 changes: 6 additions & 6 deletions bnd/pipeline/nwb.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
import numpy as np
from rich import print

from bnd import set_logging
from bnd.config import _load_config
from bnd.pipeline.kilosort import run_kilosort_on_session
from bnd.pipeline.nwbtools.anipose_interface import AniposeInterface
from bnd.pipeline.nwbtools.beneuro_converter import BeNeuroConverter
from bnd.pipeline.nwbtools.multiprobe_kilosort_interface import (
from ..logger import set_logging
from ..config import _load_config
from .kilosort import run_kilosort_on_session
from .nwbtools.anipose_interface import AniposeInterface
from .nwbtools.beneuro_converter import BeNeuroConverter
from .nwbtools.multiprobe_kilosort_interface import (
MultiProbeKiloSortInterface,
)

Expand Down
10 changes: 5 additions & 5 deletions bnd/pipeline/nwbtools/beneuro_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
from neuroconv.datainterfaces import SpikeGLXRecordingInterface # PhySortingInterface
from neuroconv.tools.signal_processing import get_rising_frames_from_ttl

from bnd import set_logging
from bnd.config import _load_config
from bnd.pipeline.nwbtools.anipose_interface import AniposeInterface
from bnd.pipeline.nwbtools.multiprobe_kilosort_interface import (
from ...logger import set_logging
from ...config import _load_config
from .anipose_interface import AniposeInterface
from .multiprobe_kilosort_interface import (
MultiProbeKiloSortInterface,
)
from bnd.pipeline.nwbtools.pycontrol_interface import PyControlInterface
from .pycontrol_interface import PyControlInterface

logger = set_logging(__name__)
config = _load_config()
Expand Down
2 changes: 1 addition & 1 deletion bnd/pipeline/nwbtools/multiprobe_kilosort_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from neuroconv.utils import DeepDict
from pynwb import NWBFile

from bnd import set_logging
from ...logger import set_logging

logger = set_logging(__name__)

Expand Down
2 changes: 1 addition & 1 deletion bnd/pipeline/nwbtools/pycontrol_data_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import numpy as np

from bnd import set_logging
from ...logger import set_logging

logger = set_logging(__name__)

Expand Down
2 changes: 1 addition & 1 deletion bnd/pipeline/nwbtools/pycontrol_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from pynwb.behavior import BehavioralEvents, Position, SpatialSeries
from pynwb.epoch import TimeIntervals

from bnd import set_logging
from ...logger import set_logging

from .pycontrol_data_import import Event, Print, Session, State

Expand Down
6 changes: 3 additions & 3 deletions bnd/pipeline/pyaldata.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
from pynwb.behavior import SpatialSeries
from pynwb.misc import Units

from bnd import set_logging
from bnd.config import _load_config
from bnd.pipeline.nwb import run_nwb_conversion
from ..logger import set_logging
from ..config import _load_config
from ..pipeline.nwb import run_nwb_conversion

logger = set_logging(__name__)

Expand Down
4 changes: 2 additions & 2 deletions bnd/update_bnd.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import warnings
from pathlib import Path

from bnd import set_logging
from bnd.config import _load_config
from .logger import set_logging
from .config import _load_config

logger = set_logging(__name__)

Expand Down
Loading