Latest commit

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

processSpikingMoveStim

Functions that create intermediate analysis files. This is meant to work on a file hierarchy compatible with marmolab-pipeline.

It integrates:

  • kilosort cluster outputs and spike times
  • digital event timing from NEV for stimulus synch
  • information from Stim files (.mat)

Instructions for use

There are slurm files to run the batching on the cluster, used in the following order:

1. Extract the spikes from any intan recordings

runSpikeExtractNeurostim.sbatch extracts spikes for each channel in an marmodata file and saves them in spike train format by calling RUNAnalysis_mdbExtract.m. The congfiguration for which files this processes is provided in configureBatch_mdb.m. This isn't necessary for the data recorded on Blackrock systems.

2. Do some basic spike processing

runProcessSpiking.sbatch calls RUNAnalysis_brain.m to merge files and channels into aggregate spike trains, tuning curves, sdfs, and exclusion files. It produces the following intermediate data files that are useful for further analysis.

Picture of how things fit together

Testing

Use tests/configureRunTests.m to generate good summaries of the exports so that we can assess the quality of the data/detect bugs or encoding problems in the data files.

Summary of outputs

combinedData.mat

chanOrder (1x2 cell, where each cell is an array/area)

  • has a list of all the channels, for the NN arrays in depth order, for Utah arrays, just 1-96 (see #1 ). However, this is kind of pointless for data post-KS. With KS this data is in clustInfo{i}.clusterInfo

clustInfo (1x2 cell, where each cell is an array/area)

  • has the kilosort related information for each unit identified in each area.

onsetInds (1x4 cell, where each cell is a 1x2 recording file x array) This has the stimulus identity and timing.

param (structure) This has information about the trial types and time course, and which integration windows should be used for 1) spike counts or 2) SDFs.

StimFile (1x4 cell, with each cell a recording file) This has the information used to create the stimulus, bundled from the separate stimulus file saved during the experiment.

sTrain (1x4 cell, with each cell a recording file, where each cell is a 1x2 array index) This has spike trains for each neuron or electrode during the recording. Millisecond resolution, 1/0 encoding.

fRates.mat

chanOrder (1x2 cell, where each cell is an array/area), param (structure) As above. Re-encoded here, because this file is more lightweight.

