SirepoBluesky接口

sirepo-bluesk的Python项目详细描述


https://img.shields.io/travis/NSLS-II/sirepo-bluesky.svghttps://img.shields.io/pypi/v/sirepo-bluesky.svg

蓝色狼界面

目的

尝试将Sirepo/SRW模拟与Bluesky/Ophyd相结合。在

基于此Sirepo模拟,可在下一节下载:

https://github.com/NSLS-II/sirepo-bluesky/raw/master/images/basic_beamline.png

准备本地Sirepo服务器

  • instructions之后使用Vagrant/VirtualBox安装Sirepo (您需要安装VirtualBoxVagrant
  • 成功安装后,使用^{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探测器

  • (可选)确保已安装mongodb,并且服务 正在运行(有关详细信息,请参见local.yml
  • 创建conda环境:
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))

你应该得到这样的东西:

https://github.com/NSLS-II/sirepo-bluesky/raw/master/images/sirepo_bluesky_grid.png
  • 获取数据:
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))

你应该得到这样的东西:

https://github.com/NSLS-II/sirepo-bluesky/raw/master/images/sirepo_bluesky.png

要查看单电子光谱报告(提示:使用不同的 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)

你应该得到这样的东西:

https://github.com/NSLS-II/sirepo-bluesky/raw/master/images/spectrum.png

使用模拟的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将返回以下信息:

https://github.com/NSLS-II/sirepo-bluesky/raw/master/images/flyer_output.png

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将值插入sql表的选定列。使用c等参数#   IF语句的java JList数据添加   java在这种情况下有没有更好的方法来调整哈希值?   java@Valid不会触发@Repository中的验证   java如何在安卓中调整位图的大小   iTextJava。lang.NoClassDefFoundError:com/itextpdf/text/DocumentException   java使用ResourceBundleMessageSource加载一个ressource包(message.properties)的全部内容   java如何通过JasperReports 6动态设置Excel工作表名称。十、   java是编写这个程序的最佳方式   JAVA伊奥。FileNotFoundException:C:\Program Files\Apache软件基金会\Tomcat 8.0\。。\webapps\ROOT\\u cips\config。伊尼   java我正在尝试创建一个TictaToe程序,但是JOptionPane和绘图有问题   垃圾收集为什么java中的finalize()方法不在Finalizer类中?为什么它是在对象类中定义的?   java如何用括号编码替换url中的括号?   java web集成移动应用程序   在netbeans中运行MIDP2应用程序时出现java错误