Support to specify the range and resolution of parameter spaces - #5

Open
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master
Open

Support to specify the range and resolution of parameter spaces#5
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master

Conversation

@Kinpzz

Copy link
Copy Markdown

Commit 1. The hard-code mapping function is replaced by the mapping function based on specific parameter spaces defined by users. The original hard-code mapping function can be regarded as the mapping function of the parameter space with special ranges and resolutions, which are served as the default values of the new mapping function.

peakSensitivity = 0.1*params[:,0] + 0.3
peakFrequency = -0.7 + 0.1*params[:,1]
bandwidth = 0.05 * params[:,2]
logDelta = -1.7 + 0.1 * params[:,3]
parameterSettings = parser.add_argument_group('Parameters')
parameterSettings.add_argument('-minps', '--minPeakSensitivity', type=float, default=2.0, help='The lower bound of peak sensitivity value (>1.0)')
parameterSettings.add_argument('-maxps', '--maxPeakSensitivity', type=float, default=1000.0, help='The upper bound of peak sensitivity value')
parameterSettings.add_argument('-psr', '--peakSensitivityResolution', type=int, default=28, help='The number of peak sensitivity steps')
parameterSettings.add_argument('-minpf', '--minPeakFrequency', type=float, default=.2, help='The lower bound of peak frequency value (>0)')
parameterSettings.add_argument('-maxpf', '--maxPeakFrequency', type=float, default=20.0, help='The upper bound of peak frequency value')
parameterSettings.add_argument('-pfr', '--peakFrequencyResolution', type=int, default=21, help='The number of peak frequency steps')
parameterSettings.add_argument('-minb', '--minBandwidth', type=float, default=1.0, help='The lower bound of bandwidth value')
parameterSettings.add_argument('-maxb', '--maxBandwidth', type=float, default=10.0, help='The upper bound of bandwidth value')
parameterSettings.add_argument('-br', '--bandwidthResolution', type=int, default=21, help='The number of bandwidth steps')
parameterSettings.add_argument('-mind', '--minLogDelta', type=float, default=.02, help='The lower bound of logdelta value')
parameterSettings.add_argument('-maxd', '--maxLogDelta', type=float, default=2.0, help='The upper bound of logdelta value')
parameterSettings.add_argument('-dr', '--logDeltaResolution', type=int, default=21, help='The number of logdelta steps')

Commit 2. The peak sensitivity space and peak frequency space should be subspaces of stimuli spaces (1/contrast, frequency). Thus, a simple parameter validation is added to check whether the range of peak sensitivity is smaller than the range of 1/contrast. For example, the range of contrast (0.01, 1) corresponds to the range of sensitivity (1, 100). However, it is too small for searching the value of peak sensitivity in the range of (2, 1000).

@domstoppable

Copy link
Copy Markdown
Member

Emailed this to you, but also writing here just in case:

With your other changes in place, we should also modify the inputs to simulations (simulate.py, runSimulation()) so that the true parameter values (truePeakSensitivity, truePeakFrequency, trueBandwidth, trueDelta) can be specified as real-values, rather than indexes, with units matching what's generated as output. If you can do that, then users will never have to deal with indexes - they will only work with real values for both input and output, which would be great. It's also necessary for running simulations with edge-cases like when a parameter's true value falls outside of the range that's been set.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kinpzz@domstoppable
, '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

Support to specify the range and resolution of parameter spaces - #5

Open
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master
Open

Support to specify the range and resolution of parameter spaces#5
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master

Conversation

@Kinpzz

Copy link
Copy Markdown

Commit 1. The hard-code mapping function is replaced by the mapping function based on specific parameter spaces defined by users. The original hard-code mapping function can be regarded as the mapping function of the parameter space with special ranges and resolutions, which are served as the default values of the new mapping function.

peakSensitivity = 0.1*params[:,0] + 0.3
peakFrequency = -0.7 + 0.1*params[:,1]
bandwidth = 0.05 * params[:,2]
logDelta = -1.7 + 0.1 * params[:,3]
parameterSettings = parser.add_argument_group('Parameters')
parameterSettings.add_argument('-minps', '--minPeakSensitivity', type=float, default=2.0, help='The lower bound of peak sensitivity value (>1.0)')
parameterSettings.add_argument('-maxps', '--maxPeakSensitivity', type=float, default=1000.0, help='The upper bound of peak sensitivity value')
parameterSettings.add_argument('-psr', '--peakSensitivityResolution', type=int, default=28, help='The number of peak sensitivity steps')
parameterSettings.add_argument('-minpf', '--minPeakFrequency', type=float, default=.2, help='The lower bound of peak frequency value (>0)')
parameterSettings.add_argument('-maxpf', '--maxPeakFrequency', type=float, default=20.0, help='The upper bound of peak frequency value')
parameterSettings.add_argument('-pfr', '--peakFrequencyResolution', type=int, default=21, help='The number of peak frequency steps')
parameterSettings.add_argument('-minb', '--minBandwidth', type=float, default=1.0, help='The lower bound of bandwidth value')
parameterSettings.add_argument('-maxb', '--maxBandwidth', type=float, default=10.0, help='The upper bound of bandwidth value')
parameterSettings.add_argument('-br', '--bandwidthResolution', type=int, default=21, help='The number of bandwidth steps')
parameterSettings.add_argument('-mind', '--minLogDelta', type=float, default=.02, help='The lower bound of logdelta value')
parameterSettings.add_argument('-maxd', '--maxLogDelta', type=float, default=2.0, help='The upper bound of logdelta value')
parameterSettings.add_argument('-dr', '--logDeltaResolution', type=int, default=21, help='The number of logdelta steps')

Commit 2. The peak sensitivity space and peak frequency space should be subspaces of stimuli spaces (1/contrast, frequency). Thus, a simple parameter validation is added to check whether the range of peak sensitivity is smaller than the range of 1/contrast. For example, the range of contrast (0.01, 1) corresponds to the range of sensitivity (1, 100). However, it is too small for searching the value of peak sensitivity in the range of (2, 1000).

@domstoppable

Copy link
Copy Markdown
Member

Emailed this to you, but also writing here just in case:

With your other changes in place, we should also modify the inputs to simulations (simulate.py, runSimulation()) so that the true parameter values (truePeakSensitivity, truePeakFrequency, trueBandwidth, trueDelta) can be specified as real-values, rather than indexes, with units matching what's generated as output. If you can do that, then users will never have to deal with indexes - they will only work with real values for both input and output, which would be great. It's also necessary for running simulations with edge-cases like when a parameter's true value falls outside of the range that's been set.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kinpzz@domstoppable
, '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

Support to specify the range and resolution of parameter spaces - #5

Open
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master
Open

Support to specify the range and resolution of parameter spaces#5
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master

Conversation

@Kinpzz

Copy link
Copy Markdown

Commit 1. The hard-code mapping function is replaced by the mapping function based on specific parameter spaces defined by users. The original hard-code mapping function can be regarded as the mapping function of the parameter space with special ranges and resolutions, which are served as the default values of the new mapping function.

peakSensitivity = 0.1*params[:,0] + 0.3
peakFrequency = -0.7 + 0.1*params[:,1]
bandwidth = 0.05 * params[:,2]
logDelta = -1.7 + 0.1 * params[:,3]
parameterSettings = parser.add_argument_group('Parameters')
parameterSettings.add_argument('-minps', '--minPeakSensitivity', type=float, default=2.0, help='The lower bound of peak sensitivity value (>1.0)')
parameterSettings.add_argument('-maxps', '--maxPeakSensitivity', type=float, default=1000.0, help='The upper bound of peak sensitivity value')
parameterSettings.add_argument('-psr', '--peakSensitivityResolution', type=int, default=28, help='The number of peak sensitivity steps')
parameterSettings.add_argument('-minpf', '--minPeakFrequency', type=float, default=.2, help='The lower bound of peak frequency value (>0)')
parameterSettings.add_argument('-maxpf', '--maxPeakFrequency', type=float, default=20.0, help='The upper bound of peak frequency value')
parameterSettings.add_argument('-pfr', '--peakFrequencyResolution', type=int, default=21, help='The number of peak frequency steps')
parameterSettings.add_argument('-minb', '--minBandwidth', type=float, default=1.0, help='The lower bound of bandwidth value')
parameterSettings.add_argument('-maxb', '--maxBandwidth', type=float, default=10.0, help='The upper bound of bandwidth value')
parameterSettings.add_argument('-br', '--bandwidthResolution', type=int, default=21, help='The number of bandwidth steps')
parameterSettings.add_argument('-mind', '--minLogDelta', type=float, default=.02, help='The lower bound of logdelta value')
parameterSettings.add_argument('-maxd', '--maxLogDelta', type=float, default=2.0, help='The upper bound of logdelta value')
parameterSettings.add_argument('-dr', '--logDeltaResolution', type=int, default=21, help='The number of logdelta steps')

Commit 2. The peak sensitivity space and peak frequency space should be subspaces of stimuli spaces (1/contrast, frequency). Thus, a simple parameter validation is added to check whether the range of peak sensitivity is smaller than the range of 1/contrast. For example, the range of contrast (0.01, 1) corresponds to the range of sensitivity (1, 100). However, it is too small for searching the value of peak sensitivity in the range of (2, 1000).

@domstoppable

Copy link
Copy Markdown
Member

Emailed this to you, but also writing here just in case:

With your other changes in place, we should also modify the inputs to simulations (simulate.py, runSimulation()) so that the true parameter values (truePeakSensitivity, truePeakFrequency, trueBandwidth, trueDelta) can be specified as real-values, rather than indexes, with units matching what's generated as output. If you can do that, then users will never have to deal with indexes - they will only work with real values for both input and output, which would be great. It's also necessary for running simulations with edge-cases like when a parameter's true value falls outside of the range that's been set.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kinpzz@domstoppable
, '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

Support to specify the range and resolution of parameter spaces - #5

Open
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master
Open

Support to specify the range and resolution of parameter spaces#5
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master

Conversation

@Kinpzz

Copy link
Copy Markdown

Commit 1. The hard-code mapping function is replaced by the mapping function based on specific parameter spaces defined by users. The original hard-code mapping function can be regarded as the mapping function of the parameter space with special ranges and resolutions, which are served as the default values of the new mapping function.

peakSensitivity = 0.1*params[:,0] + 0.3
peakFrequency = -0.7 + 0.1*params[:,1]
bandwidth = 0.05 * params[:,2]
logDelta = -1.7 + 0.1 * params[:,3]
parameterSettings = parser.add_argument_group('Parameters')
parameterSettings.add_argument('-minps', '--minPeakSensitivity', type=float, default=2.0, help='The lower bound of peak sensitivity value (>1.0)')
parameterSettings.add_argument('-maxps', '--maxPeakSensitivity', type=float, default=1000.0, help='The upper bound of peak sensitivity value')
parameterSettings.add_argument('-psr', '--peakSensitivityResolution', type=int, default=28, help='The number of peak sensitivity steps')
parameterSettings.add_argument('-minpf', '--minPeakFrequency', type=float, default=.2, help='The lower bound of peak frequency value (>0)')
parameterSettings.add_argument('-maxpf', '--maxPeakFrequency', type=float, default=20.0, help='The upper bound of peak frequency value')
parameterSettings.add_argument('-pfr', '--peakFrequencyResolution', type=int, default=21, help='The number of peak frequency steps')
parameterSettings.add_argument('-minb', '--minBandwidth', type=float, default=1.0, help='The lower bound of bandwidth value')
parameterSettings.add_argument('-maxb', '--maxBandwidth', type=float, default=10.0, help='The upper bound of bandwidth value')
parameterSettings.add_argument('-br', '--bandwidthResolution', type=int, default=21, help='The number of bandwidth steps')
parameterSettings.add_argument('-mind', '--minLogDelta', type=float, default=.02, help='The lower bound of logdelta value')
parameterSettings.add_argument('-maxd', '--maxLogDelta', type=float, default=2.0, help='The upper bound of logdelta value')
parameterSettings.add_argument('-dr', '--logDeltaResolution', type=int, default=21, help='The number of logdelta steps')

Commit 2. The peak sensitivity space and peak frequency space should be subspaces of stimuli spaces (1/contrast, frequency). Thus, a simple parameter validation is added to check whether the range of peak sensitivity is smaller than the range of 1/contrast. For example, the range of contrast (0.01, 1) corresponds to the range of sensitivity (1, 100). However, it is too small for searching the value of peak sensitivity in the range of (2, 1000).

@domstoppable

Copy link
Copy Markdown
Member

Emailed this to you, but also writing here just in case:

With your other changes in place, we should also modify the inputs to simulations (simulate.py, runSimulation()) so that the true parameter values (truePeakSensitivity, truePeakFrequency, trueBandwidth, trueDelta) can be specified as real-values, rather than indexes, with units matching what's generated as output. If you can do that, then users will never have to deal with indexes - they will only work with real values for both input and output, which would be great. It's also necessary for running simulations with edge-cases like when a parameter's true value falls outside of the range that's been set.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kinpzz@domstoppable
, '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

Support to specify the range and resolution of parameter spaces - #5

