Re: [Cinfony-users] API for options
Brought to you by:
baoilleach
From: Greg L. <gre...@gm...> - 2012-06-01 02:47:26
|
On Wed, May 30, 2012 at 11:29 PM, Noel O'Boyle <bao...@gm...> wrote: > On 30 May 2012 19:46, Adrià Cereto Massagué <adr...@ur...> wrote: >> >> >> 2012/5/30 Noel O'Boyle <bao...@gm...> >>> >>> I'd like to come up with a sensible API for read/write options for >>> Pybel (and other Cinfony modules). >>> >>> How about Molecule.write("smi", opt="A BC D=10") which (1) sets option >>> A, (2) sets option BC, and (3) sets option D to 10? >>> >>> It's simple and hopefully extensible enough that we won't run into >>> problems down the road. Any comments? >>> >> >> It looks good enough for everything I can think of now. But I'm not a fan of >> relying on >> whitespaces in a string. I think it may be useful too for the opt parameter >> to accept also an iterable, for example: >> ["A", "BC", "D=10"], treating "D 10" as 'setting option "D 10" ', in a >> similar way to what the subprocess >> module does, although I find option names containing whitespaces to be >> unlikely, it may not be so unlikely for values referring to a path >> in the filesystem, but I don't know if there are such options in OpenBabel >> at all. > > Yes - having an iterable makes much more sense. Can you explain what this would translate into? Molecule.write("smi", opt= ["A", "BC", "D=10"]) "D=10" corresponds to setting the D parameter to 10 (or is it '10'?), but I don't understand the "A" and "BC" parameters. As long as it's ok to only support named parameters, and it seems like it almost has to be, i'd suggest using a dictionary. Something like Molecule.write("smi", opt=dict(D=10,A=True,BC=True)). It's cleaner, makes the types of the arguments explicit, and doesn't require you to do any string parsing at all. -greg |