<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><DIV>Hey Charles,</DIV><BR><DIV><DIV>Am 03.07.2005 um 01:39 schrieb Charles Parnot:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Thanks Phil!</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I like the parser idea, particularly if it is already written by you ;-)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I won't be of any help with C++, though!</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>this is no problem, because there is no much need of c++ except from expression templates.</DIV><DIV>The parser isn't allready written by me sorry ;-), but i'm working on it.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I'd like to know the different sequence formats i should implement, that i can finish the parsers for the sequence io first.</DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The structure you outline looks fine to me, and I am not sure why we should stop implementing stuff now. Clearly, if we agree to use a parser, we should not write code for the IO until it is ready (though to test the parser, the best is to use it, so the IO would probably grow at the same time as the parser). But the modifications in the sequence structure can be implemented now. I think we should simply define goals and have everybody make it clear what they want to contribute too, and have several independent lines of development that do not depend too much on each other and that can be done independently. Here is a possible roadmap, made up in 5 minutes (needs some refinement!):</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* get the IO to work (at least read sequences)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* modify the sequence structure (read below) and make sure we have some methods that can be used by the parser to create the sequence (the internals of BCSequence should be as much as possible encapsulated and not directly accessed by the parser)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* get the annotations up and running; the annotation issue should not prevent the IO from being implemented; in a first phase, the IO can parse the annotations but not use them; classes and methods to manipulate annotations can be later added to the sequence object, and the parser modified to add these calls.</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Sounds good to me, just wanted to make clear that we don't do any work, we can't use in the future.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Now, Koen rightly complained he did not get a report of the WWDC meeting (and the other absent did not get it too). Here is a (complete?) list of the decisions/discussions we had.:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* change the internal structure of teh sequence string in BCSequence (read below)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* think about annotations</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* look at the internals of BCAnnotatedString of GNUStep to see how the annotations are done, because the structure of NSAnnotatedString is very similar to sequence annotations</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* probably not worry about performance issues with annotations; manipulating annotations will not happen that often, mostly when modifying a sequence, and generating a subsequence; the bottom line is we can probably stick to NSMutableDictionary (I discussed that in a previous email)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* still think even more about annotations</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* better define the purpose of BioCocoa, and the programmer niche we are trying to target (the niche is probably us, at this point!)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* write some code</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Regarding the sequence structure Phil mentions, I will try to explain it now for those of us that were not part of the discussion.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Short version</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">-------------</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Replace the NSArray of BCSymbol with a char [ ]...</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Long version</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">------------</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* The sequence will be stored internally as an array of char, which will make the performance discussions moot. A lot of the sequence manipulations are particularly easy to handle as strings. I don't know if we have decided to use an NSMutableData ivar, or do the malloc ourselves. Using NSData is probably a better idea, as it will already be optimized for</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* The public interface will expose arrays of BCSymbols. Because a BCSequence has always a BCSymbolSet associated with it, it is easy to convert between chars and BCSymbol objects on demand. All the methods for that are already available. The NSArray can even be cached (and reconstructed as needed as soon as the sequence is modified).</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">* The public interface could probably have a method to return the array of chars as well as an autoreleased object. This is very easy e.g. creating an autoreleased NSData populated with a copy of the sequence bytes (and return either the *char or the NSData itself). The copy of the bytes (necessary for mutable sequences) will be fast, much faster than copying the NSArray (with all the useless retain/release of the singleton BCSymbols). So we don't have to worry about the issue of returning the internal array used by the sequence when the sequence is mutable (we only have mutable sequences at this point, but I plan to add immutable ones, I know, I am obsessed with that issue).</DIV></BLOCKQUOTE><DIV><FONT class="Apple-style-span" color="#0000DD"><BR class="khtml-block-placeholder"></FONT></DIV><DIV>Very good summary of the discussion. </DIV><DIV>I think we should try to implement the string thing in different ways and test the performance, to see which one is the best.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>cheers,</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Phil</DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">On Jul 2, 2005, at 8:45 AM, Philipp Seibel wrote:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV> <BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hi all,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">i want to start the discussion on the mailinglist, we allready started at the wwdc.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">In my point of view the BioCocoa project needs to get a modular and flexible structure. The attached pdf shows my suggestion of the possible new structure.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The next thing we have to discuss is the implementation of the datastructures in the BCFoundation framework. Our wwdc-discussion lead to a new string based sequence structure.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I think we should spend quite some time to plan the future structure of BioCocoa and stop implementation until the new structure is decided. We all want a 1.0 version of the framework and there are at least two persons from the wwdc, who want to use BioCocoa in their projects, so we should go for it. :-) (i should teach professional motivation practices :-)).</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The discussion is open .......</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">BTW: I allready startet the BCParser.framework mentioned in the attached document. I think of a very flexible highlevel parser framework with event driven parsers like NSXMLParser.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">This allows easy implementation of various file formats for different datastructures. Not everybody is satisfied with a biococa sequence and wants to have his own structure, the parser api allows to parse the files into any datastructure, and of course also into our future BCFoundation structures. The api is based on the c++ boost-spirit parser apis and is developed as objective-c++ framework, without any dynamic linking dependancies. Just tell me what you think about it ....</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">cheers,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Phil</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BCFrameworks.pdf></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space"> </SPAN>_______________________________________________</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Biococoa-dev mailing list</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="mailto:Biococoa-dev@bioinformatics.org">Biococoa-dev@bioinformatics.org</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="https://bioinformatics.org/mailman/listinfo/biococoa-dev">https://bioinformatics.org/mailman/listinfo/biococoa-dev</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV> <BR></BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">--</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Xgrid-at-Stanford</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Help science move fast forward:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="http://cmgm.stanford.edu/~cparnot/xgrid-stanford">http://cmgm.stanford.edu/~cparnot/xgrid-stanford</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Charles Parnot</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="mailto:charles.parnot@gmail.com">charles.parnot@gmail.com</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">_______________________________________________</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Biococoa-dev mailing list</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="mailto:Biococoa-dev@bioinformatics.org">Biococoa-dev@bioinformatics.org</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="https://bioinformatics.org/mailman/listinfo/biococoa-dev">https://bioinformatics.org/mailman/listinfo/biococoa-dev</A></DIV> <BR class="Apple-interchange-newline"></BLOCKQUOTE></DIV><BR></BODY></HTML>