Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
851e6ce
Initial toml file
tacaswell Aug 26, 2025
0311599
Regenerate with current versions
tacaswell Aug 26, 2025
670c60b
MNT: add additional packages needed to import CMS profile
tacaswell Aug 27, 2025
48b76c7
MNT: comment out dead code
tacaswell Aug 29, 2025
7ccddc1
MNT: use raw strings for invalid string escapes
tacaswell Aug 29, 2025
92bb475
Add hdf5 plugins and standardize Python pinning
tacaswell Sep 3, 2025
fac996d
update lockfile
tacaswell Sep 3, 2025
581a38a
Update lock file
tacaswell Sep 4, 2025
56d705f
update core pins
tacaswell Sep 4, 2025
9c8d262
regenerate lock
tacaswell Sep 4, 2025
6692392
Update versions
tacaswell Sep 4, 2025
3b86dc2
Adding more third-party floors
tacaswell Sep 4, 2025
d92a524
Remove accidental 'default' environment
tacaswell Sep 5, 2025
100ac97
Update versions
tacaswell Sep 5, 2025
d478fbe
MNT: update ophyd-async and pull more from CF
tacaswell Sep 9, 2025
ba26245
Manage envs when lanuching terminal
tacaswell Oct 22, 2025
5afad7d
Update and regenerate lock
tacaswell Oct 22, 2025
4a150c5
MNT: change from deprecated section name
tacaswell Nov 7, 2025
b40b6d6
Update pixi.toml for new packages
tacaswell Nov 7, 2025
3a3e4fb
BLD: update lock file
tacaswell Nov 7, 2025
2a69b6f
Add pvxslibs
tacaswell Nov 17, 2025
1c2e7a7
Update pixi.toml for new packages
tacaswell Nov 17, 2025
f55f5b0
ENH: switch ophyd-async for conda-forge
tacaswell Nov 24, 2025
95a7473
MNT: ignore PYTHONPATH when launching terminal
tacaswell Nov 24, 2025
ad3b1b1
update bluesky and databroker pins
tacaswell Nov 25, 2025
ffbcc97
regenerate lock
tacaswell Nov 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# SCM syntax highlighting & preventing 3-way merges
pixi.lock merge=binary linguist-language=YAML linguist-generated=true
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -145,4 +145,6 @@ doc/source/_generated_images/*
*.wav

# Users scripts
users/
users/# pixi environments
.pixi/*
!.pixi/config.toml
10,345 changes: 10,345 additions & 0 deletions pixi.lock

Large diffs are not rendered by default.

65 changes: 65 additions & 0 deletions pixi.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
[workspace]
channels = ["conda-forge"]
name = "cms-profile-collection"
platforms = ["linux-64"]
version = "2025.3.1"

[system-requirements]
libc = "2.17"

[feature.profile.dependencies]
bluesky-base = "==1.14.6"
bluesky-queueserver = "*"
matplotlib-base= ">=3.9.3,<4"
networkx = ">=3.4.2,<4"
nslsii = "==0.11.4"
numpy = "*"
ophyd = ">=1.11.0"
pyepics = "*"
python = ">=3.12,<3.13"
semver = ">=3.0.4,<4"
tiled-client = ">=0.1.6"
lmfit = ">=1.3.4,<2"
paramiko = ">=4.0.0,<5"
peakutils = ">=1.3.5,<2"
suitcase-utils = ">=0.5.4,<0.6"
arvpyf = ">=0.4.3,<0.5"
telnetlib3 = ">=1.0.4,<2"
hdf5-external-filter-plugins = ">=0.1.0,<0.2"
blosc-hdf5-plugin = ">=1.0.1,<2"
databroker = "==2.0.0"
epicscorelibs = ">=7.0.7.99.1.1,<8"
bluesky-tiled-plugins = ">=2.0.0b68"
ophyd-async = ">=0.13.7,<0.14"


[feature.profile.pypi-dependencies]
pvxslibs = ">=1.3.2, <2"


[feature.qs.dependencies]
bluesky-queueserver = "*"
bluesky-httpserver = "*"

[feature.qs.tasks]
# This section needs some development work to understand the best way to
# thread the required configuration through both the task and files checked into
# the profile. These will interact with the ansible roles for pushing out the
# systemd units
qs-backend = "start-re-manager --profile-dir=."
qs-server = "uvicorn --host localhost --port 60610 bluesky_httpserver.server:app"


[feature.terminal.dependencies]
ipython = ">=9.5.0"
pyside6 = "*"
numpy = ">2"


[feature.terminal.tasks]
start = "unset SESSION_MANAGER PYTHONPATH && MPLBACKEND=qtagg ipython --profile-dir=."
pvs = "ipython --profile-dir=. -c 'get_pv_types(); exit()'"

[environments]
terminal = {features=["profile", "terminal"], solve-group="profile"}
qs = {features=["profile", "qs"], solve-group="profile"}
2 changes: 1 addition & 1 deletion startup/01-ad33_tmp.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class StatsPluginV33(PluginBase):
"""This supports changes to time series PV names in AD 3-3 Due to https://github.com/areaDetector/ADCore/pull/333"""

_default_suffix = "Stats1:"
_suffix_re = "Stats\d:"
_suffix_re = r"Stats\d:"
_html_docs = ["NDPluginStats.html"]
_plugin_type = "NDPluginStats"
_default_configuration_attrs = PluginBase._default_configuration_attrs + (
Expand Down
62 changes: 31 additions & 31 deletions startup/91-fit_scan.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,37 +69,37 @@ def remove_last_Pilatus_series():
os.remove(filename)


if False:
# %run -i /opt/ipython_profiles/profile_collection/startup/91-fit_scan.py

# Define a 'fake' detector, for testing purposes
from bluesky.examples import Reader

def fake_detector_response_peak():
pos = armz.user_readback.value
A = 1000.0
x0 = -40.0
sigma = 0.1
I = A * np.exp(-((pos - x0) ** 2) / (2 * sigma**2)) + 10.0

return np.random.poisson(I)

def fake_detector_response_edge():
pos = armz.user_readback.value
A = 1000.0
x0 = -17.0
sigma = 0.05
I = A / (1 + np.exp(-(pos - x0) / (-sigma))) + 10.0

return np.random.poisson(I)

# det = Reader( 'det', {'intensity': lambda: 1.0*( (DETx.user_readback.value - (-40.0))**2 )/(2.*(0.1)**2) } )
det = Reader("intensity", {"intensity": fake_detector_response_edge})
detselect(det)
# detselect(det, suffix='')

# fit_scan(DETx, 1, 3, detector_suffix='')
# fit_scan(armz, [-5,0], 5, detector_suffix='')
# this code last worked ~2017
# # %run -i /opt/ipython_profiles/profile_collection/startup/91-fit_scan.py
#
# # Define a 'fake' detector, for testing purposes
# from bluesky.examples import Reader
#
# def fake_detector_response_peak():
# pos = armz.user_readback.value
# A = 1000.0
# x0 = -40.0
# sigma = 0.1
# I = A * np.exp(-((pos - x0) ** 2) / (2 * sigma**2)) + 10.0
#
# return np.random.poisson(I)
#
# def fake_detector_response_edge():
# pos = armz.user_readback.value
# A = 1000.0
# x0 = -17.0
# sigma = 0.05
# I = A / (1 + np.exp(-(pos - x0) / (-sigma))) + 10.0
#
# return np.random.poisson(I)
#
# # det = Reader( 'det', {'intensity': lambda: 1.0*( (DETx.user_readback.value - (-40.0))**2 )/(2.*(0.1)**2) } )
# det = Reader("intensity", {"intensity": fake_detector_response_edge})
# detselect(det)
# # detselect(det, suffix='')
#
# # fit_scan(DETx, 1, 3, detector_suffix='')
# # fit_scan(armz, [-5,0], 5, detector_suffix='')


class MotorWait(CallbackBase):
Expand Down