Repository files navigation

python-SLM

Set of routines in Python used to control a Spatial Light Modulator. It is assumed that the SLM is connected to a secondary monitor.

Important!!! The code requires the following modules installed:

Files

FileDescription
generate_Laguerre_Gauss_SLM.pyFile that generates a phase mask for a LG beam and displays it on a SLM
generate_Laguerre_Gauss_split_SLM.pyProgram that splits the SLM into two equal regions. In each region is generated an independent phase mask of a LG beam

Files description

generate_Laguerre_Gauss_SLM.py

The file generates a phase mask for a LG beam with a charge specified by the user. The mask can be saved as a bmp file, displayed on the main monitor, or can be sent to the SLM.

How to use it

To use the function, just write python generate_Laguerre_Gauss_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples

  • Use python generate_Laguerre_Gauss_SLM.py -c 10, to generate a phase mask (LG beam charge +10) that is shown only in the main screen.
  • To save the image in a bmp file, use python generate_Laguerre_Gauss_SLM.py -c 10 -b. The file will be saved as LG_ch_10.bmp.
  • To generate and send to the SLM a phase mask for a LG beam with charge -5, use python generate_Laguerre_Gauss_SLM.py -c -5 -m -s. Notice that the option -m specifies to use the correction mask provided by the manufacturer.

generate_Laguerre_Gauss_split_SLM.py

Program that splits the SLM into two equal regions and in each region generates a phase mask of an independent Laguerre Gauss beam with a CHARGE provided by the user.

The whole image is sent to the second monitor output where the SLM is connected. The mask generated is also shown in the main monitor in a small window.

How to use it

To use the function, just write python generate_Laguerre_Gauss_split_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam. Two indices are required.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD. Two indices are required.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples:

  • Use python generate_Laguerre_Gauss_split_SLM.py -c 10 -5, to split the screen into two regions | LG +10 | LG -5 |. In the left (right) region, a LG beam with charge +10 (-5) is displayed.
  • To send to the image generated in the previous example to the SLM, just add -s at the end. That is python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -s
  • To save a mask generated, use the command -m. The command python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -b. Saves the image in the bmp file LG_ch_chargeLeft_chargeRight.bmp; in this case LG_ch_10_-5.bmp.

About

Set of routines in Python used to control a Spatial Light Modulator

Resources

Stars

13 stars

Watchers

4 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

python-SLM

Set of routines in Python used to control a Spatial Light Modulator. It is assumed that the SLM is connected to a secondary monitor.

Important!!! The code requires the following modules installed:

Files

FileDescription
generate_Laguerre_Gauss_SLM.pyFile that generates a phase mask for a LG beam and displays it on a SLM
generate_Laguerre_Gauss_split_SLM.pyProgram that splits the SLM into two equal regions. In each region is generated an independent phase mask of a LG beam

Files description

generate_Laguerre_Gauss_SLM.py

The file generates a phase mask for a LG beam with a charge specified by the user. The mask can be saved as a bmp file, displayed on the main monitor, or can be sent to the SLM.

How to use it

To use the function, just write python generate_Laguerre_Gauss_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples

  • Use python generate_Laguerre_Gauss_SLM.py -c 10, to generate a phase mask (LG beam charge +10) that is shown only in the main screen.
  • To save the image in a bmp file, use python generate_Laguerre_Gauss_SLM.py -c 10 -b. The file will be saved as LG_ch_10.bmp.
  • To generate and send to the SLM a phase mask for a LG beam with charge -5, use python generate_Laguerre_Gauss_SLM.py -c -5 -m -s. Notice that the option -m specifies to use the correction mask provided by the manufacturer.

generate_Laguerre_Gauss_split_SLM.py

Program that splits the SLM into two equal regions and in each region generates a phase mask of an independent Laguerre Gauss beam with a CHARGE provided by the user.

The whole image is sent to the second monitor output where the SLM is connected. The mask generated is also shown in the main monitor in a small window.

