Capstone student project

Hi List, Hi Greg,

Today Greg and I discussed what possibility there would be for
Capstone students to do a project in Avogadro.

Due to my non-knowledge of chemistry and other aspects, the main
possibility that I was able to discuss was rendering: using OpenGL 2
programmable shaders (GLSL) to create a much better rendering than
what we currently have. Since none of us here (afaik) have experience
with programmable shaders, and some of the students in Capstone are
specifically interested in graphics, it sounds like this could lead to
interesting thing. Another nice point is that our Painter
infrastructure would allow such a new OpenGL 2 painter to coexist with
the existing GLPainter, so it’s an area where a student would be able
to play directly in trunk without risking to break anything.

It’s also possible to consider other subjects, even subjects on which
I’m not skilled (like anything involving chemistry, or python, or
GUI), provided that you can provide over IRC or email all the
mentoring that’s needed. I would then add purely as a local contact.
If you have ideas of such subjects, go ahead and propose! The more
subjects we propose, the higher the chances to actually get a student
– Greg is very careful to match students with projects involving the
skills they are interested in.

It’s also perfectly possible to make a student work on another
project, like OpenBabel (or Eigen, but Greg tells me that most
students don’t know linear algebra).

For example, would it make sense to make a student who’s into
numerical programming work on Force Fields in OpenBabel ? (just
suggesting to give ideas)

Cheers,
Benoit

P.S. Greg: Marcus will likely come to visit me for a few days to
Toronto in January, he says he’s ready to extend his stay a little in
order to meet with you & students.

I forgot to say: Greg said that screencasts of Avogadro in action
would be most efficient in order to get students interested. I
remember that some of you recorded a few – could you post links ?
Even if they show only basic features.

Cheers,
Benoit

2008/11/25 Benoit Jacob jacob.benoit.1@gmail.com:

Hi List, Hi Greg,

Today Greg and I discussed what possibility there would be for
Capstone students to do a project in Avogadro.

Due to my non-knowledge of chemistry and other aspects, the main
possibility that I was able to discuss was rendering: using OpenGL 2
programmable shaders (GLSL) to create a much better rendering than
what we currently have. Since none of us here (afaik) have experience
with programmable shaders, and some of the students in Capstone are
specifically interested in graphics, it sounds like this could lead to
interesting thing. Another nice point is that our Painter
infrastructure would allow such a new OpenGL 2 painter to coexist with
the existing GLPainter, so it’s an area where a student would be able
to play directly in trunk without risking to break anything.

It’s also possible to consider other subjects, even subjects on which
I’m not skilled (like anything involving chemistry, or python, or
GUI), provided that you can provide over IRC or email all the
mentoring that’s needed. I would then add purely as a local contact.
If you have ideas of such subjects, go ahead and propose! The more
subjects we propose, the higher the chances to actually get a student
– Greg is very careful to match students with projects involving the
skills they are interested in.

It’s also perfectly possible to make a student work on another
project, like OpenBabel (or Eigen, but Greg tells me that most
students don’t know linear algebra).

For example, would it make sense to make a student who’s into
numerical programming work on Force Fields in OpenBabel ? (just
suggesting to give ideas)

Cheers,
Benoit

P.S. Greg: Marcus will likely come to visit me for a few days to
Toronto in January, he says he’s ready to extend his stay a little in
order to meet with you & students.

Hi Benoit, Hi Greg,

Using OpenGL 2 programmable shaders (GLSL) to create a much better
rendering than
what we currently have.

A related project might be optimizing the OpenGL performance. A key
problem is that many people want to view, edit, manipulate, and
animate molecular data with 1000s of atoms, we don’t always have
interactive-level performance. This is a particular problem with our
isosurface and marching-cubes code. Our code is multi-threaded, but is
not always maximally-concurrent or really optimized in any fashion.

There’s also definitely quite a lot of room for improvisation in
molecular visualization. I’d be glad to forward any references – or a
guest computer science lecture I gave last year.

But I don’t think it’s possible to over-state how useful GLSL work
would be in chemistry. Molecular viewers were some of the first OpenGL
applications. We haven’t really advanced beyond simple spheres and
“balls and sticks” since then.
http://www.ks.uiuc.edu/Research/vmd/allversions/repimages/
http://qutemol.sourceforge.net/fxs/

For example, would it make sense to make a student who’s into
numerical programming work on Force Fields in OpenBabel ? (just
suggesting to give ideas)

This is a little tricky. Most force fields are created by chemists. So
you’re stuck either implementing an existing one (not really worthy of
a capstone project, IMHO) or creating a new one (which would be a full
research project).

I can think of two numerically-interesting projects – these may or
may not also help the Lilien group.

*** Project #1: ***
Often chemists need to do simulations with a molecule in a solvent.
Consider a protein, for example, which is surrounded by 100s or 1000s
of water molecules. This is usually modeled as a box with periodic
boundary conditions. Inside the box is your protein, and you need to
add in a few hundred water molecules to “fill” the box.

http://zarbi.chem.yale.edu/img/boss.jpg

Now, the key point is that you start with the coordinates of the water
(or other solvent) molecule, and you create X number of duplicates at
random locations and random orientations. There are two constraints:
the overall density (# of molecules per unit volume) must match the
known density of the solvent, and the molecules must not overlap.

Sometimes you want a “box” (for periodic boundaries) and sometimes you
want a sphere. And often you may want a range of different solvents
(i.e., not just water). So this falls into the applications of
computational geometry.

*** Project #2: ***
As described above, many force field simulations are done with
periodic boundary conditions. Ewald sums are used to handle long-range
interactions, such as electrostatic terms (which fall off as 1/
distance).

Our current force fields are not designed to handle periodic boundary
conditions. This means that we don’t have efficient code to handling
interactions between non-bonded atoms like that protein and water
solvent described above.

This is a problem beyond just biological simulations. I do research
with materials. Avogadro’s “auto-optimize” method actually gives
students and researchers a real intuition for molecules, since they
move and vibrate and show dynamics. But because we can’t accurately
handle non-bonded interactions, you can’t show that a molecule will
have attraction for a surface inside Avogadro.

To solve this, students would need to research Ewald Sums, the Fast
Multipole Approximatio, Poisson-Boltzmann, and similar numerical
techniques.

Hope that helps – I’d be happy to have an IRC or phone chat and/or
mentor via e-mail for any of these projects!

Cheers,
-Geoff

On Tuesday 25 November 2008 17:44:39 Benoit Jacob wrote:

Today Greg and I discussed what possibility there would be for
Capstone students to do a project in Avogadro.

Due to my non-knowledge of chemistry and other aspects, the main
possibility that I was able to discuss was rendering: using OpenGL 2
programmable shaders (GLSL) to create a much better rendering than
what we currently have. Since none of us here (afaik) have experience
with programmable shaders, and some of the students in Capstone are
specifically interested in graphics, it sounds like this could lead to
interesting thing. Another nice point is that our Painter
infrastructure would allow such a new OpenGL 2 painter to coexist with
the existing GLPainter, so it’s an area where a student would be able
to play directly in trunk without risking to break anything.

I would love to see a project like this take place. As you know I have done a
lot of work to ensure that new painters can be implemented without affecting
engines etc. Right now we just have the GLPainter and POVPainter, but more
would certainly be very welcome. I have done some research into GLSL and a few
experiments but not had time to get anything written yet. There is so that I
would like to see added that assistance here would be very welcome. I think
there are many great examples out there, but nothing really integrated into an
editor like Avogadro.

It’s also possible to consider other subjects, even subjects on which
I’m not skilled (like anything involving chemistry, or python, or
GUI), provided that you can provide over IRC or email all the
mentoring that’s needed. I would then add purely as a local contact.
If you have ideas of such subjects, go ahead and propose! The more
subjects we propose, the higher the chances to actually get a student
– Greg is very careful to match students with projects involving the
skills they are interested in.

Another interesting project could be implementing a job manager for Avogadro.
This is something we have discussed a lot, it could be implemented in C++ or
Python (PyQt) and again there are a few examples out there. This would allow
Avogadro to create new chemical structures, submit them to a cluster, once the
job is complete display the output.

I think we are all very open to creative visualization of molecular structure,
I would love any assistance with innovative interaction techniques such as the
head tracking work looked at previously, increasing parallelism, optimization
of both our OpenGL stack and our user interface. I am often around on IRC, IM
and will hopefully be up in Toronto next year visiting Benoit.

As you mentioned screencasts I have actually prepared a couple of new ones. I
recently became interested in whether there were better alternatives available
for screencasts and so have a few links.

The first is an introduction to Avogadro, basic features such as drawing,
exporting graphics and then some of the new POV-Ray integration, molecular
orbitals and that kind of thing. I even added a commentary - I hope you find
it useful.

http://showmedo.com/videos/video?name=3770000&fromSeriesID=377
http://cryos.blip.tv/#1529003

And then a widescreen, possibly hi-definition version (I think you might need
to full screen it). This one is silent but shows Avogadro in action, several
display types, the new fog, molecular orbitals, POV-Ray rendering and other
bits.

http://cryos.blip.tv/#1528964

The videos were made using the latest trunk as of today. I would be happy to
make a few more screencasts if there are particular areas students would like
to see. Otherwise I will hopefully find the time to make a few more tutorial
style screencasts that will help new users get into Avogadro.

Thanks,

Marcus

Just replying to you and Geoff say that obviously I agree with your
ideas; I’d be OK to be local contact for any of these.

Marcus: absolutely great work with the videos ! You have got to post
them on the website and maybe blog about these!

Geoff: yes, improving scalability to very complex scenes would be
highly desirable; our current GLPainter does progressive
level-of-detail handling and frustum culling, but for really good
scalability what we need is to cull the scene upstream of in the
rendering pipe. What we could do is using binary-space-partitioning to
determine which parts of the scene are in the foreground, and which
are in the background, given the current camera location. We would
then skip the background parts altogether, or paint them as wireframe.
The main issue is that computing the binary-space-partitioning is
time-intensive so it’s not something that would be computed only once
in a while, much like the current molecule metadata (center, radius,
normal vector…)

Cheers,
Benoit

2008/11/30 Marcus D. Hanwell marcus@cryos.org:

On Tuesday 25 November 2008 17:44:39 Benoit Jacob wrote:

Today Greg and I discussed what possibility there would be for
Capstone students to do a project in Avogadro.

Due to my non-knowledge of chemistry and other aspects, the main
possibility that I was able to discuss was rendering: using OpenGL 2
programmable shaders (GLSL) to create a much better rendering than
what we currently have. Since none of us here (afaik) have experience
with programmable shaders, and some of the students in Capstone are
specifically interested in graphics, it sounds like this could lead to
interesting thing. Another nice point is that our Painter
infrastructure would allow such a new OpenGL 2 painter to coexist with
the existing GLPainter, so it’s an area where a student would be able
to play directly in trunk without risking to break anything.

I would love to see a project like this take place. As you know I have done a
lot of work to ensure that new painters can be implemented without affecting
engines etc. Right now we just have the GLPainter and POVPainter, but more
would certainly be very welcome. I have done some research into GLSL and a few
experiments but not had time to get anything written yet. There is so that I
would like to see added that assistance here would be very welcome. I think
there are many great examples out there, but nothing really integrated into an
editor like Avogadro.

It’s also possible to consider other subjects, even subjects on which
I’m not skilled (like anything involving chemistry, or python, or
GUI), provided that you can provide over IRC or email all the
mentoring that’s needed. I would then add purely as a local contact.
If you have ideas of such subjects, go ahead and propose! The more
subjects we propose, the higher the chances to actually get a student
– Greg is very careful to match students with projects involving the
skills they are interested in.

Another interesting project could be implementing a job manager for Avogadro.
This is something we have discussed a lot, it could be implemented in C++ or
Python (PyQt) and again there are a few examples out there. This would allow
Avogadro to create new chemical structures, submit them to a cluster, once the
job is complete display the output.

I think we are all very open to creative visualization of molecular structure,
I would love any assistance with innovative interaction techniques such as the
head tracking work looked at previously, increasing parallelism, optimization
of both our OpenGL stack and our user interface. I am often around on IRC, IM
and will hopefully be up in Toronto next year visiting Benoit.

As you mentioned screencasts I have actually prepared a couple of new ones. I
recently became interested in whether there were better alternatives available
for screencasts and so have a few links.

The first is an introduction to Avogadro, basic features such as drawing,
exporting graphics and then some of the new POV-Ray integration, molecular
orbitals and that kind of thing. I even added a commentary - I hope you find
it useful.

ShowMeDo Video Tutorials | showmedo.com
http://cryos.blip.tv/#1529003

And then a widescreen, possibly hi-definition version (I think you might need
to full screen it). This one is silent but shows Avogadro in action, several
display types, the new fog, molecular orbitals, POV-Ray rendering and other
bits.

http://cryos.blip.tv/#1528964
Avogadro - first try on vimeo on Vimeo

The videos were made using the latest trunk as of today. I would be happy to
make a few more screencasts if there are particular areas students would like
to see. Otherwise I will hopefully find the time to make a few more tutorial
style screencasts that will help new users get into Avogadro.

Thanks,

Marcus

On Nov 30, 2008, at 10:57 AM, Benoit Jacob wrote:

Geoff: yes, improving scalability to very complex scenes would be
highly desirable;
[snip]
The main issue is that computing the binary-space-partitioning is
time-intensive so it’s not something that would be computed only once
in a while, much like the current molecule metadata (center, radius,
normal vector…)

I’m thinking that this process has suggested that we need to modify
our To Do list a bit.
http://avogadro.openmolecules.net/wiki/To_Do

I think we need to separate out smaller projects and larger project
ideas. What you’re describing is a bit of a research project – when
is it faster to just draw polygons, and when is it faster to cut out
polygons with binary-space partitioning? I’m sure there are a range of
possible optimizations we could use like BSP.

These “larger” ideas could be useful for students in “capstone”
projects, Google Summer of Code, etc.

Cheers,
-Geoff