Typo: "But the guidelines are not unfortunately the existing code. "

On 2 March 2017 at 10:22, Noel O'Boyle <baoille...@gmail.com> wrote:
> Hi Stefano,
>
> Sounds good. But the guidelines are not unfortunately the existing
> guide. I'm currently in the process of rewriting/removing as much of
> the croft as possible and the Lazy Evaluation mechanism is in my
> sights. It's a legacy from the original codebase. It'll be difficult
> to change this now, but at least we can avoid adding anything. I won't
> go too much into why this is, but suffice to say that OB developers
> spend some time working around the lazy evaluation or if they don't
> they triggeri it multiple times unneccessarily.
>
> In short, see if you can write a function that just takes an atom (or
> pair of atoms, or whatever) and returns an answer., e.g.
> OBAtomGetHBondType(OBAtom*). The simpler solution really is the best
> one here.
>
> - Noel
>
> On 1 March 2017 at 23:17, Stefano Forli <fo...@scripps.edu> wrote:
>> Noel,
>> quite the contrary, I'm far from being pissed at you, by all means.
>> I like your suggestion, but I don't know if I can do it right away, there
>> are still a few things about the facade programming paradigm that escape my
>> hobbist programming training.
>>
>> Following up on the discussion about the hydrogen bond, I had a quick chat
>> with one of my students which is starting to write code based on OpenBabel.
>> We took a shot at designing an OBHBondTyper class which should behave
>> similarly to OBAromaticTyper, and my idea was to store the information in a
>> vector.
>>
>> If I'm not mistaken, though, the aromatic typer works in a lazy way that
>> looks similar to what you're describing for the OBResidueFacade, storing the
>> information in a flag instead of a vector, is that correct? Or is the flag
>> is just in vector? I tried looking for the definition of HasFlag(), but I
>> couldn't find it.
>>
>> Either way, I was thinking to start by writing this HB class (which I
>> probably understand better), try implementing the ob-standard lazy
>> evaluation mechanism, and integrate it the [Begin|End]Modify() process.
>>
>> We can do a git pull and then fix and adapt it according to the feedback
>> other developers suggestions.
>>
>> This would be a great chance for us to understand how to contribute code
>> that would integrate better and match the guidelines you guys follow.
>>
>> Thanks (for the patience),
>>
>> S
>>
>>
>>
>>
>>
>> On 02/26/2017 02:05 AM, Noel O'Boyle wrote:
>>>
>>> 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
>>
>>
>> --
>>
>>  Stefano Forli, PhD
>>
>>  Assistant Professor of ISCB
>>  Molecular Graphics Laboratory
>>
>>  Dept. of Integrative Structural
>>  and Computational Biology, MB-112A
>>  The Scripps Research Institute
>>  10550  North Torrey Pines Road
>>  La Jolla,  CA 92037-1000,  USA.
>>
>>     tel: +1 (858)784-2055
>>     fax: +1 (858)784-2860
>>     email: fo...@scripps.edu
>>     http://www.scripps.edu/~forli/

------------------------------------------------------------------------------
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