Skip to content

Avogadro Auto Optimization Screencast

Geoff showed me a new screencast he created recently. It is made using the latest Avogadro, and is one of the first screencasts with our new and improved user interface. Geoff has also added some audio commentary with notes on the chemical relevance of the auto optimization tool. Check it out and let us know what you think - a new release of Avogadro is coming soon.

I will hopefully find the time to make a few new screencasts soon too. Between my one month old son, day job and waiting on my visa application (does not take any real time - some mental drain) I have not had much spare time to code or blog. Remember that Avogadro was nominated for the SourceForge community choice awards too - click on the link below to vote for us.

Avogadro Nominated for SourceForge Community Choice Awards

I am very pleased to announce that Avogadro has been nominated as a finalist in the SourceForge community choice awards this year. We are in the "Best Project for Academia" category, and I would like to encourage you to vote for Avogadro.

This is a real honour for all of us, and I appreciate all of you who nominated Avogadro. We are all pushing very hard on polishing Avogadro, getting ready for our 1.0 release. It would be absolutely amazing to see Avogadro win this award, so please vote for us.

Avogadro collage

There are also some other really nice projects in there too, such as Lancelot, ClamAV, phpMyAdmin and RepRap. So please take a few moments to place your vote, and tell your friends!

Update: You can vote even without a SourceForge account - just enter your email address and verify your vote.

Appeal for Help: Avogadro Toolbar Icons

Over the last few days we have been working on improving the look and feel of the Avogadro user interface. We owe both Qt Software and the Oxygen icon team a lot for making this process a lot easier. Avogadro uses quite a few Oxygen icons that we have taken and in some cases adapted slightly.

Avogadro toolbar

The sliver of screen shot above shows our tools tool bar, along with the tool and display settings buttons. We are pretty happy with the majority of the icons, which are (from left to right) draw, navigate, bond-centric manipulation, atom centric manipulation, selection, auto rotation (animated rotation about axes), auto optimise (continuous optimisation of the molecule geometry), z-matrix, measure and align tools.

I would really welcome any suggestions and/or icon submissions for the auto rotate (the spinny thing near the centre), and the auto optimise (the wand with the circle) tools. I think auto rotate is OK, but it would be better if it conveyed more of a three dimensional rotation. The auto optimise wand is perhaps the worst as it does not suggest optimisation of the geometry, but I am not sure what would. Do any of you more creative types have any suggestions?

I also wonder if there are nice icons we could use for tool and display settings, or a way to make those buttons smaller without losing discoverability. I look forward to hearing people's thoughts. As this is what people see when they first open Avogadro we would like to make the interface as inviting and intuitive as possible.

Avogadro 0.9.5 Released

Yesterday I tagged the Avogadro 0.9.5 release, you can grab the latest downloads from here. Life has been hectic this last couple of months, and to be honest I have not gotten as much done as I would have liked. Still there are some great additions such as the experimental cartoon ribbon display ported by Tim from the Zodiac Zeden project.

Avogadro 0.9.5

Geoff also worked on getting more screen real estate for the actual display, after we bounced some ideas around over the last few months. I think that looks great, and have always tried to ensure the maximum amount of screen space was devoted to displaying the molecule. I still have a few more ideas, but fear I do not have the time to implement them. Geoff also added a new peptide builder and David has been working tirelessly on plotting spectra.

I have been working on decidedly less glamorous and less visual aspects of Avogadro. This includes improvements to our build system, I added the infrastructure required to find and build plugins/applications against the system installed Avogadro library. I also uploaded a few examples to GitHub, and David is actively working on an external plugin for a summer project.

I worked on getting a CMake project that included and compiled both Avogadro and OpenBabel. I then turned my attention to making a relocatable, self-contained app bundle for the Mac. This is working quite well, although there are a few parts of the build system I would like to clean up. It does mean we have relocatable applications that can run from a USB stick on both Windows and Apple systems now.

I crushed quite a few bugs too, worked on API improvements and fixed Noel's long standing feature request - to disable the visual cues when navigating around a molecule. The original Windows installer shipped with a data loss bug, when saving a molecule the original could be erased and you would be left with a zero length file. This was a Windows specific bug that slipped through, I spent half of today tracking this issue with a few other Windows bugs and updated installers have been uploaded (Tim made the Python enabled installer). Please ensure you update to Avogadro-0.9.5-win32a.exe or Avogadro-0.9.5-python-win32.exe. Hacking on Windows has to be one of my least favourite activities, and I need a couple of days away from that whole platform before I can go back and finish some of the work I have been doing...

We are pushing to a 1.0.0 release, targeted for July. We would appreciate feedback on the interface, bugs encountered, the public API that is installed along with any other suggestions or offers of help. Our translations are now doing very well too, and any help improving them further would be appreciated.

Enjoy the new release, another is likely only a week or two away as we crush the remaining bugs. I am also fighting to find time to implement a few more features I would really like to see in Avogadro 1.0.0.

Vote for Avogadro

I just got an email from Sourceforge about their community awards. If you are a user, fan or developer please vote for Avogadro in the Best Project for Academia category. They even provided me with a nice graphics to put on the page, you can just click on it to register your vote.

In other news lots of exciting things happening in Avogadro, hopefully I will find some time to blog about them soon!

Avogadro 0.9.4 Released

A week ago today we released Avogadro 0.9.4. If you would like to try out the new release then you can grab packages and source here. No pretty pictures this time as I am at the KDE GSoC America sprint in Boston, MA and only have my little Eee PC with me. I will see if I can remedy that when I get back home.

This week has been really busy. I have been working hard on getting an Avogadro, OpenBabel super project set up on the Mac. Then using the CMake functions to make a fully relocatable app bundle. This is really experimental right now, but if you would like to play with it then check it out in the downloads section. It is actually the 0.9.4 release with a few patches to our translation files and some other small fixes. It can be run from any directory, and contains Qt and OpenBabel.

There were a few problems with the 0.9.4 release we discovered a few days after the release was made. The main user visible issue is with the translation files not loading, and so we will hopefully get a new release out soon. This is already fixed in head.

Qt Creator, CMake and C++/Qt Development

I have been experimenting with Qt Creator since the first release. I have always preferred a minimal editor for development work, with my main needs being good syntax highlighting, the ability to switch between different files quickly and something that stays out of my way as much as possible. Previously I had used Vim, Kate and several konsole instances the majority of the time.

Recently I have been looking for something with better integration, and so had been slowly keeping an eye out for a lightweight IDE. My main requirements were something lightweight, good C++ support, ideally good Qt support and CMake integration. Over the weekend I tried the latest Qt Creator 1.1 release and was really impressed.

Seb Ruiz made a great post on Qt Creator 1.1 that summed up many of my thoughts, and gave a quick walkthrough. It was not immediately obvious how to import a CMake project, I was looking for an import project option. All that is necessary is to go to file and open. You can then open the base CMakeLists.txt file for your project and the CMake plugin will do the rest.

From there on in you get great integration with the build system, version control (Git and friends), and your friendly GDB debugger. Under projects you might want to quickly add -j5 (if you are lucky enough to have a quad core machine) to the additional arguments input for make, and select the main executable target for your project if you also have several other executable targets (unit tests etc).

The first time you debug a project you will be prompted to build the Qt debugger helper. Then the integration with GDB really wins over using GDB directly, or using ddd which I had been using more and more recently. I would highly recommend trying Qt Creator if you are looking for a lightweight, cross platform IDE. There are certainly other great IDEs out there, but I think that Qt Creator is a great fit for my development style (and may be yours).

Avogadro 0.9.3 Released

Avogadro 0.9.3 on Linux/KDE 4

Yesterday, on April 1, we tagged and released Avogadro 0.9.3 exactly one calendar month after 0.9.2 was released. This has been quite a big month for Avogadro - I took it to the APS March meeting and the Q-Chem workshop. To the left is a screenshot of the latest release showing the electron density of a vitamin C molecule with the approximated electrostatic surface potential mapped onto it.

Ray traced mystery molecule