tcs (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{array, direction}(2x12 cell array). Each cell has a nUnitsxnTrials spike count, integrated during the window indicated in param.

Zscs (structure) Mirror of tcs, but has z-scored rates not raw rates. Z-scoring is done within a stimulus type so stimulus selectivity is destroyed.

tcs_byFile (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{1x4}{array, direction} Tuning curves, but without the trials combined over different recording files.

exclusions.mat

isVisual (1x2 cell, where each cell is an array/area) Has 4xnUnits array where visual responsiveness was tested separately for each stimulus type. 1 = has significant visual response.

anyVisual (1x2 cell, where each cell is an array/area) As above, but 1= has significant visual response for any of the stimulus types.

DSI (1x2 cell, where each cell is an array/area) Direction selectivity for any unit with a significant visual response. Difference/sum of the peak and anti-peak direction.

SDFs.mat

param (as elsewhere)

all_sdfsall_sdfs.[Dots | SineWave | Square | PSsquare]{array, direction} Each cell is a nChannelsxnTrialsxnTimepoints 3D matrix.

About

Functions that create intermediate analysis files.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

processSpikingMoveStim

Functions that create intermediate analysis files. This is meant to work on a file hierarchy compatible with marmolab-pipeline.

It integrates:

  • kilosort cluster outputs and spike times
  • digital event timing from NEV for stimulus synch
  • information from Stim files (.mat)

Instructions for use

There are slurm files to run the batching on the cluster, used in the following order:

1. Extract the spikes from any intan recordings

runSpikeExtractNeurostim.sbatch extracts spikes for each channel in an marmodata file and saves them in spike train format by calling RUNAnalysis_mdbExtract.m. The congfiguration for which files this processes is provided in configureBatch_mdb.m. This isn't necessary for the data recorded on Blackrock systems.

2. Do some basic spike processing

runProcessSpiking.sbatch calls RUNAnalysis_brain.m to merge files and channels into aggregate spike trains, tuning curves, sdfs, and exclusion files. It produces the following intermediate data files that are useful for further analysis.

Picture of how things fit together

Testing

Use tests/configureRunTests.m to generate good summaries of the exports so that we can assess the quality of the data/detect bugs or encoding problems in the data files.

Summary of outputs

combinedData.mat

chanOrder (1x2 cell, where each cell is an array/area)

  • has a list of all the channels, for the NN arrays in depth order, for Utah arrays, just 1-96 (see #1 ). However, this is kind of pointless for data post-KS. With KS this data is in clustInfo{i}.clusterInfo

clustInfo (1x2 cell, where each cell is an array/area)

  • has the kilosort related information for each unit identified in each area.

onsetInds (1x4 cell, where each cell is a 1x2 recording file x array) This has the stimulus identity and timing.

param (structure) This has information about the trial types and time course, and which integration windows should be used for 1) spike counts or 2) SDFs.

StimFile (1x4 cell, with each cell a recording file) This has the information used to create the stimulus, bundled from the separate stimulus file saved during the experiment.

sTrain (1x4 cell, with each cell a recording file, where each cell is a 1x2 array index) This has spike trains for each neuron or electrode during the recording. Millisecond resolution, 1/0 encoding.

fRates.mat

chanOrder (1x2 cell, where each cell is an array/area), param (structure) As above. Re-encoded here, because this file is more lightweight.

tcs (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{array, direction}(2x12 cell array). Each cell has a nUnitsxnTrials spike count, integrated during the window indicated in param.

Zscs (structure) Mirror of tcs, but has z-scored rates not raw rates. Z-scoring is done within a stimulus type so stimulus selectivity is destroyed.

tcs_byFile (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{1x4}{array, direction} Tuning curves, but without the trials combined over different recording files.

exclusions.mat

isVisual (1x2 cell, where each cell is an array/area) Has 4xnUnits array where visual responsiveness was tested separately for each stimulus type. 1 = has significant visual response.

anyVisual (1x2 cell, where each cell is an array/area) As above, but 1= has significant visual response for any of the stimulus types.

DSI (1x2 cell, where each cell is an array/area) Direction selectivity for any unit with a significant visual response. Difference/sum of the peak and anti-peak direction.

SDFs.mat

param (as elsewhere)

all_sdfsall_sdfs.[Dots | SineWave | Square | PSsquare]{array, direction} Each cell is a nChannelsxnTrialsxnTimepoints 3D matrix.

About

Functions that create intermediate analysis files.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

processSpikingMoveStim

Functions that create intermediate analysis files. This is meant to work on a file hierarchy compatible with marmolab-pipeline.

It integrates:

  • kilosort cluster outputs and spike times
  • digital event timing from NEV for stimulus synch
  • information from Stim files (.mat)

Instructions for use

There are slurm files to run the batching on the cluster, used in the following order:

1. Extract the spikes from any intan recordings

runSpikeExtractNeurostim.sbatch extracts spikes for each channel in an marmodata file and saves them in spike train format by calling RUNAnalysis_mdbExtract.m. The congfiguration for which files this processes is provided in configureBatch_mdb.m. This isn't necessary for the data recorded on Blackrock systems.

2. Do some basic spike processing

runProcessSpiking.sbatch calls RUNAnalysis_brain.m to merge files and channels into aggregate spike trains, tuning curves, sdfs, and exclusion files. It produces the following intermediate data files that are useful for further analysis.

Picture of how things fit together

Testing

Use tests/configureRunTests.m to generate good summaries of the exports so that we can assess the quality of the data/detect bugs or encoding problems in the data files.

Summary of outputs

combinedData.mat

chanOrder (1x2 cell, where each cell is an array/area)

  • has a list of all the channels, for the NN arrays in depth order, for Utah arrays, just 1-96 (see #1 ). However, this is kind of pointless for data post-KS. With KS this data is in clustInfo{i}.clusterInfo

clustInfo (1x2 cell, where each cell is an array/area)

  • has the kilosort related information for each unit identified in each area.

onsetInds (1x4 cell, where each cell is a 1x2 recording file x array) This has the stimulus identity and timing.

param (structure) This has information about the trial types and time course, and which integration windows should be used for 1) spike counts or 2) SDFs.

StimFile (1x4 cell, with each cell a recording file) This has the information used to create the stimulus, bundled from the separate stimulus file saved during the experiment.

sTrain (1x4 cell, with each cell a recording file, where each cell is a 1x2 array index) This has spike trains for each neuron or electrode during the recording. Millisecond resolution, 1/0 encoding.

fRates.mat

chanOrder (1x2 cell, where each cell is an array/area), param (structure) As above. Re-encoded here, because this file is more lightweight.

tcs (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{array, direction}(2x12 cell array). Each cell has a nUnitsxnTrials spike count, integrated during the window indicated in param.

Zscs (structure) Mirror of tcs, but has z-scored rates not raw rates. Z-scoring is done within a stimulus type so stimulus selectivity is destroyed.

tcs_byFile (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{1x4}{array, direction} Tuning curves, but without the trials combined over different recording files.

exclusions.mat

isVisual (1x2 cell, where each cell is an array/area) Has 4xnUnits array where visual responsiveness was tested separately for each stimulus type. 1 = has significant visual response.

anyVisual (1x2 cell, where each cell is an array/area) As above, but 1= has significant visual response for any of the stimulus types.

DSI (1x2 cell, where each cell is an array/area) Direction selectivity for any unit with a significant visual response. Difference/sum of the peak and anti-peak direction.

SDFs.mat

param (as elsewhere)

all_sdfsall_sdfs.[Dots | SineWave | Square | PSsquare]{array, direction} Each cell is a nChannelsxnTrialsxnTimepoints 3D matrix.

About

Functions that create intermediate analysis files.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

processSpikingMoveStim

Functions that create intermediate analysis files. This is meant to work on a file hierarchy compatible with marmolab-pipeline.

It integrates:

  • kilosort cluster outputs and spike times
  • digital event timing from NEV for stimulus synch
  • information from Stim files (.mat)

Instructions for use

There are slurm files to run the batching on the cluster, used in the following order:

1. Extract the spikes from any intan recordings

runSpikeExtractNeurostim.sbatch extracts spikes for each channel in an marmodata file and saves them in spike train format by calling RUNAnalysis_mdbExtract.m. The congfiguration for which files this processes is provided in configureBatch_mdb.m. This isn't necessary for the data recorded on Blackrock systems.

2. Do some basic spike processing

runProcessSpiking.sbatch calls RUNAnalysis_brain.m to merge files and channels into aggregate spike trains, tuning curves, sdfs, and exclusion files. It produces the following intermediate data files that are useful for further analysis.

Picture of how things fit together

Testing

Use tests/configureRunTests.m to generate good summaries of the exports so that we can assess the quality of the data/detect bugs or encoding problems in the data files.

Summary of outputs

combinedData.mat

chanOrder (1x2 cell, where each cell is an array/area)

  • has a list of all the channels, for the NN arrays in depth order, for Utah arrays, just 1-96 (see #1 ). However, this is kind of pointless for data post-KS. With KS this data is in clustInfo{i}.clusterInfo

clustInfo (1x2 cell, where each cell is an array/area)

  • has the kilosort related information for each unit identified in each area.

onsetInds (1x4 cell, where each cell is a 1x2 recording file x array) This has the stimulus identity and timing.

param (structure) This has information about the trial types and time course, and which integration windows should be used for 1) spike counts or 2) SDFs.

StimFile (1x4 cell, with each cell a recording file) This has the information used to create the stimulus, bundled from the separate stimulus file saved during the experiment.

sTrain (1x4 cell, with each cell a recording file, where each cell is a 1x2 array index) This has spike trains for each neuron or electrode during the recording. Millisecond resolution, 1/0 encoding.

fRates.mat

chanOrder (1x2 cell, where each cell is an array/area), param (structure) As above. Re-encoded here, because this file is more lightweight.

tcs (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{array, direction}(2x12 cell array). Each cell has a nUnitsxnTrials spike count, integrated during the window indicated in param.

Zscs (structure) Mirror of tcs, but has z-scored rates not raw rates. Z-scoring is done within a stimulus type so stimulus selectivity is destroyed.

tcs_byFile (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{1x4}{array, direction} Tuning curves, but without the trials combined over different recording files.

exclusions.mat

isVisual (1x2 cell, where each cell is an array/area) Has 4xnUnits array where visual responsiveness was tested separately for each stimulus type. 1 = has significant visual response.

anyVisual (1x2 cell, where each cell is an array/area) As above, but 1= has significant visual response for any of the stimulus types.

DSI (1x2 cell, where each cell is an array/area) Direction selectivity for any unit with a significant visual response. Difference/sum of the peak and anti-peak direction.

SDFs.mat

param (as elsewhere)

all_sdfsall_sdfs.[Dots | SineWave | Square | PSsquare]{array, direction} Each cell is a nChannelsxnTrialsxnTimepoints 3D matrix.

About

Functions that create intermediate analysis files.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

processSpikingMoveStim

Functions that create intermediate analysis files. This is meant to work on a file hierarchy compatible with marmolab-pipeline.

It integrates:

  • kilosort cluster outputs and spike times
  • digital event timing from NEV for stimulus synch
  • information from Stim files (.mat)

Instructions for use

There are slurm files to run the batching on the cluster, used in the following order:

1. Extract the spikes from any intan recordings

runSpikeExtractNeurostim.sbatch extracts spikes for each channel in an marmodata file and saves them in spike train format by calling RUNAnalysis_mdbExtract.m. The congfiguration for which files this processes is provided in configureBatch_mdb.m. This isn't necessary for the data recorded on Blackrock systems.

2. Do some basic spike processing

runProcessSpiking.sbatch calls RUNAnalysis_brain.m to merge files and channels into aggregate spike trains, tuning curves, sdfs, and exclusion files. It produces the following intermediate data files that are useful for further analysis.

Picture of how things fit together

Testing

Use tests/configureRunTests.m to generate good summaries of the exports so that we can assess the quality of the data/detect bugs or encoding problems in the data files.

Summary of outputs

combinedData.mat

chanOrder (1x2 cell, where each cell is an array/area)

  • has a list of all the channels, for the NN arrays in depth order, for Utah arrays, just 1-96 (see #1 ). However, this is kind of pointless for data post-KS. With KS this data is in clustInfo{i}.clusterInfo

clustInfo (1x2 cell, where each cell is an array/area)

  • has the kilosort related information for each unit identified in each area.

onsetInds (1x4 cell, where each cell is a 1x2 recording file x array) This has the stimulus identity and timing.

param (structure) This has information about the trial types and time course, and which integration windows should be used for 1) spike counts or 2) SDFs.

StimFile (1x4 cell, with each cell a recording file) This has the information used to create the stimulus, bundled from the separate stimulus file saved during the experiment.

sTrain (1x4 cell, with each cell a recording file, where each cell is a 1x2 array index) This has spike trains for each neuron or electrode during the recording. Millisecond resolution, 1/0 encoding.

fRates.mat

chanOrder (1x2 cell, where each cell is an array/area), param (structure) As above. Re-encoded here, because this file is more lightweight.

tcs (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{array, direction}(2x12 cell array). Each cell has a nUnitsxnTrials spike count, integrated during the window indicated in param.

Zscs (structure) Mirror of tcs, but has z-scored rates not raw rates. Z-scoring is done within a stimulus type so stimulus selectivity is destroyed.

tcs_byFile (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{1x4}{array, direction} Tuning curves, but without the trials combined over different recording files.

exclusions.mat

isVisual (1x2 cell, where each cell is an array/area) Has 4xnUnits array where visual responsiveness was tested separately for each stimulus type. 1 = has significant visual response.

anyVisual (1x2 cell, where each cell is an array/area) As above, but 1= has significant visual response for any of the stimulus types.

DSI (1x2 cell, where each cell is an array/area) Direction selectivity for any unit with a significant visual response. Difference/sum of the peak and anti-peak direction.

SDFs.mat

param (as elsewhere)

all_sdfsall_sdfs.[Dots | SineWave | Square | PSsquare]{array, direction} Each cell is a nChannelsxnTrialsxnTimepoints 3D matrix.

About

Functions that create intermediate analysis files.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

processSpikingMoveStim

Functions that create intermediate analysis files. This is meant to work on a file hierarchy compatible with marmolab-pipeline.

It integrates:

  • kilosort cluster outputs and spike times
  • digital event timing from NEV for stimulus synch
  • information from Stim files (.mat)

Instructions for use

There are slurm files to run the batching on the cluster, used in the following order:

1. Extract the spikes from any intan recordings

runSpikeExtractNeurostim.sbatch extracts spikes for each channel in an marmodata file and saves them in spike train format by calling RUNAnalysis_mdbExtract.m. The congfiguration for which files this processes is provided in configureBatch_mdb.m. This isn't necessary for the data recorded on Blackrock systems.

2. Do some basic spike processing

runProcessSpiking.sbatch calls RUNAnalysis_brain.m to merge files and channels into aggregate spike trains, tuning curves, sdfs, and exclusion files. It produces the following intermediate data files that are useful for further analysis.

Picture of how things fit together

Testing

Use tests/configureRunTests.m to generate good summaries of the exports so that we can assess the quality of the data/detect bugs or encoding problems in the data files.

Summary of outputs

combinedData.mat

chanOrder (1x2 cell, where each cell is an array/area)

  • has a list of all the channels, for the NN arrays in depth order, for Utah arrays, just 1-96 (see #1 ). However, this is kind of pointless for data post-KS. With KS this data is in clustInfo{i}.clusterInfo

clustInfo (1x2 cell, where each cell is an array/area)

  • has the kilosort related information for each unit identified in each area.

onsetInds (1x4 cell, where each cell is a 1x2 recording file x array) This has the stimulus identity and timing.

param (structure) This has information about the trial types and time course, and which integration windows should be used for 1) spike counts or 2) SDFs.

StimFile (1x4 cell, with each cell a recording file) This has the information used to create the stimulus, bundled from the separate stimulus file saved during the experiment.

sTrain (1x4 cell, with each cell a recording file, where each cell is a 1x2 array index) This has spike trains for each neuron or electrode during the recording. Millisecond resolution, 1/0 encoding.

fRates.mat

chanOrder (1x2 cell, where each cell is an array/area), param (structure) As above. Re-encoded here, because this file is more lightweight.

tcs (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{array, direction}(2x12 cell array). Each cell has a nUnitsxnTrials spike count, integrated during the window indicated in param.

Zscs (structure) Mirror of tcs, but has z-scored rates not raw rates. Z-scoring is done within a stimulus type so stimulus selectivity is destroyed.

tcs_byFile (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{1x4}{array, direction} Tuning curves, but without the trials combined over different recording files.

exclusions.mat

isVisual (1x2 cell, where each cell is an array/area) Has 4xnUnits array where visual responsiveness was tested separately for each stimulus type. 1 = has significant visual response.

anyVisual (1x2 cell, where each cell is an array/area) As above, but 1= has significant visual response for any of the stimulus types.

DSI (1x2 cell, where each cell is an array/area) Direction selectivity for any unit with a significant visual response. Difference/sum of the peak and anti-peak direction.

SDFs.mat

param (as elsewhere)

all_sdfsall_sdfs.[Dots | SineWave | Square | PSsquare]{array, direction} Each cell is a nChannelsxnTrialsxnTimepoints 3D matrix.

About

Functions that create intermediate analysis files.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

processSpikingMoveStim

Functions that create intermediate analysis files. This is meant to work on a file hierarchy compatible with marmolab-pipeline.

It integrates:

  • kilosort cluster outputs and spike times
  • digital event timing from NEV for stimulus synch
  • information from Stim files (.mat)

Instructions for use

There are slurm files to run the batching on the cluster, used in the following order:

1. Extract the spikes from any intan recordings

runSpikeExtractNeurostim.sbatch extracts spikes for each channel in an marmodata file and saves them in spike train format by calling RUNAnalysis_mdbExtract.m. The congfiguration for which files this processes is provided in configureBatch_mdb.m. This isn't necessary for the data recorded on Blackrock systems.

2. Do some basic spike processing

runProcessSpiking.sbatch calls RUNAnalysis_brain.m to merge files and channels into aggregate spike trains, tuning curves, sdfs, and exclusion files. It produces the following intermediate data files that are useful for further analysis.

Picture of how things fit together

Testing

Use tests/configureRunTests.m to generate good summaries of the exports so that we can assess the quality of the data/detect bugs or encoding problems in the data files.

Summary of outputs

combinedData.mat

chanOrder (1x2 cell, where each cell is an array/area)

  • has a list of all the channels, for the NN arrays in depth order, for Utah arrays, just 1-96 (see #1 ). However, this is kind of pointless for data post-KS. With KS this data is in clustInfo{i}.clusterInfo

clustInfo (1x2 cell, where each cell is an array/area)

  • has the kilosort related information for each unit identified in each area.

onsetInds (1x4 cell, where each cell is a 1x2 recording file x array) This has the stimulus identity and timing.

param (structure) This has information about the trial types and time course, and which integration windows should be used for 1) spike counts or 2) SDFs.

StimFile (1x4 cell, with each cell a recording file) This has the information used to create the stimulus, bundled from the separate stimulus file saved during the experiment.

sTrain (1x4 cell, with each cell a recording file, where each cell is a 1x2 array index) This has spike trains for each neuron or electrode during the recording. Millisecond resolution, 1/0 encoding.

fRates.mat

chanOrder (1x2 cell, where each cell is an array/area), param (structure) As above. Re-encoded here, because this file is more lightweight.

tcs (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{array, direction}(2x12 cell array). Each cell has a nUnitsxnTrials spike count, integrated during the window indicated in param.

Zscs (structure) Mirror of tcs, but has z-scored rates not raw rates. Z-scoring is done within a stimulus type so stimulus selectivity is destroyed.

tcs_byFile (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{1x4}{array, direction} Tuning curves, but without the trials combined over different recording files.

exclusions.mat

isVisual (1x2 cell, where each cell is an array/area) Has 4xnUnits array where visual responsiveness was tested separately for each stimulus type. 1 = has significant visual response.

anyVisual (1x2 cell, where each cell is an array/area) As above, but 1= has significant visual response for any of the stimulus types.

DSI (1x2 cell, where each cell is an array/area) Direction selectivity for any unit with a significant visual response. Difference/sum of the peak and anti-peak direction.

SDFs.mat

param (as elsewhere)

all_sdfsall_sdfs.[Dots | SineWave | Square | PSsquare]{array, direction} Each cell is a nChannelsxnTrialsxnTimepoints 3D matrix.

About

Functions that create intermediate analysis files.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

processSpikingMoveStim

Functions that create intermediate analysis files. This is meant to work on a file hierarchy compatible with marmolab-pipeline.

It integrates:

  • kilosort cluster outputs and spike times
  • digital event timing from NEV for stimulus synch
  • information from Stim files (.mat)

Instructions for use

There are slurm files to run the batching on the cluster, used in the following order:

1. Extract the spikes from any intan recordings

runSpikeExtractNeurostim.sbatch extracts spikes for each channel in an marmodata file and saves them in spike train format by calling RUNAnalysis_mdbExtract.m. The congfiguration for which files this processes is provided in configureBatch_mdb.m. This isn't necessary for the data recorded on Blackrock systems.

2. Do some basic spike processing

runProcessSpiking.sbatch calls RUNAnalysis_brain.m to merge files and channels into aggregate spike trains, tuning curves, sdfs, and exclusion files. It produces the following intermediate data files that are useful for further analysis.

Picture of how things fit together

Testing

Use tests/configureRunTests.m to generate good summaries of the exports so that we can assess the quality of the data/detect bugs or encoding problems in the data files.

Summary of outputs

combinedData.mat

chanOrder (1x2 cell, where each cell is an array/area)

  • has a list of all the channels, for the NN arrays in depth order, for Utah arrays, just 1-96 (see #1 ). However, this is kind of pointless for data post-KS. With KS this data is in clustInfo{i}.clusterInfo

clustInfo (1x2 cell, where each cell is an array/area)

  • has the kilosort related information for each unit identified in each area.

onsetInds (1x4 cell, where each cell is a 1x2 recording file x array) This has the stimulus identity and timing.

param (structure) This has information about the trial types and time course, and which integration windows should be used for 1) spike counts or 2) SDFs.

StimFile (1x4 cell, with each cell a recording file) This has the information used to create the stimulus, bundled from the separate stimulus file saved during the experiment.

sTrain (1x4 cell, with each cell a recording file, where each cell is a 1x2 array index) This has spike trains for each neuron or electrode during the recording. Millisecond resolution, 1/0 encoding.

fRates.mat

chanOrder (1x2 cell, where each cell is an array/area), param (structure) As above. Re-encoded here, because this file is more lightweight.

tcs (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{array, direction}(2x12 cell array). Each cell has a nUnitsxnTrials spike count, integrated during the window indicated in param.

Zscs (structure) Mirror of tcs, but has z-scored rates not raw rates. Z-scoring is done within a stimulus type so stimulus selectivity is destroyed.

tcs_byFile (structure) tcs.[Move | Blank].[Dots | SineWave | Square | PSsquare]{1x4}{array, direction} Tuning curves, but without the trials combined over different recording files.

exclusions.mat

isVisual (1x2 cell, where each cell is an array/area) Has 4xnUnits array where visual responsiveness was tested separately for each stimulus type. 1 = has significant visual response.

anyVisual (1x2 cell, where each cell is an array/area) As above, but 1= has significant visual response for any of the stimulus types.

DSI (1x2 cell, where each cell is an array/area) Direction selectivity for any unit with a significant visual response. Difference/sum of the peak and anti-peak direction.

SDFs.mat

param (as elsewhere)

all_sdfsall_sdfs.[Dots | SineWave | Square | PSsquare]{array, direction} Each cell is a nChannelsxnTrialsxnTimepoints 3D matrix.

About

Functions that create intermediate analysis files.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages