pickcells-essentials issueshttps://framagit.org/pickcellslab/pickcells-essentials/-/issues2022-06-03T11:18:11Zhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/44Import an existing experiment NullPointerException bug2022-06-03T11:18:11ZMike JacksonImport an existing experiment NullPointerException bugUsing the October 25 2018 version of PickCells-0.8.0-SNAPSHOT.zip from DataSync ([zip](https://datasync.ed.ac.uk/index.php/s/VdTV5V5PmEWDc07/download?path=%2F&files=PickCells-0.8.0-SNAPSHOT.zip)) on Windows 10 with Java:
```
java versio...Using the October 25 2018 version of PickCells-0.8.0-SNAPSHOT.zip from DataSync ([zip](https://datasync.ed.ac.uk/index.php/s/VdTV5V5PmEWDc07/download?path=%2F&files=PickCells-0.8.0-SNAPSHOT.zip)) on Windows 10 with Java:
```
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
```
gives an exception on the console when the "Import an existing experiment" icon is clicked:
```
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.pickcellslab.pickcells.neodb.NeoAdmin.isValidDatabase(NeoAdmin.java:56)
at org.pickcellslab.pickcells.impl.presentation.overview.UserSessionModel.isValidDatabase(UserSessionModel.java:150)
at org.pickcellslab.pickcells.impl.presentation.overview.UserSessionView$5.accept(UserSessionView.java:741)
at com.alee.utils.filefilter.SwingFileFilterAdapter.accept(SwingFileFilterAdapter.java:29)
at com.alee.utils.filefilter.GroupedFileFilter.accept(GroupedFileFilter.java:125)
at com.alee.utils.filefilter.GroupedFileFilter.accept(GroupedFileFilter.java:125)
at java.io.File.listFiles(Unknown Source)
at com.alee.extended.list.WebFileList.setDisplayedDirectory(WebFileList.java:368)
at com.alee.extended.list.WebFileList.reloadFiles(WebFileList.java:292)
at com.alee.extended.list.WebFileList.setFileFilter(WebFileList.java:284)
at com.alee.laf.filechooser.WebFileChooserPanel.updateFileComponentFilters(WebFileChooserPanel.java:1722)
at com.alee.laf.filechooser.WebFileChooserPanel.setActiveFileFilter(WebFileChooserPanel.java:1714)
at com.alee.laf.filechooser.WebFileChooserPanel$29.actionPerformed(WebFileChooserPanel.java:1093)
at javax.swing.JComboBox.fireActionEvent(Unknown Source)
at javax.swing.JComboBox.setSelectedItem(Unknown Source)
at com.alee.laf.filechooser.WebFileChooserPanel.setActiveFileFilter(WebFileChooserPanel.java:1710)
at com.alee.laf.filechooser.WebFileChooserPanel.setActiveFileFilter(WebFileChooserPanel.java:1686)
at com.alee.laf.filechooser.WebFileChooserPanel.setFileFilters(WebFileChooserPanel.java:2015)
at com.alee.laf.filechooser.WebFileChooserPanel.setFileFilters(WebFileChooserPanel.java:1998)
at com.alee.laf.filechooser.WebFileChooserUI.propertyChanged(WebFileChooserUI.java:240)
at com.alee.laf.filechooser.WebFileChooserUI$4.propertyChange(WebFileChooserUI.java:166)
at java.beans.PropertyChangeSupport.fire(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.awt.Component.firePropertyChange(Unknown Source)
at javax.swing.JFileChooser.setFileFilter(Unknown Source)
at org.pickcellslab.pickcells.impl.presentation.overview.UserSessionView.importExperiment(UserSessionView.java:737)
at org.pickcellslab.pickcells.impl.presentation.overview.UserSessionView.lambda$start$1(UserSessionView.java:187)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
```https://framagit.org/pickcellslab/pickcells-essentials/-/issues/43Document Nuclei-Centrosome Assignment Module2019-06-12T08:43:07ZGuillaume BlinDocument Nuclei-Centrosome Assignment ModuleGuillaume BlinGuillaume Blinhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/42Filtering issue in NeighboursCounter2019-06-12T08:42:07ZGuillaume BlinFiltering issue in NeighboursCounterWhen selection the type of object that need to be counted, the user is given the choice to add a filter to the query.
This filter is not taken into account in the analysis.When selection the type of object that need to be counted, the user is given the choice to add a filter to the query.
This filter is not taken into account in the analysis.Guillaume BlinGuillaume Blinhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/40Add text labels to groups of icons on module selection toolbar2022-06-03T08:47:28ZGhost UserAdd text labels to groups of icons on module selection toolbarThe module icons shown on the module selection toolbar are grouped into sections based on the modules' category tags. To improve usability of the toolbar and ease module selection we should add the relevant category tag as a text label f...The module icons shown on the module selection toolbar are grouped into sections based on the modules' category tags. To improve usability of the toolbar and ease module selection we should add the relevant category tag as a text label for each group of icons.
This will require modification of the WorkBench class, which is in pickcells-container in the pickcells-essentials repo.
Modifications should be done on a fork of the "develop" branchUsabilityhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/37Consider Gabriel Graph for neighbourhoods2018-11-19T17:49:44ZGuillaume BlinConsider Gabriel Graph for neighbourhoodshttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/36Confirmation of successful image import2022-06-03T08:48:07ZGhost UserConfirmation of successful image importMany users have reported that they were not sure whether the images they chose to import were imported successfully, and if so where they can be found / viewed. User expectation appears to be that imported images should be easily viewabl...Many users have reported that they were not sure whether the images they chose to import were imported successfully, and if so where they can be found / viewed. User expectation appears to be that imported images should be easily viewable directly following an import.Usabilityhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/34Improve the welcome page with images, link to website and latest news2022-06-03T09:54:28ZGuillaume BlinImprove the welcome page with images, link to website and latest newsArno's suggestion: consider including some text to describe what to expect when clicking login or sandbox buttons.
NB: The main class to modify would be [PickCellsView](https://framagit.org/pickcellslab/pickcells-essentials/blob/develop...Arno's suggestion: consider including some text to describe what to expect when clicking login or sandbox buttons.
NB: The main class to modify would be [PickCellsView](https://framagit.org/pickcellslab/pickcells-essentials/blob/develop/pickcells-container/src/main/java/org/pickcellslab/pickcells/impl/presentation/PickCellsView.java#L180) - see especially the JPanel 'welcome'.Usabilityhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/32Remove LogViewer and replace with Loggers created at runtime for active tasks2022-06-03T11:16:14ZGuillaume BlinRemove LogViewer and replace with Loggers created at runtime for active tasksThe LogViewer currently in coremodules is provided as DefaultDocument and is logging all events irrespective of where they come from. This can make it difficult to understand where log events come from. There are 2 major improvements tha...The LogViewer currently in coremodules is provided as DefaultDocument and is logging all events irrespective of where they come from. This can make it difficult to understand where log events come from. There are 2 major improvements that can be made:
1. LogViewer should not be a DefaultDocument but instead could be available upon user request when clicking a button in a toolbar (maybe bottom toolbar). This means placing Logger views in the container project.
2. Separate logger views could be created at runtime for active tasks (make the button appear in the toolbar when a task is launched). Tasks that have been completed can then be dismissed upon user request. In any case the logs file (in the logs folder of the application) is kept to keep a record of logging eventsUsabilityhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/29Manual Classification2022-06-03T11:25:39ZGuillaume BlinManual ClassificationA recurrent task when analysing images of embryos is to label several 3D regions so that object features can be extracted for each domain and compared to one another.
Currently the way to go about it is to create a new SegmentationResul...A recurrent task when analysing images of embryos is to label several 3D regions so that object features can be extracted for each domain and compared to one another.
Currently the way to go about it is to create a new SegmentationResult, manually paint the regions using the segmentation editor, compute features, create filters for each unique region and then propagate this classification to other objects using the 'Membership Finder' module and then create new filters again on the target object.
Needless to say that this procedure is **very tedious**.
So here is a feature which would greatly facilitate our lives:
Instead of creating new objects, we could use a modified version of the segmentation editor in order to create a new property in the desired object type:
![image](/uploads/c811ca637ddcdb2e86a8a5e0e0af6879/image.png)
NB: The interface to start looking at in order to implement this is [AnnotationManager](https://framagit.org/pickcellslab/pickcells-api/blob/78686b8f5b62d00aff1a255fd00f6207af054ece/pickcells-img/src/main/java/org/pickcellslab/pickcells/api/img/view/AnnotationManager.java#L46)Usabilityhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/27Boundaries detection error2018-03-21T14:24:22ZDarrenBoundaries detection errorWhen running boundaries detection module the following error appears:
Error
Message:
org.pickcellslab.pickcells.api.app.modules.AnalysisException: Unable to read the database
Level:
WARNING
Stack Trace:
Unable to read the dat...When running boundaries detection module the following error appears:
Error
Message:
org.pickcellslab.pickcells.api.app.modules.AnalysisException: Unable to read the database
Level:
WARNING
Stack Trace:
Unable to read the database
org.pickcellslab.pickcells.boundaries.BoundariesIdentifier.launch(BoundariesIdentifier.java:178)
org.pickcellslab.pickcells.main.Workbench.lambda$null$4(Workbench.java:334)
java.lang.Thread.run(Thread.java:745)
net.imglib2.type.numeric.real.FloatType cannot be cast to net.imglib2.type.numeric.integer.UnsignedShortType
org.pickcellslab.pickcells.boundaries.BoundariesIdentifier.process(BoundariesIdentifier.java:253)
org.pickcellslab.pickcells.boundaries.BoundariesIdentifier.launch(BoundariesIdentifier.java:174)
org.pickcellslab.pickcells.main.Workbench.lambda$null$4(Workbench.java:334)
java.lang.Thread.run(Thread.java:745)https://framagit.org/pickcellslab/pickcells-essentials/-/issues/25Interactive image gallery2022-06-03T12:53:59ZGuillaume BlinInteractive image galleryPickCells allows users to analyse large sets of biological images. The usability evaluation revealed users were often frustrated not to see an overview of their images once imported into PickCells. To solve this, we should add an interac...PickCells allows users to analyse large sets of biological images. The usability evaluation revealed users were often frustrated not to see an overview of their images once imported into PickCells. To solve this, we should add an interactive image gallery.
The user will be able to apply filters and group images based on user-defined categories. We should make sure that this new feature comes with the added benefit of an enriched API allowing plugin developers to easily create and handle image thumbnails (entire images or specific objects detected in images), thus facilitating the development of interactive plugins in the future.
See also pickcellslab/pickcells-api#9UsabilityGuillaume BlinGuillaume Blinhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/22Create 'Reorient PCA Vector' Utility2022-06-03T13:07:33ZGuillaume BlinCreate 'Reorient PCA Vector' UtilityFor PCA vectors created by the EllipseComputer in pickcells-coremodules, vectors define an orientation but their sense is actually arbitrary. However it would help if a convention would be established to define the sense, for example whe...For PCA vectors created by the EllipseComputer in pickcells-coremodules, vectors define an orientation but their sense is actually arbitrary. However it would help if a convention would be established to define the sense, for example when one wants to analyse the behaviour of nuclei shapes with respect to other landmarks.
A new 'Utility' interface is available [in pickCells-api](https://framagit.org/pickcellslab/pickcells-api/issues/6) where it would be possible to add a function which takes all the PCA vectors and ensure that the sense follow the same convention, for example: for each component, if angle with norm vector > 90, then change the senseGuillaume BlinGuillaume Blinhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/13Display the current number of objects in editors2017-08-08T15:30:10ZGuillaume BlinDisplay the current number of objects in editorsSuggested in [this PickCells Colony post](https://colony.pickcellslab.org/t/display-number-of-objects-eg-segmentation-or-dots-in-an-image-while-editing/55?u=ghiomm)Suggested in [this PickCells Colony post](https://colony.pickcellslab.org/t/display-number-of-objects-eg-segmentation-or-dots-in-an-image-while-editing/55?u=ghiomm)https://framagit.org/pickcellslab/pickcells-essentials/-/issues/12Association Editor2022-06-03T17:19:17ZGuillaume BlinAssociation EditorThis is a proposal for a new feature which would allow the user to **interactively edit relationships between ImageLocated objects**.
The [TrackEditor](https://framagit.org/pickcellslab/pickcells-essentials/blob/master/pickcells-coremodu...This is a proposal for a new feature which would allow the user to **interactively edit relationships between ImageLocated objects**.
The [TrackEditor](https://framagit.org/pickcellslab/pickcells-essentials/blob/master/pickcells-coremodules/src/main/java/org/pickcellslab/pickcells/tracking/TrackEditor.java) already implements this functionality for TRACK links only. It would be really useful to create a generic version of this.
The initialisation and genericity of this functionality could be implemented by enabling the user to choose 2 options:
1. Choose the type of Links to be edited (with a Predicate on Links to make sure that it connects ImageLocated)
2. Choose an **Association Rule**.
This **'Association Rule'** can be an interface with a linkEdited() method which would trigger rearrangements of other relationships if necessary. For example nuclei to centrosomes associations could be edited this way since associations mistakes may propagate to neighbouring nuclei, corrections would do the same.https://framagit.org/pickcellslab/pickcells-essentials/-/issues/11Features computation out of memory error when processing lots of images2022-06-03T13:07:34ZGuillaume BlinFeatures computation out of memory error when processing lots of imagesCurrently [FeatureComputerManager](https://framagit.org/pickcellslab/pickcells-essentials/blob/master/pickcells-coremodules/src/main/java/org/pickcellslab/pickcells/features/FeatureComputerManager.java) keeps all the created objects acro...Currently [FeatureComputerManager](https://framagit.org/pickcellslab/pickcells-essentials/blob/master/pickcells-coremodules/src/main/java/org/pickcellslab/pickcells/features/FeatureComputerManager.java) keeps all the created objects across all registered images in memory before committing them to the database.
We need to adopt a system to commit objects to the database after each image while still enabling a roll back mechanism if any error occurs before all images have been processed.https://framagit.org/pickcellslab/pickcells-essentials/-/issues/10Upgrade ImageViewer consumers to use ImageDisplay instead2022-06-03T17:18:53ZGuillaume BlinUpgrade ImageViewer consumers to use ImageDisplay instead[ImageDisplay](https://framagit.org/pickcellslab/pickcells-api/blob/master/pickcells-img/src/main/java/org/pickcellslab/pickcells/api/img/view/ImageDisplay.java) has been added in the API to decouple client code from actual implementatio...[ImageDisplay](https://framagit.org/pickcellslab/pickcells-api/blob/master/pickcells-img/src/main/java/org/pickcellslab/pickcells/api/img/view/ImageDisplay.java) has been added in the API to decouple client code from actual implementation. The current implementation of ImageDisplay provides more functionality and the UI has been optimised. ImageViewer consumers should be upgraded to use ImageDisplay instead.
Known consumers include:
* [MitosisDialog](https://framagit.org/pickcellslab/pickcells-essentials/blob/master/pickcells-coremodules/src/main/java/org/pickcellslab/pickcells/spots/MitosisDialog.java)
* [SpotDetectorDialog](https://framagit.org/pickcellslab/pickcells-essentials/blob/master/pickcells-coremodules/src/main/java/org/pickcellslab/pickcells/spots/SpotDetectorDialog.java)
* [ImgView](https://framagit.org/pickcellslab/pickcells-essentials/blob/master/pickcells-coremodules/src/main/java/org/pickcellslab/pickcells/imgview/ImgView.java)https://framagit.org/pickcellslab/pickcells-essentials/-/issues/8No warning message when experiment database cannot be found on file system2017-07-27T09:15:42ZGuillaume BlinNo warning message when experiment database cannot be found on file systemThe problem occurs when a database has been removed from the file system but not from the admin database. When the user launches the 'non-existent' database, he/she ends up on a blank MetaModel page in the workbench with no message. Ther...The problem occurs when a database has been removed from the file system but not from the admin database. When the user launches the 'non-existent' database, he/she ends up on a blank MetaModel page in the workbench with no message. There should be a a mechanism to warn the user of the issue and allow the user to update or delete the obsolete entry.https://framagit.org/pickcellslab/pickcells-essentials/-/issues/7Nuclei - Centrosome Assignment Validation2017-08-04T11:51:07ZGuillaume BlinNuclei - Centrosome Assignment ValidationThere should be a thorough documentation about how this module works and how its accuracy can be validated.
The code must include a unit test with small sample images.There should be a thorough documentation about how this module works and how its accuracy can be validated.
The code must include a unit test with small sample images.Guillaume BlinGuillaume Blinhttps://framagit.org/pickcellslab/pickcells-essentials/-/issues/6Mitosis detector robustness2017-10-06T09:14:57ZGuillaume BlinMitosis detector robustnessThe accuracy of the output of the mitosis detector module is really image dependent and requires the user to tediously fiddle with the parameters.
The user should be given the choice to click on cells which correspond to mitoses as an al...The accuracy of the output of the mitosis detector module is really image dependent and requires the user to tediously fiddle with the parameters.
The user should be given the choice to click on cells which correspond to mitoses as an alternative while a more robust detector is being developed.
See also [this notebook entry](https://rspace.is.ed.ac.uk/notebookEditor/7124?initialRecordToDisplay=7125&settingsKey=LCPvuSWWwK)