Python模块来读/写SerialEM.nav文件。
pyserialem的Python项目详细描述
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
标记集的项:
这将返回MapItem
和NavItem
的list
。一个MapItem
与相应的.mrc
文件中的一个图像相关联,NavItem
是该图像上的一个标记或点。在
map_items=[item.kind=='Map'foriteminitems]nav_items=[item.kind=='Marker'foriteminitems]
与MapItem
或NavItem
相关联的所有标记都可以作为属性访问,使用与.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)
- 项目
标签: