I was working on a Java package for modeling the structure of complex molecules as part of my project on studying protein folding classification. One essential feature is the ability to organize the molecular structure into a hierarchy (a tree structure) in a very general way: eg. by dividing a protein into different chains, domains, secondary structures, amino acids, down to the individual atoms.
The package has a dual representation. One representation is that of the chemical composition of various kinds of molecules, e.g. H2O or different amino acids, giving the atoms and bonds. The other representation is that of a concrete molecule.
The background of this dual representation was protein structure representation. The protein consists of amino acids. Each amino acid has a known chemical structure, which may be represented once and for all: these structures are coded in the AminoAcidElements class. A concrete protein structure will then contain several references to each of the amino acid elements representing the molecular structure, but with each concrete case also giving the position of the atoms for the concrete amino acid.
The package was never completed protein folding project I was working on was put aside.
Parts of the package also call on Java3D (com.sun.j3d.*) for visualization. As I no longer have this available, some classes may not have compiled properly.