Thanks Stefano for not getting (too!) pissed off with me. :-) We still
don't have the clear API guidelines you asked for last time, but I
think that these discussions are clarifying things for me at least,
and we could probably start writing something up.

I was thinking that your idea is similar to the rationale behind
OBStereoFacade. Well, simply put, we could have an OBResidueFacade
class which you initialise with a molecule and behind the scenes it
then stores the Atom->PDBAtomId correspondance in a map or vector by
iterating over the residues. Then you would have the same method you
described, but it wouldn't do any iteration, but just look up the Id
in the std::map or vector. So, it's a convenience class, separate from
the core API, and it's efficient. If no-one disagrees and this makes
sense to you, do you want to have a go at writing it?

- Noel

On 25 February 2017 at 23:03, Geoffrey Hutchison
<geoff.hutchi...@gmail.com> wrote:
>> About the PDB atom name, unfortunately I don't fully understand the 
>> performance issue implied in my suggestion, but from an interface point of 
>> view, it seems more intuitive to access an atom property from OBAtom instead 
>> of going back to the OBResidue (and pass the OBAtom).
>
> The OBAtom should already have a pointer to the OBResidue. If it can be done 
> with generic data in the OBAtom, that's fine, but I don't think I want to add 
> data to each OBAtom. If I translate a nanotube or nanoparticle (or any other 
> non-biomolecule) I'd have to store in memory a bunch of residue pointers that 
> would never get used.
>
>> In this case, the best approach I can think of is to write a OBHBondTyper 
>> class to perceive the hbond character (similarly to what OBAromaticTyper 
>> does), then each atom should have a simple IsHBond() method that would 
>> return 0, 1 (donor), 2 (acceptor), 3(donor/acceptor), 4(...?).
>
> Yes, this is the way to go to add "convenience functions." Noel's suggestion 
> is to keep the core API restrained, but that doesn't mean there can't be 
> convenience classes or static methods. I think HBondTyper would be a good 
> example, since there can (and should) be multiple models of "what is a 
> hydrogen bond."
>
>> At the same time, I support Maciek's idea: useful functions that can 
>> streamline the use of scripting languages such as Python should be grouped 
>> and conserved.
>
> I'm not sure why these can't be put into wrappers like Pybel. As is, there is 
> considerable "helper code" in Pybel, etc.
>
> -Geoff

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
OpenBabel-Devel mailing list
OpenBabel-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-devel

Reply via email to