[MMTK] Open Source molecular surface module

Peter C. McCluskey pcm@rahul.net
Wed, 31 Jan 2001 16:23:15 -0800 (PST)


 I am releasing some molecular surface routines which work with MMTK.
They are in part a replacement for the existing MolecularSurface MMTK module
that uses the NSC code. They have a less restrictive license than the NSC
code, and are mostly more flexible, but are probably slower and somewhat
less accurate.
 It can run (slowly) without any of the C code.
 It has an additional routine surfacePointsAndGradients, which returns
area, an "up" vector, and surface points for each atom.

 The findContacts routine (barely tested) should run in approximately
O(N) time, whereas the routine it replaces appears to be O(N^2).

begin 664 surfm.tar.gz
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
0U5=]_56N_P']R-H=`*``````
`
end

-- 
------------------------------------------------------------------------------
Peter McCluskey          | Fed up with democracy's problems? Examine Futarchy:
http://www.rahul.net/pcm | http://hanson.gmu.edu/futarchy.pdf or .ps