Repository files navigation

splineAnalysis

splineAnalysis is a MATLAB package used to analyze particle trajectories confined to curvilinear structures.

Introduction

The motion of biomolecular complexes at the subcellular level takes place in a highly hetergeneous environment. Early versions of this code were written to analyze trajectories confined to curvilinear structures, where traditional 2D mean-square-displacement analysis underestimates rates of diffusion. The current package is a cleaned up version of the original code, restructured to allow other researchers (with a little MATLAB experience) to use this tool.

User Guide

The best place to start is by running a basic script generateTestData.m analyzing some artificial data of 5 diffusing trajectories confined to a sinusoid. This script illustrates a few things:

  • How your trajectory data needs to be formulated before analysis. The format we've chosen to use (after Crocker and Grier) is described in more detail in splineAnalysis2016.m.
  • Several analysis parameters are combined into the splineParam struct, and the values shown in generateTestData.m are chosen to illustrate how the code works on the example data.

Analysis Parameters in splineParam

  • myParam.thetaRange = pi/4 The angle range searched forward along the trajectory curve.
  • myParam.nTrajShapePoints = 10 The trajectory is spatially divided into this many clusters to provide starting points for the spline curve
  • myParam.minTrajLength = 100 A filter in preshape2016.m throws out trajectories shorter than this.
  • myParam.nSplineCurvePoints = 10000 This sets the number of points in the resampled spline curve.
  • myParam.noPlots = true The intial version of this code included a lot of automatically-saved plots. They're still in the code but may or may not be useful for a given data set. See also the notes below about interactiveMode.
  • myParam.thetaMax = .2*pi This is the largest angle acceptable between spline guide points.
  • myParam.radiusFactor = 3 The initial search radius is this the average transverse trajectory width multiplied by this factor.
  • myParam.radiusRatio = 2 The secondary search is the initial radius multiplied by this factor.

These parameter values work well for the example dataset (and for our original experimental data), but may be different for other data sets.

InteractiveMode

During our data analysis, we utilized an interactive mode with several automatically-generated and saved figures and an option to manually classify analyzed trajectories by mouseclick or keyboard. See splineAnalysis2016.m around line 415 for details.

Project Status

Although this project is currently not an active area of development, I will entertain pull requests, suggestions and questions.

Publication

B.R. Long and T.Q. Vu 'Spatial structure and diffusive dynamics from single-particle trajectories using spline analysis' Biophys J. 2010 Apr 21;98(8):1712-21.

About

MATLAB code to analyze trajectories confined to curvilinear structures

Resources

Stars

1 star

Watchers

1 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

Repository files navigation

splineAnalysis

splineAnalysis is a MATLAB package used to analyze particle trajectories confined to curvilinear structures.

Introduction

The motion of biomolecular complexes at the subcellular level takes place in a highly hetergeneous environment. Early versions of this code were written to analyze trajectories confined to curvilinear structures, where traditional 2D mean-square-displacement analysis underestimates rates of diffusion. The current package is a cleaned up version of the original code, restructured to allow other researchers (with a little MATLAB experience) to use this tool.

User Guide

The best place to start is by running a basic script generateTestData.m analyzing some artificial data of 5 diffusing trajectories confined to a sinusoid. This script illustrates a few things:

  • How your trajectory data needs to be formulated before analysis. The format we've chosen to use (after Crocker and Grier) is described in more detail in splineAnalysis2016.m.
  • Several analysis parameters are combined into the splineParam struct, and the values shown in generateTestData.m are chosen to illustrate how the code works on the example data.

Analysis Parameters in splineParam

  • myParam.thetaRange = pi/4 The angle range searched forward along the trajectory curve.
  • myParam.nTrajShapePoints = 10 The trajectory is spatially divided into this many clusters to provide starting points for the spline curve
  • myParam.minTrajLength = 100 A filter in preshape2016.m throws out trajectories shorter than this.
  • myParam.nSplineCurvePoints = 10000 This sets the number of points in the resampled spline curve.
  • myParam.noPlots = true The intial version of this code included a lot of automatically-saved plots. They're still in the code but may or may not be useful for a given data set. See also the notes below about interactiveMode.
  • myParam.thetaMax = .2*pi This is the largest angle acceptable between spline guide points.
  • myParam.radiusFactor = 3 The initial search radius is this the average transverse trajectory width multiplied by this factor.
  • myParam.radiusRatio = 2 The secondary search is the initial radius multiplied by this factor.

