我正在研究流式细胞仪.我正在使用python的fcs模块.
我想为创建的图形创建不同的门.
我无法理解如何创建"自由形式"门.
如果有人有任何自由形式门控或任何与py-fcm相关的门控,请告诉我.
在这里,我有兴趣了解如何从自由形态门控获得该区域.
以供参考.
http://packages.python.org/fcm/basic.html#gating-and-working-withe-the-view-tree
小智 5
自由形式的门实际上是一个多边形门,在创建门时鼠标在每个点都有一个顶点.如果你可以创建一个多边形门,那么你可以创建一个自由形式的门; 只要你有足够的顶点.既然你也问过如何创建其他门类型,我怀疑你真正的问题是如何执行门控.
要执行选通,您必须确定哪些事件位于指定区域内.矩形区域是最容易处理的.用于识别事件是否在矩形区域中的伪代码可能如下所示:
EventInRectRegion (event e, region r)
return (((e[r.xParam] >= r.xMin) && (e[r.xParam] < r.xMax)) &&
((e[r.yParam] >= r.yMin) && (e[r.yParam] < r.yMax)))
Run Code Online (Sandbox Code Playgroud)
您应该能够看到确定事件是否在矩形中是与用于确定任何点是否在任何几何形状内的相同类型的代码.此类代码用于鼠标命中测试和其他相关任务.
将其扩展为圆形,多边形和其他形状需要遵循相同的路径.查看像Poly in Polygon这样的算法的算法.对于圆形,您可以将圆形表示为多边形,然后使用该算法,或者您可以在圆形算法中找到一个点.
我希望当你进一步研究这个时,你会发现性能是一个问题.我在链接中的Point in Polygon文章中展示了几种不同的算法,其中主要关注的是速度性能.您必须做出一些决定,确切地说您希望如何执行此命中测试以及您想要做出哪些权衡.
例如,您可以准确地测试每个事件(就像我在伪代码中所做的那样).这是准确的,但每次都要求您评估边界.另一种算法是选择位图分辨率并渲染其中的区域.然后,您可以通过测试给定位图像素是打开还是关闭来测试事件是否在区域中.这允许您仅评估区域渲染数学一次,但是以位图的内存和命中测试中的一些精度为代价.