与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_PASSWORDMICHELANGLO_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检索到的。检索将重置过期日期,并且会很繁重。在

^{pr2}$

可以显式检索特定页。在

page = mike.get_page('abcdedf-uuid-string-of-page')

可编辑页面:

page.title = 'Hello World'
page.commit()

但并非所有的属性更改都是允许的。要了解属性的作用(除了使用help),可以使用以下命令查询它:

page.what_is('location_viewport')

注意,有两个属性是枚举,.publicPrivacy处理,.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(),但在终端中不起作用。在

有些方法在MikeAPIMikePage之间重复。在

  • 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

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

推荐PyPI第三方库


热门话题
java从WSDL创建请求-响应XML   java在清单文件中使用外部BundleLocalization路径   在producerconsumer场景中,java LinkedBlockingQueue与多个生产者的线程安全性   调用对话框时java Android应用程序崩溃   使用java在mac上控制macos麦克风的声级   java如何在多个活动中使用ViewModel和LiveData观察者?   Java使用XPath拆分XML,但带有其父标记   java SAXParser“&”连接问题   java安装leiningen   java在主程序中调用方法   java流字节数组到Google应用程序引擎servlet   spring是否有一种工具或方法可以基于POST JSON数据在Java的controller中自动生成所有GET-fetch请求API端点   未映射java Mybatis继承的属性   java如何根据URL前缀以不同的方式验证shiro   java使用Selenium从弹出窗口中提取文本