imagej / imagej2 Goto Github PK
View Code? Open in Web Editor NEWOpen scientific N-dimensional image processing :microscope: :sparkler:
Home Page: https://imagej.net/
License: BSD 2-Clause "Simplified" License
Open scientific N-dimensional image processing :microscope: :sparkler:
Home Page: https://imagej.net/
License: BSD 2-Clause "Simplified" License
I get this error message whenever I open the B/C plugin now.. but the "Default" button still works. I'm assuming it's because there is no implementation for Button to discover.. so maybe it just shouldn't be an @Parameter
? Or maybe it should be a ButtonWidget
?
Also why is there both a Button
and ButtonWidget...?
We want to provide a mechanism for displaying OME-XML and other metadata in a dedicated window. However, we should first consider the best way of doing so without limiting the generality of our approach. SCIFIO supports multiple data models (extensibly). At the lower level, SCIFIO simply attaches the relevant metadata object to the resultant SCIFIOCellImg
which gets returned by the ImgOpener
. We just need a way to expose this information via the UI somehow. Perhaps the best solution would be a PostprocessorPlugin
that displays the OME-XML. Where such a postprocessor plugin would live, though, is not immediately obvious as of this writing.
The procedure described in our RELEASES.md
for manual testing could use a repository to ease the process, as discussed here.
Maybe imagej-manual-testing.git
?
The Dataset
class is a special type of Img
(actually, an ImgPlus
). Ideally it would be an ImgPlus
rather than just having one (inheritance, not just composition). The advantage would be that Dataset
s could then be used directly as method arguments that operate on Img
s and ImgPlus
es. This would be particularly useful for ImageJ OPS.
I got some weird trouble building imagej with mvn
.
[DEBUG] net.imagej:ij-updater-core:jar:2.0.0-SNAPSHOT (selected for null)
[DEBUG] active project artifact:
artifact = active project artifact:
artifact = net.imagej:ij-core:jar:2.0.0-SNAPSHOT:compile;
project: MavenProject: net.imagej:ij-core:2.0.0-SNAPSHOT @ /home/hadim/local/ij/imagej/core/core/pom.xml;
project: MavenProject: net.imagej:ij-core:2.0.0-SNAPSHOT @ /home/hadim/local/ij/imagej/core/core/pom.xml (selected for compile)
[DEBUG] org.scijava:scijava-common:jar:2.10.0:compile (selected for compile)
[DEBUG] org.bushe:eventbus:jar:1.4:compile (selected for compile)
[DEBUG] com.sun:tools:jar:1.4.2:system (selected for system)
[DEBUG] junit:junit:jar:4.8.1:test (selected for test)
[DEBUG] net.imagej:ij-core:jar:tests:2.0.0-SNAPSHOT:test (selected for test)
[DEBUG] Skipping disabled repository central
[DEBUG] ij-core: using locally installed snapshot
[DEBUG] Trying repository imagej.public
[DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[DEBUG] Checking for pre-existing User-Agent configuration.
[DEBUG] Adding User-Agent configuration.
[DEBUG] Connecting to repository: 'imagej.public' with url: 'http://maven.imagej.net/content/groups/public'.
Downloading: http://maven.imagej.net/content/groups/public/net/imagej/ij-core/2.0.0-SNAPSHOT/ij-core-2.0.0-SNAPSHOT-tests.jar
[DEBUG] Unable to locate resource in repository
org.apache.maven.wagon.ResourceDoesNotExistException: Unable to locate resource in repository
at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:139)
at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)
at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
at org.apache.maven.artifact.manager.DefaultWagonManager.getRemoteFile(DefaultWagonManager.java:546)
at org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:427)
at org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:382)
at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:216)
at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:90)
at org.apache.maven.artifact.resolver.DefaultArtifactResolver$ResolveArtifactTask.resolveArtifact(DefaultArtifactResolver.java:456)
at org.apache.maven.artifact.resolver.DefaultArtifactResolver$ResolveArtifactTask.run(DefaultArtifactResolver.java:433)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.io.FileNotFoundException: http://maven.imagej.net/content/groups/public/net/imagej/ij-core/2.0.0-SNAPSHOT/ij-core-2.0.0-SNAPSHOT-tests.jar
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1675)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1673)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1671)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1244)
at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:122)
... 13 more
Caused by: java.io.FileNotFoundException: http://maven.imagej.net/content/groups/public/net/imagej/ij-core/2.0.0-SNAPSHOT/ij-core-2.0.0-SNAPSHOT-tests.jar
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1624)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:115)
... 13 more
[DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[INFO] Unable to find resource 'net.imagej:ij-core:jar:tests:2.0.0-SNAPSHOT' in repository imagej.public (http://maven.imagej.net/content/groups/public)
[DEBUG] Skipping disabled repository central
[DEBUG] Unable to download the artifact from any repository
The weird thing is I have this problem at lab but not at home...running same OS (Linux).
We need a robust task service that can maintain metadata about running tasks. This will facilitate improved status reporting (e.g. by nesting progress bars, binning active tasks and providing time estimates at arbitrary granularities), which will be standardized by moving the responsibility to the framework instead of individual operations.
We should have a framework in place so that commands can easily estimate the amount of ram they require.
The framework can then warn if there is insufficient memory to run a given command.
We have switched to a versioning scheme based on SemVer, with release versioning coupling between components, each of which lives in its own Git repository.
Write up a blog post (and/or Wiki page and mail to the ''-devel'' lists) to provide a rationale why, and give others a chance to help us avert stupid changes in our workflow.
Migrated-From: http://trac.imagej.net/ticket/1788
Noticed by @justaguest.
I am not sure if I am on the right place to report this issue. If I am not, please redirect me.
So I am trying to build ImageJ from command line for the first time on latest Linux Mint 64bits following these instructions : http://developer.imagej.net/command-line
I got the following error (I didn't paste the full trace but if you need it, just ask):
Running imagej.legacy.LegacyHeadlessTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 1.17 sec - in imagej.legacy.LegacyHeadlessTest
Results :
Tests in error:
LegacyServiceTest.<clinit>:60 ExceptionInInitializer
LegacyServiceTest.testContext » NoClassDefFound Could not initialize class ima...
OverlayHarmonizerTest.<clinit>:79 NoClassDefFound Could not initialize class i...
OverlayHarmonizerTest.testPolygonOverlay » NoClassDefFound Could not initializ...
OverlayHarmonizerTest.testPolygonROI » NoClassDefFound Could not initialize cl...
OverlayHarmonizerTest.testCompositeRoi » NoClassDefFound Could not initialize ...
OverlayHarmonizerTest.testDonut » NoClassDefFound Could not initialize class i...
OverlayHarmonizerTest.testCreateBinaryMaskOverlay » NoClassDefFound Could not ...
OverlayHarmonizerTest.testCreateBinaryMaskROI » NoClassDefFound Could not init...
OverlayHarmonizerTest.testUpdateDisplay » NoClassDefFound Could not initialize...
OverlayHarmonizerTest.testUpdateImagePlus » NoClassDefFound Could not initiali...
OverlayHarmonizerTest.testGetOverlays » NoClassDefFound Could not initialize c...
LegacyImageMapTest.<clinit>:66 NoClassDefFound Could not initialize class imag...
LegacyImageMapTest.testRegisterLegacyImage » NoClassDefFound Could not initial...
LegacyImageMapTest.testReconciliation » NoClassDefFound Could not initialize c...
ExtraPluginDirsTest.<clinit>:58 NoClassDefFound Could not initialize class ima...
ExtraPluginDirsTest.findsExtraPluginDir » NoClassDefFound Could not initialize...
Tests run: 24, Failures: 0, Errors: 17, Skipped: 1
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] ImageJ Projects ................................... SUCCESS [1.550s]
[INFO] ImageJ POM: Core .................................. SUCCESS [0.016s]
[INFO] ImageJ Core Classes ............................... SUCCESS [2.678s]
[INFO] ImageJ Data Model ................................. SUCCESS [4.044s]
[INFO] ImageJ Core Options ............................... SUCCESS [0.038s]
[INFO] ImageJ Updater .................................... SUCCESS [3.407s]
[INFO] ImageJ User Interface Framework ................... SUCCESS [0.088s]
[INFO] ImageJ POM: Plugins ............................... SUCCESS [0.011s]
[INFO] ImageJ Plugins: Tools ............................. SUCCESS [0.063s]
[INFO] ImageJ Plugins: Commands .......................... SUCCESS [0.349s]
[INFO] ImageJ POM: User Interface ........................ SUCCESS [0.009s]
[INFO] ImageJ POM: AWT and Swing UIs ..................... SUCCESS [0.011s]
[INFO] ImageJ Utility Classes: AWT ....................... SUCCESS [0.031s]
[INFO] ImageJ Legacy Bridge .............................. FAILURE [2.564s]
[INFO] ImageJ POM: Scripting Languages ................... SKIPPED
[INFO] Beanshell Scripting For ImageJ .................... SKIPPED
[INFO] Clojure Scripting For ImageJ ...................... SKIPPED
[INFO] Minimal support for Maven projects ................ SKIPPED
[INFO] A script engine for Java .......................... SKIPPED
[INFO] JavaScript Scripting For ImageJ ................... SKIPPED
[INFO] JRuby Scripting For ImageJ ........................ SKIPPED
[INFO] Jython Scripting For ImageJ ....................... SKIPPED
[INFO] ImageJ Plugins: Platforms ......................... SKIPPED
[INFO] ImageJ Plugins: Text Formats ...................... SKIPPED
[INFO] ImageJ POM: Uploaders ............................. SKIPPED
[INFO] ImageJ Updater support for uploading via SSH/SFTP . SKIPPED
[INFO] ImageJ Updater support for uploading via WebDAV ... SKIPPED
[INFO] ImageJ UI: Common AWT Classes ..................... SKIPPED
[INFO] ImageJ POM: Swing UI .............................. SKIPPED
[INFO] ImageJ Utility Classes: Swing ..................... SKIPPED
[INFO] ImageJ POM: UIs ................................... SKIPPED
[INFO] ImageJ UI: Swing .................................. SKIPPED
[INFO] ImageJ UI: Swing Commands ......................... SKIPPED
[INFO] The Script Editor ................................. SKIPPED
[INFO] ImageJ UI: Swing Tools ............................ SKIPPED
[INFO] ImageJ Updater (Swing) ............................ SKIPPED
[INFO] ImageJ Application ................................ SKIPPED
[INFO] ImageJ UI: AWT .................................... SKIPPED
[INFO] ImageJ UI: Pivot .................................. SKIPPED
[INFO] ImageJ UI: SWT .................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.934s
[INFO] Finished at: Fri Feb 28 23:46:48 CET 2014
[INFO] Final Memory: 20M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test (default-test) on project ij-legacy: There are test failures.
[ERROR]
[ERROR] Please refer to /home/hadim/local/imagej/core/legacy/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test (default-test) on project ij-legacy: There are test failures.
Please refer to /home/hadim/local/imagej/core/legacy/target/surefire-reports for the individual test results.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures.
Please refer to /home/hadim/local/imagej/core/legacy/target/surefire-reports for the individual test results.
at org.apache.maven.plugin.surefire.SurefireHelper.reportExecution(SurefireHelper.java:82)
at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary(SurefirePlugin.java:190)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:852)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:720)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :ij-legacy
Thank you
Currently there are many Edit > Options plugin dialogs. It would be better to combine them into a single tabbed dialog.
Migrated-From: http://trac.imagej.net/ticket/366
I really would like to merge the recent work on fiji-compat (which relies on the new ij1-patcher/ij-legacy combo) and upload soon. For that purpose, I would like to keep a release binding, for which I would need to tag and release a special-purpose ij-legacy (I would make it depend on ij-*-beta-7.7) so I can use the new interfaces (e.g. LegacyEditor) therein.
There are multiple overlapping subdomains right now: mirror.imagej.net, developer.imagej.net, wiki.imagej.net. The goal is to unify them to all serve the same content from imagej.net with smart delegation: legacy URLs go to the mirror content, wiki pages load from the wiki, etc.
The front page of imagej.net will become a splash page, with links to ImageJ2, ImageJ1 and Fiji. (The current ImageJ1 front will still get its own URL, imagej1.html or similar).
One challenge is to unify the Drupal and MediaWiki portions somehow. The current plan is to migrate everything from Drupal to MediaWiki and ditch Drupal completely in favor of using wiki.imagej.net as the basis for everything.
Migrated-From: http://trac.imagej.net/ticket/1665, http://trac.imagej.net/ticket/1700, http://trac.imagej.net/ticket/1782
Incorrect dependencies make the upload error out, without a chance to fix it. Convert the dependency checking into conflicts that can be resolved on the command-line just like in the GUI.
We have a screencast on how to develop and debug ImageJ itself from within Eclipse, but a far more common scenario is to develop ImageJ plugins, without hacking on ImageJ itself. As things stand, people find the screencast on the former and believe it to be applicable to the latter, resulting in various confusion and problems. So let's make a screencast for that simpler, and far more common, scenario!
Migrated-From: http://trac.imagej.net/ticket/2043
The updater does not correctly reinstate the dependency/previous version information when the user switched off an update site.
This is related, but not identical to, fiji/fiji#64
About http://trac.imagej.net/ticket/536. I wonder to know wether you choose a strategy to store ROIs ?
Even if it could be important to have an independant mechanism (independant from image file), it would be very nice to be able to store ROIs in OME XML.
The updater should, when performing the upload-complete-site
operation, remove all obsolete dependency declarations.
We have not used any <exclusions>
blocks in our dependency declarations... until today. Now that we have need to exclude some transitive dependencies in this way (specifically: the gov.nih.imagej:imagej
artifact from the ome:bio-formats_plugins
dependency), it would be nice if MiniMaven respected such exclusions and did not copy excluded transitive dependencies into the jars
or plugins
folders.
Following scifio/scifio#153.
Add a way to only save OME XML metadata on the first IFD instead rewriting all dataset. According to @ctrueden, Bio-Formats and SCIFIO already have this feature.
Commit 15758c8 intended to fix issues when switching to modern mode from Fiji, in that downstream discoverable plugins were not being made available to the class loader (for example, SCIFIO-BF-compat and SCIFIO-LifeSci, although uploaded to Fiji and present in the Fiji classpath, would not transfer to IJ2 when switching to modern mode).
The aforementioned commit sets the context classloader on whichever thread calls getContext() first. However, this lead to a bug that caused resources to be discovered twice. This was fixed at the scijava-common level, but apparently this change still has serious negative impact in Fiji. Using the current IJ2 master in Fiji results in a mangled menu bar (see screenshot) and inability to perform basic operations, such as File > Open.
These changes should all be moot after @dscho 's refactoring and improvement of the legacy layer. Until that is ready, we should not upload any current part of IJ2 to Fiji. Once the legacy improvements are complete, we should verify that Switch to modern mode works as intended, with plugins being appropriately available to IJ2.
ImageJ and related artifacts should be available in the Central repository with every release starting with 2.0.0, if not before.
Once it is done, we should update Stack Overflow question #12458688.
Migrated-From: http://trac.imagej.net/ticket/1670
I have the following error uploading a large Tiff file (1.8Go) via Help>Upload sample image.
[ERROR] Module threw error
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
at java.util.Arrays.copyOf(Arrays.java:2271)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
at sun.net.www.http.PosterOutputStream.write(PosterOutputStream.java:78)
at imagej.plugins.commands.upload.SampleImageUploader.upload(SampleImageUploader.java:113)
at imagej.plugins.commands.upload.SampleImageUploader.uploadFile(SampleImageUploader.java:95)
at imagej.plugins.commands.upload.SampleImageUploader.run(SampleImageUploader.java:88)
at imagej.command.CommandModule.run(CommandModule.java:193)
at imagej.module.ModuleRunner.run(ModuleRunner.java:166)
at imagej.module.ModuleRunner.call(ModuleRunner.java:127)
at imagej.module.ModuleRunner.call(ModuleRunner.java:66)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
$ free -h
total used free shared buffers cached
Mem: 15G 15G 150M 0B 3,4G 4,6G
-/+ buffers/cache: 7,5G 8,1G
Swap: 2,8G 168M 2,6G
I set Edit>Options>Memory to 7000Mb.
There are still some more information we should show, such as commit, SCM, javadoc URL, etc
People get constantly confused with that poor design choice: in the current architecture, one cannot have both Upload
and Update
changes at the same time (the rationale was that uploaders should be forced to test their stuff first). So let's disallow that, and consolidate the Apply changes
and Upload to server
buttons into one.
... and invite Barry
Migrated-From: http://trac.imagej.net/ticket/2031
If an @Parameter
is of type ImgPlus
or RandomAccessibleInterval
or IterableInterval
or Labeling
or RegionOfInterest
(and possibly other similar ImgLib2 interfaces), it should be possible to fill them with an ImageJ Data
object.
When executing ImageJ scripts, plugins or macros headlessly, it would be nice if the process could give a non-zero return code in case of error. Currently, ImageJ1 does not do this.
Added by @luxigo:
It would be helpful if Fiji exit code was not zero when an unhandled exception (eg: java.awt.HeadlessException) is raised in headless mode... at least optionally.
Another technology to investigate is the Java Image Science Toolkit, used by MIPAV to provide automated GUI generation for application plug-ins, graphical layout tools, and command line interfaces. It would be very useful to share plugins between multiple systems such as ImageJ, MIPAV, Vaa3D, ITK/VTK and others.
Migrated-From: http://trac.imagej.net/ticket/1133
Hi,
Did you take a decision about http://trac.imagej.net/ticket/1708 ?
I don't think you want to use OME format as IJ2 standard because users not playing with microscopy data will be lost.
IJ1 standard metadata format is binary and so it's really hard to work with. I am a python dev so I process my images with python libs. It's really not easy (for example I can read but not write metadata...).
In my opinion you should define your own IJ2 Tiff metadata format. It will be minimalist and contain only very basic informations about the image. JSON is a perfect candidat for this kind of thing because it's easy to read for machine AND for human.
Let me know about this !
Hi again,
I would like to propose you new ways to interact with image in IJ GUI. I will be prefectly ok if you don't think this kind of change is appropriate.
I guess the way user can interact to image come from the really IJ beginning. I found it pretty old and not confortable.
Let me describe what I am talking about : right now user need to enable zoom and pan each time he wants to zoom and pan on the current image. Nowdays we are all using mouse with two buttons with another scroll wheel which can act as a third button.
So what I suggest is to simply add others way to pan and zoom on the image than using pan and zoom buttons on the interface :
This kind of way to interact with image are already default on most of the tools I daily use to open images and photos (see all linux image viewer for example). And it seems to me a really natural way to navigate in images.
Hope you understood what I am trying to tell you !
Once again and because it's a pretty big thing I will be perfectly ok if you don't agree with this proposal.
PS: I know I am good to make proposals and report issues and so you could argue me that I could push some commits but I am more a Python dev and it will take me too much time to dive into IJ2 code (and I also have a thesis to write...).
When the updater detects a file on an update site it did not see before, it should be marked for update automatically.
As reported by @ehrenfeu:
I'm working with a dual-screen layout (internal notebook + external TFT), where the external one is a lot bigger and thus naturally my primary screen.
Depending on the configuration where Unity should place its launcher, ImageJ places most of its windows on the same screen (e.g. the main window, newly opened files, brightness&contrast). However, some windows always get placed on the leftmost screen (histogram, action bars, ...), which is a bit confusing.
So apparently some windows follow a "preferred" screen policy while others stubbornly stick to the first available screen.
We could fix this at the ij-legacy
level by adding a patch to be smarter about using GraphicsEnvironment
to show dialogs on the expected screen in more cases.
To show-case the new and improved architecture of ImageJ2, we should use our own (large) OpenSPIM data to demonstrate that it does not be loaded into memory completely, but loading happens transparently.
Data:
It might make sense to wait with showing it off until the SPIM Viewer is integrated into the ImageJ2 UI infrastructure...
Migrated-From: http://trac.imagej.net/ticket/1819
When a new version of, say, jars/a.jar
all of a sudden depends on jars/b.jar
, that dependency is apparently not recorded when uploading a.jar
and b.jar
via the command-line updater.
If a command requires as an input parameter a certain operation (e.g. a ThresholdMethod), one actually does not want to care about the parameter assignment of this operation itself (e.g. another dialog could pop up as soon a certain operation-instance was selected).
In IJ2 the default color mode when a multi channel image is opened is Color while it's grayscale in IJ 1.x.
Is that a desired behaviour or a bug ?
PS: Note that I would prefer a grayscale mode by default, but that's only my opinion.
The JDepend Maven plugin uses JDepend to easily produce reports as part of site:site.
We should give this a try and see how useful it is.
Migrated-From: http://trac.imagej.net/ticket/175
ImageJ 1.x has a plugins.dir system property that controls the directory from which plugins are discovered. In ImageJ2 we will expand this feature to support multiple directories via an ij.plugins.path property or similar.
As an added bonus, this will aid in mitigating certain Eclipse limitations with plugin discovery. We can do a brute force scan of any JAR files that are A) present in ij.plugins.path; and B) missing up-to-date SezPoz metadata. In this way, we can avoid brute force scanning the entire Java classpath, which would be prohibitively slow.
Migrated-From: http://trac.imagej.net/ticket/1208
When uploading a JAR built with Maven (i.e., which has a POM in META-INF/maven
), we should not only detect dependencies via bytecode scan, but also append any dependencies with runtime scope (and maybe compile scope) declared in the POM. This is important because sometimes a JAR will be a runtime dependency that is not directly referenced in bytecode, but is still necessary in some manner some discovery mechanism, reflection, etc.
Under some unfortunate circumstances the db.xml.gz
file ca get lost. In that case, all the update sites have to be readded.
Fiji -- the biggest user of the updater, and also its incubation chamber -- deserves to be special-cased: the updater should detect the presence of, say, jars/fiji-compat[-<version>].jar
and activate the Fiji update site by default in that case.
Noticed by Ilan Tal, diagnosed by Jan Eglinger.
Right now, Fiji and ImageJ2 have the problem that if unpacked into the Program Files
directory on Windows, the ImageJ Updater does not have full, unimpeded read/write access to its own directory. This is due to the Windows security model. It is in general very difficult to detect programmatically whether things will work; they might seem to work temporarily until the computer is rebooted, for example.
However, there is a potential solution: distribute the Windows version of ImageJ using an installer such as NSIS or Inno Setup, and have the installer flag the entire ImageJ/Fiji directory as globally writable by all users.
For details, see this SO answer and this Inno Setup FAQ entry.
Having a Windows installer will be good anyway because Windows users are most comfortable with them (just like OS X users are comfortable with DMG images which they mount and then copy the .app into /Applications
themselves).
One wrinkle is that we still want to give a helpful error message if ImageJ/Fiji was manually unpacked into Program Files
without using the installer. To do that, we can have the installer write a stub file into the installation directory, which is not present in the ImageJ/Fiji cross-platform zip distribution. And if the Updater does not see that stub file, it refuses to try to update an installation in Program Files
.
Migrated-From: http://trac.imagej.net/ticket/2011
I would like to know if you have plan for a python binding?
Note that I don't mean python binding as a script language to be executed into java with Jython. I mean a binding to be able to use IJ and SCIFIO as a python library and so be able to integrate it into a much larger python projects which CPython and others sci python libs (numpy, scipy, pandas and so forth).
I know CellProfiler has developed a "bridge" but I was thinking a much cleaner and less complex (to maintain and to use) solution.
A direct binding with JNI for example (but I guess JNI could be very complex to implement for this kind of big project).
From @dscho:
Eclipse seems to become more and more popular these days. So, to make things easier for developers, add a plugin that sets up an Eclipse project to develop an IJ2 plugin. This entails:
We might be able to come up with way to "listen" for an event sent by the Run configuration that triggers
Eclipse provides quite powerful debugging facilities. This most likely requires ImageJ's to be started in a special mode listening for debuggers (which we could even store in ImageJ.cfg so that any subsequent restart of ImageJ activates that mode), but we might not be able to benefit from Eclipse's in-place code-replacing.
So: even if we manage to come up with a Run configuration that will run the plugin in the current ImageJ instance, we will most probably need to come up with a standalone Run and Debug configuration (that starts up ImageJ whereever it might be installed, adding the appropriate classpath so the plugin is discovered, possibly loading certain images -- that might be chosen from the list of open images at the time File>New>Plugin (Eclipse) is run -- and then runs the plugin).
As a consequence, we need to teach imagej.Main to sprout a way to open images and call plugins from the command-line. The appropriate place is AbstractUserInterface's processArgs() method (whose javadoc should then contain the note that subclasses overriding that method need to hand off to AbstractUserInterface to handle the default command-line parameters).
Migrated-From: http://trac.imagej.net/ticket/1024
When Fiji users submit a bug, the code asks the FilesCollection
class to provide a list of the current versions. This is a bit wasteful, given that most of the files are up-to-date. So let's just list the active update sites, the timestamp of the most recently updated file, and all the files that are not up-to-date, skipping the rest.
While at it, get rid of the funny hex lines that were only relevant as long as people had the old updater.
Sometimes, mistakes happen. Or descriptions need to be adjusted, even if the file itself was not changed. Let's allow that.
We have enough information in the db.xml.gz
files to downgrade relatively reliably (with multiple update sites, we must trust the servers' time to be synchronized well enough).
To downgrade, we should not ask the user for a date, but rather have an overview of the files that changed, in a chronological order.
As a bonus, this view would give us also a very nice graphical representation of Fiji's development from the users' view.
Whenever I cancel a dialog (e.g. File>Save As
, File>Open
..) via the cancel button or hitting escape, a dialog pops up telling me my ImageJ jar version + Java version.
It doesn't cause any problems, it's just confusing, as the first few times I assumed it was an error dialog.
When uploading, first thing is that the db.xml.gz
file is locked via WebDAV. However, if the computer crashes, or ImageJ, or the updater, before the upload completes, the lock is not removed.
To allow recovery, we should log the LOCK token and have a little interactive helper (probably in the src/test/java/
part of plugins/uploaders/webdav/
) to force-unlock.
This would have helped @iarganda with the problem he reported in http://fiji-devel.54424.x6.nabble.com/unable-to-upload-the-new-version-of-my-plugin-td1435.html...
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.