Chemistry Visualisation and Tools MeetingThursday, March 20. 2008Last week I was privileged to be invited to speak at a meeting about molecular modelling with a focus on tools, GUIs and visualisation. The meeting was held at the Holiday Inn in Runcorn and the Daresbury Laboratory (England). I wasn't expecting to be back in England quite so soon, having only just returned to Pittsburgh at the end of January. The meeting was a great opportunity to present some of the latest work I and others in the Avogadro and OpenBabel communities have been doing to create tools that enable the building of molecules and structures, as well as their visualisation. It was also a great chance to hear some very interesting talks by the developers of other building tools and some quantum codes. Donald and I were also invited to Daresbury Laboratory to work with some of the CCP1GUI developers. I presented my talk on Avogadro on Wednesday morning and have made the slides available here. Donald gave an introduction to Avogadro, some of the history and the architecture before I gave my presentation. We finished by taking questions while I demonstrated the Avogadro application. I think it was extremely productive. We had many more conversations over dinner and drinks later as well as in a workshop setting on Thursday afternoon. It was great to be able to put a face to a few of the names and discuss current issues more informally in the evening. The talks were all of a very high quality and from a varied list of speakers from other open source projects, some of the free quantum codes as well as commercial products. I have come away from the meeting with a much better appreciation of the needs in the community and I feel that Avogadro is in a great position to fill the apparent void. I am glad that we were able to get surface and orbital support working in Avogadro before the meeting. Right now we only support Guassian cube files but the implementation is general enough that I will be able to add support for further formats. I really think that if we can get enough people collaborating on a common project everyone can get the tool they need to effectively do their research at a much lower investment than could be achieved by working on many separate projects. I met Tristan Youngs, the developer of Aten, who had implemented some really nice features in his molecular builder that is much more focussed on molecular mechanics. It is well worth checking out. As is Zeobuilder which was developed by Toon Verstraelen. They both implement some great features and have strengths in different areas. Of course my dream is to integrate many of these features via Avogadro plugins and have one editor which is capable of being used in a diverse range of applications. It was also great to speak to Mario Valle who is doing some very interesting work in the area of new visualisation methods and supports a large user base of computational chemistry users. There were of course so many other talks but you can look at the schedule yourself and I think the slides of all the talks should be available in the near future. I feel sure that many good things will come out of this meeting and hope to be able to attend similar meetings in the future. I would like to thank Jens once again for hosting the meeting and taking care of everything. I hope to see some patches and/or commits from him in the near future
Posted by Marcus D. Hanwell
in Academia, Avogadro, Chemistry, FOSS, GSoC, Linux
at
18:20
| Comments (0)
| Trackbacks (0)
Avogadro 0.6.1 ReleasedSunday, March 9. 2008I am pleased to announce that I tagged and released Avogadro 0.6.1 yesterday evening. This is a bug fix release which fixes one pretty large bug that slipped through - the OpenGL context was lost if switching between virtual desktops, multiple views etc rendering the OpenGL window useless unless the application was restarted. As such I would encourage anyone running Avogadro 0.6.0 to upgrade to this new version. It also features several smaller bug fixes and feature enhancements. ![]() The screen shot above shows Avogadro 0.6.1 running in a KDE 4 session. One of the small visual tweaks I made was to add a second light source to our default OpenGL scene which really helps to illuminate the other side of the scene. Thanks go out to Albert for his suggestion of adding another light source. Hopefully there are no really big bugs remaining but Avogadro is still in the beta stages of its development. It is rapidly approaching a stable release though and I am very happy with our progress so far. We would love to hear what you think of Avogadro. I had one person question why we always have to use the latest and greatest version of OpenBabel and felt I should offer some explanation. Many of the features exposed in Avogadro use functions and structures in OpenBabel. I myself was quite heavily involved in improving OpenBabel's support for Gaussian cube files and the cube format so that we could load and display orbitals for example. As such we often add new features or fix bugs in OpenBabel trunk and so a new release of OpenBabel must be used in order for everything to work. There are already ebuilds for this latest version in the Gentoo tree. Ubuntu/Debian builds are in the process of being built. We should hopefully have Mac and Windows binaries very soon too. I am headed to a meeting in the UK where Donald and I will be talking with other scientists about visualisation in chemistry and related areas. We will of course be showing off Avogadro as well as talking with many other people working in this area. I am very much looking forward to it and hope that this will lead to further innovation in the Avogadro project as well as the open source chemistry movement in general. It will of course be great to have a full English breakfast and some real ale too!
Posted by Marcus D. Hanwell
in Avogadro, Chemistry, FOSS, Gentoo, GSoC, KDE, Linux
at
14:30
| Comments (5)
| Trackbacks (0)
Avogadro 0.6 ReleasedFriday, February 29. 2008Earlier today we released Avogadro 0.6. This release is quite overdue and we had originally planned to make a release around the new year. This release has many, many new features that have been implemented since the last release. ![]() I am especially proud of the new support for displaying surfaces. This initially led to the surface engine that displays a Van der Waals surface. Tim added the ability to map the electostatic surface potential onto that. I then began work on adding support for displaying orbitals. This led to me getting commit access to OpenBabel and making quite a few commits as I got Gaussian cube loading working. While I was there I couldn't resist improving the Grid classes (still a little more I would like to add in). Another new feature I am really pleased with is the QGraphicsView based periodic table. I think it works very nicely and I am hoping to add this code to Kalzium. I think the Avogadro library is in great shape for me to begin porting Kalzium to use it. Tim and Geoff have been doing some amazing work in OpenBabel on improving the force fields used for geometry optimisations. We have also been doing a lot of work to improve Avogadro's performance when rendering large systems. We have added quickRender functions and OpenGL display lists to improve interactivity as well as threading calculations where this made sense. We have a cool little colour widget Geoff coded too that allows colours to be displayed and picked easily, improved default layout and one of my personal favourites - persistent settings in most of Avogadro. There are certainly some bugs remaining. I would like to get to the bottom of as many as I can and hope to make one or two bug fix releases in the 0.6 branch. We would love to get feedback from people. We have already made a source release and a Mac binary. I will be adding Gentoo ebuilds shortly and we will hopefully get a Windows binary out by early next week. Hope you enjoy this release. I think we are getting close to a stable API that we can call 1.0 and have most of the core features I was hoping to get into Avogadro. Our framework is extremely modular and extensible and I hope that we will be able to build up a community around Avogadro. It was also great to be able to make this release on 29 February - we have so few of them
Posted by Marcus D. Hanwell
in Avogadro, Chemistry, FOSS, GSoC, KDE, Linux
at
22:01
| Comments (3)
| Trackbacks (0)
Avogadro: New Orbital Support and Gaussian Cube FormatTuesday, February 19. 2008So over the weekend I spent quite a lot of time hacking away at OpenBabel working on the Gaussian cube format support I needed to get working in order to be able to visualise electronic orbitals. The initial support was taken from Molekel but contained no error checking and it was not reading in the example cube file I had. Thankfully a colleague pointed out a page with details on the Gaussian cube format and I used this as a basis to get it working in OpenBabel with better error checking and a more resilient tokenisation of the cube points. I made my first few commits to OpenBabel over the weekend and got at least simple Gaussian cube files loading that only contain one cube. More will follow I am sure. ![]() After I got the file loading sorted a few more changes to Avogadro got me my first ever orbitals in Avogadro - the benzene HOMO! I believe the cube file came from the JMol test files. Geoff informed me that chemists for some reason see positive as blue and negative as red. That seemed very strange to me and I had initially put it the other way around. Growing up playing with electronics it seemed to me that positive should be red just as the wires in a circuit have a red positive... Other than that orbitals seemed to be working well and I was very pleased. ![]() Next I started to load up some other cube files I had been given as examples. I thought the above image of the electrostatic potential of CH3Cl looked very nice. When I showed Geoff he also liked it and we wondered if it had been visualised in this way before. I know normally the cube would be mapped onto the Van der Waals surface of a molecule. Anyway I was pleased and also felt more productive as I now have my laptop back up and running and am developing on Gentoo again. It would be great to hear what other people think of this new support. I am already working on various improvements to the code and getting ready for another release of Avogadro!
Posted by Marcus D. Hanwell
in Avogadro, Chemistry, FOSS, GSoC, KDE, Linux
at
21:00
| Comments (6)
| Trackbacks (0)
Avogadro: Surface SupportMonday, February 11. 2008I am pleased to announce that we now have working surface support in Avogadro. We originally began working on support for surfaces around November time when Geoff improved the support in OpenBabel for grids and added some initial code to the Avogadro repository. Quite quickly it became evident that this algorithm did not deal well with data sets containing discrete objects that you wanted to polygonise. I began a search of the available algorithms and came across a very nice guide to the marching cube algorithm with example code. I had a brief look for a C++ implementation and didn't find anything initially, began implementing what was on his page and then came across Zhu3d which is a Qt 4 based program that actually uses an implementation of the algorithms described in the guide and references them. As it is GPL licenced code I imported the relevant class into our repository and began the task of adapting it to fit into our framework. ![]() ![]() With some code from Geoff, more pointers from Geoff, some reading and quite a bit of help from Tim (not sure if he has a web page/blog) we got it working. Since then Tim has actually fixed a big bug in OpenBabel that was causing crashes and done more work on the IsoGen class. The screenshots above show the results of our early work where initially we got points and then lines working. I was very pleased at this stage as it adds a feature that had been missing for quite some time to the Avogadro framework. ![]() ![]() I then got filled triangles added with transparency support, allowing us to visualise the underlying structure of the molecule and map other parameters onto the surface. Tim then added electrostatic charge mapping to the colour of the surface which I hope you agree is already looking very good. There is still quite a bit left to do. I need to move the class into libavogadro and out of the engines, integrate it into our Painter API, implement caching and am thinking of using the Qt Concurrent framework to do intelligent multithreading once Qt 4.4 is released as surface generation is quite slow for big molecules. I also need to link the mesh size to the global quality level and see what other optimisations might be possible. Another big one is adding support for visualising molecular orbitals. Geoff has already done a lot of work on the back end in OpenBabel for this and so hopefully it will not take me long to get it added in. Lots to do but some great progress already. I would love to know what you think. Once we have been able to polish this new feature a little I hope we can get a release out of the door so that more people can test out these new features and let us know what they think, point out bugs and shower us with compliments Note: For some reason the exported graphics shown in this post were not antialiased. They are on screen and I need to look into why they are not when I export graphics in this way.
Posted by Marcus D. Hanwell
in Avogadro, Chemistry, FOSS, GSoC, KDE, Linux
at
11:50
| Comments (5)
| Trackbacks (0)
KDE 4 Release and PartySaturday, January 12. 2008I am sure you have heard by now about the KDE 4.0.0 release made yesterday. Currently my desktop machine is on a boat in the middle of the Atlantic somewhere, my laptop is broken and I only have access to Apple systems... I was able to check out KDE 4 and test it in a VM and it is looking good. I haven't been able to help with Gentoo packaging of KDE 4 very much at all which is a shame. I should get my desktop back at the end of the month in my new home in Pittsburgh. I also couldn't attend the release event as I am attending my graduation ceremony on the 17th of January. Hope you guys really enjoy the event and if I could have moved things around to attend I certainly would have. There is lots of stuff I hope to be able to do for KDE 4.1, and more specifically Kalzium, once I get my desktop back at the end of the month. Avogadro already has lots of improvements including a KGraphicsView based periodic table which I think Carsten is interested in me getting into Kalzium 4.1. Enjoy the release event and remember to raise a glass to those of us unable to make it for various reasons Avogadro: Just Hit Commit 1000!Saturday, December 15. 2007I just made a few commits using my trusty git svn dcommit (I am still really loving git and it looks like the bug I reported may be fixed in it now too). Then I saw the commit numbers - we just hit commit 1000. Development has really been accelerating recently and I haven't had time to write about as much as I wish I could. Hopefully I will get a chance to take some screenshots and show off some of the latest stuff. I have coded a QGraphicsView based periodic table I am pretty happy with. It is compact, allows elements to be chosen, shows our colour scheme and even displays a little extra information on the selected element. Then there is the ribbon engine which is coming along but needs some loving attention from some bio people. I am very pleased with the new quick rendering stuff we have added. It still has its issues. I had fixed some but some of Benoit's recent commits seem to have reintroduced the cache problem upon engine changes. Tim has added a new hydrogen bond engine which looks great thanks to some stipple line stuff from Geoff. There is some great stuff in the properties dialogs too along with lots of improvements to our force fields. There is certainly lots more for us to do. The biggest thing I still haven't gotten in yet is surface support! I really want to get that sorted as I think it will be both useful and should look great. Along with some extra dialogs for graphics export, POV-Ray rendering etc.
Posted by Marcus D. Hanwell
in Avogadro, Chemistry, FOSS, GSoC, KDE, Linux
at
17:52
| Comments (2)
| Trackbacks (0)
Git, SVN and DevelopmentSunday, December 2. 2007It seems I have read quite a few posts in the last half a year or so on the virtues on decentralised version control and how good git it. Before my laptop died I had installed git and was using it for development. Unfortunately that was pretty short lived due to the failure of my laptop. Now all of my development is taking place on Apple Mac machines using Leopard (I used Tiger for a while too). Recently I built git from source on the laptop I am using and checked out the full Avogadro subversion repository using the following commands. git svn init -t tags -b branches -T trunk https://avogadro.svn.sourceforge.net/svnroot/avogadro Then I went and grabbed a coffee while it imported over 800 commits which is pretty small compared to many of the other repositories I have heard about being imported. It didn't take too long, but I would happily make my git repository available should anyone want a copy. I have found git to be very fast which is absolutely great. There are some things which I have found a little confusing while getting to grips with git and its interaction with the subversion repository. For my day to day work I need very few commands. git svn rebase synchronises with the subversion repository. I really like this way of updating too as it displays the diffs for the commits and the log messages. git commit -a commits all local changes to the local repository. git status shows the current status of the repository, git show shows local changes already committed and git svn dcommit pushes my local changes to the subversion repository. It is this last feature I think I like the most. I can queue up multiple change sets which might actually break Avogadro, giving nice bite size commits as I make progress, but only committing them once I am done and everything is working (at least reasonably well). Then there is the potential for doing this when off line which is also great. One of the most confusing things I found was how to nuke local changes if I didn't want to keep them. Deleting the file and updating doesn't work as it does with subversion. Also revert didn't do what I was after. I finally found git checkout which was not what I was expecting. Issuing the command with no arguments resets the repository to the last committed state. Adding filenames as arguments reverts just those files. Another one I haven't found the answer to is files reappearing that we long since deleted. The avogadro.pro file is the main one left but a set of directories also reappeared. They are not there when checking out using just subversion. If anyone has the answer I would love to know. If I git rm the file the commit to subversion does nothing and it loops round. Other than that I am really happy with git. It can be a little too easy to use the wrong commands and wipe out changes so I am moving quite gingerly at times but I think it is well worth the trade off. A few guides such as this one, this one and of course this have helped me along the way. UPDATE: Just to note that I was using the git 1.5.3 release compiled from source. Avogadro: New Ring & Polygon EnginesMonday, November 26. 2007I recently added a couple of new engines to Avogadro and the screen shot below shows them both. The ring engine finds all the rings of the molecule and draws a transparent plane through the ring. The polygon engine finds atomic centres with three or more atoms bonded and draws a polygon around that atom. This is only done for atoms that are not the common organic types. ![]() I think these are useful engines that have been prompted by user requests. May be not as exciting as the ribbon engine or the surface support we are working on but useful to display certain structures. The ring engine has not been without its problems though as you can probably spot in the image below showing the ring engine rendering a carbon nanotube. ![]() The lighting just flips at certain points - the same happens as you rotate molecules that are using the ring or polygon engine. I guess the lighting is flicking on at certain angles. I would be interested if anyone with more OpenGL knowledge than I might know how I can improve the rendering. Some rings are near white and some of the back rings don't seem to be drawn - that could actually be drawing order though which is always tough to get right. Comments and tips are always welcome. The big challenge right now is getting surface support added in. This is something I think we really need and I would use in my daily work as I am sure many others would. I have been reading up on marching cubes and stuff but would welcome tips in that area too! Improved Ribbon RenderingTuesday, November 6. 2007Over the last couple of days I have made a few commits to improve the ribbon support in Avogadro. Many thanks to Geoff for fixing some bugs we found in Open Babel and to Thomas Margraf for his helpful suggestions and for letting me take a look at a little of his code that renders ribbons. Right now the ribbon is drawn as a tube between the carbon atoms of the backbone and so isn't really a ribbon at all. Then I looked at the image and it is looking quite a bit like a ribbon. The code is checked in and so feel free to take a look at it. I am using NURBS but am far from an expert on their use. My laptop failure has lost some of the tuning I had done too - this is my first screenshot from Apple Mac OS X Leopard! Points if you can tell me why the alpha helix looks pretty good despite me having not yet implemented anything to find the correct plane! Still needs some tuning but I hope you will agree that this is looking pretty nice now. It has also led to some optimisation of molecule loading but I am sure that there are lots of biologists who will tell me it still isn't quite right. Update: Geoff has now shown me how to do screen capture and so here is a pretty video of Avogadro rendering ribbons in action! Avogadro 0.2 Released TodayTuesday, October 23. 2007Today we released Avogadro 0.2 which features many improvements since the 0.1 release. It has lots of the new features I worked on during my Google Summer of Code project along with some great work by other contributors such as the bond centric manipulation tool coded by Shahzad Ali, Ross Braithwaite and James Bunt. Geoffrey Hutchison announced the release earlier today, on what I have been informed is mole day due to the date format used in the US - 10/23 corresponding to the 10^23 of Avogadro's number. So today seemed like an even more fortuitous time to make a release of Avogadro! Today also marked my first commit to the Gentoo repository in quite some time to add this release to Gentoo's ebuild repository. If you have been waiting for me to add/update packages and I haven't gotten around to it due to life being so busy now would be a good time to poke me. I will also hopefully be completing the ribbon support I have already talked about and that should make it into a release soon but wasn't ready for this release. We would love to receive feedback on the latest release of Avogadro. These new features will also make their way into Kalzium in KDE 4.1.
Posted by Marcus D. Hanwell
in FOSS, Gentoo, GSoC, KDE, Linux
at
22:05
| Comments (6)
| Trackbacks (0)
Preliminary "Ribbon" Support in AvogadroMonday, October 22. 2007I term it as "ribbon" because it really isn't a ribbon. I haven't figured out how to calculate the plane the ribbon lies on and right now it is a series of cylinders drawn from point to point. I hope you will agree that it already looks fairly effective and can certainly show the nature of the secondary structure of biological molecules. ![]() There is still a lot to do such as draw the tube in a more efficient manner as a continuous OpenGL construct and draw each residue separately. It would also be good to be able to draw ribbons but this may take a deeper understanding of ribbons and how they are visualised than I have. If there are any biologists out there who want to help me out then tips, or even better patches, would be great fully received Avogadro and POV-Ray ExportSaturday, August 18. 2007I have made some more progress with Avogadro and exporting to POV-Ray. Currently the export is working quite well, but is a more manual process than it will be once I have finished all aspects of its implementation. You can export to POV-Ray, but then need to run POV-Ray yourself on the .pov file created to actually get an image. It is not too much work to add the dialog to call POV-Ray, pass it a few options and display the rendered image. Right now I have the issue that I cannot properly translate between the OpenGL camera matrix and the POV-Ray camera system. If anyone has any experience of doing this I would love to hear about it. I have tried using the direction, up and right keywords but POV-Ray claims my coordinates are not orthogonal, and they are - Benoit double checked they were too. I am probably missing something simple. So right now I can export to POV-Ray but only get one view of the atom which does not follow the view in Avogadro - not ideal but certainly usable. ![]() ![]() The images above show a rendering of 1d66 from the protein data bank thing (I sometimes grab interesting and large example structures from there to test Avogadro and Carsten liked this one). The first image shows it rendered with shadows and the second shows it rendered without shadows. Carsten pointed out that effects such as shadows can serve to confuse students but this can be made a configurable option as shadows also help the mind to visualise the three dimensional structure in my opinion (if used right). There are lots of things that can be tweaked about the way the files are exported as well as the rendered image look and feel. A lot of work has actually gone into getting this working as I have made the painter independent of the paint device being used. This means that the engines can paint to any device where a painter implements the primitives in the virtual base class and I think this will allow Avogadro to scale very well as more features are added. Avogadro Gets More Eye Candy (Visual Cues)Saturday, August 18. 2007During my trip to Paris Benoit and I discussed our ideas for adding some nice eye candy to Avogadro that would give better visual cues as to what exactly the tool was doing. In the case of the navigation tool each mouse button triggers a movement around the atom in a different sense, i.e. the left mouse initiates rotation, the middle initiates zooming/tilting and the right initiates translation. We had considered how best to convey this to the user without them needing to read the manual as most of us avoid doing that! ![]() The screen shot above shows the visual cue we worked on for atom centric rotation. Benoit and I worked on the initial code in the Versailles gardens and I finished it off when I got back. I really like this one which shows rotation about the x and y axes. As you rotate about the atom the arrows rotate around too allowing you to quickly see how much you have rotated the view by. I have been thinking about the usefulness of adding a text display of x and y rotation to the tool too. ![]() This screen shot shows the visual cue for atom centric translation. This cue isn't quite as dynamic as the rotation one but I think it conveys very quickly what the tool is doing. It also moves around the atom surface with perspective and that looks quite nice. We have planned one for zooming and tilting but I haven't had chance to implement that yet. ![]() Today I added another visual cue to our click measure tool too - showing the angle which is being measured by the tool. Much credit goes to the guys who worked on the bond centric manipulation tool who added the code to the painter for drawing shaded sectors. I took the opportunity to add units to the displayed measurements too as they really should be displayed. I do have more plans for eye candy and will try to highlight them as they are implemented. I would love to know if people think that these additions are useful. I think it makes the tools far more intuitive and so reduces the learning curve. Paris and Hacking in VersaillesSunday, July 29. 2007Last week I went to Paris for a couple of days to visit my mentor Benoit. It was a great chance to take a quick look around the city as I have never been before. Thanks to bmibaby I was able to get over quite economically and stayed in a nice, clean (albeit a little small) room in a hotel near Place d'Italie in the 13th district of Paris (not sure if they are called districts or something else). It was quite close to where Benoit lives, close to a Metro stop and within walking distance of central Paris. I got to Paris on Tuesday evening and Benoit met me at the airport. Once I had checked in to my hotel we walked to a creperie and got a fairly traditional three course meal consisting of different kinds of crepes. I also tried some of the local pear cider. Apparently the crepes weren't as good as they could have been but I really enjoyed them. We chatted about the history of Paris, I made some feeble attempts at French and we also moved onto discussions of my Google Summer of Code project and the bigger goals of the Kalzium/Avogadro project. ![]() ![]() Tired from traveling I returned to my hotel to get some sleep with plans to visit the Eiffel Tower the next day. In the morning I went to the Eiffel Tower and had a really good look around. Benoit advised me to get off at the Trocadero stop as the walk down to the Eiffel Tower was much nicer and it was a great tip. I spent most of my morning walking around the bottom of the Eiffel Tower, walking up the stairs to the second floor (it was a far shorter queue) and then I got the lift right to the top. It was very crowded despite getting there early - as I left early in the afternoon it had become far more crowded. There are some great views and it is such an iconic landmark. I met up with Benoit in the afternoon. He showed me around some of the other sites of the city. We walked around Notre Dame and the Louvre before going to the Japanese district to get some dinner. Before dinner we got some hacking done in one of the gardens near the centre of Paris where we discussed the finer points of transformation matrices, 3d geometry and some of my recent changes to the Painter API in Avogadro. We then went to Paris beach near to my hotel and had a few beers by the Seine. After Benoit went home I had a beer in a small cafe near my hotel overlooking Place d'Italie before retiring for the evening. My final day on Thursday we decided to head out for Versailles. It is an amazing place and the gardens were a great place to get some more hacking done and have a picnic. We hacked on some eye candy, we discussed a month or more ago, for the navigation and manipulation tools to give better visual feedback on what is happening. We haven't committed it yet as I need to finish it off but I think it is really great work and may be something that can be applied to other tools. It also helped me to see the best way to implement ribbon support as a new view which I think will be awesome. Very productive day and some amazing sights! Benoit was busy on the last evening so I headed back into Paris solo after dropping off my laptop and camera. I had dinner at a traditional (or at least it claimed to be) French restaurant. I tried some frog's legs and was surprised by how nice they were - I wasn't sure I would like them at all. I was lucky enough to sit next to a lovely Australian couple who were out on a tour of Europe. The lady works for IBM and we ended up discussing open source and my work on Avogadro as well as culture around the world and comparing notes on the sights of Paris. It was a great couple of days in Paris. It would have been nice if Louise had been able to get some time off work to come out. It is our two year anniversary today so I will have to do what I can to make it up to her today
Posted by Marcus D. Hanwell
in General, GSoC, KDE, Linux, Photography
at
05:31
| Comments (4)
| Trackbacks (0)
Avogadro Gets Some Sweet POV-Ray GoodnessWednesday, July 18. 2007It has been a while since I last posted about progress with Avogadro. I have been doing a lot of under the hood improvements which has been really frustrating at times and hard to blog about. Hey I just spent all day refactoring the Painter base class and everything still works the same as it did before! At last I have some real output and have just committed the code to the repository. ![]() The above image is one of the first I have produced and ray traced in POV-Ray. The abstracted painter stuff seems to be working really well and the engines no longer care whether they are painting onto an OpenGL context or to a file with POV-Ray objects in it. I think this is one of the most exciting aspects of the work I have been doing - the painting code has been somewhat abstracted away from the engines allowing for multiple painter devices. I haven't just been coding though. I had a lot to think about after aKademy and have been reading a great deal about Qt and API design. I have also been reading the book that Google sent me about producing open source software. One suggestion I really like and I think most projects should be using is of code review, where each commit is reviewed by other members of the project. At times I think I would find it tough to review the code of other project members but I can see how it can really improve the quality of the code and help us see what other people are doing in the project. I need to run as it is my nephews birthday today and I am expected. Hope you like the image. The POV-Ray export is extremely rough right now and needs a lot of things to be done before I would consider it ready for prime time. The philosophy of maintaining minimal local revisions also appeals to me though and so I am trying to stick to that too. I hope to be making much nicer images soon. aKademy 2007 Was GreatThursday, July 12. 2007Originally I thought I would just attend the aKademy conference on the weekend and return home after that. I submitted an abstract for my talk on Gentoo and KDE and had hoped to meet some KDE developers and see if we could work with KDE better. Later I applied for my Google Summer of Code project working on the Kalzium 3D molecular editor and was accepted. This caused me to change my plans and stay for the entire week and I am really glad I did I have been to quite a few open source conferences over the years but I have to say aKademy is my favourite so far. There was a great atmosphere and lots of very intelligent and dedicated hackers present. There were also lots of laughs and humour along with important discussions and debates. I got to meet so many people who work on KDE and whose blogs I have been reading for years. My only regret is that I couldn't get out for a few more beers in the evenings... I thought it would be a good idea to camp as aKademy was in June and the odds were good that the weather would be fair. In the days leading up to my departure Sheffield flooded and I think it rained every day of aKademy (some days solidly throughout the day). On Sunday evening we came back to a rather large pond at the side of our tent that had previously been a patch of grass with a dip in it. I chose where to pitch the tent well though and the tent remained out of harms way Continue reading "aKademy 2007 Was Great"
Posted by Marcus D. Hanwell
in FOSS, General, GSoC, KDE, Linux, Photography
at
10:19
| Comments (0)
| Trackbacks (0)
Gentoo & KDE Talk at aKademyWednesday, July 4. 2007I attended my first aKademy conference this year in Glasgow. On Sunday I gave a talk on Gentoo & KDE, you can get the slides here and download a video of my talk (warning - 107.6 MB). You can also see all the other talks and videos/slides on the programme page. ![]() I think the talk went well and it was certainly useful for me to meet lots of KDE developers. I was there for the whole conference and had the opportunity to learn a lot from some really great talks. There was no internet connection for the first day and a half which prevented me from bloggging and checking my mail but did let me give my full attention to the talks. I think my talk was well received and got some interesting questions. I also had some very interesting discussions after the talk and look forward to getting some work done on the KDE 4 ebuilds. I am still around for the rest of the week playing both the Kalzium GSoC student and the Gentoo developer. I hope that my talk was of interest to those who attended it or watch it on the internet. My greatest hope was that my talk would help to improve the way we work with KDE and I feel I have achieved that goal. The next few months will tell just how successful I really was. I will be giving another talk at the Gentoo UK conference on 14 July on KDE and scientific applications. GSoC Progress: Avogadro 3D Molecular VisualisationSaturday, June 16. 2007I have had a really productive week. I have been doing lots of reading to learn the finer points of the Qt plug in system, OpenGL projections and transformations. I have also found and hunted down a few bugs and added some really cool visualisations to Avogadro.
![]() I am especially pleased with the transparent Van der Waals view with the molecular backbone. I am not sure if I am rendering it in an optimal way right now as it requires three passes - one to render the molecular backbone, one to render totally transparent VdW spheres and a final pass to render the VdW spheres with the specified transparency. I hope you agree that the result is certainly very pleasing visually and I think it gives a good sense of both the molecular structure and how much space it fills. I have done lots of other things this week. Bond labels have been added as an option for the label engine along with improvements to the rendering engines to actually return a valid bond radius. I added a setAlpha function to the Color class so that the alpha value of a colour can be altered without affecting its colour. There is a new axes engine that renders the x, y and z axes to the screen. It works reasonably well but still needs several improvements to be implemented. Our text drawing routines don't draw into the current OpenGL projection matrix and so I couldn't label the axes. The vectors I get for the x, y and z axes are also not of uniform length as I wanted - if you have a rectangular view of the molecule the axes are rendered at different lengths. It is certainly helpful having the axes available even in their current form but I need to figure out a few more features before I will be happy with them. I added a new auto rotation tool this week too. It allows you to rotate the molecule about the views x, y and/or z axes at variable speeds in order to get a complete view of the molecule. I have already tweaked the configuration quite a bit. I did want to make a derived QWidget to have a little more control over the configuration widget, but every time I linked to my derived QWidget class the tool failed to load - still not figured out why and it has been insanely frustrating. If you know why I would love to know! Probably a gap in my Qt skill set - I have a book on the way that promises to teach me the finer points of Qt 4 and am very good friends with the docs bundled with Qt I also added a couple of higher detail levels and have used the highest in the screenshot above. It produces really nice spheres but there is quite a performance hit and I don't think it would perform well with lots of atoms or on unaccelerated graphics cards. Hopefully ATI/AMD will be releasing a nice open source accelerated driver soon. Next week I will be focusing on threads and have already done quite a bit of reading on the subject. Wish me luck. Kalzium 3D Molecule Editor: The Start of My GSoC ProjectMonday, May 28. 2007My blog is aggregated on three planets now, Gentoo, KDE and SoC. So I guess my readership will be at its peak. There have been some hurdles leading up to my Google Summer of Code (TM) project but I am very pleased to have made it and intend to make the very best of this amazing opportunity to work on what is a really exciting project for me. I will be working on the 3D molecular editor project which was an idea proposed by Carten Niehaus on the KDE GSoC 2007 ideas page. I have to admit that when I read it I was very excited. I had read some stuff on the Planet KDE (which I have read for ages and am really proud to be added to now) about the new 3D molecular viewer for Kalzium. ![]() I was hoping to be able to find an area I could help out with that when I discovered the idea that looked like it had been written for me! I then discovered the Avogadro project and met some of the project's developers. As I was putting my application together I helped with a few small patches and ported the molecule navigation code across to Avogadro from Kalzium. I also provided a patch for a Van der Waals sphere view of the molecule as I have always liked that particular method of visualising molecules. Some of my patches were accepted and integrated. Eventually I heard back about my GSoC application - I was very pleased to learn it had been accepted. Unfortunately for personal reasons I spent the next few weeks offline (after letting my new mentor know) and didn't get to celebrate straight away. Once I was back online I got commit access for the KDE subversion repository, my commit name is "hanwell" as they don't like you to use nicks. I also got commit access to the Avogadro repository where my commit name is "cryosuk" due to my usual "cryos" already being taken on SourceForge. So now I am committing under multiple aliases in different projects ![]() Benoit Jacob is my mentor along with Carten Niehaus, Donald E. Curtis and Geoff Hutchison who have all been very welcoming. They already contributed so much to the project I am just getting involved in. Open Babel and the Avogadro library underpin much of the 3D molecular editor and I have already made quite a few commits to the Avogadro and Kalzium subversion repositories. There was an application freeze planned at the start of June for KDE 4.0, so I started my project early in order to get some of the great new features of Avogadro into KDE 4.0. Some of the highlights of this work were porting the navigate tool, adding the manipulate tool, various improvements to the label engine as well as some small enhancements to the engine API. We had the goal of ensuring all kalzium 3D viewer code was ported to the Avogadro library before we began porting Kalzium to use the Avogadro library to display molecules. We accomplished that a few weeks ago and then began porting Kalzium to use the Avogadro library as its 3D visualisation backend. Along the way the Avogadro project made its 0.1 release, I added an ebuild for Gentoo and also made a few posts about the initial work. The feature freeze has been delayed but we got everything we wanted to done before the original deadline which I am pleased about. Today marks the first official day of my project. I have already implemented several features I had planned including the port to the Avogadro library and ensuring all 3D Kalzium code was ported to the Avogadro library. I am really looking forward to working on this project over the summer and creating an awesome 3D molecular visualisation application. I am lucky to be working with such a friendly and motivated team of developers and will be sure to make regular posts about what I am up to. I welcome feedback on my work and have placed a screen shot of Avogadro (first picture) and the 3D molecular viewer in Kalzium (second picture).
(Page 1 of 4, totaling 67 entries)
» next page
Competition entry by David Cummins powered by Serendipity v1.0 |
Me![]() Calendar
Amazon WishlistQuicksearchArchivesCategories | |||||||||||||||||||||||||||||||||||||||||||||||||
