DOI: 10.5061/dryad.c2fqz61hj
title: Representing the dynamics of natural marmoset vocal behaviors in frontal cortex

description: We tested the respective contributions of primate premotor and prefrontal
 cortex to support vocal behavior. We applied a model-based GLM analysis
 that better accounts for the inherent variance in natural, continuous
 behaviors to characterize the activity of neurons throughout frontal
 cortex as freely-moving marmosets engaged in conversational exchanges.
 While analyses revealed functional clusters of neural activity related to
 the different processes involved in the vocal behavior, these clusters did
 not map to subfields of prefrontal or premotor cortex, as has been
 observed in more conventional task-based paradigms. Our results suggest a
 distributed functional organization for the myriad neural mechanisms
 underlying natural social interactions and has implications for our
 concepts of the role that frontal cortex plays in governing ethological
 behaviors in primates.
description: # Representing the dynamics of natural marmoset vocal behaviors in frontal
 cortex
 [https://doi.org/10.5061/dryad.c2fqz61hj](https://doi.org/10.5061/dryad.c2fqz61hj) We tested the respective contributions of primate premotor and prefrontal cortex to support vocal behavior. We applied a model-based GLM analysis that better accounts for the inherent variance in natural, continuous behaviors to characterize the activity of neurons throughout frontal cortex as freely-moving marmosets engaged in conversational exchanges. ## Description of the data and file structure In dataset1 (folder **"dataset1"**), vocal behavior data and spike time data are stored in folders **"pheeTimes"** and **"spikeTimes_DBSCAN3"**, respectively. **"files_good.mat"** provides a list of good sessions and neurons. **"read_dataset1.m"** is used to load and process data from dataset1. The structure of the files and the objects within them are described as below. * **"files_good.mat"**: the structure that lists the filenames ("`files_good.filename`") of the sessions with both good behavior and spike data. - **"pheeTimes" folder**: the folder that contains behavior data of all the sessions. Only the sessions listed in **"filesgood.mat"** have complete and processed behavior data. **"read_dataset1.m"** shows how to load the behavior data of the good sessions. Each good session's behavior data is saved in **"voc_*_pheeTimes.mat"**. In these files: * The variable "`ordered_calls`" contains behavior data of marmoset calls 'phee' and speaker calls 'playback' in the time order, with call type in the first column of the cell and call time in the second column of the cell. * The other variables are processed and saved from the recording system, however, not used in the analysis. - **"spikeTimes_DBSCAN3" folder**: the folder that contains spike data of all the sessions. Only the sessions listed in **"files_good.mat"** have complete and processed behavior data corresponding to the spike data. **"read_dataset1.m"** shows how to load the spike data of the good sessions. Each session's spike data is saved in **"voc_*_spikeTimes.mat"**. The variables in these files are: * "`storedSpikeTimes`": spike time of each sorted neuron. * "`ISIstored`": the inter-spike intervals (ISI) of each sorted neuron. * "`SNRstored`": the signal-to-noise ratio (SNR) of each sorted neuron. * "`waveformStored`": the average spike waveforms of each sorted neuron. * "`nwavFileInfo`": information about the session, array and recording. In dataset2 (folder **"dataset2"**), vocal behavior data and spike time data are stored in folders **"behavior"** and **"spikes"**, respectively. **"good_i_list.mat"** provides a list of good neurons. **"ant_session_units.m"** contains necessary information to load data in dataset2. **"read_dataset2.m"** is used to load and process data from dataset2, and convert it to the same form as in dataset1 to be used in the analysis code. * **"good_i_list.mat"**: the vector that lists the index of neurons with both good behavior and spike data. **"read_dataset2.m"** shows how to construct the filenames and load the behavior and spike data of the good neurons. * **"behavior" folder**: the folder that contains behavior data in **"voc_*_behavparse.mat"** for each session.  The variables in these files are: * "`stimuli`": behavior data of marmoset calls in the time order with call start and end time. * "`vocalizations`": behavior data of speaker calls in the time order with call start and end time. * The other variables are processed and saved from the recording system, however, not used in the analysis. * **"spikes" folder**: the folder that contains spike data in **"voc_*.spk"** for spike time and **"voc_*_spk.dat"** for spike waveform for each neuron. **"read_dataset2.m"** shows how to read the spike data. ## Code/Software In the folder "GLM code", we provided code to perform the GLM analysis on two example neurons. Run **"main_exapmle.m"** to perform the GLM analysis. Each block performs a process in the GLM analysis with functions; the description of the processes is annotated in the code. The main files, variables, and functions are described as below. **"data_example.mat"**: the example data file. The variable "`spikeTimes`" contains the spike time data of two neurons. The variable "`ordered_calls`" contains behavior data of marmoset calls 'phee' and speaker calls 'playback' in the time order. **"main_exapmle.m"**: the mainstream code to call functions and perform the GLM analysis. * "`dt_stim`": time bin used for behavior and spike data (unit: s). * "`unit_i`": the example neuron to use, can be to 1 or 2. * "`ntfilt`": the structure that contains parameters of the GLM kernels. * "`lamvals`": a list of lambda values for L2 penalty. **"process_call.m"**: the function to process behavior data. It takes the time of marmoset and computer calls, classify them, and converts to the event stimuli and state as input to GLM later. The description and structure of the input and output variables is explained in annotation at the beginning of the function. **"process_spike.m"**: the function to process spike data. It takes spike time of a neuron and stimuli timestamps, and gives spike counts in the time bin corresponding to the stimuli timestamps. The description and structure of the input and output variables is explained in annotation at the beginning of the function. **"build_designmatrix.m"**:  the function to build the design matrix in the GLM analysis. The input variables are "`sps`" (time series of spike counts), "`stim`" (time series of calls and states), and "`ntfilt`" (the structure that contains parameters of the GLM kernels). The output variable "`Xdsgn`" is the design matrix including speaker call, conversational and spontaneous marmoset calls, conversational and spontaneous states, and spike history as described in the paper. **"build_L2matrix.m"**: the function to build the L2 penalty matrix in the GLM analysis. The output variable "`ntfilt`" is the structure that contains parameters of the GLM kernels. The output variable "`D`" is the L2 penalty matrix.  **"cross_validation.m"**: the function to perform cross validation in the GLM analysis. The input variables are "`sps`", "`Xdsgn`", "`D`", "`dt_stim`", and "`lamvals`" as described above. The output variables are "`lambda`" (the best lambda value for L2 penalty from cross validation), "`W_smooth`" (the five sets of GLM kernels and coefficients from five-fold cross validation), "`NegLtrain_sm`" (the negative log-likelihoods of training sets in cross validation), "`NegLtest_sm`" (the negative log-likelihoods of test sets in cross validation). **"plot_crossValidation.m"**: the function to plot the result of cross validation. **"glm_L2.m"**: the function to perform GLM analysis on the whole session with the best lambda value for L2 penalty from cross validation. The input variables are "`sps`", "`Xdsgn`", "`D`", "`dt_stim`", and "`lambda`" as described above. The output variable "`wmap`" is the GLM kernels and coefficients from the GLM analysis. **"plot_filter.m"**: the function to plot the GLM kernels. **"plot_glmAll.m"**: the function to plot the stimuli (behavior and states), cross validation, and the GLM kernels. **"neglogli_poissGLM.m"**: the function to compute negative log-likelihood of data under Poisson GLM model with exponential nonlinearity. The description and structure of the input and output variables is explained in annotation at the beginning of the function. **"neglogposterior.m"**: the function to compute negative log-posterior given a negative log-likelihood function. The description and structure of the input and output variables is explained in annotation at the beginning of the function.