为欧麦的Python Plugin
omero-parade的Python项目详细描述
要求
- Omero 5.4.0或更新版本。
请注意,omero.parade与omero 5.4.0兼容,但它可以工作 最适合搭配Omero 5.4.6或更新版本。
从pypi安装
本节假设已经安装了omero.web。
使用pip:
安装应用程序$ pip install -U omero-parade
将Parade自定义应用程序添加到已安装的Web应用程序:
$ bin/omero config append omero.web.apps '"omero_parade"'
在网络客户端中心显示游行:
$ bin/omero config append omero.web.ui.center_plugins \ '["Parade", "omero_parade/init.js.html", "omero_parade"]'
现在像往常一样重新启动omero.web。
构建
为了建造您需要:
- NPM版本等于或大于3.0!NPM版本等于或大于 建议使用5.2!
$ npm install
生成未压缩版本并在源时自动重新生成 文件更改,运行:
$ npm run watch
要生成未压缩版本,请运行:
$ npm run build-dev
要为生产构建压缩的小型版本,请运行:
$ npm run build
自定义筛选
用户可以通过添加自己的筛选选项来自定义可用的筛选选项 python模块设置:
omero.web.parade.filters
当前的默认设置列出了omero_paradeapp本身和两个 在同一目录中的其他模块,因此预计 安装应用程序时,请在pythonpath上。
'["omero_parade", "omero_parade.annotation_filters", "omero_parade.table_filters"]'
每个模块都包含一个omero_filters.py,它应该 实现2个方法:get_filters和get_script。
get_filters方法用于编译返回的筛选器列表 通过url /omero_parade/filters/。
get_filters
的一些示例# Return a list of filter names. def get_filters(request, conn): return ["Rating", "Comment", "Tag"]
如果我们只想,请求可以包含plate或datasetid 支持特定数据类型的筛选器。在这个例子中,我们甚至可以 检查盘子上是否有一张桌子。
def get_filters(request, conn): if request.GET.get('plate', None) is not None: return ["Table"] return []
命名筛选器的get_script函数应返回JsonResponse 其中包括用户输入到筛选器的参数列表 以及一个javascript过滤函数。
将为每个要筛选的图像调用javascript函数,并将 也可以通过用户输入传入params对象。
# Return a JS function to filter images by various params. def get_script(request, script_name, conn): dataset_id = request.GET.get('dataset') // OR... plate_id = request.GET.get('plate') if script_name == "Rating": # Load rating data for images in Dataset or Wells in Plate... # ... # var ratings = {imageId: rating} for all images var js_object_attr = 'id'; # or 'wellId' if filtering Wells # Return a JS function that will be passed an object # e.g. {id: 1} for Image or {id: 1, wellId:2} for Image in Well. # and should return true or false f = """(function filter(data, params) { var ratings = %s; var match = ratings[data.%s] == params.rating; return (params.rating === '-' || match); }) """ % (json.dumps(ratings), js_object_attr) filter_params = [{'name': 'rating', 'type': 'text', 'values': ['-', '1', '2', '3', '4', '5'], 'default': '-', }] return JsonResponse( { 'f': f, 'params': filter_params, })
自定义数据提供程序
自定义数据提供程序返回图像的数字数据,这些图像可以 显示在表格中进行排序,或绘制在图形中。 注:即使数据适用于油井,也需要将其映射到图像ID,因为 这是用于识别 各种列表、网格或打印布局。
使用与上述过滤相同的设置,每个模块在 omero.web.parade.filters设置还可以包含data_providers.py 实现两个方法get_dataproviders和get_data的文件。
omero_parade/data_providers.py
的示例def get_dataproviders(request, conn): return ["ROI_count"] def get_data(request, data_name, conn): """Return data for images in a Dataset or Plate.""" dataset_id = request.GET.get('dataset') plate_id = request.GET.get('plate') field_id = request.GET.get('field') # ... get img_ids for container, then... if data_name == "ROI_count": # Want to get ROI count for images params = ParametersI() params.addIds(img_ids) query = "select roi.image.id, count(roi.id) from Roi roi "\ "where roi.image.id in (:ids) group by roi.image" p = query_service.projection(query, params, conn.SERVICE_OPTS) roi_counts = {} for i in p: roi_counts[i[0].val] = i[1].val return roi_counts