Open
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master
Open

Support to specify the range and resolution of parameter spaces#5
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master

Conversation

@Kinpzz

Copy link
Copy Markdown

Commit 1. The hard-code mapping function is replaced by the mapping function based on specific parameter spaces defined by users. The original hard-code mapping function can be regarded as the mapping function of the parameter space with special ranges and resolutions, which are served as the default values of the new mapping function.

peakSensitivity = 0.1*params[:,0] + 0.3
peakFrequency = -0.7 + 0.1*params[:,1]
bandwidth = 0.05 * params[:,2]
logDelta = -1.7 + 0.1 * params[:,3]
parameterSettings = parser.add_argument_group('Parameters')
parameterSettings.add_argument('-minps', '--minPeakSensitivity', type=float, default=2.0, help='The lower bound of peak sensitivity value (>1.0)')
parameterSettings.add_argument('-maxps', '--maxPeakSensitivity', type=float, default=1000.0, help='The upper bound of peak sensitivity value')
parameterSettings.add_argument('-psr', '--peakSensitivityResolution', type=int, default=28, help='The number of peak sensitivity steps')
parameterSettings.add_argument('-minpf', '--minPeakFrequency', type=float, default=.2, help='The lower bound of peak frequency value (>0)')
parameterSettings.add_argument('-maxpf', '--maxPeakFrequency', type=float, default=20.0, help='The upper bound of peak frequency value')
parameterSettings.add_argument('-pfr', '--peakFrequencyResolution', type=int, default=21, help='The number of peak frequency steps')
parameterSettings.add_argument('-minb', '--minBandwidth', type=float, default=1.0, help='The lower bound of bandwidth value')
parameterSettings.add_argument('-maxb', '--maxBandwidth', type=float, default=10.0, help='The upper bound of bandwidth value')
parameterSettings.add_argument('-br', '--bandwidthResolution', type=int, default=21, help='The number of bandwidth steps')
parameterSettings.add_argument('-mind', '--minLogDelta', type=float, default=.02, help='The lower bound of logdelta value')
parameterSettings.add_argument('-maxd', '--maxLogDelta', type=float, default=2.0, help='The upper bound of logdelta value')
parameterSettings.add_argument('-dr', '--logDeltaResolution', type=int, default=21, help='The number of logdelta steps')

Commit 2. The peak sensitivity space and peak frequency space should be subspaces of stimuli spaces (1/contrast, frequency). Thus, a simple parameter validation is added to check whether the range of peak sensitivity is smaller than the range of 1/contrast. For example, the range of contrast (0.01, 1) corresponds to the range of sensitivity (1, 100). However, it is too small for searching the value of peak sensitivity in the range of (2, 1000).

@domstoppable

Copy link
Copy Markdown
Member

Emailed this to you, but also writing here just in case:

With your other changes in place, we should also modify the inputs to simulations (simulate.py, runSimulation()) so that the true parameter values (truePeakSensitivity, truePeakFrequency, trueBandwidth, trueDelta) can be specified as real-values, rather than indexes, with units matching what's generated as output. If you can do that, then users will never have to deal with indexes - they will only work with real values for both input and output, which would be great. It's also necessary for running simulations with edge-cases like when a parameter's true value falls outside of the range that's been set.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kinpzz@domstoppable
, '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

Support to specify the range and resolution of parameter spaces - #5

Open
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master
Open

Support to specify the range and resolution of parameter spaces#5
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master

Conversation

@Kinpzz

Copy link
Copy Markdown

Commit 1. The hard-code mapping function is replaced by the mapping function based on specific parameter spaces defined by users. The original hard-code mapping function can be regarded as the mapping function of the parameter space with special ranges and resolutions, which are served as the default values of the new mapping function.

peakSensitivity = 0.1*params[:,0] + 0.3
peakFrequency = -0.7 + 0.1*params[:,1]
bandwidth = 0.05 * params[:,2]
logDelta = -1.7 + 0.1 * params[:,3]
parameterSettings = parser.add_argument_group('Parameters')
parameterSettings.add_argument('-minps', '--minPeakSensitivity', type=float, default=2.0, help='The lower bound of peak sensitivity value (>1.0)')
parameterSettings.add_argument('-maxps', '--maxPeakSensitivity', type=float, default=1000.0, help='The upper bound of peak sensitivity value')
parameterSettings.add_argument('-psr', '--peakSensitivityResolution', type=int, default=28, help='The number of peak sensitivity steps')
parameterSettings.add_argument('-minpf', '--minPeakFrequency', type=float, default=.2, help='The lower bound of peak frequency value (>0)')
parameterSettings.add_argument('-maxpf', '--maxPeakFrequency', type=float, default=20.0, help='The upper bound of peak frequency value')
parameterSettings.add_argument('-pfr', '--peakFrequencyResolution', type=int, default=21, help='The number of peak frequency steps')
parameterSettings.add_argument('-minb', '--minBandwidth', type=float, default=1.0, help='The lower bound of bandwidth value')
parameterSettings.add_argument('-maxb', '--maxBandwidth', type=float, default=10.0, help='The upper bound of bandwidth value')
parameterSettings.add_argument('-br', '--bandwidthResolution', type=int, default=21, help='The number of bandwidth steps')
parameterSettings.add_argument('-mind', '--minLogDelta', type=float, default=.02, help='The lower bound of logdelta value')
parameterSettings.add_argument('-maxd', '--maxLogDelta', type=float, default=2.0, help='The upper bound of logdelta value')
parameterSettings.add_argument('-dr', '--logDeltaResolution', type=int, default=21, help='The number of logdelta steps')

Commit 2. The peak sensitivity space and peak frequency space should be subspaces of stimuli spaces (1/contrast, frequency). Thus, a simple parameter validation is added to check whether the range of peak sensitivity is smaller than the range of 1/contrast. For example, the range of contrast (0.01, 1) corresponds to the range of sensitivity (1, 100). However, it is too small for searching the value of peak sensitivity in the range of (2, 1000).

@domstoppable

Copy link
Copy Markdown
Member

Emailed this to you, but also writing here just in case:

With your other changes in place, we should also modify the inputs to simulations (simulate.py, runSimulation()) so that the true parameter values (truePeakSensitivity, truePeakFrequency, trueBandwidth, trueDelta) can be specified as real-values, rather than indexes, with units matching what's generated as output. If you can do that, then users will never have to deal with indexes - they will only work with real values for both input and output, which would be great. It's also necessary for running simulations with edge-cases like when a parameter's true value falls outside of the range that's been set.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kinpzz@domstoppable
, '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

Support to specify the range and resolution of parameter spaces - #5

Open
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master
Open

Support to specify the range and resolution of parameter spaces#5
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master

Conversation

@Kinpzz

Copy link
Copy Markdown

Commit 1. The hard-code mapping function is replaced by the mapping function based on specific parameter spaces defined by users. The original hard-code mapping function can be regarded as the mapping function of the parameter space with special ranges and resolutions, which are served as the default values of the new mapping function.

peakSensitivity = 0.1*params[:,0] + 0.3
peakFrequency = -0.7 + 0.1*params[:,1]
bandwidth = 0.05 * params[:,2]
logDelta = -1.7 + 0.1 * params[:,3]
parameterSettings = parser.add_argument_group('Parameters')
parameterSettings.add_argument('-minps', '--minPeakSensitivity', type=float, default=2.0, help='The lower bound of peak sensitivity value (>1.0)')
parameterSettings.add_argument('-maxps', '--maxPeakSensitivity', type=float, default=1000.0, help='The upper bound of peak sensitivity value')
parameterSettings.add_argument('-psr', '--peakSensitivityResolution', type=int, default=28, help='The number of peak sensitivity steps')
parameterSettings.add_argument('-minpf', '--minPeakFrequency', type=float, default=.2, help='The lower bound of peak frequency value (>0)')
parameterSettings.add_argument('-maxpf', '--maxPeakFrequency', type=float, default=20.0, help='The upper bound of peak frequency value')
parameterSettings.add_argument('-pfr', '--peakFrequencyResolution', type=int, default=21, help='The number of peak frequency steps')
parameterSettings.add_argument('-minb', '--minBandwidth', type=float, default=1.0, help='The lower bound of bandwidth value')
parameterSettings.add_argument('-maxb', '--maxBandwidth', type=float, default=10.0, help='The upper bound of bandwidth value')
parameterSettings.add_argument('-br', '--bandwidthResolution', type=int, default=21, help='The number of bandwidth steps')
parameterSettings.add_argument('-mind', '--minLogDelta', type=float, default=.02, help='The lower bound of logdelta value')
parameterSettings.add_argument('-maxd', '--maxLogDelta', type=float, default=2.0, help='The upper bound of logdelta value')
parameterSettings.add_argument('-dr', '--logDeltaResolution', type=int, default=21, help='The number of logdelta steps')