How to use it

To use the function, just write python generate_Laguerre_Gauss_split_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam. Two indices are required.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD. Two indices are required.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples:

  • Use python generate_Laguerre_Gauss_split_SLM.py -c 10 -5, to split the screen into two regions | LG +10 | LG -5 |. In the left (right) region, a LG beam with charge +10 (-5) is displayed.
  • To send to the image generated in the previous example to the SLM, just add -s at the end. That is python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -s
  • To save a mask generated, use the command -m. The command python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -b. Saves the image in the bmp file LG_ch_chargeLeft_chargeRight.bmp; in this case LG_ch_10_-5.bmp.

About

Set of routines in Python used to control a Spatial Light Modulator

Resources

Stars

13 stars

Watchers

4 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

python-SLM

Set of routines in Python used to control a Spatial Light Modulator. It is assumed that the SLM is connected to a secondary monitor.

Important!!! The code requires the following modules installed:

Files

FileDescription
generate_Laguerre_Gauss_SLM.pyFile that generates a phase mask for a LG beam and displays it on a SLM
generate_Laguerre_Gauss_split_SLM.pyProgram that splits the SLM into two equal regions. In each region is generated an independent phase mask of a LG beam

Files description

generate_Laguerre_Gauss_SLM.py

The file generates a phase mask for a LG beam with a charge specified by the user. The mask can be saved as a bmp file, displayed on the main monitor, or can be sent to the SLM.

How to use it

To use the function, just write python generate_Laguerre_Gauss_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples

  • Use python generate_Laguerre_Gauss_SLM.py -c 10, to generate a phase mask (LG beam charge +10) that is shown only in the main screen.
  • To save the image in a bmp file, use python generate_Laguerre_Gauss_SLM.py -c 10 -b. The file will be saved as LG_ch_10.bmp.
  • To generate and send to the SLM a phase mask for a LG beam with charge -5, use python generate_Laguerre_Gauss_SLM.py -c -5 -m -s. Notice that the option -m specifies to use the correction mask provided by the manufacturer.

generate_Laguerre_Gauss_split_SLM.py

Program that splits the SLM into two equal regions and in each region generates a phase mask of an independent Laguerre Gauss beam with a CHARGE provided by the user.

The whole image is sent to the second monitor output where the SLM is connected. The mask generated is also shown in the main monitor in a small window.

How to use it

To use the function, just write python generate_Laguerre_Gauss_split_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam. Two indices are required.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD. Two indices are required.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples:

  • Use python generate_Laguerre_Gauss_split_SLM.py -c 10 -5, to split the screen into two regions | LG +10 | LG -5 |. In the left (right) region, a LG beam with charge +10 (-5) is displayed.
  • To send to the image generated in the previous example to the SLM, just add -s at the end. That is python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -s
  • To save a mask generated, use the command -m. The command python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -b. Saves the image in the bmp file LG_ch_chargeLeft_chargeRight.bmp; in this case LG_ch_10_-5.bmp.

About

Set of routines in Python used to control a Spatial Light Modulator

Resources

Stars

13 stars

Watchers

4 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

python-SLM

Set of routines in Python used to control a Spatial Light Modulator. It is assumed that the SLM is connected to a secondary monitor.

Important!!! The code requires the following modules installed:

Files

FileDescription
generate_Laguerre_Gauss_SLM.pyFile that generates a phase mask for a LG beam and displays it on a SLM
generate_Laguerre_Gauss_split_SLM.pyProgram that splits the SLM into two equal regions. In each region is generated an independent phase mask of a LG beam

Files description

generate_Laguerre_Gauss_SLM.py

The file generates a phase mask for a LG beam with a charge specified by the user. The mask can be saved as a bmp file, displayed on the main monitor, or can be sent to the SLM.

How to use it

To use the function, just write python generate_Laguerre_Gauss_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples

  • Use python generate_Laguerre_Gauss_SLM.py -c 10, to generate a phase mask (LG beam charge +10) that is shown only in the main screen.
  • To save the image in a bmp file, use python generate_Laguerre_Gauss_SLM.py -c 10 -b. The file will be saved as LG_ch_10.bmp.
  • To generate and send to the SLM a phase mask for a LG beam with charge -5, use python generate_Laguerre_Gauss_SLM.py -c -5 -m -s. Notice that the option -m specifies to use the correction mask provided by the manufacturer.

generate_Laguerre_Gauss_split_SLM.py

Program that splits the SLM into two equal regions and in each region generates a phase mask of an independent Laguerre Gauss beam with a CHARGE provided by the user.

The whole image is sent to the second monitor output where the SLM is connected. The mask generated is also shown in the main monitor in a small window.

How to use it

To use the function, just write python generate_Laguerre_Gauss_split_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam. Two indices are required.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD. Two indices are required.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples:

  • Use python generate_Laguerre_Gauss_split_SLM.py -c 10 -5, to split the screen into two regions | LG +10 | LG -5 |. In the left (right) region, a LG beam with charge +10 (-5) is displayed.
  • To send to the image generated in the previous example to the SLM, just add -s at the end. That is python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -s
  • To save a mask generated, use the command -m. The command python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -b. Saves the image in the bmp file LG_ch_chargeLeft_chargeRight.bmp; in this case LG_ch_10_-5.bmp.

About

Set of routines in Python used to control a Spatial Light Modulator

Resources

Stars

13 stars

Watchers

4 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

python-SLM

Set of routines in Python used to control a Spatial Light Modulator. It is assumed that the SLM is connected to a secondary monitor.

Important!!! The code requires the following modules installed:

Files

FileDescription
generate_Laguerre_Gauss_SLM.pyFile that generates a phase mask for a LG beam and displays it on a SLM
generate_Laguerre_Gauss_split_SLM.pyProgram that splits the SLM into two equal regions. In each region is generated an independent phase mask of a LG beam

Files description

generate_Laguerre_Gauss_SLM.py

The file generates a phase mask for a LG beam with a charge specified by the user. The mask can be saved as a bmp file, displayed on the main monitor, or can be sent to the SLM.

How to use it

To use the function, just write python generate_Laguerre_Gauss_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples

  • Use python generate_Laguerre_Gauss_SLM.py -c 10, to generate a phase mask (LG beam charge +10) that is shown only in the main screen.
  • To save the image in a bmp file, use python generate_Laguerre_Gauss_SLM.py -c 10 -b. The file will be saved as LG_ch_10.bmp.
  • To generate and send to the SLM a phase mask for a LG beam with charge -5, use python generate_Laguerre_Gauss_SLM.py -c -5 -m -s. Notice that the option -m specifies to use the correction mask provided by the manufacturer.

generate_Laguerre_Gauss_split_SLM.py

Program that splits the SLM into two equal regions and in each region generates a phase mask of an independent Laguerre Gauss beam with a CHARGE provided by the user.

The whole image is sent to the second monitor output where the SLM is connected. The mask generated is also shown in the main monitor in a small window.

How to use it

To use the function, just write python generate_Laguerre_Gauss_split_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam. Two indices are required.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD. Two indices are required.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples:

  • Use python generate_Laguerre_Gauss_split_SLM.py -c 10 -5, to split the screen into two regions | LG +10 | LG -5 |. In the left (right) region, a LG beam with charge +10 (-5) is displayed.
  • To send to the image generated in the previous example to the SLM, just add -s at the end. That is python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -s
  • To save a mask generated, use the command -m. The command python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -b. Saves the image in the bmp file LG_ch_chargeLeft_chargeRight.bmp; in this case LG_ch_10_-5.bmp.

About

Set of routines in Python used to control a Spatial Light Modulator

Resources

Stars

13 stars

Watchers

4 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

python-SLM

