To Do

From Avogadro

Jump to: navigation, search

Contents

Release 1.0 Roadmap

  • Help System
    • Integrated help
    • Handbook for users
    • Web tutorials and screencasts
  • Translations
  • User Interface Changes
  • Scripting in Python
    • Also shell scripts for submitting calculations to clusters, etc.
  • Animation / vibrations
  • Some support, plus Naomi's Summer of Code project
  • More compute interfaces from the list below
  • Save to custom XML
    • Chemistry pieces with CML
    • Custom pieces in Avogadro namespace
  • A "plugin manager" is needed to enable/disable plugins
    • Optionally, this should be able to download and/or build plugins from an online directory
    • This obviously works best when the plugins are based in Python -- no compiles!

Future Development

General Design

  • Saved selection lists, named selection lists, move between views etc
  • Tree view of model which is updated with views, i.e. selection etc
  • Extra metadata for the model such as internal coordinates
  • Addition of context help to the tools, engines, extensions
  • Option to make selections persistent through all views or move selections between views/save them
  • Addition of primitives such as planes, cubes, springs, centres of mass that can also be saved in file format
  • Colour schemes as plugins that can be used by the engines - two types taking doubles or primitives and returning a colour
  • HUD mode - all necessary controls in the GL view akin to the typical GUIs in FPS games
  • Hooks for sending out jobs to an external job controller and receiving completed jobs to display
  • Detachable views of the molecule to allow simultaneous rendering of two or more views on the same molecule
  • Basic 2D graphing for things such as energy when doing geometry optimisation
  • Make tools and engines not in the main display available through a menu

Rendering

  • Depth cuing using GL fog - easy addition but helps a great deal
  • GLSL shading capabilities when available
  • Stereo views from engines (red/green coloring, crossed-eyes, etc.)
  • Planes (e.g., unit cell planes, cuts through orbitals, charge density, etc.)
    • Drawing a plane through 3 atoms. See:

http://www.crystal.unito.it/tutojan2004/tutorials/I_surface/image006.gif

  • Vector Engine
    • This would allow for display of vector data, such as the dipole moment vector in H2O
  • Add a dialog for POV-Ray export to control scene size, basic rendering options etc
  • Support for quantum output files to render MOs etc from basis sets (initial support implemented)
  • When basis sets can be read show previews of all MOs in one view where the desired MO can be easily found visually

Combination Tasks

Useful for measurements and annotations)

  • Define a plane (from multiple points) == command + rendering
  • Define a point (e.g., center of multiple points) == command + rendering (as a dummy atom?)
  • Define a line/vector (e.g., best fit for multiple points) == command + rendering
  • Align multiple molecules -- how do different conformations differ?
  • Add a window menu - switch easily between different projects etc

Painters

  • Painters should also handle initialisation of the context - i.e. OpenGL initialisation
  • Allow quickdraw to be disabled on small molecules and on powerful systems
  • Add missing primitives to the POVPainter
  • Move IsoGen to the painter and rename to IsoSurface - more descriptive
    • Add display list support and more intelligent caching to the IsoSurface code
    • Add marching tetrahedron support
  • SVG, PDF, and PS vector export gl2ps
  • Animations as GIF, QuickTime, AVI, etc.
  • Use the Open Scene Graph work Mario has done as a painter - fast ambient occlusion?
  • Reuse the wonderful GPL'd rendering code of QuteMol, http://qutemol.sourceforge.net/ as a run-time option
    • (uses programmable shaders, which are very slow unless hardware-accelerated).

Mouse Tools

  • Measure
    • Needs to measure charge
  • Annotation
    • This would allow you to add custom text and arrows to specific 2D and 3D points -- for example an arrow to indicate the void space in a lattice, or where a reaction might occur.
  • Enhance selection support
    • Select everything within a certain radius of a point
    • Select connected elements
    • Add text output of atom indices in selections
    • Paste selections into various code interfaces (GAMESS-US etc)
  • Zeobuilder style constraints based building tool
  • Translation, reflection etc about planes, rotation about arbitrary centers/centroids
  • Lighting tool - move lights around visually, change colour, brightness etc
  • Add more visual feedback to the draw and manipulate tools - bond length, bond angles etc

Commands

  • Builders
    • Protein / biomolecule builder commands
    • Crystal unit cell builder
      • Need extension to create a "super cell" of multiple real atoms
      • Need to enter in reciprocal coordinates (e.g., from a manuscript)
    • Z-matrix editor -- see CCP1GUI and Molden
  • Hide/Show hydrogen extension
  • Compute plugins
  • Add syntax highlighting to the outputs
    • GAMESS interface (done)
    • Gaussian interface (started)
    • Q-Chem interface
    • MOPAC interface
    • DALTON interface
    • Molpro interface
    • GAMESS-UK interface
    • etc.
  • Web / Searching interfaces
    • Open URL extension
    • Open PDB id extension
    • Open from PubChem search
    • Strigi searches (Linux / KDE)
    • Spotlight searches (Mac OS X)

Scripting

  • Support for custom shell scripts will be added (e.g., to submit calculations to a cluster or grid)
  • Support for using a custom job manager such as the one used in CCP1GUI
  • Should allow calling for a rotation, translation, zoom of camera by certain amount, updating molecule, etc.
  • Should allow switching tools, engines, user interface, allowing scriptable render graphics

Some things are blocked until we can figure out the most efficient mechanism (e.g., Kross, SWIG, or SIP):

  • Support for QtScript will be added
  • Embedded Python support will be included to allow custom scripts independent of compiled plugins
  • Possibly other scripting languages like Ruby

Interface

  • Import dialog - to handle importing files and setting custom import options
  • Bond checker - i.e. no 5-valent carbons. Tool to do basic bond counting either interactively or after drawing.
  • Keyboad use:
    • Use of arrow keys to "nudge" rather than mouse (manipulate tool)
    • Keystrokes to switch elements with draw tool
  • When the user opens a new file a new Avogadro instance is started. This instance should have the same settings as the calling engine and not start with the default values (for example with the engines used per default)
  • DBus-interface
    • This interface could be used to commmunicate with Strigi, Kalzium, MolSketch and other applications
    • This interface could be used to start Avogadro from anywhere with a simple DBus-signal or get feedback from Avogadro/libavogadro when Avo is started from somewhere (like "calculation for X is done and saved in file Y" so that another app can react...
    • Qt 4.2 and later has a very simple-to-use DBus-interface
  • Shared copy/paste
    • Communicate with MolSketch and other Qt applications for chemical data
  • Demo-Engine
    • When the Demo-Engine (Demo Mode?) is active, Avogadro shows it features
    • Of course, this might mean we want to shop some demo-molecules/files which we as developers could use for testing as well
    • It should probably be a mode not an engine because I think it is a good idea to use the other engines in this demonstration mode

Code Upkeep

  • Clean up current documentation
  • Ensure all API is documented
  • Run through Krazy periodically to find small bugs/warnings
  • Finish the GLPicker class. It's currently an unused, non-working draft. The files are libavogadro/src/glpicker.*.

Older TODO

Older TODO items have been released:

Personal tools