Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add reader for PicoQuant .bin files. (rebased onto dev_5_0) #1287

Merged
merged 14 commits into from
Aug 26, 2014

Conversation

sbesson
Copy link
Member

@sbesson sbesson commented Aug 23, 2014

This is the same as gh-1245 but rebased onto dev_5_0.


This adds support for one of the formats covered by https://trac.openmicroscopy.org.uk/ome/ticket/8059#
NB I am led to believe that the other format is a FIFO rather than imaging format in which case it could prove 'challenging'.

@sbesson sbesson force-pushed the rebased/dev_5_0/develop-PQBin branch from 0000000 to 935e763 Compare August 23, 2014 12:48
@sbesson
Copy link
Member Author

sbesson commented Aug 23, 2014

--rebased-from #1245

@bpindelski
Copy link

Tested by importing to octopus. From the from_skyking/picoquant folder all .bin (2) and image files (.png, .bmp) are imported - the rest is rejected (.pdf, .log etc.). In Insight, the .bin files have a decent amount of time points, but are completely black - is that expected? If so, then this looks OK to merge.

@imunro
Copy link
Contributor

imunro commented Aug 25, 2014

The first time-points are typically dark (before the laser pulse that excites the fluorescence) & insight displays the fist time-point by default so it's not unexpected. If all the time-points are black however that would be a problem.

@bpindelski
Copy link

@imunro Encouraged by your comment, I wanted to automatically scan each time-point by using the "Play" button in the image viewer. Insight sadly gave me

java.lang.Exception: Abnormal termination due to an uncaught exception.
java.lang.IllegalArgumentException: (minimum <= value <= maximum) is false
    at javax.swing.SpinnerNumberModel.<init>(SpinnerNumberModel.java:108)
    at javax.swing.SpinnerNumberModel.<init>(SpinnerNumberModel.java:130)
    at org.openmicroscopy.shoola.agents.imviewer.util.player.MoviePlayerUI.initComponents(MoviePlayerUI.java:194)
    at org.openmicroscopy.shoola.agents.imviewer.util.player.MoviePlayerUI.<init>(MoviePlayerUI.java:432)
    at org.openmicroscopy.shoola.agents.imviewer.util.player.MoviePlayerDialog.<init>(MoviePlayerDialog.java:126)
    at org.openmicroscopy.shoola.agents.imviewer.view.ImViewerControl.getMoviePlayer(ImViewerControl.java:753)
    at org.openmicroscopy.shoola.agents.imviewer.view.ImViewerComponent.playMovie(ImViewerComponent.java:1915)
    at org.openmicroscopy.shoola.agents.imviewer.actions.PlayMovieAction.actionPerformed(PlayMovieAction.java:182)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6414)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
    at java.awt.Component.processEvent(Component.java:6179)
    at java.awt.Container.processEvent(Container.java:2084)
    at java.awt.Component.dispatchEventImpl(Component.java:4776)
    at java.awt.Container.dispatchEventImpl(Container.java:2142)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
    at java.awt.Container.dispatchEventImpl(Container.java:2128)
    at java.awt.Window.dispatchEventImpl(Window.java:2492)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:690)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Abnormal termination due to an uncaught exception.
java.lang.IllegalArgumentException: (minimum <= value <= maximum) is false
    at javax.swing.SpinnerNumberModel.<init>(SpinnerNumberModel.java:108)
    at javax.swing.SpinnerNumberModel.<init>(SpinnerNumberModel.java:130)
    at org.openmicroscopy.shoola.agents.imviewer.util.player.MoviePlayerUI.initComponents(MoviePlayerUI.java:194)
    at org.openmicroscopy.shoola.agents.imviewer.util.player.MoviePlayerUI.<init>(MoviePlayerUI.java:432)
    at org.openmicroscopy.shoola.agents.imviewer.util.player.MoviePlayerDialog.<init>(MoviePlayerDialog.java:126)
    at org.openmicroscopy.shoola.agents.imviewer.view.ImViewerControl.getMoviePlayer(ImViewerControl.java:753)
    at org.openmicroscopy.shoola.agents.imviewer.view.ImViewerComponent.playMovie(ImViewerComponent.java:1915)
    at org.openmicroscopy.shoola.agents.imviewer.actions.PlayMovieAction.actionPerformed(PlayMovieAction.java:182)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6414)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
    at java.awt.Component.processEvent(Component.java:6179)
    at java.awt.Container.processEvent(Container.java:2084)
    at java.awt.Component.dispatchEventImpl(Component.java:4776)
    at java.awt.Container.dispatchEventImpl(Container.java:2142)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
    at java.awt.Container.dispatchEventImpl(Container.java:2128)
    at java.awt.Window.dispatchEventImpl(Window.java:2492)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:690)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0"

    at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.showErrorDialog(UserNotifierImpl.java:191)
    at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.notifyError(UserNotifierImpl.java:291)
    at org.openmicroscopy.shoola.env.AbnormalExitHandler.doTermination(AbnormalExitHandler.java:147)
    at org.openmicroscopy.shoola.env.AbnormalExitHandler.terminate(AbnormalExitHandler.java:85)
    at org.openmicroscopy.shoola.env.AWTExceptionHanlder.handle(AWTExceptionHanlder.java:99)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at java.awt.EventDispatchThread.handleException(EventDispatchThread.java:412)
    at java.awt.EventDispatchThread.processException(EventDispatchThread.java:318)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:312)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

/cc @jburel

@bpindelski
Copy link

@imunro Manually scanning through the first 10% of time-points of both the sample images does indeed reveal their content, so the reader looks OK. The Insight fatal crash is a bit of a blocker though.

@imunro
Copy link
Contributor

imunro commented Aug 26, 2014

Have you seen that with any other file types? Can't immediately see how how a reader could cause that.
Only thing I can think is that my reader could potentially use a lot of memory could that affect insight ? @jburel

@jburel
Copy link
Member

jburel commented Aug 26, 2014

Which user did you log in as? so I can have a look

@bpindelski
Copy link

@jburel I've used user-1. There is a dataset called picoquant. Tried re-importing the images - still same error. Surprisingly, it doesn't happen with develop.

@jburel
Copy link
Member

jburel commented Aug 26, 2014

@bpindelski: I fixed an issue with movie player on develop so that will explain

@imunro
Copy link
Contributor

imunro commented Aug 26, 2014

Replicated the issue using DaisyPollen.bin from that dataset. Only happens on playing the data as a movie. Stepping through is fine.

@bpindelski
Copy link

@imunro, @jburel It seems that this crash is solely Insight-related (as J-M mentioned, it's fixed on develop, so that fix will need backporting). This PR is OK to merge then.

@jburel
Copy link
Member

jburel commented Aug 26, 2014

see ome/openmicroscopy#2908 for fixes in movie player

@jburel
Copy link
Member

jburel commented Aug 26, 2014

Testing using a local client build including fixes to movie-player (see ome/openmicroscopy#2908) against octopus. The problem does not occur.
It is a bit slow to play a movie across small t but it works.

melissalinkert added a commit that referenced this pull request Aug 26, 2014
Add reader for PicoQuant .bin files. (rebased onto dev_5_0)
@melissalinkert melissalinkert merged commit 5782d8c into ome:dev_5_0 Aug 26, 2014
@sbesson sbesson deleted the rebased/dev_5_0/develop-PQBin branch August 27, 2014 05:13
@sbesson
Copy link
Member Author

sbesson commented Aug 27, 2014

Looking at snoopycrimecop@80cbe7e. Should we have a set of proper documentation pages for the PicoQuant format (would require to edit components/autogen/src/format-pages.txt)

@imunro
Copy link
Contributor

imunro commented Aug 27, 2014

I'll try & have a look as soon as I can.

@hflynn
Copy link
Member

hflynn commented Aug 27, 2014

Documentation would be handy @imunro - this won't show up on the supported formats table if it isn't documented.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants