Source code for ada.database_utils.synchronize_recordings

from xml.dom.minidom import parse
import argparse
import glob
import os

from ada.io.file_manager import FileManager
from ada.database_utils.fetch_files import fetch_from_acti


[docs] def main(): """Synchronize actigraphic and PSG recordings. Usable only with PSG in OBCI format. Use with -h or --help for details.""" parser = argparse.ArgumentParser(description="Cut beginings of actigraphic recordings to synchronize with PSG stages.", add_help=False) parser.add_argument('--files', '-f', nargs='+', type=str, required=True, help="Path to raw files.") parser.add_argument('--outdir', '-o', type=str, required=True, help="Directory in which trimmed files will be saved.") parser.add_argument('--xmldir', '-x', type=str, required=True, help="Directory with obci.xml files.") namespace = parser.parse_args() if len(namespace.files) == 1: files_to_work = glob.glob(namespace.files[0]) else: files_to_work = namespace.files os.makedirs(namespace.outdir, exist_ok=True) for file in files_to_work: filename = os.path.basename(file).split('.')[0] outfile = os.path.join(namespace.outdir, filename + '.ada') if os.path.exists(outfile): print('File already exists, skipping', outfile) continue acti = FileManager.load_file(file) xml, _ = fetch_from_acti(file, namespace.xmldir, '', False) xml_dom = parse(xml) psg_start_ts = float(xml_dom.getElementsByTagName("rs:firstSampleTimestamp")[0].childNodes[0].data) acti = acti.cut_by_timestamp(psg_start_ts, None) FileManager.export_generic(outfile, acti)
if __name__ == '__main__': main()