-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit b226669
Showing
61 changed files
with
8,189 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Sphinx build info version 1 | ||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||
config: b63bcca9785d567ef22dc914ac9584ca | ||
tags: 645f666f9bcd5a90fca523b33c5a78b7 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
========== | ||
Areas | ||
========== | ||
|
||
|
||
|
||
Area Class | ||
========== | ||
|
||
Area classes are generated using yaml configuration files. | ||
To make their usage easier, lcls-tools has a function for generating configured Areas. | ||
Please see the example usage below: | ||
|
||
.. code-block:: python | ||
:linenos: | ||
"""Example usage for creating areas """ | ||
from lcls_tools.common.devices.reader import create_area | ||
# Generate area for L1B | ||
L1B = create_area('L1B') | ||
# After creation, we can access devices collections and print their names | ||
# and perform group operations on subsets of the area devices | ||
magnet_collection = L1B.magnet_collection | ||
print(magnet_collection.device_names) | ||
# If we want to directly access individual devices, we can do this: | ||
magnets = L1B.magnets | ||
print(magnets['QCM02'].name) | ||
print(magnets['QCM02'].bdes) | ||
print(magnets['QCM02'].bact) | ||
# After creation, we can access devices collections and print their names | ||
# and perform group operations on subsets of the area devices | ||
DOG = create_area('DOG') | ||
screen_collection = DOG.screen_collection | ||
print(screen_collection.device_names) | ||
# If we want to directly access individual devices, we can do this: | ||
screens = DOG.screens | ||
print('Name: ', screens['OTRDOG'].name) | ||
print(f'Dimensions: ({screens['OTRDOG'].n_rows}, {screens['OTRDOG'].n_cols}).') | ||
print(f'Resolution: {screens['OTRDOG'].resolution) | ||
.. autoclass:: lcls_tools.common.devices.area.Area | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
=========== | ||
Beam Paths | ||
=========== | ||
|
||
|
||
Superconducting Beampaths | ||
=========================== | ||
|
||
.. code-block:: python | ||
:linenos: | ||
'''' Example usage of creating the Superconducting Hard X-Ray beampath '''' | ||
from lcls-tools.superconducting.beampaths import SC_HXR | ||
# Setup the beampath object | ||
beampath = SC_HXR() | ||
print(beampath.name) | ||
# Check if the areas exist in the beampath | ||
check_areas = ['L0B', 'HTR', 'L2B'] | ||
print(beampath.contains_areas(check_areas)) | ||
# Get the Area object for L2B | ||
L0 = beampath.areas['L2B'] | ||
# Get the magnets for L2B | ||
L0_magnets = beampath.areas['L2B'].magnets | ||
# Get the screens for L2B | ||
L0_screens = beampath.areas['L2B'].screens | ||
.. automodule:: lcls_tools.superconducting.beampaths | ||
:members: | ||
|
||
Below is the list of areas for each superconducting beampath | ||
|
||
.. literalinclude:: ../../lcls_tools/common/devices/yaml/beampaths.yaml | ||
:lines: 1-62 | ||
:language: yaml | ||
:linenos: | ||
|
||
|
||
Normalconducting Beampaths | ||
=========================== | ||
|
||
.. code-block:: python | ||
:linenos: | ||
'''' Example usage of creating the Normalconducting Hard X-Ray beampath '''' | ||
from lcls-tools.normalconducting.beampaths import CU_HXR | ||
# Setup the beampath object | ||
beampath = CU_HXR() | ||
print(beampath.name) | ||
# Check if the areas exist in the beampath | ||
check_areas = ['L0', 'L1', 'L2'] | ||
print(beampath.contains_areas(check_areas)) | ||
# Get the Area object for L0 | ||
L0 = beampath.areas['L0'] | ||
# Get the magnets for L0 | ||
L0_magnets = beampath.areas['L0'].magnets | ||
# Get the screens for L0 | ||
L0_screens = beampath.areas['L0'].screens | ||
.. automodule:: lcls_tools.normalconducting.beampaths | ||
:members: | ||
|
||
Below is the list of areas for each normalconducting beampath | ||
|
||
.. literalinclude:: ../../lcls_tools/common/devices/yaml/beampaths.yaml | ||
:lines: 62- | ||
:language: yaml | ||
:linenos: | ||
|
||
|
||
|
||
Beampath | ||
============== | ||
|
||
.. autoclass:: lcls_tools.common.devices.beampath.Beampath | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
======= | ||
Devices | ||
======= | ||
|
||
Device Classes | ||
================= | ||
|
||
All functions and properties below should be common to all Devices | ||
|
||
.. autoclass:: lcls_tools.common.devices.device.Device | ||
:members: | ||
|
||
The devices below allow users to perform operations on individual devices of a given type. | ||
|
||
.. autoclass:: lcls_tools.common.devices.magnet.Magnet | ||
:members: | ||
|
||
.. autoclass:: lcls_tools.common.devices.screen.Screen | ||
:members: | ||
|
||
|
||
Device Collections | ||
====================== | ||
|
||
All functions and properties below should be common to all DeviceCollections | ||
|
||
.. autoclass:: lcls_tools.common.devices.device.DeviceCollection | ||
:members: | ||
|
||
The collections below allow users to perform group operations on given device types | ||
|
||
.. autoclass:: lcls_tools.common.devices.magnet.MagnetCollection | ||
:members: | ||
|
||
.. autoclass:: lcls_tools.common.devices.screen.ScreenCollection | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
================ | ||
Image Processing | ||
================ | ||
|
||
Image | ||
===== | ||
.. automodule:: lcls_tools.common.image.image | ||
:members: | ||
:undoc-members: | ||
|
||
.. automodule:: lcls_tools.common.image.processing | ||
:members: | ||
:undoc-members: | ||
|
||
.. automodule:: lcls_tools.common.image.roi | ||
:members: | ||
:undoc-members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
.. lcls-tools documentation master file, created by | ||
sphinx-quickstart on Tue Nov 21 22:33:38 2023. | ||
You can adapt this file completely to your liking, but it should at least | ||
contain the root `toctree` directive. | ||
Welcome to lcls-tools's documentation! | ||
====================================== | ||
|
||
.. toctree:: | ||
:maxdepth: 2 | ||
:caption: Contents: | ||
|
||
beampath.rst | ||
area.rst | ||
devices.rst | ||
|
||
image_processing.rst | ||
matlab2py.rst | ||
|
||
|
||
Indices and tables | ||
================== | ||
|
||
* :ref:`genindex` | ||
* :ref:`modindex` | ||
* :ref:`search` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
====================== | ||
Matlab to Python Tools | ||
====================== | ||
|
||
Emittance Scans | ||
=============== | ||
|
||
.. autoclass:: lcls_tools.common.matlab2py.mat_emit_scan.MatEmitScan | ||
:members: | ||
:undoc-members: | ||
|
||
Corr Plot Scans | ||
=============== | ||
|
||
.. autoclass:: lcls_tools.common.matlab2py.mat_corr_plot.CorPlotMatScan | ||
:members: | ||
:undoc-members: | ||
|
||
Images | ||
====== | ||
|
||
.. autoclass:: lcls_tools.common.matlab2py.mat_image.MatImage | ||
:members: | ||
:undoc-members: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
/* Compatability shim for jQuery and underscores.js. | ||
* | ||
* Copyright Sphinx contributors | ||
* Released under the two clause BSD licence | ||
*/ | ||
|
||
/** | ||
* small helper function to urldecode strings | ||
* | ||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL | ||
*/ | ||
jQuery.urldecode = function(x) { | ||
if (!x) { | ||
return x | ||
} | ||
return decodeURIComponent(x.replace(/\+/g, ' ')); | ||
}; | ||
|
||
/** | ||
* small helper function to urlencode strings | ||
*/ | ||
jQuery.urlencode = encodeURIComponent; | ||
|
||
/** | ||
* This function returns the parsed url parameters of the | ||
* current request. Multiple values per key are supported, | ||
* it will always return arrays of strings for the value parts. | ||
*/ | ||
jQuery.getQueryParameters = function(s) { | ||
if (typeof s === 'undefined') | ||
s = document.location.search; | ||
var parts = s.substr(s.indexOf('?') + 1).split('&'); | ||
var result = {}; | ||
for (var i = 0; i < parts.length; i++) { | ||
var tmp = parts[i].split('=', 2); | ||
var key = jQuery.urldecode(tmp[0]); | ||
var value = jQuery.urldecode(tmp[1]); | ||
if (key in result) | ||
result[key].push(value); | ||
else | ||
result[key] = [value]; | ||
} | ||
return result; | ||
}; | ||
|
||
/** | ||
* highlight a given string on a jquery object by wrapping it in | ||
* span elements with the given class name. | ||
*/ | ||
jQuery.fn.highlightText = function(text, className) { | ||
function highlight(node, addItems) { | ||
if (node.nodeType === 3) { | ||
var val = node.nodeValue; | ||
var pos = val.toLowerCase().indexOf(text); | ||
if (pos >= 0 && | ||
!jQuery(node.parentNode).hasClass(className) && | ||
!jQuery(node.parentNode).hasClass("nohighlight")) { | ||
var span; | ||
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); | ||
if (isInSVG) { | ||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); | ||
} else { | ||
span = document.createElement("span"); | ||
span.className = className; | ||
} | ||
span.appendChild(document.createTextNode(val.substr(pos, text.length))); | ||
node.parentNode.insertBefore(span, node.parentNode.insertBefore( | ||
document.createTextNode(val.substr(pos + text.length)), | ||
node.nextSibling)); | ||
node.nodeValue = val.substr(0, pos); | ||
if (isInSVG) { | ||
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); | ||
var bbox = node.parentElement.getBBox(); | ||
rect.x.baseVal.value = bbox.x; | ||
rect.y.baseVal.value = bbox.y; | ||
rect.width.baseVal.value = bbox.width; | ||
rect.height.baseVal.value = bbox.height; | ||
rect.setAttribute('class', className); | ||
addItems.push({ | ||
"parent": node.parentNode, | ||
"target": rect}); | ||
} | ||
} | ||
} | ||
else if (!jQuery(node).is("button, select, textarea")) { | ||
jQuery.each(node.childNodes, function() { | ||
highlight(this, addItems); | ||
}); | ||
} | ||
} | ||
var addItems = []; | ||
var result = this.each(function() { | ||
highlight(this, addItems); | ||
}); | ||
for (var i = 0; i < addItems.length; ++i) { | ||
jQuery(addItems[i].parent).before(addItems[i].target); | ||
} | ||
return result; | ||
}; | ||
|
||
/* | ||
* backward compatibility for jQuery.browser | ||
* This will be supported until firefox bug is fixed. | ||
*/ | ||
if (!jQuery.browser) { | ||
jQuery.uaMatch = function(ua) { | ||
ua = ua.toLowerCase(); | ||
|
||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || | ||
/(webkit)[ \/]([\w.]+)/.exec(ua) || | ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || | ||
/(msie) ([\w.]+)/.exec(ua) || | ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || | ||
[]; | ||
|
||
return { | ||
browser: match[ 1 ] || "", | ||
version: match[ 2 ] || "0" | ||
}; | ||
}; | ||
jQuery.browser = {}; | ||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; | ||
} |
Oops, something went wrong.