Module bvmpc.bv_file
This module implements functions related to reading and writing files.
Expand source code
"""This module implements functions related to reading and writing files."""
import os
from bvmpc.bv_session import Session
from bvmpc.bv_session_extractor import SessionExtractor
from bvmpc.lfp_odict import LfpODict
import bvmpc.bv_utils
def extract_sessions(
in_dir, sub_list=None, s_list=None, d_list=None,
load_backend="neo", neo_backend="nix"):
"""Extracts specified sessions from files."""
def should_use(val, vlist):
if vlist is None:
return True
if val in vlist:
return True
return False
in_files = sorted(os.listdir(in_dir))
s_grp = []
for file in in_files:
splits = file.split('_')
subject = splits[0]
subject = str(subject)
# NOTE date not have year
date = splits[1][:-3]
s_type = splits[3]
subject_ok = should_use(subject, sub_list)
type_ok = should_use(s_type, s_list)
date_ok = should_use(date, d_list)
if subject_ok and type_ok and date_ok:
filename = os.path.join(in_dir, file)
if os.path.isfile(filename):
if load_backend == "neo":
session = load_neo(filename)
elif load_backend == "hdf5":
session = load_hdf5(filename)
else:
print("Backend {} invalid, using neo".format(
load_backend))
session = load_neo(filename)
s_grp.append(session)
print('Total Files extracted: {}'.format(len(s_grp)))
return s_grp
def convert_to_hdf5(filename, out_dir):
"""Convert all sessions in filename to hdf5 and store in out_dir."""
bvmpc.bv_utils.make_dir_if_not_exists(out_dir)
s_extractor = SessionExtractor(filename, verbose=True)
for s in s_extractor: # Batch run for file
stage = s.get_metadata('name')
if stage not in s.session_info.session_info_dict.keys():
continue
else:
s.save_to_h5(out_dir)
def convert_to_neo(filename, out_dir, neo_backend="nix", remove_existing=False):
"""Convert all sessions in filename to hdf5 and store in out_dir."""
bvmpc.bv_utils.make_dir_if_not_exists(out_dir)
print("Converting files in {} to neo".format(
os.path.basename(filename)))
s_extractor = SessionExtractor(
filename, verbose=False)
for s in s_extractor: # Batch run for file
stage = s.get_metadata('name')
if stage not in s.session_info.session_info_dict.keys():
continue
else:
s.save_to_neo(
out_dir, neo_backend=neo_backend,
remove_existing=remove_existing)
def convert_axona_to_neo(
filename, out_dir, neo_backend="nix", remove_existing=False):
"""Convert .inp files to Sessions and store in out_dir."""
bvmpc.bv_utils.make_dir_if_not_exists(out_dir)
print("Converting {} to neo".format(os.path.basename(filename)))
s = Session(axona_file=filename)
s.save_to_neo(
out_dir, neo_backend=neo_backend,
remove_existing=remove_existing)
def load_hdf5(filename, verbose=False):
"""A wrapper around Session(h5_file=filename)."""
if verbose:
bvmpc.bv_utils.print_h5(filename)
session = Session(h5_file=filename)
return session
def load_neo(filename, neo_backend="nix"):
"""A wrapper around Session(neo_file=filename, neo_backend="nix")."""
session = Session(neo_file=filename, neo_backend="nix")
return session
def session_from_mpc_file(filename, out_dir):
"""
Directly create a session from a filename.
Use this to work on MEDPC files without converting to HDF5.
"""
bvmpc.bv_utils.make_dir_if_not_exists(out_dir)
s_extractor = SessionExtractor(filename, verbose=False)
return s_extractor
def load_bv_from_set(fname):
"""Loads session based from .inp inferred from .set filename."""
if os.path.isfile(fname + ".inp"):
return Session(axona_file=fname + ".inp")
elif os.path.isfile(fname[:-3] + "inp"):
return Session(axona_file=fname[:-3] + "inp")
else:
print(".inp does not exist.")
return None
def select_lfp(fname, ROI):
"""Select lfp based on region."""
# Single Hemi Multisite Drive settings
lfp_list = []
chans = [i for i in range(1, 17)]
regions = ["CLA"] * 8 + ["ACC"] * 4 + ["RSC"] * 4
# Change filt values here. Default order 10.
filt_btm = 1.0
filt_top = 50
# Actual function
for r in ROI:
idx = [i for i, x in enumerate(regions) if x == ROI[r]]
lfp_odict = LfpODict(
fname, channels=chans[idx], filt_params=(True, filt_btm, filt_top))
lfp_list.append(lfp_odict)
return lfp_list
Functions
def convert_axona_to_neo(filename, out_dir, neo_backend='nix', remove_existing=False)-
Convert .inp files to Sessions and store in out_dir.
Expand source code
def convert_axona_to_neo( filename, out_dir, neo_backend="nix", remove_existing=False): """Convert .inp files to Sessions and store in out_dir.""" bvmpc.bv_utils.make_dir_if_not_exists(out_dir) print("Converting {} to neo".format(os.path.basename(filename))) s = Session(axona_file=filename) s.save_to_neo( out_dir, neo_backend=neo_backend, remove_existing=remove_existing) def convert_to_hdf5(filename, out_dir)-
Convert all sessions in filename to hdf5 and store in out_dir.
Expand source code
def convert_to_hdf5(filename, out_dir): """Convert all sessions in filename to hdf5 and store in out_dir.""" bvmpc.bv_utils.make_dir_if_not_exists(out_dir) s_extractor = SessionExtractor(filename, verbose=True) for s in s_extractor: # Batch run for file stage = s.get_metadata('name') if stage not in s.session_info.session_info_dict.keys(): continue else: s.save_to_h5(out_dir) def convert_to_neo(filename, out_dir, neo_backend='nix', remove_existing=False)-
Convert all sessions in filename to hdf5 and store in out_dir.
Expand source code
def convert_to_neo(filename, out_dir, neo_backend="nix", remove_existing=False): """Convert all sessions in filename to hdf5 and store in out_dir.""" bvmpc.bv_utils.make_dir_if_not_exists(out_dir) print("Converting files in {} to neo".format( os.path.basename(filename))) s_extractor = SessionExtractor( filename, verbose=False) for s in s_extractor: # Batch run for file stage = s.get_metadata('name') if stage not in s.session_info.session_info_dict.keys(): continue else: s.save_to_neo( out_dir, neo_backend=neo_backend, remove_existing=remove_existing) def extract_sessions(in_dir, sub_list=None, s_list=None, d_list=None, load_backend='neo', neo_backend='nix')-
Extracts specified sessions from files.
Expand source code
def extract_sessions( in_dir, sub_list=None, s_list=None, d_list=None, load_backend="neo", neo_backend="nix"): """Extracts specified sessions from files.""" def should_use(val, vlist): if vlist is None: return True if val in vlist: return True return False in_files = sorted(os.listdir(in_dir)) s_grp = [] for file in in_files: splits = file.split('_') subject = splits[0] subject = str(subject) # NOTE date not have year date = splits[1][:-3] s_type = splits[3] subject_ok = should_use(subject, sub_list) type_ok = should_use(s_type, s_list) date_ok = should_use(date, d_list) if subject_ok and type_ok and date_ok: filename = os.path.join(in_dir, file) if os.path.isfile(filename): if load_backend == "neo": session = load_neo(filename) elif load_backend == "hdf5": session = load_hdf5(filename) else: print("Backend {} invalid, using neo".format( load_backend)) session = load_neo(filename) s_grp.append(session) print('Total Files extracted: {}'.format(len(s_grp))) return s_grp def load_bv_from_set(fname)-
Loads session based from .inp inferred from .set filename.
Expand source code
def load_bv_from_set(fname): """Loads session based from .inp inferred from .set filename.""" if os.path.isfile(fname + ".inp"): return Session(axona_file=fname + ".inp") elif os.path.isfile(fname[:-3] + "inp"): return Session(axona_file=fname[:-3] + "inp") else: print(".inp does not exist.") return None def load_hdf5(filename, verbose=False)-
A wrapper around Session(h5_file=filename).
Expand source code
def load_hdf5(filename, verbose=False): """A wrapper around Session(h5_file=filename).""" if verbose: bvmpc.bv_utils.print_h5(filename) session = Session(h5_file=filename) return session def load_neo(filename, neo_backend='nix')-
A wrapper around Session(neo_file=filename, neo_backend="nix").
Expand source code
def load_neo(filename, neo_backend="nix"): """A wrapper around Session(neo_file=filename, neo_backend="nix").""" session = Session(neo_file=filename, neo_backend="nix") return session def select_lfp(fname, ROI)-
Select lfp based on region.
Expand source code
def select_lfp(fname, ROI): """Select lfp based on region.""" # Single Hemi Multisite Drive settings lfp_list = [] chans = [i for i in range(1, 17)] regions = ["CLA"] * 8 + ["ACC"] * 4 + ["RSC"] * 4 # Change filt values here. Default order 10. filt_btm = 1.0 filt_top = 50 # Actual function for r in ROI: idx = [i for i, x in enumerate(regions) if x == ROI[r]] lfp_odict = LfpODict( fname, channels=chans[idx], filt_params=(True, filt_btm, filt_top)) lfp_list.append(lfp_odict) return lfp_list def session_from_mpc_file(filename, out_dir)-
Directly create a session from a filename.
Use this to work on MEDPC files without converting to HDF5.
Expand source code
def session_from_mpc_file(filename, out_dir): """ Directly create a session from a filename. Use this to work on MEDPC files without converting to HDF5. """ bvmpc.bv_utils.make_dir_if_not_exists(out_dir) s_extractor = SessionExtractor(filename, verbose=False) return s_extractor