From: Egon W. <ego...@gm...> - 2010-03-25 15:41:05
|
Hi Gilleain! On Thu, Mar 25, 2010 at 4:35 PM, gilleain torrance <gil...@gm...> wrote: > I might mention that the AtomContainer class is essentially a graph. Almost: bonds are not restricted to two atoms. > There are many different ways to represent a graph, each with > advantages and disadvantages: > > a) Edge list (current implementation) - space efficient, but slow for > getting connections > b) Adjacency list - less space efficient, but quicker for getting connections > c) Adjacency matrix - takes up lots of space for sparse graphs (like > molecules) but useful for certain operations > > Unfortunately, this is a classic space/time tradeoff issue, where you > can either have fast access to connections or use less memory, but not > both. > > I don't know what would be best here; different AtomContainer > implementations (AdjacencyMatrixAtomContainer, EdgeListAtomContainer, > etc) Alternative implementations was one of the reasons why we now have interfaces, and should be programming against interfaces. > or let the AtomContainer class internally chose between different > ways to represent the molecular graph. Yeah, that would be ideal :) > Sorry to lecture the list on this topic, but thought I would anyway :) Oh, please do not stop! That's what this list is for! Egon -- Post-doc @ Uppsala University Proteochemometrics / Bioclipse Group of Prof. Jarl Wikberg Homepage: http://egonw.github.com/ Blog: http://chem-bla-ics.blogspot.com/ PubList: http://www.citeulike.org/user/egonw/tag/papers |