Hi,
My name is Germán Viera.
I am a Computers Engineer student at the state university of Uruguay (very close to graduate). For my thesis project I am working on a software package for the Hong-Kong Pasteur institute for flow cytometry data analysis. This kind of software works a lot with dot plots with high volumes of data (thousands of dots) A part from that, the plots need Gating functionality, that would be to have the ability to draw a gate (with rectangular, polygonal or circular shape) that determines a sub-set of the dots in the plot and change it´s color. Also that sub-set of points is in general used for other plots. In short, the gating functionality is an interactive action (like the one used for zooming (but with other shapes than rectangular ), in order to select and identify a sub-set of dots in the plot. I am willing to contribute to this project if the work to modify the library and add this kind of very usefull functionalities is not impossible and I would need some help of the community related to the project to carry over the changes.
I would be very grateful if you could notify me to my mail (viera00@yahoo.com.ar) if you´ve read my proposal in order to start working on it.
Best Regards,
Germán Viera.
Anonymous
Logged In: YES
user_id=505193
Originator: NO
Hi Germán,
nice that you would be willing to contribute this. As a developer of jchart2d I know that this is quite some work to do. Currently jchart2d is close to a new release. After that an important feature (several votes for it) has to be done by me that was requested for I think more than a year now and will cost a lot of time. Therefore I cannot help you except for giving you hints on how to do it.
I would never change the Chart2D class and integrate this directly there as it is a very special feature and would slow down the library which main strength is speed for realtime measurements.
You should start with a subclass of Chart2D. See ZoomableChart. You can see how to draw certain areas. A hard part for you will be the detection of the points which lie in - between the gated area. You should read sth. classic literature about 2D graphic algorithms for this task (in Sedgewicks "algorithsm in C++" I found a short chapter for geometrical algorithms about detection of point inside a polygon.
Then you also had to subclass TracePoint2D to assign a color to a point.
You had to implement a ITracePainter that casts down the given TracePoint2D to your new "ColoredTracePoint2D", set the color of the point to the Graphics2D you get and paint the point as normal. Then you had to either use addPoint(TracePoint2D) of an ITrace2D implementation only (because addPoint(double x, double y) will create an TracePoint2D).
I wish you good luck on this. I would take the contribution. If sth. has to be changed on Chart2D please let me know so that I can check if that would be harmful thus preventing this feature from being overtaken. If you have further questions feel free to ask me. Please stay on this feature Thread for discussion. The things written here may be viewed by others and I will never loose the info here (except sf goes down which I hope will never happen).
kind regards,
Achim
Wow, sorry Germán,
never answered on this one as I was working on other stuff. Most probable this is of no interest for you by now, but I'll leave this open as it is an interesting feature that could be added in future if more votes come here.
kind regards,
Achim