We made quite a few fixes and improvements leading up to the APS and Q-Chem meetings. The highlights are in the release notes. Some of my favourites are the animation of molecular vibrations, plotting of IR spectra, improved rendering/handling of surfaces including meshes with colours mapped to their vertices. The Windows build is also fully relocatable, meaning it can even run off of a USB stick. I am hoping to do the same for the Mac and Linux builds too. I made several improvements to the super cell builder, surfaces and even made a start on a z matrix editor (not ready yet).

Ray traced benzene molecule with electron density and electrostatic surface potential mapped onto the density surface

To the right is the ray traced image of a larger molecule and one of its molecular orbitals. The POV-Ray rendering code has also seen quite a few improvements. I have been experimenting with generating movies from POV-Ray rendered images too. I am planning to make improvements to our build system on Windows and Mac in order to make packaging easier. My main focus is still Linux development, but so many people insist on using other operating systems. Other more exciting things include producing videos of molecules rotating, vibrating, trajectories and using GLSL to improve the rendering performance with big systems (>25,000).

We would appreciate feedback on this release from the wider community. I am really pleased to announce we have gained at least one new contributor this month, David Lonie, who worked on the new IR spectra plotting code. I have made a new ebuild for Gentoo, prepared a Windows installer, Geoff has made a new Mac package and there is ofcourse source. I am sure other distros will have packages ready soon too. Hope you enjoy the graphics - videos to come soon!

Avogadro at the APS March Meeting and Q-Chem Workshop

So last week was extremely busy. The APS March Meeting was held in Pittsburgh and Q-Chem held a workshop on Q-Chem at the end of the week. I presented a poster on Avogadro (shown below), met lots of interesting people and got lots of new ideas for both research and Avogadro.

Avogadro poster

As we push towards making a 1.0 release of Avogadro, getting feedback from users in the scientific community is extremely important. As Q-Chem chose to use Avogadro as the builder/visualizer in their workshop I had the opportunity to observe new Avogadro users interact with our application for the first time. I also had the opportunity to help them overcome some initial issues and gained a few new insights.

I was very pleased to meet people at all stages of their career who were very interested in having an open source application that can provide a framework for building and visualizing molecules. I also realized that two of the most sought after features in Avogadro right now are the capability to easily make movies, and a z-matrix editor. People loved the ray-traced images of surfaces, coincidentally I received a request from someone in the press wanting to use an image I put up on my blog last year of ray-traced benzene molecules.

I look forward to hearing from some of the new users we gained in the last week. It is great to see Avogadro receiving more attention. I have started to work on the z-matrix editor and spent the weekend experimenting with movies - more to come soon!

Avogadro 0.9.2 Released

I just finishing tagging Avogadro 0.9.2 earlier today. I possibly procrastinated on tagging this one a little as February has not been my finest month. I didn't see any reason to make another release in that hellish month when I could wait a day. This release is a little earlier than we had scheduled, but it contains lots of bug fixes and improvements along with a couple of new features.

Avogadro 0.9.2

Among the highlights I tracked down our orphaned tools and extensions, so Avogadro closes down far more gracefully now than it once did. I went hunting for memory leaks and QObjects with no parents. I added some initial support for building supercells such as the zeolite structure shown in the screenshot. I also fixed some bugs with electron density calculation and this works much better and faster now. I also improved the Linux desktop user experience by adding a .desktop file, icon and mime type associations. Looks very swish.

I built a new Windows release without Python, Tim will put one up with Python support soon, bumped the Gentoo ebuild as 0.9.1 was bumped by someone else and it could not locate its plugins. I have made a number of improvements to our plugin loading to ensure that it is relative to the binary location. This should make relocatable binaries on all platforms quite feasible. March is a busy month but I hope to be able to make some more big improvements. If it goes as badly as February I may consider hibernation as an option though!

I will be presenting some of this work at the APS and a quantum chemistry workshop in March too, both here in Pittsburgh. We always love to have feedback, bug reports, patches or be invited to give talks at conferences in far off places! Here is hoping for a better month...

Avogadro 0.9.1 Released

