<html><head></head><body><div class="ydp30392ae7yahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:10px;"><div></div>
        <blockquote><div><div><span>Hi Peter,</span></div><div><span><br></span></div><div><span>To keep things manageable, I would suggest to remove Bio.Alphabet first, before considering to introduce a new system to replace it. <br></span></div><div><span>Also, after removing Bio.Alphabet, we may have a better idea if and how it should be replaced.</span></div><div><span><br></span></div><div><span>Best,</span></div><div><span>-Michiel<br></span></div><div><span></span><br></div></div></blockquote></div><div id="yahoo_quoted_9860105158" class="yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Tuesday, October 16, 2018, 9:28:49 PM GMT+9, Peter Cock <p.j.a.cock@googlemail.com> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div dir="ltr">Thanks Thomas,<br clear="none"><br clear="none">That seems like a fair summary.<br clear="none"><br clear="none">Related to this, this proof of principle pull request / branch<br clear="none">hides the alphabet from the Seq objects' __repr__:<br clear="none"><br clear="none"><a shape="rect" href="https://github.com/peterjc/biopython/tree/hide_alphabet" target="_blank">https://github.com/peterjc/biopython/tree/hide_alphabet</a><br clear="none"><a shape="rect" href="https://github.com/biopython/biopython/pull/1676" target="_blank">https://github.com/biopython/biopython/pull/1676</a><br clear="none"><br clear="none">That could be applied part of a gradual deprecation of<br clear="none">Bio.Alphabet if we agree to remove it.<br clear="none"><br clear="none">Personally I lean to replacing the Bio.Alphabet objects<br clear="none">with a minimal typing system (like an enum, essentially<br clear="none">maintaining the minimal hierarchy of generic, nucleotide,<br clear="none">RNA, DRNA or protein). I started exploring this minimal<br clear="none">typing system idea here:<br clear="none"><br clear="none"><a shape="rect" href="https://github.com/peterjc/biopython/tree/alpha_lite" target="_blank">https://github.com/peterjc/biopython/tree/alpha_lite</a><br clear="none"><br clear="none">That branch still needs more work, but I think it is a<br clear="none">viable approach.<br clear="none"><br clear="none">Complete removal of Bio.Alphabet is also a sensible option,<br clear="none">but the above work caught several places in Bio.SeqIO where<br clear="none">existing round-trip parsing/saving requires somewhere to<br clear="none">hold the sequence type. To be viable a pull request or full<br clear="none">Biopython Enhancement Proposal to remove Bio.Alphabet<br clear="none">would need to address this point (e.g. something in the<br clear="none">SeqRecord annotation instead).<br clear="none"><br clear="none">Both removing Bio.Alphabet and my minimal enum typing<br clear="none">idea would discard the current (very baroque and fragile)<br clear="none">mechanism for recording gap characters (and other special<br clear="none">symbols like stop symbols). This could require end user<br clear="none">code changes in a few places like using the Seq objects'<br clear="none">.ungap method, but that already supports giving the gap<br clear="none">character as an argument.<br clear="none"><br clear="none">Peter<br clear="none"><br clear="none">Peter<br clear="none">On Tue, Oct 16, 2018 at 10:28 AM T.A. Wemyss <<a shape="rect" ymailto="mailto:taw50@cam.ac.uk" href="mailto:taw50@cam.ac.uk">taw50@cam.ac.uk</a>> wrote:<br clear="none">><br clear="none">> Dear all,<br clear="none">><br clear="none">> Apologies for the second email, but Michiel and I felt it would be<br clear="none">> useful to explain my reasoning behind leaving the BEP process. I started<br clear="none">> off in favour of alphabets, but have since become converted to<br clear="none">> supporting their removal.<br clear="none">><br clear="none">> Here is some background on my motivation for this:<br clear="none">> - Alphabets have been in Biopython at least since version 1.00a3<br clear="none">> (September 3, 2001)<br clear="none">> - Implementation is inconsistent (see MutableSeq,<br clear="none">> <a shape="rect" href="https://github.com/biopython/biopython/issues/1681 " target="_blank">https://github.com/biopython/biopython/issues/1681 </a>)<br clear="none">> - Their purpose is badly defined and their current implementation does<br clear="none">> not clarify this. Therefore any new implementation is likely to cause<br clear="none">> breaking changes for the few people who actually use them.<br clear="none">> - On the entire mailing list, only one person replied to say they used<br clear="none">> alphabets - it's clearly not a widely used feature, and risks just being<br clear="none">> an additional source of confusion.<br clear="none">><br clear="none">> Michiel has suggested that we proceed directly to removing Alphabets if<br clear="none">> nobody else wants to take over the BEP.<br clear="none">><br clear="none">> All the best,<br clear="none">> Thomas<br clear="none">><br clear="none">> On 2018-08-04 03:04, Michiel de Hoon wrote:<br clear="none">> > Dear all,<br clear="none">> ><br clear="none">> > While sequence objects in Biopython have an associated alphabet, the<br clear="none">> > purpose of alphabets in Biopython is currently not well-defined.<br clear="none">> > I can imagine these three interpretations of their purpose:<br clear="none">> ><br clear="none">> >       * To define how the sequence data is stored internally in a Seq<br clear="none">> > object (i.e. what kind of objects are in seq.data);<br clear="none">> >       * To define conceptually what the Seq object contains (e.g. this is a<br clear="none">> > protein, or this is DNA, or this is DNA with or without methylation);<br clear="none">> >       * To define how a Seq object should be presented to the user (e.g. as<br clear="none">> > a single-letter string, a three-letter string, or something else).<br clear="none">> ><br clear="none">> > (and there may be others that I have overlooked).<br clear="none">> ><br clear="none">> > To justify having alphabets as a part of Biopython, their purpose<br clear="none">> > should be clearly defined.<br clear="none">> ><br clear="none">> > Because of the complexity of alphabets and their use in Biopython, we<br clear="none">> > felt that it may be a good idea to have a PEP (Python Enhancement<br clear="none">> > Proposal)-like discussion to define the purpose of alphabets and their<br clear="none">> > technical implementation in Biopython. This would mean that somebody<br clear="none">> > who is in favor of having alphabets in Biopython would work out a<br clear="none">> > proposal with all the details to allow developers and users to think<br clear="none">> > through the implications.<br clear="none">> ><br clear="none">> > Here you can find a description of PEPs and what should go in them:<br clear="none">> > <a shape="rect" href="https://www.python.org/dev/peps/pep-0001/ " target="_blank">https://www.python.org/dev/peps/pep-0001/ </a>[1]<br clear="none">> ><br clear="none">> > Not all of it is applicable to Biopython, but it may serve as a<br clear="none">> > general guideline.<br clear="none">> ><br clear="none">> > The Alphabet BEP (Biopython Enhancement Proposal) could be hosted on<br clear="none">> > the Biopython website so that everybody can follow the discussion.<br clear="none">> ><br clear="none">> > Since alphabets have been under discussion for more than 10 years, we<br clear="none">> > are thinking to put a time limit to the proposal (e.g., until January<br clear="none">> > 1st, 2020), meaning that if no agreement on the proposal is reached by<br clear="none">> > then, alphabets would be removed from Biopython. This would give<br clear="none">> > people who are in favor of alphabets to make their case, while<br clear="none">> > guaranteeing that a conclusion will be reached (either a well-defined<br clear="none">> > and usable alphabet, or no alphabet) within the next ~1.5 years.<br clear="none">> ><br clear="none">> > Any volunteers? Seq objects and therefore their alphabets are a key<br clear="none">> > feature of Biopython, and working through a BEP can give you the<br clear="none">> > opportunity to help design a major part of Biopython.<br clear="none">> ><br clear="none">> > Best,<br clear="none">> > -Michiel<br clear="none">> ><br clear="none">> ><br clear="none">> ><br clear="none">> > Links:<br clear="none">> > ------<br clear="none">> > [1] <a shape="rect" href="https://www.python.org/dev/peps/pep-0001/" target="_blank">https://www.python.org/dev/peps/pep-0001/</a><br clear="none">> ><br clear="none">> > _______________________________________________<br clear="none">> > Biopython mailing list  -  <a shape="rect" ymailto="mailto:Biopython@mailman.open-bio.org" href="mailto:Biopython@mailman.open-bio.org">Biopython@mailman.open-bio.org</a><br clear="none">> > <a shape="rect" href="http://mailman.open-bio.org/mailman/listinfo/biopython" target="_blank">http://mailman.open-bio.org/mailman/listinfo/biopython</a><div class="yqt4370413979" id="yqtfd52886"><br clear="none">> _______________________________________________<br clear="none">> Biopython mailing list  -  <a shape="rect" ymailto="mailto:Biopython@mailman.open-bio.org" href="mailto:Biopython@mailman.open-bio.org">Biopython@mailman.open-bio.org</a><br clear="none">> <a shape="rect" href="http://mailman.open-bio.org/mailman/listinfo/biopython" target="_blank">http://mailman.open-bio.org/mailman/listinfo/biopython</a><br clear="none"></div></div></div>
            </div>
        </div></body></html>