Commit 2. The peak sensitivity space and peak frequency space should be subspaces of stimuli spaces (1/contrast, frequency). Thus, a simple parameter validation is added to check whether the range of peak sensitivity is smaller than the range of 1/contrast. For example, the range of contrast (0.01, 1) corresponds to the range of sensitivity (1, 100). However, it is too small for searching the value of peak sensitivity in the range of (2, 1000).

@domstoppable

Copy link
Copy Markdown
Member

Emailed this to you, but also writing here just in case:

With your other changes in place, we should also modify the inputs to simulations (simulate.py, runSimulation()) so that the true parameter values (truePeakSensitivity, truePeakFrequency, trueBandwidth, trueDelta) can be specified as real-values, rather than indexes, with units matching what's generated as output. If you can do that, then users will never have to deal with indexes - they will only work with real values for both input and output, which would be great. It's also necessary for running simulations with edge-cases like when a parameter's true value falls outside of the range that's been set.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kinpzz@domstoppable
, '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

Support to specify the range and resolution of parameter spaces - #5

Open
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master
Open

Support to specify the range and resolution of parameter spaces#5
Kinpzz wants to merge 2 commits into
vpclab:masterfrom
Kinpzz:master

Conversation

@Kinpzz

Copy link
Copy Markdown

Commit 1. The hard-code mapping function is replaced by the mapping function based on specific parameter spaces defined by users. The original hard-code mapping function can be regarded as the mapping function of the parameter space with special ranges and resolutions, which are served as the default values of the new mapping function.

peakSensitivity = 0.1*params[:,0] + 0.3
peakFrequency = -0.7 + 0.1*params[:,1]
bandwidth = 0.05 * params[:,2]
logDelta = -1.7 + 0.1 * params[:,3]
parameterSettings = parser.add_argument_group('Parameters')
parameterSettings.add_argument('-minps', '--minPeakSensitivity', type=float, default=2.0, help='The lower bound of peak sensitivity value (>1.0)')
parameterSettings.add_argument('-maxps', '--maxPeakSensitivity', type=float, default=1000.0, help='The upper bound of peak sensitivity value')
parameterSettings.add_argument('-psr', '--peakSensitivityResolution', type=int, default=28, help='The number of peak sensitivity steps')
parameterSettings.add_argument('-minpf', '--minPeakFrequency', type=float, default=.2, help='The lower bound of peak frequency value (>0)')
parameterSettings.add_argument('-maxpf', '--maxPeakFrequency', type=float, default=20.0, help='The upper bound of peak frequency value')
parameterSettings.add_argument('-pfr', '--peakFrequencyResolution', type=int, default=21, help='The number of peak frequency steps')
parameterSettings.add_argument('-minb', '--minBandwidth', type=float, default=1.0, help='The lower bound of bandwidth value')
parameterSettings.add_argument('-maxb', '--maxBandwidth', type=float, default=10.0, help='The upper bound of bandwidth value')
parameterSettings.add_argument('-br', '--bandwidthResolution', type=int, default=21, help='The number of bandwidth steps')
parameterSettings.add_argument('-mind', '--minLogDelta', type=float, default=.02, help='The lower bound of logdelta value')
parameterSettings.add_argument('-maxd', '--maxLogDelta', type=float, default=2.0, help='The upper bound of logdelta value')
parameterSettings.add_argument('-dr', '--logDeltaResolution', type=int, default=21, help='The number of logdelta steps')

Commit 2. The peak sensitivity space and peak frequency space should be subspaces of stimuli spaces (1/contrast, frequency). Thus, a simple parameter validation is added to check whether the range of peak sensitivity is smaller than the range of 1/contrast. For example, the range of contrast (0.01, 1) corresponds to the range of sensitivity (1, 100). However, it is too small for searching the value of peak sensitivity in the range of (2, 1000).

@domstoppable

Copy link
Copy Markdown
Member

Emailed this to you, but also writing here just in case:

With your other changes in place, we should also modify the inputs to simulations (simulate.py, runSimulation()) so that the true parameter values (truePeakSensitivity, truePeakFrequency, trueBandwidth, trueDelta) can be specified as real-values, rather than indexes, with units matching what's generated as output. If you can do that, then users will never have to deal with indexes - they will only work with real values for both input and output, which would be great. It's also necessary for running simulations with edge-cases like when a parameter's true value falls outside of the range that's been set.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kinpzz@domstoppable