We continue our push forward with Avogadro with the release of Avogadro 0.9.1 on 16 February. There are lots of new features that made it in recently and we are still stabilizing many of them. This release has featured lots of experimentation with CPack, along with me getting more familiar than perhaps I ever wanted to with Windows packaging. CMake makes things easier but there are some things it cannot fix, such as the manifest issues we hit.

Nanotube

This is the second of our final beta series before our 1.0 release. We hope to make a release roughly once a month until we release Avogadro 1.0. During this period some new features will be added. Our main focus will be on improving the API, fixing crashers, ensuring all platforms have stable packages with full functionality and improving fault tolerance. To this end we will be adding to our (currently) quite small test suite and making use of CDash in order for all developers to be able to see issues on all targeted platforms.

Since the release I found a few small bugs and so already want to make a new release. I fixed a bug when calculating electron density cubes from formatted checkpoints - it was one stray line of code! There is a super cell builder that can do rebonding on the super cell in the works and I recently committed some code to use relative paths to find our plugins. This seems to work really well and with a little tinkering should allow us to run off a USB stick without installation.

While working on our Windows build I realized I have been neglecting our Linux build a little. So I have an avogadro.desktop file and some mime type files to give us a menu entry and associate with some file types. I may not have chance to finish them up and commit until I get back on Sunday.

On that note I will likely be offline until Sunday/Monday. I have my first big job interview tomorrow - wish me luck! Like several people on Planet KDE I am currently in the market for a job. I am going to be all mysterious and not give any more details, other than to say I am excited and nervous!

Avogadro Featured by Qt Software

I am very pleased to announce that Avogadro was recently featured by Qt Software on their Qt In Use page. I worked with Alexandra Leisse at Camp KDE on getting the page ready and we recently got the rest of the screenshots and videos prepared.

Check out the Avogadro Qt page and some of the features we were able to implement very rapidly thanks to the great API provided in Qt 4. The Avogadro development team is very pleased to be featured by Qt. Many of the features in Avogadro would not have been possible to implement in such short timescales without Qt. As I said on that page, we have made extensive use of the Qt plugin framework to dynamically load almost all functionality at runtime.

There are a few problems with our Windows installer, which was originally a hand crafted NSIS installer. There is a preview of a new CPack generated installer. You can get it here if you are cannot wait to try it on Windows. It lacks Python support right now as that brings in quite a few extra dependencies I have not had time to compile on my Windows virtual machine yet.

Manifest Hell...The New DLL Hell?

I am going to shock you all and admit that I am not a Windows programmer! I do however know quite a bit about cross-platform development and have now learnt the joy that is the manifest in Windows development. It seems that DLL hell is now a thing of the past, all hail manifest hell. A week ago I was not aware of these wonderful little files and this post is an attempt to document what I learned while packaging Avogadro for Windows.

After listening to Bill's talk at Camp KDE I was convinced that it really was a good idea to use CPack to package Avogadro. So when I got back home I spent a day or two getting a Windows development environment set up for Avogadro. We have several dependencies such as Qt and this post documenting a bug in the Visual Studio 9 service pack. So I edited the manifest and lied about the version of the DLLs - it believed me.

Next I found that none of our plugins would load. They are Qt plugins that implement most of the functionality in Avogadro. I found a very long thread on this subject, the crux of which is that the embedded manifests are causing Windows to look for the runtime libraries in the plugin directory. Copying them did indeed work but was not optimal. I found that by adding set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO") to our CMakeLists.txt manifests were no longer made for our plugins (which are loadable modules).

So all is quite well with our Windows build now I think. If you would like to try out a new Windows installer, then please download it from here and let me know if it works for you. I have tested it on Windows 2000 and XP virtual machines. This is not the final installer, I need to add some extra data files for OpenBabel and ensure I got the other dependencies right.

If anyone with more Windows experience knows of better solutions please let me know. CPack is absolutely awesome, it seems a shame that the deployment of applications is made so difficult. I know that plugins are not as widely used and so hopefully this post will add to the collective knowledge indexed by Google.

New Avogadro Screencast and Updates