These parameter values work well for the example dataset (and for our original experimental data), but may be different for other data sets.

InteractiveMode

During our data analysis, we utilized an interactive mode with several automatically-generated and saved figures and an option to manually classify analyzed trajectories by mouseclick or keyboard. See splineAnalysis2016.m around line 415 for details.

Project Status

Although this project is currently not an active area of development, I will entertain pull requests, suggestions and questions.

Publication

B.R. Long and T.Q. Vu 'Spatial structure and diffusive dynamics from single-particle trajectories using spline analysis' Biophys J. 2010 Apr 21;98(8):1712-21.

About

MATLAB code to analyze trajectories confined to curvilinear structures

Resources

Stars

1 star

Watchers

1 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

Repository files navigation

splineAnalysis

splineAnalysis is a MATLAB package used to analyze particle trajectories confined to curvilinear structures.

Introduction

The motion of biomolecular complexes at the subcellular level takes place in a highly hetergeneous environment. Early versions of this code were written to analyze trajectories confined to curvilinear structures, where traditional 2D mean-square-displacement analysis underestimates rates of diffusion. The current package is a cleaned up version of the original code, restructured to allow other researchers (with a little MATLAB experience) to use this tool.

User Guide

The best place to start is by running a basic script generateTestData.m analyzing some artificial data of 5 diffusing trajectories confined to a sinusoid. This script illustrates a few things:

  • How your trajectory data needs to be formulated before analysis. The format we've chosen to use (after Crocker and Grier) is described in more detail in splineAnalysis2016.m.
  • Several analysis parameters are combined into the splineParam struct, and the values shown in generateTestData.m are chosen to illustrate how the code works on the example data.

Analysis Parameters in splineParam

  • myParam.thetaRange = pi/4 The angle range searched forward along the trajectory curve.
  • myParam.nTrajShapePoints = 10 The trajectory is spatially divided into this many clusters to provide starting points for the spline curve
  • myParam.minTrajLength = 100 A filter in preshape2016.m throws out trajectories shorter than this.
  • myParam.nSplineCurvePoints = 10000 This sets the number of points in the resampled spline curve.
  • myParam.noPlots = true The intial version of this code included a lot of automatically-saved plots. They're still in the code but may or may not be useful for a given data set. See also the notes below about interactiveMode.
  • myParam.thetaMax = .2*pi This is the largest angle acceptable between spline guide points.
  • myParam.radiusFactor = 3 The initial search radius is this the average transverse trajectory width multiplied by this factor.
  • myParam.radiusRatio = 2 The secondary search is the initial radius multiplied by this factor.

These parameter values work well for the example dataset (and for our original experimental data), but may be different for other data sets.

InteractiveMode

During our data analysis, we utilized an interactive mode with several automatically-generated and saved figures and an option to manually classify analyzed trajectories by mouseclick or keyboard. See splineAnalysis2016.m around line 415 for details.

Project Status

Although this project is currently not an active area of development, I will entertain pull requests, suggestions and questions.

Publication

B.R. Long and T.Q. Vu 'Spatial structure and diffusive dynamics from single-particle trajectories using spline analysis' Biophys J. 2010 Apr 21;98(8):1712-21.

About

MATLAB code to analyze trajectories confined to curvilinear structures

Resources

Stars

1 star

Watchers

1 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

Repository files navigation

splineAnalysis

splineAnalysis is a MATLAB package used to analyze particle trajectories confined to curvilinear structures.

Introduction

The motion of biomolecular complexes at the subcellular level takes place in a highly hetergeneous environment. Early versions of this code were written to analyze trajectories confined to curvilinear structures, where traditional 2D mean-square-displacement analysis underestimates rates of diffusion. The current package is a cleaned up version of the original code, restructured to allow other researchers (with a little MATLAB experience) to use this tool.