Set of routines in Python used to control a Spatial Light Modulator. It is assumed that the SLM is connected to a secondary monitor.

Important!!! The code requires the following modules installed:

Files

FileDescription
generate_Laguerre_Gauss_SLM.pyFile that generates a phase mask for a LG beam and displays it on a SLM
generate_Laguerre_Gauss_split_SLM.pyProgram that splits the SLM into two equal regions. In each region is generated an independent phase mask of a LG beam

Files description

generate_Laguerre_Gauss_SLM.py

The file generates a phase mask for a LG beam with a charge specified by the user. The mask can be saved as a bmp file, displayed on the main monitor, or can be sent to the SLM.

How to use it

To use the function, just write python generate_Laguerre_Gauss_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples

  • Use python generate_Laguerre_Gauss_SLM.py -c 10, to generate a phase mask (LG beam charge +10) that is shown only in the main screen.
  • To save the image in a bmp file, use python generate_Laguerre_Gauss_SLM.py -c 10 -b. The file will be saved as LG_ch_10.bmp.
  • To generate and send to the SLM a phase mask for a LG beam with charge -5, use python generate_Laguerre_Gauss_SLM.py -c -5 -m -s. Notice that the option -m specifies to use the correction mask provided by the manufacturer.

generate_Laguerre_Gauss_split_SLM.py

Program that splits the SLM into two equal regions and in each region generates a phase mask of an independent Laguerre Gauss beam with a CHARGE provided by the user.

The whole image is sent to the second monitor output where the SLM is connected. The mask generated is also shown in the main monitor in a small window.

How to use it

To use the function, just write python generate_Laguerre_Gauss_split_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam. Two indices are required.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD. Two indices are required.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples:

  • Use python generate_Laguerre_Gauss_split_SLM.py -c 10 -5, to split the screen into two regions | LG +10 | LG -5 |. In the left (right) region, a LG beam with charge +10 (-5) is displayed.
  • To send to the image generated in the previous example to the SLM, just add -s at the end. That is python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -s
  • To save a mask generated, use the command -m. The command python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -b. Saves the image in the bmp file LG_ch_chargeLeft_chargeRight.bmp; in this case LG_ch_10_-5.bmp.

About

Set of routines in Python used to control a Spatial Light Modulator

Resources

Stars

13 stars

Watchers

4 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

python-SLM

Set of routines in Python used to control a Spatial Light Modulator. It is assumed that the SLM is connected to a secondary monitor.

Important!!! The code requires the following modules installed:

Files

FileDescription
generate_Laguerre_Gauss_SLM.pyFile that generates a phase mask for a LG beam and displays it on a SLM
generate_Laguerre_Gauss_split_SLM.pyProgram that splits the SLM into two equal regions. In each region is generated an independent phase mask of a LG beam

Files description

generate_Laguerre_Gauss_SLM.py

The file generates a phase mask for a LG beam with a charge specified by the user. The mask can be saved as a bmp file, displayed on the main monitor, or can be sent to the SLM.

How to use it

To use the function, just write python generate_Laguerre_Gauss_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples

  • Use python generate_Laguerre_Gauss_SLM.py -c 10, to generate a phase mask (LG beam charge +10) that is shown only in the main screen.
  • To save the image in a bmp file, use python generate_Laguerre_Gauss_SLM.py -c 10 -b. The file will be saved as LG_ch_10.bmp.
  • To generate and send to the SLM a phase mask for a LG beam with charge -5, use python generate_Laguerre_Gauss_SLM.py -c -5 -m -s. Notice that the option -m specifies to use the correction mask provided by the manufacturer.

generate_Laguerre_Gauss_split_SLM.py

Program that splits the SLM into two equal regions and in each region generates a phase mask of an independent Laguerre Gauss beam with a CHARGE provided by the user.

The whole image is sent to the second monitor output where the SLM is connected. The mask generated is also shown in the main monitor in a small window.

How to use it