I made a new Avogadro screencast earlier today, trying new formats and preparing a showcase of features in the recent 0.9.0 release. Unfortunately, due to an API change in Eigen this release only builds with eigen-2.0_beta6. The sources in git work with the recently released eigen-2.0, and I will try to make a new release in the near future.

The video shown above, is also available on YouTube, but the encoding does not look as good as on blip.tv. It shows off several of the features present in the current Avogadro release. There are a few issues with the Windows installer, which is another reason to put a small bug fix release out soon.

I have been putting my newly acquired Qt takes to compile in a Windows virtual machine, I do have a working Windows build environment now. I got CDash working for our project, even without unit tests it is great for flagging build errors/warnings on multiple platforms. I also have CPack generating our NSIS based Windows installer now. There are a few rough edges remaining that I hope to iron out soon, but I think our packaging just got a lot easier - thanks to Bill and Kitware.

Things have been really hectic since I got back from Camp KDE. Had a great time, met lots of really interesting people, did not sleep very much (need to take ear plugs next time) and found my Eee PC with KDE 4.2 (rc at the time) worked great the whole week, and it is so light.

When I got back I found out that our espresso machine broke, and the electronics shop declared it a lost cause earlier today :-( This has meant a serious espresso shortage since my return! Why do they always concentrate on redundant power systems for the clusters, but not redundant espresso systems for the researchers???

So really busy right now, hopefully good news coming soon on several fronts - keep your fingers crossed! I am loving KDE 4.2, CMake and Qt but in dire need of espresso products ;-)

Git and Automatic ChangeLog Generation

After our move to use Git and GitHub to host our repository I got thinking about ChangeLogs. Having a version controlled file, where you manually add details about what the version control system should be recording seems like it should not be necessary. I searched and couldn't find a solution that generates ChangeLogs in the style we prefer, which is a variant of the GNU ChangeLog.

So I wrote a quick Python script to try and accomplish this task. It may not be the prettiest Python code as I have never written more than five or six lines of Python before. ChangeLogs always seemed to be the biggest source of merge conflicts whenever we would work in branches, or just all be working at the same time. This is why I think it is necessary to automatically generate something like this that can be generated with source tarballs.

I called it gitlog2changelog.py and it has all of the basics down already. It may not be the most general script but works pretty well for us. I need to add some extra parsing for file creation/deletion so that we can add the + or - in front of the file names. Is there a general need for this? Are there better scripts out there that I dd not spot?

2008-12-29  Tim Vandermeersch <email@protected>

  ∗ libavogadro/src/pluginmanager.cpp: replace getenv(...) with
  QProcess::systemEnvironment()

  ∗ libavogadro/src/elementtranslate.h: Replace "A_DECL_EXPORT extern ..." with
  "A_EXPORT extern ..."

  ∗ CMakeLists.txt: use /MD compiler flag for MSVC

2008-12-28  Marcus D. Hanwell <email@protected>

  ∗ libavogadro/src/molecule.cpp, libavogadro/src/molecule.h,
  libavogadro/src/python/molecule.cpp: Lots of documentation updates,
  reorganised the functions and grouped in Doxygen tags. Some minor changes
  too, more are needed for const correctness.

  ∗ testfiles/multicubes.cube.gz: Removed from our source as it is the same
  size as all the other files put together. May be we should provide a more
  extensive sample of files in a separate distribution.

  ∗ libavogadro/src/engines/bsdyengine.cpp: Ported to use the new bond position
  functions.

  ∗ libavogadro/src/bond.cpp, libavogadro/src/bond.h: Added functions to
  retrieve bond positions, still need to implement the mid-point function.

  ∗ libavogadro/src/bond.h: Documentation updates.

  ∗ libavogadro/src/python/bond.cpp: Added missing Atom include.

  ∗ libavogadro/src/atom.cpp, libavogadro/src/atom.h: Documentation updates,
  added member function groupings and a destructor.

  ∗ libavogadro/src/atom.cpp, libavogadro/src/bond.cpp, libavogadro/src/bond.h:
  Added some atom accessor functions to the Bond class. This should make using
  bonds easier. Fixed assignment order in Atom constructor.