The author is currently working on such a program, called CavityStuffer. It generates its proposals by "growing" polymers blindly within a given volume, the surface of which has been prescribed to atomic precision. In a randomized fashion, it chooses sites on the tree-like polymer for further attachment and elongation. Once a site has been chosen, a moiety (monomer) is selected from a library of allowed moieties, similar in concept to allowed moves in a game of chess. The moieties are stored in the library as rigid, three-dimensional puzzle-pieces (as rotamers); so the CavityStuffer program works by trying to fit three-dimensional geometric shapes into the given volume. Whenever a chosen moiety does not fit (i.e. if it clashes with other atoms already in place), it is discarded, and a different moiety will be tried instead. This scheme largely avoids the expensive numerical tasks encountered in energy calculations (which are commonly used for studies of protein folding), because clash-detection is quick. Because the generation of individual proposals is fast, a large number can be generated automatically without human super-vision and sorted according to how well they fill the volume. There are various places in the program where one could add in smarter and higher-level strategies than the random selection mechanism used now.
Currently the basic machinery of the CavityStuffer program has been implemented and is working. One can let it build tree-like molecules using moieties provided by a library. There are also tools to help construct the moiety-library, and there are facilities for input and output via PDB files. But with a simplistic demo-version of the moiety-library, the packing of the polymer is not yet very good. More work has to go into a careful design of good moiety-libraries which contain a high enough diversity of rotamers. Better packing strategies need to be added as well. Interested readers who would like to stay informed on this project are welcome to send e-mail to kr@n-a-n-o.com.