Home > bml > sync > bml_sync_check.m

bml_sync_check

PURPOSE ^

BML_SYNC_CHECK loads files in a synchronization roi table into praat

SYNOPSIS ^

function bml_sync_check(cfg)

DESCRIPTION ^

 BML_SYNC_CHECK loads files in a synchronization roi table into praat

 Use as
    bml_sync_check(cfg)

 cfg - configuration structure
   cfg.roi - roi table with additional vars 'session_id','session_part',
            'filetype','sync_channel','sync_type','chunk_id'. Contains 
            a coarse alignment of the files, normally inferred from the
            OS 'Date-Modified' metadata.
   cfg.praat - logical: should synchronized files be opened in praat for
   cfg.ft_feedback - string: default to 'no'. Defines verbosity of fieldtrip
           functions

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function bml_sync_check(cfg)
0002 
0003 % BML_SYNC_CHECK loads files in a synchronization roi table into praat
0004 %
0005 % Use as
0006 %    bml_sync_check(cfg)
0007 %
0008 % cfg - configuration structure
0009 %   cfg.roi - roi table with additional vars 'session_id','session_part',
0010 %            'filetype','sync_channel','sync_type','chunk_id'. Contains
0011 %            a coarse alignment of the files, normally inferred from the
0012 %            OS 'Date-Modified' metadata.
0013 %   cfg.praat - logical: should synchronized files be opened in praat for
0014 %   cfg.ft_feedback - string: default to 'no'. Defines verbosity of fieldtrip
0015 %           functions
0016 
0017 sync_roi_vars = {'session_id','session_part','filetype','sync_channel','sync_type','chunk_id'};
0018 
0019 if istable(cfg)
0020   cfg = struct('roi',cfg);
0021 end
0022 
0023 sync_roi            = bml_roi_table(bml_getopt(cfg,'roi'),'roi_os');
0024 praat               = bml_getopt(cfg,'praat',true);
0025 ft_feedback         = bml_getopt_single(cfg,'ft_feedback','no');
0026 
0027 assert(~isempty(sync_roi),'empty sync roi table');
0028 assert(all(ismember(sync_roi_vars,sync_roi.Properties.VariableNames)),...
0029   "roi table should have vars %s",strjoin(sync_roi_vars));
0030 
0031 %loading sync channels
0032 chunk_ids=unique(sync_roi.chunk_id);
0033 for chunk_i=1:length(chunk_ids)
0034   chunk_id = chunk_ids(chunk_i);
0035   master_roi = sync_roi((sync_roi.chunk_id==chunk_id) & (sync_roi.sync_type=="master"),:);
0036   slave_roi = sync_roi((sync_roi.chunk_id==chunk_id) & (sync_roi.sync_type=="slave"),:);
0037   
0038   master_filename = unique(master_roi.name);
0039   master_folder = unique(master_roi.name);
0040   
0041   assert(length(master_filename)==1 & length(master_folder)==1,...
0042     "More than one master file for chunk %i",chunk_id);
0043   assert(length(unique(master_roi.s1))==1,"Inconsistent s1 for master of chunk %i", chunk_id);
0044   assert(length(unique(master_roi.s2))==1,"Inconsistent s2 for master of chunk %i", chunk_id);
0045   assert(length(unique(master_roi.t1))==1,"Inconsistent t1 for master of chunk %i", chunk_id);
0046   assert(length(unique(master_roi.t2))==1,"Inconsistent t2 for master of chunk %i", chunk_id);
0047   assert(length(unique(master_roi.starts))==1,"Inconsistent starts for master of chunk %i", chunk_id);
0048   assert(length(unique(master_roi.ends))==1,"Inconsistent ends for master of chunk %i", chunk_id);
0049   
0050   cfg=[];
0051   cfg.roi=master_roi(1,:);
0052   cfg.channel=unique(master_roi.sync_channel);
0053   master = bml_load_continuous(cfg);
0054   
0055   if praat
0056       bml_praat(strcat('c',num2str(chunk_id),'_master_',master_filename),master);  
0057   end
0058   
0059   for slave_i=1:height(slave_roi)  
0060     
0061     cfg=[];
0062     cfg.roi=slave_roi(slave_i,:);
0063     cfg.channel=unique(slave_roi.sync_channel(slave_i));
0064     slave = bml_load_continuous(cfg);    
0065     
0066     if praat
0067       t1=master.time{1}(1);
0068       t2=master.time{1}(end);
0069       cfg=[]; cfg.time=master.time; cfg.method='pchip';
0070       cfg.feedback=ft_feedback;
0071       slave_crop=ft_resampledata(cfg,bml_crop(slave,t1,t2));
0072       slave_crop.fsample = master.fsample;
0073       bml_praat(strcat('c',num2str(chunk_id),'_slave_',slave_roi.name(slave_i)),slave_crop);
0074     end
0075 
0076   end
0077 end
0078 
0079 
0080 
0081 
0082

Generated on Tue 25-Sep-2018 10:08:19 by m2html © 2005