To use the function, just write python generate_Laguerre_Gauss_split_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam. Two indices are required.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD. Two indices are required.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples:

  • Use python generate_Laguerre_Gauss_split_SLM.py -c 10 -5, to split the screen into two regions | LG +10 | LG -5 |. In the left (right) region, a LG beam with charge +10 (-5) is displayed.
  • To send to the image generated in the previous example to the SLM, just add -s at the end. That is python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -s
  • To save a mask generated, use the command -m. The command python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -b. Saves the image in the bmp file LG_ch_chargeLeft_chargeRight.bmp; in this case LG_ch_10_-5.bmp.

About

Set of routines in Python used to control a Spatial Light Modulator

Resources

Stars

13 stars

Watchers

4 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

python-SLM

Set of routines in Python used to control a Spatial Light Modulator. It is assumed that the SLM is connected to a secondary monitor.

Important!!! The code requires the following modules installed:

Files

FileDescription
generate_Laguerre_Gauss_SLM.pyFile that generates a phase mask for a LG beam and displays it on a SLM
generate_Laguerre_Gauss_split_SLM.pyProgram that splits the SLM into two equal regions. In each region is generated an independent phase mask of a LG beam

Files description

generate_Laguerre_Gauss_SLM.py

The file generates a phase mask for a LG beam with a charge specified by the user. The mask can be saved as a bmp file, displayed on the main monitor, or can be sent to the SLM.

How to use it

To use the function, just write python generate_Laguerre_Gauss_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples

  • Use python generate_Laguerre_Gauss_SLM.py -c 10, to generate a phase mask (LG beam charge +10) that is shown only in the main screen.
  • To save the image in a bmp file, use python generate_Laguerre_Gauss_SLM.py -c 10 -b. The file will be saved as LG_ch_10.bmp.
  • To generate and send to the SLM a phase mask for a LG beam with charge -5, use python generate_Laguerre_Gauss_SLM.py -c -5 -m -s. Notice that the option -m specifies to use the correction mask provided by the manufacturer.

generate_Laguerre_Gauss_split_SLM.py

Program that splits the SLM into two equal regions and in each region generates a phase mask of an independent Laguerre Gauss beam with a CHARGE provided by the user.

The whole image is sent to the second monitor output where the SLM is connected. The mask generated is also shown in the main monitor in a small window.

How to use it

To use the function, just write python generate_Laguerre_Gauss_split_SLM.py [options], where the options are the following:

  • -c CHARGE sets the CHARGE of the LG beam. Two indices are required.
  • -w RADIUS use this option to put a circular mask centered in the screen center with radius RADIUS.
  • -g PERIOD add a grating to the LG phase. The period in pixels is specified with the variable PERIOD. Two indices are required.
  • -s when added the image generated is sent to the SLM (by default the phase mask is not sent to the SLM).
  • -m when added, the SLM correction mask provided by the manufacturer is applied to the phase mask.
  • -b when added, the image of the phase mask is stored in the bmp file "LG_ch_CHARGE.bmp", where CHARGE is specified with the option -c.

The correction mask file has to be stored in the same folder as the python file. To change the mask file name, just change the line after the comment change 'correctionMaskFile' according to your correction mask file.

To exit, press 'q' after clicking on the 'phase mask' window.

Usage examples:

  • Use python generate_Laguerre_Gauss_split_SLM.py -c 10 -5, to split the screen into two regions | LG +10 | LG -5 |. In the left (right) region, a LG beam with charge +10 (-5) is displayed.
  • To send to the image generated in the previous example to the SLM, just add -s at the end. That is python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -s
  • To save a mask generated, use the command -m. The command python generate_Laguerre_Gauss_split_SLM.py -c 10 -5 -b. Saves the image in the bmp file LG_ch_chargeLeft_chargeRight.bmp; in this case LG_ch_10_-5.bmp.

About

Set of routines in Python used to control a Spatial Light Modulator

Resources

Stars

13 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages