grishkam / quickfigures Goto Github PK
View Code? Open in Web Editor NEWQuickFigures is a toolset for creating scientific figures see publication for details
License: Other
QuickFigures is a toolset for creating scientific figures see publication for details
License: Other
When creating a layout from an image, images can be added to the panels in the layout by drag-and-drop.
Removing the original image in a layout (i.e. the image that the layout was created from) breaks this behavior, and quickfigures/imageJ becomes unable to open images in the panels.
This makes the user unable to perform actions such as changing the original image and duplicating layouts without the original image.
Dragging an image into the layout without the original image produces this QuickFigures message output:
Two channels share the same name EGFP EGFP 0 1
Problem: more than one channels have the same name
java.lang.NullPointerException
genericTools.NormalToolDragHandler.handleMultiChannelStackDrop(NormalToolDragHandler.java:440)
genericTools.NormalToolDragHandler.openFileListAndAddToFigure(NormalToolDragHandler.java:310)
genericTools.NormalToolDragHandler.handleFileListDrop(NormalToolDragHandler.java:235)
genericTools.NormalToolDragHandler.drop(NormalToolDragHandler.java:86)
imageDisplayApp.GraphicSetDisplayWindow.drop(GraphicSetDisplayWindow.java:934)
java.awt.dnd.DropTarget.drop(DropTarget.java:455)
sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:538)
sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:852)
sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:776)
sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
java.awt.Component.dispatchEventImpl(Component.java:4744)
java.awt.Container.dispatchEventImpl(Container.java:2297)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4609)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:4471)
java.awt.Container.dispatchEventImpl(Container.java:2283)
java.awt.Window.dispatchEventImpl(Window.java:2746)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
java.awt.EventQueue.access$500(EventQueue.java:97)
java.awt.EventQueue$3.run(EventQueue.java:709)
java.awt.EventQueue$3.run(EventQueue.java:703)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
java.awt.EventQueue$4.run(EventQueue.java:733)
java.awt.EventQueue$4.run(EventQueue.java:731)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
See this file for minimal reprex
qf_issue.zip
Perhaps the behavior can be more stable if layouts were to be independent from the original image? This would also allow the user to premake a layout and then dragging images into the layout.
Hi @grishkam,
Firstly, thanks a lot for this amazing tool! It helps a lot with the daily work in ImageJ!
I have one question: When I have a multichannel image and want to exclude one channel from the Merge tile this doesn't work for me. I can open the dropdown menu but I can't select one of the options. When I click on one of them nothing happens. Here a screenshot of the situation:
After selecting one channel it just sticks with "none selected". However, the option "Go up to channel" works perfectly. But for example in the case above I'd like to exclude the brightfield channel which comes second.
Do you have an idea what's the problem? Is it a bug or do I just have to do anything differently?
Thanks a lot in advance!
Hi
If I open an image and press the western blot icon the program skips directly to the step of choosing lanes and labels putting the whole figure as the ROI. How do I make sure to get the ROI selection to occur?
Hello Gregory,
The scale bar added by Quick Figures is always in um. I am wondering if I can change the unit to nm. I try to edit the calibration to nm, but it did not change any thing.
Thank you for your help!
Mai
Hi, I've got a couple questions for whoever is the main author of this package. How can I connect with you?
Hello,
I am having problems to adjust the insets size.
First , I draw 3 insets and clicking in the middle of the square I can choose the size of the inset, that works well. However, If i want to make bigger the insets images I cannot resize the single panel to a new size of my election, I have to drag the coordinates to do so.
I can drag any of the point to enlarge the image but to do this for every single inset turn out in different panel size because is difficult to make them equal.
I was thinking in an option like photoshop or powerpoint where you can move a panel and check if the size are the same aligning with some guide or an option in figure where you can select all your insets and create a new size. But I read the guide and saw the tutorial on youtube and could not find it.
Is there any way to adjust size of independent panel or format a group of insets panel ?
Thank you
Hello Everyone,
I have been using QuichFigures on Windows 10 for a few days from Fiji. It's a good plugin but when I finish creating my figures, I export them to PowerPoint. The resulting document does not contain the Scale bars and I have to redraw them. There is also an error during the export. A message tells me that I don't have the right Apache POI version (5.2.3). Do other people have this type of error? Thank you for giving me your help.
Dear Gregory,
Thanks for developing this useful plugin and making it available to the community.
I'm using the latest version of QuickFigures shipping with Fiji.
Most parts of it work great, but setting whatever value in the "Min/Max" dialog opening upon right-click onto an image and choosing the "Channel" item in the pop-up list doesn't change the appearance of the image.
Is there something I'm doing wrong?
Hello,
I somehow cannot open a previously saved .ser file. I always get following message in the "QuickFigures Messages" window and nothing happens:
java.io.EOFException
java.io.ObjectInputStream$BlockDataInputStream.readFully(ObjectInputStream.java:3104)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2274)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285)
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:561)
appContextforIJ1.ImagePlusMultiChannelSlot.readObject(ImagePlusMultiChannelSlot.java:686)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2176)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
java.util.ArrayList.readObject(ArrayList.java:797)
sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2176)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
java.util.ArrayList.readObject(ArrayList.java:797)
sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2176)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
imageDisplayApp.ImageDisplayIO.readFromFile(ImageDisplayIO.java:51)
imageDisplayApp.ImageDisplayIO.showFile(ImageDisplayIO.java:116)
basicMenusForApp.OpeningFileDropHandler.performsingleFileAction(OpeningFileDropHandler.java:41)
basicMenusForApp.FileDropHandler.drop(FileDropHandler.java:61)
java.awt.dnd.DropTarget.drop(DropTarget.java:455)
sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:538)
sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:852)
sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:776)
sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
java.awt.Component.dispatchEventImpl(Component.java:4744)
java.awt.Container.dispatchEventImpl(Container.java:2297)
java.awt.Window.dispatchEventImpl(Window.java:2746)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
java.awt.EventQueue.access$500(EventQueue.java:97)
java.awt.EventQueue$3.run(EventQueue.java:709)
java.awt.EventQueue$3.run(EventQueue.java:703)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
java.awt.EventQueue$4.run(EventQueue.java:733)
java.awt.EventQueue$4.run(EventQueue.java:731)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Thanks a lot for any help in advance!
Hi, QuickFigures is amazingly helpful, thanks for all the hard work on this. I have had several problems when moving images from their own independent layouts into new panels of a multi-row layout. After I have done this the switch row and switch column widgets either cause the panels to permanently disappear or they just don't move. Is this because of how I have set this up or is it a bug? How do you recommend adding images to new panels in the same layout as existing images?
Thanks,
Ewan
Please help, Quick Figures is unworkable after update, constantly crashes when trying to make inserts.
I attached a list of errors from imagej console.
Console.txt
Hi,
I am trying to add Merge-Only Figures to a canvas, and am having trouble. Getting the first Merge-Only Figure in a canvas isn't hard; I can create a canvas with one via File>New>Figure with Merge Panels Only. The problem is getting a second Merge-Only Figure to be in the same canvas.
If I do the same as above, it automatically opens a new canvas with the Merge-Only Figure. Another way I have tried is to add a Split-Channel Figure (via Quick Multichannel Figure or dragging in a file) and then delete the extraneous channels. However, when I try to do this, I keep get an error. Weirdly, I am able to sometimes delete one or two channels within an figure, but there is always one channel that I cannot delete without getting an impassible error.
A third method I have thought of is to add all my images to the first Merge-Only Figure, and then somehow split it into multiple figures, but I cannot find a way to split one figure into two.
Let me know what other information I can provide to help resolve this issue, or if there is a simple fix I am missing.
I am new to QuickFigures and really excited about it!
Thanks,
Nathan
Hi Gregory,
I am giving a try to QuickFigures. So far it looks useful, thank you for creating it!
I wonder whether I am being blind or it is not implemented… Is it possible to save a work and continue working on it later with QuickFigures? It is not possible with the svg file (not surprising i guess).
Thank you!
Sergei
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.