SirepoBluesky接口
sirepo-bluesk的Python项目详细描述
蓝色狼界面
- 自由软件:3条款BSD许可
- 文档:https://NSLS-II.github.io/sirepo-bluesky。在
目的
尝试将Sirepo/SRW模拟与Bluesky/Ophyd相结合。在
基于此Sirepo模拟,可在下一节下载:
准备本地Sirepo服务器
- 在instructions之后使用Vagrant/VirtualBox安装Sirepo (您需要安装VirtualBox和Vagrant)
- 成功安装后,使用^{tt1}启动VM$ 然后用vagrant sshssh连接到它
- 运行以下命令以使用Bluesky接口启动Sirepo (bluesky是服务器端和客户端都使用的“秘密”密钥, 并且SIREPO_FEATURE_CONFIG_SIM_TYPES=srw部分是可选的,如果 您直接在Linux/Mac机器上运行Sirepo,并且只有SRW 已安装):
SIREPO_FEATURE_CONFIG_SIM_TYPES=srw SIREPO_AUTH_METHODS=bluesky:guest SIREPO_AUTH_BLUESKY_SECRET=bluesky sirepo service http
- 在浏览器中,转到http://10.10.10.10:8000/srw,单击 点击右上角的“导入”按钮,上传 archive模拟存储在这个repo中
- 你应该被重定向到 http://10.10.10.10:8000/srw#/source/IKROlKfR
- 获取最后8个字母数字符号(IKROlKfR),它们表示 我们将在下一节中使用的模拟的UID。在
您还可以考虑运行Docker容器:
^{pr2}$准备好Bluesky并触发一个模拟的Sirepo探测器
conda create -n sirepo_bluesky python=3.7 -y conda activate sirepo_bluesky pip install sirepo-bluesky # a package from PyPI
- 克隆此存储库以访问示例:
git clone https://github.com/NSLS-II/sirepo-bluesky/
cd sirepo-bluesky/
- 启动ipython,然后运行以下命令,其中sim_id是 我们正在处理的模拟的UID:
%run-iexamples/prepare_det_env.pyimportsirepo_bluesky.sirepo_detectorassdimportbluesky.plansasbpsirepo_det=sd.SirepoDetector(sim_id='<sim_id>',reg=db.reg)sirepo_det.select_optic('Aperture')param1=sirepo_det.create_parameter('horizontalSize')param2=sirepo_det.create_parameter('verticalSize')sirepo_det.read_attrs=['image','mean','photon_energy']sirepo_det.configuration_attrs=['horizontal_extent','vertical_extent','shape']
RE(bp.grid_scan([sirepo_det],param1,0,1,10,param2,0,1,10,True))
你应该得到这样的东西:
- 获取数据:
hdr=db[-1]imgs=list(hdr.data('sirepo_det_image'))cfg=hdr.config_data('sirepo_det')['primary'][0]hor_ext=cfg['{}_horizontal_extent'.format(sirepo_det.name)]vert_ext=cfg['{}_vertical_extent'.format(sirepo_det.name)]plt.imshow(imgs[21],aspect='equal',extent=(*hor_ext,*vert_ext))
你应该得到这样的东西:
要查看单电子光谱报告(提示:使用不同的 sim_id,例如,对于NSLS-II CHX波束线示例):
%run-iexamples/prepare_det_env.pyimportsirepo_bluesky.sirepo_detectorassdimportbluesky.plansasbpsirepo_det=sd.SirepoDetector(sim_id='<sim_id>',reg=db.reg,source_simulation=True)sirepo_det.read_attrs=['image']sirepo_det.configuration_attrs=['photon_energy','shape']
RE(bp.count([sirepo_det]))
hdr=db[-1]cfg=hdr.config_data('sirepo_det')['primary'][0]energies=cfg['sirepo_det_photon_energy']spectrum,=hdr.data('sirepo_det_image')plt.plot(energies,spectrum)
你应该得到这样的东西:
使用模拟的Sirepo传单运行多个模拟
- 这一部分是基于杨的双缝实验Sirepo的例子 可以在SRW模拟的波前传播文件夹中找到 剖面
- 打开模拟并获取新的UID(最后8个字母数字符号)
- 启动ipython,然后运行以下命令:
%run-iexamples/prepare_flyer_env.pyimportbluesky.plansasbpimportsirepo_bluesky.sirepo_flyerassf
- 要创建一次更改4个参数的5个不同仿真:
params_to_change=[]foriinrange(1,6):key1='Aperture'parameters_update1={'horizontalSize':i*.1,'verticalSize':(16-i)*.1}key2='Lens'parameters_update2={'horizontalFocalLength':i+7}key3='Obstacle'parameters_update3={'horizontalSize':6-i}params_to_change.append({key1:parameters_update1,key2:parameters_update2,key3:parameters_update3})
- 创建传单并运行一个fly scan,其中sim_id是 模拟:
sirepo_flyer=sf.SirepoFlyer(sim_id='<sim_id>',server_name='http://10.10.10.10:8000',root_dir=root_dir,params_to_change=params_to_change,watch_name='W60')RE(bp.fly([sirepo_flyer]))
- 访问数据:
In[13]:hdr=db[-1]hdr.table(stream_name='sirepo_flyer')Out[13]:timesirepo_flyer_image \ seq_num12020-08-1007:54:01.426501ae51b7d7-1a0f-4613-9118-1626b4f89bf022020-08-1007:54:01.42650114183b1a-03f1-4333-a4a2-b9e16ccdbf2932020-08-1007:54:01.4265012e372fb4-7fe3-47ce-acf8-9af3e2d1acad42020-08-1007:54:01.4265017bea7ace-0be3-4b97-a936-f2cec48cb37052020-08-1007:54:01.4265017e22377b-985c-49d9-aaf4-26c967b1bd22sirepo_flyer_shapesirepo_flyer_meansirepo_flyer_photon_energy \ seq_num1[250,896]3.677965e+134240.02[250,546]9.944933e+134240.03[250,440]1.492891e+144240.04[252,308]2.234285e+144240.05[252,176]3.885947e+144240.0sirepo_flyer_horizontal_extent \ seq_num1[-0.0013627376425855513,0.0013596958174904943]2[-0.001015813953488372,0.0010120930232558139]3[-0.0009701657458563539,0.0009701657458563542]4[-0.0008026143790849673,0.0008026143790849673]5[-0.0005374045801526716,0.0005312977099236639]sirepo_flyer_vertical_extent \ seq_num1[-0.000249500998003992,0.00024750499001996017]2[-0.000249500998003992,0.00024750499001996017]3[-0.00024650698602794426,0.0002504990019960079]4[-0.0002485029940119762,0.00025249500998003984]5[-0.00025149700598802393,0.0002495009980039921]sirepo_flyer_hash_valuesirepo_flyer_status \ seq_num1d5d6628d50bd65a329717e8ffb942224completed2d6f8b77048fe6ad48e007cfb776528adcompleted3e5f914471d873f156c31815ab705575fcompleted4bf507c942bb67c7191d16968de6ddd5bcompleted51775724d932efa3e0233781465a5a67bcompletedsirepo_flyer_Aperture_horizontalSize \ seq_num10.120.230.340.450.5sirepo_flyer_Aperture_verticalSize \ seq_num11.521.431.341.251.1sirepo_flyer_Lens_horizontalFocalLength \ seq_num1829310411512sirepo_flyer_Obstacle_horizontalSizeseq_num1524334251
Databroker将返回以下信息:
- 项目
标签: