与Michelanglo接口的API
michelanglo-api的Python项目详细描述
米开朗日api
与Michelaɴɢʟo服务器(https://michelanglo.sgc.ox.ac.uk)交互的python模块 程序化的。在
:hammer: The migration is partial. But this repo is not expected to get more TLC for a few months.
注释
Michelaɴɢo接受的请求的详细信息在its documentation中描述。
不过,请您与服务器交互。这段代码只是为了让生活更轻松。在
有三层用户。基本,特权,管理。基本用户不能向网站添加JS,因为这是一个安全威胁 (偷饼干)。。。它阻止用户 pages that behave maliciously or similar。在
文件
验证
首先,进行身份验证。在
mike = MikeAPI('username','password')
参数url
设置SGC之外的其他地址,例如http://0.0.0.0:8088
。
可以省略密码和用户名,在这种情况下,可以从环境变量中读取它们
MICHELANGLO_PASSWORD
和MICHELANGLO_USERNAME
或提示用户。在
检查所有工作mike.verify_user()
。这将显示您的rank
(请参见user priviledges in the site)。在
实例属性:
.url
是'https://michelanglo.sgc.ox.ac.uk/',除非有改动(例如,本地版本的Michelanglo).username
是用户名.password
是原始密码,所以不要共享pickles!在.visited_pages
、.owned_pages
和{}是由 .refresh_pages()
填充的列表.request
是请求会话对象。在
实例方法:
.post(route, data=None, headers=None)
其他方法的请求。。。在.post_json(route, data=None, headers=None)
如上所述,但解码json回复。。。在.login()
。初始化期间自动调用。在.verify_user()
。检查您是否仍在登录。在.refresh_pages()
。获取列表.visited_pages
、.owned_pages
和{}(如果是管理员, .all
).get_page(uuid)
返回给定页面的MikePage
实例。见下文。在.set_page(uuid, data)
设置给定页面的MikePage
实例。见下文。在.delete_page(uuid)
删除。见下文。在
页面编辑
要查看您拥有的页面,可以使用:
mike.owned_pages
您创建/编辑的页面mike.visited_pages
您访问的页面mike.public_pages
图库中的所有页面mike.all_pages
(仅限管理员)
这些是MikePage
实例的列表,这些实例是not检索到的。检索将重置过期日期,并且会很繁重。在
可以显式检索特定页。在
page = mike.get_page('abcdedf-uuid-string-of-page')
可编辑页面:
page.title = 'Hello World'
page.commit()
但并非所有的属性更改都是允许的。要了解属性的作用(除了使用help
),可以使用以下命令查询它:
page.what_is('location_viewport')
注意,有两个属性是枚举,.public
由Privacy
处理,.location_viewport
由{
p.public = Privacy['public']
p.public = p.public.__class__['public'] # if you forgot/don't want to import `Privacy`.
另外,有两种方法用新的键改变页面(仍然需要commit
)。page.clear_revisions()
和page.refresh_image()
。在
要在Jupyter笔记本中显示链接和缩略图,请使用page.show_link()
,但在终端中不起作用。在
有些方法在MikeAPI
和MikePage
之间重复。在
page.retrieve()
=mike.set_page(uuid)
page.commit()
=mike.set_page(uuid, page)
page.delete()
=mike.del_page(uuid)
page.shorten(short)
=mike.shorten_page(uuid, short)
没有区别。在
更改“loadfun”(JS)和“pdb”仅限于管理员和经批准的用户。在
因为更改PDB代码的“proteins”中的变量名需要在“PDB”中更改。在
page.proteins[2]['value'] = 'altered_variable_name'
page.pdb['altered_variable_name']
方法.rename_protein_variable()
可以为您完成此操作。在
储存在GitHub中的蛋白质可以通过page.append_github_entry(self, username, repo, path)
添加,其中
将是一个迟钝的文件名。在
页面创建
可以使用pdb代码或带有prolinks使用的附加参数的文件名添加新页面, 但是用下划线代替空格。在
new_page = mike.convert_pdb(code='1UBQ', data_focus='residue', data_selection='20:A')
new_page = mike.convert_pdb(filename='/home/my_protein.pdb')
管理命令
有些命令仅适用于管理员。请不要尝试它们,否则会自动阻止。在
表
在科维德登月的时候,我做了几个不同姿势的互动桌, eg.Fragmenstein hits。在
这不是一个n官方特性,但这些特性可以由特权用户使用API来实现。
它们需要GitHub来存储mol
文件。在
gitfolder='/Users/you/path_to_your_github_repo_on_your_machine'
sdfile='/Users/you/path_to_sdfile.sdf'
folder = 'folder_name_within_repo'
targetfolder=f'{gitfolder}/{folder}'
page.description = 'Hello world. '
page.loadfun = ''
page.columns_viewport = 6
page.columns_text = 6
page.sdf_to_mols(sdfile=sdfile,
targetfolder=targetfolder,
skip_first=True) # first row is metadata in a SDF for XChem
page.sdf_to_json(sdfile=sdfile,
keys=('∆∆G', 'comRMSD', 'N_constrained_atoms', 'runtime', 'disregarded', 'smiles'),
key_defaults=(999., 999., 0, 999., 'NA', 'NA'), #what to set stuff that is null
filename=f'{targetfolder}/data.json')
page.make_fragment_table(sdfile=sdfile,
username='matteoferla',
repo_name='Data_for_own_Michelanglo_pages',
foldername=folder,
protein_sele='145:A', # show this on protein. NGL selection
sort_col=2, #sort by column index 2.
sort_dir='asc', #asc or desc
template_row=-1, # is the template a file called `template.pdb` (-1) or a filename in the row n?
fragment_row=1, # the inspiration fragments (-1 for none). The names must match with or without a .mol.
jsonfile='data.json')
page.commit()
# git add, commit and push
更多
有关详细信息,请参见Sphinx generated documentation。在
待办事项
- 获取Uniprot链定义
- 从/到单元格读/写MD
- 项目
标签: