[Biopython-dev] syntax of indices for future Alignment object

Jan Kosinski kosa at genesilico.pl
Fri Jul 27 14:35:15 UTC 2007


Hi,

Sorry for a typo ;-) Of course it should read:
... while the [A:B,X:Y] syntax is clear and sufficient."

Cheers,
Janek

Jan Kosinski wrote:
> Hi,
>
> Ok, I agree that [A:B][X:Y] syntax is not possible here. [A:B,X:Y] is 
> fine. However, I would recommend not using [A:B:C,X:Y:Z] since it is 
> not clear while the [A:B][X:Y] syntax is clear and sufficient.
>
> We had another discussion in the lab about that Alignment object 
> should not store records in the list but rather in a dictionary (but 
> keeping information about sequence order ) or so.  What is you 
> reasoning for making Alignment object a list of SeqRecord objects?
> One should carefully think about design of the Alignment class since 
> it will influence all further steps. As now the class is in its 
> infancy there is a very good moment for thinking what the Alignment 
> class is for and what it should support. For instance, the Alignment 
> object should support changing characters in the alignment without a 
> need of copying it (using  aln[a][x] = "D"). Can it be done now with 
> Alignment which is a list of SeqRecord objects with sequences 
> implemented as immutable Seq objects ?
>
> Cheers,
> Jan Kosinski
>
>
> Peter wrote:
>> Jan Kosinski wrote:
>>> Hi,
>>>
>>>  From the viewpoint of the enduser we would like python Alignment 
>>> object
>>> to behave outside as an array so we could get slices, columns,
>>> sequences, their fragments, whatever we want etc. The most intuitive 
>>> and
>>> clear (certainly much better than not very clear indexes like
>>> [xxx:yyy:zzz]) for the  user is the following.
>>>
>>> [A:B][X:Y] - general syntax of indices. This supports almost 
>>> everything.
>>
>> I think Michiel and I were suggesting [A:B,X:Y] or rather 
>> [A:B:C,X:Y:Z] to be fully general, rather than [A:B][X:Y] or 
>> [A:B:C][X:Y:Z]
>>
>> i.e. [arg1, arg2] rather than [arg1][arg2]
>>
>> This is an important point, as in the first case the __getitem__ 
>> method of the alignment is called once (with both arguments). In the 
>> second case, the __getitem__ method is called with arg1, and may 
>> return a SeqRecord or an alignment - and this object's __getitem__ 
>> method is called with arg2.
>>
>> As written, many of your cases appear to be impossible - but using 
>> the [arg1,arg2] we can get close.
>>
>> I've got a working bit of code put together now which I'll attached 
>> to bug 1944 soon.
>>
>> http://bugzilla.open-bio.org/show_bug.cgi?id=1944
>>
>> Peter
>>
>>
>> :.
>>
>
>


:.




More information about the Biopython-dev mailing list