Skip to content
Snippets Groups Projects
Commit fff53443 authored by Paul McCarthy's avatar Paul McCarthy
Browse files

Removed TODO list from git repo. It's been annoying me for a while. Will

continue to live in my local repository, until I migrate to gitlab issue
tracker.
parent 152a2f59
No related branches found
No related tags found
No related merge requests found
TODO LIST -*- mode: org; -*-
A mixture of things to do, things which might be nice to do, and things which
have been done. Order is arbitrary. Check
https://internal.fmrib.ox.ac.uk/i-wiki/Analysis/Todos/FSLView regularly, too.
* Required feature list before next internal release
** Complete code documentation, commenting and clean-up
Props is done.
** Move TODO list to Gitlab
** Startup time on X11/SSH
** About dialog
Credit for all libraries
Credit for icons
** DONE-ISH Testing
** DONE Tooltips
** DONE Other
*** WONTFIX Remove Colour map name from toolbar
I think I need to write my own combobox implementation (subclass
OwnerDrawnComboBox) in order to achieve this. This would also allow me to
properly disable the colour map combo box.
*** WONTFIX Unavailable options (e.g. spline interp) shown but disabled?
Not possible unless I roll my own combo box implementation (maybe combine
with Colour map name item above ...)
*** CAN'T REPRODUCE 'Fastest' performance - subsampling not working?
*** CAN'T REPRODUCE LUT-related exception when removing Label overlays from list - orphaned widgets on display toolbar/pane
*** DONE Unlink opacity when volume overlays linked
*** DONE 3d histogram overlay data range broken?
Display properties on all ViewPanels were unsycned by defeault - changed to only canvaspanels
*** DONE Give random lut have enough colours for talairach
*** DONE Rename to FSLEyes
*** DONE Startup time
Startup time is comparable to FSLView, and faster in most cases.
*** DONE Vertical Colour bar is inverted
*** DONE Canvas background colour not refreshing correctly
*** DONE Screenshot doesn't work when labels not shown
*** DONE Occasional (non-fatal) error when loading VTK models
*** DONE Make toolbar sizing sensible
*** DONE Editor bugfixes/performance
*** DONE Ortho view<->edit profile changes screw up OrthoProfileToolbar. Also needs to handle non-volume overlays, and non-pixdim/ID volumes. Maybe all edit tools should be visible by default, but all disabled when in view mode.
*** DONE OrthoToolbar needs to re-bind profile action buttons when profile changes
*** DONE Iconify/clean up interface
*** DONE Toolbar widgets are capturing mouse wheel events under linux
*** DONE Change Background colour on CanvasPanel
*** DONE OrthoPanel performance - mouse click listener called too many times?
*** DONE Open new view panel (time series) resets location?
*** DONE Ability to display time series for all overlays in TimeSeriesPanel
*** DONE Fix command line for models and labels
*** DONE Label support
*** DONE VTK support
*** DONE Improve time series
*** DONE Improve histogram
*** DONE Feat mode
*** DONE Cluster browser
*** DONE Overlay groups
*** DONE Movie mode
*** DONE FSLView screenshot - use a screengrab instead of call to render, as it will be much faster
*** DONE Dead voxels in Models are not transparent in screenshots
*** DONE Control panel for image header information
*** DONE ViewPanel close action
*** DONE Force a good layout/size for new view panels
*** DONE Display settings sync off by default for new view panels?
*** DONE Persist properties when overlay type changes? E.g. Change to a different type, then change back again - restore previous settings.
*** DONE Persist shared properties when overlay type changes - e.g. Volume -> Mask, the resolution/transform properties should be copied across.
In the Display class, a dictionary of { (DisplayOptstype, propName) : lastValue } mappings, which
is applied to newly created DisplayOpts instances
*** DONE Linux/GTK - click on slider widgets does not change value
*** DONE WidgetList/Grid scrolling under Linux/GTK - you need to bind mouse wheel on all children.
*** DONE Make double click on overlay list toggle visibility, rather than edit name
*** DONE Refresh when numeric control value changes, not when focus lost
All spinctrls now refresh on focus-lose, or when enter is hit.
*** DONE Overlay list order persistence is wonky again
*** DONE If canvas panel display sync is off, and an overlay's type is changed, the new overlay type properties are synced again.
*** DONE Loading overlay dialog not centered
*** DONE HistogramPanel message dialgo is not centred under X11?
*** DONE Combo box mouse selection
*** DONE Spin controls under linux only allow integers
*** DONE 'Reset display range' option on overlay display toolbar/settings panel
*** DONE SliceCanvas - do not re-centre on current location when zoomed in, and displayed slice changes
*** DONE MessageDialog not being sized correctly under X11
*** DONE Disable low-performance options (e.g. label outline, volume invert clipping)
*** DONE Location persistence on transform change is still wonky.
*** DONE $FSLDIR not persisted - fslview/settings should be utils/settings, and should be used by fsl/__init__ to save a default FSLDIR
*** DONE Inverted mask overlay - clipped values are black, not transparent
*** DONE Bricon on mask overlays.
*** DONE Time series/histogram default to solid line
*** DONE CanvasPanel menu option to generate command line for current view
*** DONE Check/fix Display range for 4D images
*** DONE Check/fix Bricon <-> display range linking
*** DONE Add display range (spinctrls) to toolbar
*** DONE FSLDIR management - prompt user at startup? Configurable menu option?
*** DONE Open file dialog should use last directory
* Things to do once the feature list is complete
** Make voxel-space labels more accurate (copy routine from FSLView instead of using nibabel?)
** Use wx.StandardPaths for resources (shaders, icons, etc) instead of relative to python modules
** Action categories, so they can be grouped in menus
** Combine SliceCanvas offscreen+prerender modes - apply both simultaneously
** A better way of managing colour maps/luts
** LookupTable should show a modal message while generating label widgets (talairach takes ages)
** Text annotations for models and labels
** A pre-processor for GL14 shader programs
** Unify/remove duplication across gl*_funcs modules
** Unify/remove duplication across texture classes - the set(**kwargs) method, all the GL texture function calls, and duplicated 3D texture functionality
** Port to wxPython/Phoenix
** Python 3 compatibilitiy audit
* Things to do in props package
** Refactor/rewrite constraints/attributes. Clean up HasProps class - remove related unnecessary methods.
Is there anything stopping me from making the constraints, for each property, properties themselves?
** Remove PropertyOwner metaclass?
I think that all the work performed by the PropertyOwner metaclass can be done in HasProps.__new__, and HasProps.addProperty.
** DONE Bounds property - remove labels, they should be set on ViewItems instead.
** DONE Choice property - remove labels, they should be set on ViewItems instead.
** DONE Add a setting on HasProperties instances to allow validation of all properties to be disabled for instances which don't need it (see comments at properties.py:264).
Also, redo the way that global HasProps validation works - it is currently performed by the PropertyBase instance, which is hacky, I think.
** DONE Have callqueue check to see if a listener (and its args) is already enqueued, drop if it is.
* WX Bugs
** agw.aui
*** Floating panels get moved about when opening/closing another panel - this is a lib.agw.aui issue; I've coded a workaround.
*** Floating panels are resized to specified floating size, but the title bar is not taken into account. Coded a workaround
** Make range widget limit buttons expand properly. Ugh. Works fine under linux. This looks like an OSX Mavericks bug.
Text buttons have a fixed size under OSX. Bitmap buttons are resized.
** Wild cards in file dialog do not support multiple extensions (e.g. '.nii.gz')
* Bugs to fix
** Ortho screenshot when only a single canvas is shown is not working.
** Overlay groups - when a linked overlay is unlinked, then re-linked, its volume (and other?) property does not update correctly.
** FEAT features on partial FEAT runs (e.g. preproc only) is buggy - time series, etc.
** OverlayListPanel enabled/disabled state is dodgy (disabled overlay label sometimes not faded out).
** Linux/GTK - spin button step is crazy big
** Ortho labels not always refreshing properly
** Ortho label bg colour update a bit dodgy
** Ortho screenshot with labels is still dodgy
** Lightbox screenshot has space for scrollbar
** Splash screen status bar does not ellipsize long lines
** Render.py does not set ortho label foreground to the complement of the background.
** Images with NaN values - Volume doesn't show, Mask throws error
** SSH/X11: When 'open overlay' (or any other modal) dialog is open, and user switches to another application, then back, the open overlay dialog is hidden?
** FSLeyes parse args does not support quoted arguments? Need to tokenise
It's caused by my wrapper script - bash parses the arguments before they are passed to python
** VolumeOpts.__toggleListeners - peer.display can be None?
** LightBox - grid lines are drawn below canvas area where slices are drawn
** LocationPanel in lightbox view - voxel value lookup is wrong?
** DONE Lightbox scrollbar under linux not visible?
** DONE Link/unlink Volume brightness/contrast is a bit funky
** DONE Toolbar labels don't refresh properly on selected overlay change
** DONE Clipping range not working for some volumes in ~/analysis_prac_2015/rest/ICA/Group/groupmelodic_fix.ica/melodic_IC.nii.gz
** WONTFIX OSMesa render doesn't work with circle voxels
Circle voxels were just an experiment anyway. Removed from code
** WONTFIX World location is clamped to voxel centre when voxel location changes. Not sure if this really needs to be fixed.
** DONE Spline intrpolation doing weird things
** DONE VolumeOpts DisplayRange<->Bricon synchronisation.
Breaks when brightness/contrast/displayRange sync (between multiple displays)
is turned off .. I think the sync logic has to occur somewhere other than the
VolumeOpts class ...
** DONE SpacePanel throwing errors on av.nii.gz (and seemingly not deregistering listeners)
** DONE Image order synchronisation
** DONE Ortho canvas resizing
** DONE LightBox - updated nrows/ncols when image list changes
** DONE ImageDisplay range (and other properties?) on are reset when new view is opened
** DONE OrthoPanel/SliceCanvas - when zoom > 0 and bounds are not centred on cursor, window resize centres bounds on cursor.
** DONE OrthoPanel - need to refresh slice canvases when view changes
** DONE Lightbox scrollbar positioned incorrectly - goes over location panel
** DONE Lightbox is not scrolling through full image ?
Due to property value binding refactor - attributes not being synced on bind
** DONE Float32 images not working?
Voxel value -> [0.0, 1.0] transform was wrong for float/uint32/int32/etc data types
** DONE GL21 - are uint32/int32 images supported?!?
Changed image texture data format logic
** DONE gl14_optimisation branch - GL21 voxels are off by 0.5
** DONE Linux/Jalapeno Bad window crash
Can't reproduce
** DONE No worky in VNC session.
Seems to be working fine
** DONE Ortho horiz/vert layout - labels are getting pushed off the window.
** DONE Canvases are not displayed properly when labels are shown.
** DONE 'World location' should always be defined by the NIFTI affine transformation
Currently your 'world coordinate system is equivalent to the display
coordinate system. You need to ensure that all displayed 'world coordinates'
are the ones generated by the image affine transformation matrix.
You should remove the 'transform' property from the Image class. This should
only be a property on the ImageDisplay class. This means that it might be
worth moving the transformation matrix stuff out of the Image class, and
perhaps into a standalone module...
** DONE Ortho anatomical labels not being refreshed
** DONE Cursor location in lightbox can be out of the slices
** DONE LightBox screwy on image transformation change
** DONE Slice changes on ludo's bad image, when using pixdim transformation.
** DONE Cursor location moving along other dimensions on X canvas mouse movement in Ludo's bad image.
** DONE ImageListPanel checkbox background colour not resetting
** DONE Image Display Panel seems to get confused sometimes
** DONE Image Select Panel buttons not enabled/disabled properly
** DONE Default value for zax when not specified on command line
** DONE Exceptions thrown on empty image name
** DONE ColourBarPanel assumes that len(imageList) > 0
** DONE is av.nii.gz being displayed properly? Yep, it's interpolation causing a bit of weirdness, but it is being displayed correctly.
** DONE Lightbox is a bit temperemental at the moment.
** DONE KeyError in fslviewframe when control panels are removed
** DONE elistbox labels not shown?
** DONE elistbox throwing errors randomly.
** DONE gl21 - Voxel opacity when sampling rate > 1 is not correct.
** DONE Image not updating/redrawing properly on transform matrix change
** DONE Control panels no longer persistent across restarts?
** DONE JALAPENO - Image List background colour no worky
** DONE JALAPENO - LightBoxCanvas mouse scroll no worky
** DONE gl14 - Transparent voxels are green ?!?
** DONE Non-FSLView tools are broken due to fsl.py Panel->Frame changes
** DONE LocationPanel volume bounds.
** DONE Fix cursors - they go off the canvas in some cases
** DONE LightBoxCanvas bounding box calculation is broken again.
** DONE SliceCanvas bounding box calculation is also broken again.
** DONE Fix mouse tracking (voxel changes)
** DONE Transformation matrix recursion is happening again, for Ludo's file with the bad affine.
** DONE Selected image sync between all the control panels is a bit iffy
** DONE Cursor location on lightboxcanvas, when Z is not the depth axis
** DONE Voxel location widgets not updating properly when image is changed
** DONE Min z distance on lightboxcanvas not working?
** DONE OSX SegFault when all view tabs removed??
** DONE Graceful handling of bad input filenames
** DONE Aspect ratio on slicecanvas zoom, and panning is broken.
* Little things
** Toolbars for TimeSeriesPanel/HistogramPanel
** Ticks on menu items for control panels that are displayed
** Toggle button contrast on Yosemite is poor
** Slice-wise histogram, e.g. to allow identification of slice containing max-values.
** Create/destroy Editor instances for a single image, instead of giving the Editor the overlayList/displayCtx.
** SliceCanvas/LightBoxCanvas should create SliceCanvasOpts/LightBoxCanvasOpts objects and use them, instead of copying their properties.
** Extract a single 3D image from a 4D volume
** fsl.data.image.loadImage: Replace subprocess gzip callout with the std library gzip module.
** Make Text/Spin control contents highlighted when they are focused
** Tab traversal order
** 'Reset cursor' could reset to world (0, 0, 0)? Or another button/option in locaton panel which does this?
** Opacity is ignored from WX colour dialog.
** Histogram/TimeSeries toolbars, which are shown by default
** Allow a gap in cursor crosshairs
** Different cursor types in edit profile (circle/sphere, in addition to rectangle/cube)
** Ability to import/export time series data
** A 'FeatModel' control widget, allowing user to look at design matrix, stats, whatever ..
** A 'MELODICTimeSeries' thingo, just like the FEATTimeSeries - plot component time courses alongside a voxel's time course.
** GLModel - annotate view with model name
** LineVector - Threshold on vector length
** Colour bar for other image types (e.g. vectors)
** Arrow keys on number widgets
** Buffer sharing
A gl/buffers.py module which checks for buffer capability. If buffer-capable,
vertex data is copied to a buffer, and the buffer name/ID returned. Otherwise,
the vertex data is returned unmodified.
** Make zoom more flexible
** Make ortho aspect ratio/zoom thing better
** RunWindow should print to stdout
** Startup - ability to set $FSLDIR
** Histogram - mouse drag should zoom into plot but not change data range.
** A proper GLMask class - deriving from GLVolume is inefficient
** A top-level class, from which all things inherit, which has a destroy method that must be called when the object is destroy4ed
** Editor - apply fill/mask/ROI to all volumes of a 4D image
** Spline interpolation in GL14
** 'Annotation' image type that allows the user to highlight regions in different colours. Is this the same as the 'label' image above?
** Support ANALYZE75
Pixdims stored in A75 header should be used, unchanged, as the affine
diagonals (i.e. negative pixdims supported).
** EListBox - Mouse drag to move items
** CLI options
*** DONE Show/hide labels
*** DONE Ortho layout (horiz/vert/grid)
*** DONE Check that show/hide cursor is being applied correctly
*** A switch to automatically choose colour maps/clipping thresholds for a provided set of images (like Eugene's fast fslview startup script)
** Scale values in colour map according to largest value?
** View/view config panels persist across shutdown/restart
This is tough, because the old agw.AUINotebook implementation does not have
any ability to query layout.
** Ability to edit image affine transformation
Actually, why not just a nifti header editor? Another idea - interactive
editing of the affine transform - click, drag, scale, rotate, etc. I think
I've had this idea before
** 'Outline' image type
** Improve colour bar
*** ColourBarCanvas - make it smarter
Display either the cbar for the current image, or cbars for all images.
'Stacking' of multipl cbars - stack cbars along the main axis, or along the secondary axi
*** Better layout
*** Multiple/customisable ticks
*** Adjustable font size
*** DONE Tick label floating point formatting
*** DONE Remove white gap on max side of colour bar
** IN PROGRESS 'Actions'? - Make 'Add File' and 'Add Std' menu items actions.
Need to be able to specify the order that actions appear in the menu - perhaps
just hard code in fsl/fslview/actions/__init__.py
** WONTFIX Make display range limit-edit-widget less crappy.
** WONTFIX Allow display resolution greater than image resolution?
Now that I'm smoothing over voxels (when interpolation is on), I don't think this is necessary
** DONE Option to centre display range for volume images
** DONE When overlay is added, it should be selected.
** DONE Movie mode button on ortho/lightbox toolbars
** DONE Time Series - option to 'hold' voxel time course
You could have a list panel which lists the image and voxel coordinates of the
time courses that are currently plotted. Allow voxels to be held, and images
to be held.
** DONE Colour command line (e.g. renderpy background) should be floating point in the range [0, 1]
** DONE Absolute clipping (e.g. clip [-3, 3])
** DONE Add 'load colour map' button to VolumeOpts settings panel. If you do this, you could probably remove the option from the file menu.
** DONE 'Label' image type, which allows user to change colour for each label.
Ability to draw region outlines instead of full label overlays
** DONE ColourBarPanel should only do stuff if it is being displayed
** DONE Ability to display vector data as directional (i.e. starting from voxel centre)
** DONE LineVector - modulate line length
** DONE OrthoViewProfile - mouse wheel on canvas scrolls through displayed slice
** DONE (Sean) In location panel, ability to display intensity for all images, not just the currently selected one
** DONE EListBox - Up/down keys change selected image
** DONE On startup, check to see if cached display location is valid (e.g. external display has been unplugged). Revert to default location/size if not.
** DONE 'Create mask image' option
** DONE 'Mask' image type
** DONE 'Centre view' option on slice canvases
Maybe things like this need to wait until I start getting into the interface design
** DONE Get rid of imagefile module, put functionality in image module.
** DONE LightBoxPanel - OPtion to 'highlight' current slice - draw a box around it
** DONE LightBox - link number of cols to zoom, and auto calculate number of rows?
** DONE Put some introductory documentation up on git.fmrib wiki pages (for props package as well - installation, usage, etc)
** DONE Show labels in render.py
** DONE Props package - floating point property equality - if difference is < some small value, the property should be considered unchanged, and listeners should not be notified.
** DONE Proportional scaling of slice canvases in render.py - they're currently just given equal space.
** DONE Optimisations - tune image._transform, and glimage.genVertexData functions. Go back to using triangle strips?
** DONE Migrate to FMRIB git repository (fslpy and props)
** DONE Preserve image world location when transformation changed.
** DONE Orientation labels on slice canvas.
** DONE Display image space code in cursor panel
** DONE Turn your test_gl14_coords.py script into a fslview ViewPanel; it might come in handy.
** DONE Grid line option on lightbox canvas
** DONE Newly loaded image is selected
** DONE Add Standard -> put image at bottom of list
** DONE render.py supports ortho/lightbox command line configuration
** DONE Background colour option in render.py
** DONE Refactor slicecanvas_draw/lightboxcanvas_draw modules - loads of duplicate code that can probably be put in the GL-version independent modules.
** DONE Refactor wxglslicecanvas/wxgllightboxcanvas - duplicate code... ?
** DONE Make ColourBarPanel generic.
** DONE Remove duplicate argument parsing code between tools/render.py and tools/fslview.py
** DONE Why is the SliceCanvas responsible for creating GL contexts?
Maybe I should define a 'GLManager' which has a bunch of methods on it
(e.g. create context, set current, etc), and is passed to all the GL things
that need it (e.g. SliceCanvas, LightBoxCanvas, etc)
** DONE Make ColourBarPanel superclass/mixin thingo, so we can use it in LightBoxPanel as well as OrthoPanel.
** DONE Come up with a nicer way of specifying short CLI argument characters for fslview/render properties
** DONE Don't draw LightBoxCanvas cursor when out of Z range
** DONE Make fsl.py support non-GUI tools.
** DONE Colour bar showing image value range
** DONE Make image list navigator widget listen to image name changes.
** DONE Spline interpolation
** DONE Ability to change selected image in image display and cursor location panels.
** DONE Disable/enable next/prev buttons on elistbox and imageselect panel as necessary.
** WONTFIX Cursor location preservation when transformation option is changed. The world location is preserved.
** DONE Set cursor location via command line option.
** DONE Cursor bound restriction on ortho panel.
** DONE Refactor/merge GL14<->Gl21 image data code, as there is a lot of shared functionality.
** DONE Rethink 4D handling - image.display.volume or imageList.volume?
** DONE Clip Low/Clip High display options
** DONE Clear image names on location panel and image display panel when image list is empty.
** DONE Interpolation option when displaying in real world space
** DONE Use GL_UNPACK_ALIGNMENT to avoid the need to pad texture images.
** DONE Superclasses for view/control panels.
** DONE Separate display properties from fsl.data.fslimage classes? A separate fsl.fslview.displaycontext module?
** DONE Named view panels
** DONE View config panels should be dockable.
** DONE Focus/display newly opened view tabs
** DONE Display current location on new lightboxcanvas, and when light box props change
** DONE Truncate long filenames in image list panel.
** DONE Labels for individual bound/point widget sliders.
** DONE Vertically center widget property labels.
** DONE Fix image bounds calculation (for images with dodgy affines)
** DONE Constraint listener on Lists which is notified of changes to constraints on any of the items in the list
** DONE 'Add standard'/'Add Atlas' menu options.
** DONE Update LightBoxCanvas properties - check out funny behaviour in ncols.
** DONE Pan in LightBoxCanvas, so currently selected location is always on screen.
** DONE Min distance for LightBoxCanvas.zrange.
** DONE If image files were specified on the command line, make sure the open file dialog defaults to one of their paths.
** DONE Float formatting on range slider buttons
** DONE Enable/disable ImageList<->Canvas position sync - 'link' property on slice canvas/orthopanel, or something.
** DONE SliceCanvas initial location set from image list
* Medium things
** Actions are ugly.
Maybe use decorators to denote actions? This would make it easier to
distinguish between different action types
** GedSpace
** NIFTI2
** PlotPanel - Mouse click interaction: when clicking on a plot, the current overlay/volume should be selected
** HistogramListPanel
*** When a histogram is added for a 4D image, prompt user to choose one of
- Histogram for current volume
- Histogram across all volumes
- Histogram for every volume
** Save animated gif from movie mode
** Lightbox - ability to specify exactly which slices are displayed
** Lightbox/SliceCanvas - annotate displayed slice with Z coordinates
** Lightbox - Ability to show cutting planes from specified locations on an orthogonal axis
** Editor features
*** Select all above/below a specified intensity
*** Honour clipping range (i.e. don't select clipped voxels)
** Custom colour select widget - the OSX one is rubbish
** Transfer editor selection on selected image changes
** Option in ortho panel/lightbox (or CanvasPanel superclass) to set display to radiological/neurological/first angle/third angle orthographic/etc.
** Tensors
*** DONE RGB display
*** DONE Tensor angles are in real world space, so are currently being displayed incorrectly for non isotropic voxels
*** Option to make displayed tensor lines all the same length
*** DONE 'Modulate' one image by another (e.g. modulate DTI tensors by FA values)
*** Option to show tensors as ellipsoids
** Display fnirt warp images
** Panel/profile mode which allows mouse control of brightness/contrast (e.g. a 2D canvas where the vertical axis corresponds to brightness, and the horizontal to contrast).
** DONE A python shell which exposes overlays, display context, display, and opts instances
** DONE Link display properties across images
** DONE Edge detection algorithm
For drawing outline images (both model and volumetric). A Sobel filter looks
perfect, but I think I would need to be able to run it within fragment
shader. This means that I would have to render an overlay to an off-screen
texture, and run the shader on said texture ...
- A fragment shader which just runs a Sobel filter on a 2D texture.
- A new GLImageObject subclass, GLOutline, which renders to offscreen
texture, and applies Sobel filter to said texture before rendering to
screen.
- Build same functionality into the GLModel class.
** DONE Ability to unlink image volume across displays
** DONE Different settings for each view
Keep a 'master' image list, but mainain an index list in separate view
panels - make it editable as a view panel property.
*** DONE Ability to display images in a different order for different view panels.
*** DONE Separate image displays for each view panel - this needs to be possible.
And the ability to link/unlink said display properties
ImageDisplay objects could be managed by DisplayContetx, rather than being
tacked on as an image attribute (the same could be said of GLObjects, but
that's irrelevant).
** DONE Profiles (e.g. 'view', 'edit', 'analyse?', etc etc).
This will probably dictate how you go about implementing keyboard/mouse control
** DONE Keyboard/mouse control
*** Arrow keys to move cursor location - how to select which x/y axes are controlled?
*** Mouse/keyboard controls for panning/zooming
** DONE Brightness/contrast control, common to all image types (i.e. in top level Display properties)
** DONE Image export/offscreen rendering.
** DONE Re-work image display resolution options.
Now that I'm using real texture mapping in both GL14 and GL21, I could
possibly go back to sub-sampling the image texture data when the display
resolution is changed. This would allow us to get good performance for large
4D time series data (reducing the amount of data that needs to be paged in and
out of the GPU)..
And I could possibly render entire slices using only four vertices - the
canvas corners!
** DONE GL14 optimisation again
Could you store image data as a 3D texture, and colour map as a 1D texture,
and confiure a texture chain type thing.
See GLSpec 1.4 page 152/section 3.8.13
And look at examples on https://www.opengl.org/wiki/Texture_Combiners
----
No no no, that didn't work at all. But what did work was to write a bit of GL assembler, ala the ARB_vertex_program and ARB_fragment_program extensions. Sweet!
** DONE Image List functionality
*** DONE double click to show/hide
*** DONE Edit image name
*** DONE Highlight enabled/disabled images
** DONE Custom colour maps from original FSLView
** DONE Command line interface - build into props package?
** DONE Remove voxel<->world orthogonality requirement
** DONE Make slice canvas bounding box calculation more intelligent when zoom > 1.
** DONE separate out props and gui packages - they should really be separate projects
** DONE location panel (information about currently selected location) - add a 'location' property to the imagelist so we can link across different views.
** DONE Location selection on LightBoxCanvas.
** WONTFIX Experiment with rolling your own coordinate interpolator in C (replacing map_coordinates). And maybe you could do the same for transform.transform.
No longer necessary, as I'm using ARB_vertex/fragment_program extensions in GL14 implementation.
* Big/ambiguous things
** Test suite for props package
** Code audit - enforce consistent standards for public/private class members
** Surface display. Who does surface stuff?
** 3D. People do use 3D mode in the original FSLView, so we should have the capability.
** Standard for code documentation - Sphinx.
** DONE image editing (e.g. selecting, erasing, filling, mask creation)
** DONE time series plotting option
** DONE OpenGL 1.4 implementation - required for running over SSH/VNC.
** DONE have multiple views open - look at wxAUI.
* Other ideas
** (Eugene). Perhaps some useful viewing functionality would be a helper viewer to explore high-level (gfeat) analyses directories - simple browsing tools for quickly loading and unloading stats files, contrasts etc. Then it might move to be able to link to lower level dirs. Pretty much like a viewer version of the webpage reports.
** (Mark). The ability to have separate display ranges for different volumes in one 4D image (maybe only when automatically calculated?) which would be especially useful for diffusion series where the b=0 images are way brighter than the others when using the same display range.
** (Ludo). Automatic cluster size thresholding (e.g. Z threshold/cluster size)
** (Paul). Slice-wise (instead of image-wise) glimagedata implementation for very large images.
** (Paul). Statistics/info panel (e.g. mean/med/std/volume size/etc).
** (Manu). Statistics (e.g. histogram) on hand-selected ROIs.
** (Ged). Multiple colour bars
Perhaps instead of having the colour bar as an (e.g.) OrthoPanel property, I
could create a new ViewPanel which allows the user to configure for which
images a colour bar should be displayed. Or I could have a 'showColourBar' property
on the image display object.
** (Ged). Colouring of unions/intersections for combinations of mask images
** (Fidel). Diffusion data - show acquisition direction for each volume (from bvec text file) when displaying raw diffusion data. Could have a little display (a separate ViewPanel) which has a 3D compass-like thing.
** (Ged). Intensity contour lines (cool idea!).
** (Ged). First/third angle orthographic projection.
** IN PROGRESS (Paul). Image groups - may make life easier for grouping images which belong together for analysis purposes.
** IN PROGRESS (Paul). An integrated python shell with images available in-memory to manipulate.
** IN PROGRESS (Saad). Select regions by colour, for editing purposes
** DONE (Mark). That colourmaps for label images (e.g. HarvardOxford subcortical) uses the display range info rather than totally ignores it. I'd like to be able to threshold away some structures using the display range, but at the moment that cannot be done.
Individual regions can be toggled on/off
* February/March 2015 internal release
** DONE Installation instructions on wiki
*** Make sure they're up to date - test in a VM
*** Usage - keyboard shortcuts
** DONE OSX installer
*** Make sure you disable GL error checking/logging
*** Test screenshots
*** Test GL14 and GL21 (shaders)
*** Test two-stage rendering
*** Test installing colour maps
*** Test saving edited images
*** Test atlas tools (this will only be available when it is run from command line)
** DONE Linux compatibility
*** DONE Combobox drop down lists in dialogs are shown beneath the dialog?!? This may only be occurring under X11/SSH/OSX
*** WONTFIX Toolbars not being resized appropriately when the parent viewpanel is resized?
Can't reproduce right now ..
** WONTFIX Ludoweird interpolation effect - wtf?
It's an artifact of the fact that interpolation is applied in voxel space, rather than mm space.
** DONE Fix all 'listener still registered' warnings.
** DONE Progress dialog during screen shot
** DONE VNC/X11 ortho panning
** DONE Change 'profile' to 'mode'
** DONE Volume Option to invert colour map
** DONE Make ImageDisplayPanel change interpolation when transformation is changed
** DONE Disable image display widgets for disabled images
** DONE Rename 'sync image order' -> 'sync overlay order'
** DONE Remove 'sync volume' option
** DONE -ISH Make VNC two stage render approach stablish
** DONE Add 'blue-lightblue' colour map
** DONE Rename 'autumn' to 'red-yellow' (change colour map)
** DONE Colour map ordering
** DONE Change 'ss' back to 'twostage'
** DONE Command line
** DONE? Little things
*** DONE ViewPanel: New toolbars in a lower layer
*** DONE Number spinboxes are no longer clamped
*** Keyboard on number widgets .. Should be working by default?
** DONE Default layout
** DONE UI design
Good enough for the time being
** DONE Support for double precision images
** DONE Histogram
** DONE Atlas tools
** DONE Keyboard shortcut for pan mode - can't use middle click when using a shitty laptop trackpad
** DONE Git release pipeline
We now have an 'oxford' branch, which is linked to the jalapeno installation.
When you want to 'release' something, merge from the master branch to the
oxford branch, and push to jalapeno
** DONE Offscreen rendering
** Other things/stretch objectives:
*** Tooltips
*** Save/restore window layout
*** Movie mode
*** Document all the code
*** Fix all the bugs
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment