Python模块来读/写SerialEM.nav文件。

pyserialem的Python项目详细描述


GitHub Workflow StatusPyPI - Python VersionPyPIPyPI - Downloads

PySerialEM公司

一个小Python库,用于读写SerialEMnavigator文件(.nav),并处理网格映射。在

使用pip install pyserialem安装。在

The source for this project is available here。在

使用

pyserialem的主要用途是操作SerialEM(specification)编写的.nav文件中的坐标。在

正在读取.nav文件:

importpyserialemfrompathlibimportPathp=Path('C:/path/to/data/')/'nav.nav'items=pyserialem.read_nav_file(p)# list

您可以设置acquire_only切换以仅返回带有Acquire标记集的项:

^{pr2}$

这将返回MapItemNavItemlist。一个MapItem与相应的.mrc文件中的一个图像相关联,NavItem是该图像上的一个标记或点。在

map_items=[item.kind=='Map'foriteminitems]nav_items=[item.kind=='Marker'foriteminitems]

MapItemNavItem相关联的所有标记都可以作为属性访问,使用与.nav文件中相同的名称,即使用定义了here的键。这也是更新值的方式:

nav_item=nav_items[0]stage_position=nav_item.StageXYZ# tuplemap_item.StageXYZ=(100,200,0)# overwrite values

或者,可以通过以下方式直接访问阶段位置:

x=map_item.stage_xy=map_item.stage_yz=map_item.stage_zxy=map_item.stage_xy

地图项目

一个MapItem有一个NavItem的所有功能,还有一些。每个MapItem都可以有一个与其关联的标记列表:

map_item=map_items[0]markers=map_item.markers# list

要将其形象化,请致电:

map_item.plot()

要只加载与MapItem关联的图像:

img=map_item.load()# np.array

它们可以作为字典提取:

d=map_item.to_dict()# dict

…并恢复:

new_map_item=pysem.from_dict(d,tag='new_mapitem')

自动生成的一些键也是最容易生成的。否则,必须将所有必需的键指定给MapItem构造函数。tag指定在^{中显示的项的名称。如果省略,将生成一个。在

MapItem添加新标记很容易。默认为像素坐标(即来自分段的坐标)。PySerialEM计算相应的级位置。acquire参数设置获取标志(默认值=True):

pixel_position=(0,0)new_nav_item=map_item.add_marker(pixel_position,tag='pixel_item',acquire=True)# NavItem

您也可以添加一个标记作为舞台坐标(尽管计算相应的像素坐标有点麻烦):

stage_positionion=(1000,1000)new_nav_item=map_item.add_marker(pixel_position,kind='stage',tag='stage_item',acquire=False)# NavItem

要添加多个标记:

pixel_coordinates=((0,0),(100,100),(200,200))nav_item_group=map_item.add_marker_group(pixel_coordinates)# tuple

指定replace=True以替换与MapItem关联的标记的当前列表。在

如果MapItem有一组与其关联的标记map_item.markers,则按如下方式检索坐标:

map_item.markers_as_pixel_coordinates()# np.array (Nx2)map_item.markers_as_stage_coordinates()# np.array (Nx2)

要在舞台和像素坐标之间进行转换,请执行以下操作:

pixel_coord=(1024,1024)stage_coord=map_item.pixel_to_stagecoords(pixel_coord)# tuplenew_pixel_coord=map_item.stage_to_pixelcoords(stagecoord)# tupleassertnew_pixel_coord==pixel_coord

要写入新文件:

pyserialem.write_nav_file('out.nav',map_item,*nav_item_group)

注意*。此函数用于捕获列表(*args)中的参数,因此在提供参数时必须将其解包。在

缝合

基本缝合算法可用于获得所有地图项目位置的概述:

map_items=[itemforiteminitemsifitem.kind=='Map']pyserialem.stitch_map_items(map_items)

对于更高级的缝合和蒙太奇,请使用pyserialem.montage模块。可以使用demo notebook来演示它的用法。在

Mdoc文件

还有一个简单的函数来读取.mdoc文件(link)。这将返回python对象的列表,其中每个键都可以作为属性访问。在

p=Path('C:/path/to/data')/'gm.mrc.mdoc'mdoc=pyserialem.read_mdoc_file(p)

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

推荐PyPI第三方库


热门话题
java Selenium Web驱动程序。负载策略不稳定   JAVAsql。SQLException:没有合适的驱动程序无法创建“oracle”类的JDBC驱动程序。jdbc。驾驶员用于连接URL的OracleDriver   java谷歌地图“优化路径点”如何解决旅行推销员的问题?   java这段代码可能会造成潜在的内存泄漏吗?   java更改JCombobox的高度   java如何清除jtable中的数据   JavaHadoop:错误安全性。UserGroupInformation:MapReduce程序中的PriviledgedActionException   java如何将sonarlint添加到gradle任务中?   性能为什么Java排序优于原语计数排序   java Spring属性PlaceHolderConfigure从数据库加载   java从泛型获取类不起作用   java Spring@Transactional传播属性   java试图拥有主菜单和子菜单类   XSL的java后处理步骤   java第一个字母和最后一个字母、第二个字母和倒数第二个字母之间的差值之和,依此类推,直到单词的中心   switch语句在Java中的下一个出发点   java 安卓如何在OnBackpress()时设置viewpager的特定项目位置?