User Guide

The best place to start is by running a basic script generateTestData.m analyzing some artificial data of 5 diffusing trajectories confined to a sinusoid. This script illustrates a few things:

  • How your trajectory data needs to be formulated before analysis. The format we've chosen to use (after Crocker and Grier) is described in more detail in splineAnalysis2016.m.
  • Several analysis parameters are combined into the splineParam struct, and the values shown in generateTestData.m are chosen to illustrate how the code works on the example data.

Analysis Parameters in splineParam

  • myParam.thetaRange = pi/4 The angle range searched forward along the trajectory curve.
  • myParam.nTrajShapePoints = 10 The trajectory is spatially divided into this many clusters to provide starting points for the spline curve
  • myParam.minTrajLength = 100 A filter in preshape2016.m throws out trajectories shorter than this.
  • myParam.nSplineCurvePoints = 10000 This sets the number of points in the resampled spline curve.
  • myParam.noPlots = true The intial version of this code included a lot of automatically-saved plots. They're still in the code but may or may not be useful for a given data set. See also the notes below about interactiveMode.
  • myParam.thetaMax = .2*pi This is the largest angle acceptable between spline guide points.
  • myParam.radiusFactor = 3 The initial search radius is this the average transverse trajectory width multiplied by this factor.
  • myParam.radiusRatio = 2 The secondary search is the initial radius multiplied by this factor.

These parameter values work well for the example dataset (and for our original experimental data), but may be different for other data sets.

InteractiveMode

During our data analysis, we utilized an interactive mode with several automatically-generated and saved figures and an option to manually classify analyzed trajectories by mouseclick or keyboard. See splineAnalysis2016.m around line 415 for details.

Project Status

Although this project is currently not an active area of development, I will entertain pull requests, suggestions and questions.

Publication

B.R. Long and T.Q. Vu 'Spatial structure and diffusive dynamics from single-particle trajectories using spline analysis' Biophys J. 2010 Apr 21;98(8):1712-21.

About

MATLAB code to analyze trajectories confined to curvilinear structures

Resources

Stars

1 star

Watchers

1 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

Repository files navigation

splineAnalysis

splineAnalysis is a MATLAB package used to analyze particle trajectories confined to curvilinear structures.

Introduction

The motion of biomolecular complexes at the subcellular level takes place in a highly hetergeneous environment. Early versions of this code were written to analyze trajectories confined to curvilinear structures, where traditional 2D mean-square-displacement analysis underestimates rates of diffusion. The current package is a cleaned up version of the original code, restructured to allow other researchers (with a little MATLAB experience) to use this tool.

User Guide

The best place to start is by running a basic script generateTestData.m analyzing some artificial data of 5 diffusing trajectories confined to a sinusoid. This script illustrates a few things:

  • How your trajectory data needs to be formulated before analysis. The format we've chosen to use (after Crocker and Grier) is described in more detail in splineAnalysis2016.m.
  • Several analysis parameters are combined into the splineParam struct, and the values shown in generateTestData.m are chosen to illustrate how the code works on the example data.

Analysis Parameters in splineParam

  • myParam.thetaRange = pi/4 The angle range searched forward along the trajectory curve.
  • myParam.nTrajShapePoints = 10 The trajectory is spatially divided into this many clusters to provide starting points for the spline curve
  • myParam.minTrajLength = 100 A filter in preshape2016.m throws out trajectories shorter than this.
  • myParam.nSplineCurvePoints = 10000 This sets the number of points in the resampled spline curve.
  • myParam.noPlots = true The intial version of this code included a lot of automatically-saved plots. They're still in the code but may or may not be useful for a given data set. See also the notes below about interactiveMode.
  • myParam.thetaMax = .2*pi This is the largest angle acceptable between spline guide points.
  • myParam.radiusFactor = 3 The initial search radius is this the average transverse trajectory width multiplied by this factor.
  • myParam.radiusRatio = 2 The secondary search is the initial radius multiplied by this factor.

These parameter values work well for the example dataset (and for our original experimental data), but may be different for other data sets.

InteractiveMode

During our data analysis, we utilized an interactive mode with several automatically-generated and saved figures and an option to manually classify analyzed trajectories by mouseclick or keyboard. See splineAnalysis2016.m around line 415 for details.

Project Status

Although this project is currently not an active area of development, I will entertain pull requests, suggestions and questions.

Publication

B.R. Long and T.Q. Vu 'Spatial structure and diffusive dynamics from single-particle trajectories using spline analysis' Biophys J. 2010 Apr 21;98(8):1712-21.

About

MATLAB code to analyze trajectories confined to curvilinear structures

Resources

Stars

1 star

Watchers

1 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

Repository files navigation

splineAnalysis

splineAnalysis is a MATLAB package used to analyze particle trajectories confined to curvilinear structures.

Introduction

The motion of biomolecular complexes at the subcellular level takes place in a highly hetergeneous environment. Early versions of this code were written to analyze trajectories confined to curvilinear structures, where traditional 2D mean-square-displacement analysis underestimates rates of diffusion. The current package is a cleaned up version of the original code, restructured to allow other researchers (with a little MATLAB experience) to use this tool.

User Guide

The best place to start is by running a basic script generateTestData.m analyzing some artificial data of 5 diffusing trajectories confined to a sinusoid. This script illustrates a few things:

  • How your trajectory data needs to be formulated before analysis. The format we've chosen to use (after Crocker and Grier) is described in more detail in splineAnalysis2016.m.
  • Several analysis parameters are combined into the splineParam struct, and the values shown in generateTestData.m are chosen to illustrate how the code works on the example data.

Analysis Parameters in splineParam

  • myParam.thetaRange = pi/4 The angle range searched forward along the trajectory curve.
  • myParam.nTrajShapePoints = 10 The trajectory is spatially divided into this many clusters to provide starting points for the spline curve
  • myParam.minTrajLength = 100 A filter in preshape2016.m throws out trajectories shorter than this.
  • myParam.nSplineCurvePoints = 10000 This sets the number of points in the resampled spline curve.
  • myParam.noPlots = true The intial version of this code included a lot of automatically-saved plots. They're still in the code but may or may not be useful for a given data set. See also the notes below about interactiveMode.
  • myParam.thetaMax = .2*pi This is the largest angle acceptable between spline guide points.
  • myParam.radiusFactor = 3 The initial search radius is this the average transverse trajectory width multiplied by this factor.
  • myParam.radiusRatio = 2 The secondary search is the initial radius multiplied by this factor.

These parameter values work well for the example dataset (and for our original experimental data), but may be different for other data sets.

InteractiveMode

During our data analysis, we utilized an interactive mode with several automatically-generated and saved figures and an option to manually classify analyzed trajectories by mouseclick or keyboard. See splineAnalysis2016.m around line 415 for details.

Project Status

Although this project is currently not an active area of development, I will entertain pull requests, suggestions and questions.

Publication

B.R. Long and T.Q. Vu 'Spatial structure and diffusive dynamics from single-particle trajectories using spline analysis' Biophys J. 2010 Apr 21;98(8):1712-21.

About

MATLAB code to analyze trajectories confined to curvilinear structures

Resources

Stars

1 star

Watchers

1 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

Repository files navigation

splineAnalysis

splineAnalysis is a MATLAB package used to analyze particle trajectories confined to curvilinear structures.

Introduction

The motion of biomolecular complexes at the subcellular level takes place in a highly hetergeneous environment. Early versions of this code were written to analyze trajectories confined to curvilinear structures, where traditional 2D mean-square-displacement analysis underestimates rates of diffusion. The current package is a cleaned up version of the original code, restructured to allow other researchers (with a little MATLAB experience) to use this tool.

User Guide

The best place to start is by running a basic script generateTestData.m analyzing some artificial data of 5 diffusing trajectories confined to a sinusoid. This script illustrates a few things:

  • How your trajectory data needs to be formulated before analysis. The format we've chosen to use (after Crocker and Grier) is described in more detail in splineAnalysis2016.m.
  • Several analysis parameters are combined into the splineParam struct, and the values shown in generateTestData.m are chosen to illustrate how the code works on the example data.

Analysis Parameters in splineParam

  • myParam.thetaRange = pi/4 The angle range searched forward along the trajectory curve.
  • myParam.nTrajShapePoints = 10 The trajectory is spatially divided into this many clusters to provide starting points for the spline curve
  • myParam.minTrajLength = 100 A filter in preshape2016.m throws out trajectories shorter than this.
  • myParam.nSplineCurvePoints = 10000 This sets the number of points in the resampled spline curve.
  • myParam.noPlots = true The intial version of this code included a lot of automatically-saved plots. They're still in the code but may or may not be useful for a given data set. See also the notes below about interactiveMode.
  • myParam.thetaMax = .2*pi This is the largest angle acceptable between spline guide points.
  • myParam.radiusFactor = 3 The initial search radius is this the average transverse trajectory width multiplied by this factor.
  • myParam.radiusRatio = 2 The secondary search is the initial radius multiplied by this factor.

These parameter values work well for the example dataset (and for our original experimental data), but may be different for other data sets.

InteractiveMode

During our data analysis, we utilized an interactive mode with several automatically-generated and saved figures and an option to manually classify analyzed trajectories by mouseclick or keyboard. See splineAnalysis2016.m around line 415 for details.

Project Status

Although this project is currently not an active area of development, I will entertain pull requests, suggestions and questions.

Publication

B.R. Long and T.Q. Vu 'Spatial structure and diffusive dynamics from single-particle trajectories using spline analysis' Biophys J. 2010 Apr 21;98(8):1712-21.

About

MATLAB code to analyze trajectories confined to curvilinear structures

Resources

Stars

1 star

Watchers

1 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

Repository files navigation

splineAnalysis

splineAnalysis is a MATLAB package used to analyze particle trajectories confined to curvilinear structures.

Introduction

The motion of biomolecular complexes at the subcellular level takes place in a highly hetergeneous environment. Early versions of this code were written to analyze trajectories confined to curvilinear structures, where traditional 2D mean-square-displacement analysis underestimates rates of diffusion. The current package is a cleaned up version of the original code, restructured to allow other researchers (with a little MATLAB experience) to use this tool.

User Guide

The best place to start is by running a basic script generateTestData.m analyzing some artificial data of 5 diffusing trajectories confined to a sinusoid. This script illustrates a few things:

  • How your trajectory data needs to be formulated before analysis. The format we've chosen to use (after Crocker and Grier) is described in more detail in splineAnalysis2016.m.
  • Several analysis parameters are combined into the splineParam struct, and the values shown in generateTestData.m are chosen to illustrate how the code works on the example data.

Analysis Parameters in splineParam

  • myParam.thetaRange = pi/4 The angle range searched forward along the trajectory curve.
  • myParam.nTrajShapePoints = 10 The trajectory is spatially divided into this many clusters to provide starting points for the spline curve
  • myParam.minTrajLength = 100 A filter in preshape2016.m throws out trajectories shorter than this.
  • myParam.nSplineCurvePoints = 10000 This sets the number of points in the resampled spline curve.
  • myParam.noPlots = true The intial version of this code included a lot of automatically-saved plots. They're still in the code but may or may not be useful for a given data set. See also the notes below about interactiveMode.
  • myParam.thetaMax = .2*pi This is the largest angle acceptable between spline guide points.
  • myParam.radiusFactor = 3 The initial search radius is this the average transverse trajectory width multiplied by this factor.
  • myParam.radiusRatio = 2 The secondary search is the initial radius multiplied by this factor.

These parameter values work well for the example dataset (and for our original experimental data), but may be different for other data sets.

InteractiveMode

During our data analysis, we utilized an interactive mode with several automatically-generated and saved figures and an option to manually classify analyzed trajectories by mouseclick or keyboard. See splineAnalysis2016.m around line 415 for details.

Project Status

Although this project is currently not an active area of development, I will entertain pull requests, suggestions and questions.

Publication

B.R. Long and T.Q. Vu 'Spatial structure and diffusive dynamics from single-particle trajectories using spline analysis' Biophys J. 2010 Apr 21;98(8):1712-21.

About

MATLAB code to analyze trajectories confined to curvilinear structures

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages