<p>Dear all,<br>
Thank you Andreas for your review I think I&#39;ve got the sense. Thank you also to Jacek for your proposal. <br>
If I can add my opinion I must say that both the api work and now benefit of the new implemented parser and so there is no urgent need of any change.<br>
The plot might be that they are not very very intuitive and might cause delays and discourage the add of new features by other developers.</p>
<p>For the records I will summarize here how the proxy system works.<br>
GenbankProxySequenceReader realizes DatabaseReferenceInterface and FeatureKeywordInterface that declare getDatabaseReferences() and getKeyWords() methods. These interfaces are introspected by AbstractSequence, in our case at time of construction with use of proxyLoader (AbstractSequence(SequenceReader&lt;C&gt; proxyLoader, CompoundSet&lt;C&gt; compoundSet)) and are used at this time to populate instantiated sequence object with database and keyword information. </p>
<p>In other words the original idea was to declare a new interface for every category of property that must populate a sequence object and this logic will be in charge of the AbstractSequence construction with ProxyReader use. A developer must add the loading code here.</p>
<p>Said that all the things work and the current code is high-level, if we would catch Andreas&#39; cleaning proposal, I think that the only effort that make sense to profuse will involve a new, simpler and plain re-design of the data IO api more then providing new interfaces to the current already overcrowded system. I know, this is the hard and long way but in my opinion is the only valid improvement we could really do at this point. </p>
<p>I have some ideas and some experience on this. I am imagining an api that is easy to extend: one developer that wants to add a new parser, must just write the parser and plug it into the system to work. <br>
I would delegate to the sequence class the mere role of a data structure (the most important in bioinformatics along with alignment indeed). The only methods allowed would be those to manipulate the sequence representation.</p>
<p>But anyway I don&#39;t really know if we want to enter such long and difficult road and actually it cannot involve just two developers. It&#39;s a feature for biojava5, perhaps ;-) </p>
<p>Greetings !<br>
Paolo <br></p>
<p>Il giorno 03/dic/2014 13:13, &quot;Jacek Grzebyta&quot; &lt;<a href="mailto:grzebyta.dev@gmail.com">grzebyta.dev@gmail.com</a>&gt; ha scritto:<br>
&gt;<br>
&gt; Hi,<br>
&gt;<br>
&gt; If it than looks like that I suggest to change the proxy Interface. It could have a getter for data source instance from org.biojava3.core.sequence.DataSource. Than create an abstract Proxy instance which will map a datasource into relevant URI. But we need to take into consideration that each (or more of them) would require unique API anyway to proxy a data. Long time ago I tried to do it but gave up after I discovered RDF and semantic web. anyway I will do changes and submit to my branch repository.<br>
&gt;<br>
&gt;<br>
&gt; Regards,<br>
&gt;<br>
&gt; Jacek<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Hi Paolo,<br>
&gt;<br>
&gt; I don&#39;t remember the full history of this, but after having reviewed the<br>
&gt; code I think the story is like this:<br>
&gt;<br>
&gt;  The &quot;proxy&quot; means that an entry can be fetched from an external DB based<br>
&gt; on a reference ID.<br>
&gt;<br>
&gt; Then there is another requirement to read a single record from a file<br>
&gt; containing many entries. (hence the differences between InputStream and<br>
&gt; Bufferedreader), which might explain the different approaches.s<br>
&gt;<br>
&gt; Having said that, I do think the API is inconsistent and could benefit from<br>
&gt; some cleanup and also we need better documentation for this. Any pull<br>
&gt; requests are welcome!<br>
&gt;<br>
&gt; Andreas<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Sat, Nov 22, 2014 at 12:10 PM, Paolo Pavan &lt;<a href="mailto:paolo.pavan@gmail.com">paolo.pavan@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; Dear all,<br>
&gt; &gt; Me and Jacek Grzebyta have added support for reading features, qualifiers<br>
&gt; &gt; and nested locations with &quot;split&quot; indications in genbank files and we hope<br>
&gt; &gt; this feature will be included in the next 4.0 release.<br>
&gt; &gt;<br>
&gt; &gt; Anyway we face the existing of two ways to parse a genbank file: via<br>
&gt; &gt; GenbankProxySequenceReader and via GenbankReader. Both use the same<br>
&gt; &gt; underlying GenbankSequenceParser now updated, but in different ways.<br>
&gt; &gt;<br>
&gt; &gt; Is there a reason that escapes to me of why such a dichotomy design or is<br>
&gt; &gt; just the result of the efforts of two independent working groups? This<br>
&gt; &gt; ?proxy? naming suggests me it wants to add something more to the standard<br>
&gt; &gt; GenbankReader, isn?t it? There is an advised one? One difference is that<br>
&gt; &gt; one is using an InputStream, the second a BufferedReader.<br>
&gt; &gt;<br>
&gt; &gt; Can someone of the original authors add any note on that?<br>
&gt; &gt;<br>
&gt; &gt; Thank you very much,<br>
&gt; &gt; Paolo<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; biojava-dev mailing list<br>
&gt; &gt; <a href="mailto:biojava-dev@mailman.open-bio.org">biojava-dev@mailman.open-bio.org</a><br>
&gt; &gt; <a href="http://mailman.open-bio.org/mailman/listinfo/biojava-dev">http://mailman.open-bio.org/mailman/listinfo/biojava-dev</a><br>
&gt; &gt;<br>
&gt; -------------- next part --------------<br>
&gt; An HTML attachment was scrubbed...<br>
&gt; URL: &lt;<a href="http://mailman.open-bio.org/pipermail/biojava-dev/attachments/20141124/7b9d0f9a/attachment-0001.html">http://mailman.open-bio.org/pipermail/biojava-dev/attachments/20141124/7b9d0f9a/attachment-0001.html</a>&gt;<br>
&gt;<br>
&gt; ------------------------------<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; biojava-dev mailing list<br>
&gt; <a href="mailto:biojava-dev@mailman.open-bio.org">biojava-dev@mailman.open-bio.org</a><br>
&gt; <a href="http://mailman.open-bio.org/mailman/listinfo/biojava-dev">http://mailman.open-bio.org/mailman/listinfo/biojava-dev</a><br>
&gt;<br>
&gt; End of biojava-dev Digest, Vol 140, Issue 4<br>
&gt; *******************************************<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; biojava-dev mailing list<br>
&gt; <a href="mailto:biojava-dev@mailman.open-bio.org">biojava-dev@mailman.open-bio.org</a><br>
&gt; <a href="http://mailman.open-bio.org/mailman/listinfo/biojava-dev">http://mailman.open-bio.org/mailman/listinfo/biojava-dev</a></p>
<div class="gmail_quote">Il giorno 25/nov/2014 05:15, &quot;Andreas Prlic&quot; &lt;<a href="mailto:andreas@sdsc.edu" target="_blank">andreas@sdsc.edu</a>&gt; ha scritto:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Paolo,<div><br></div><div>I don&#39;t remember the full history of this, but after having reviewed the code I think the story is like this:</div><div><br></div><div> The &quot;proxy&quot; means that an entry can be fetched from an external DB based on a reference ID. </div><div><br></div><div>Then there is another requirement to read a single record from a file containing many entries. (hence the differences between InputStream and Bufferedreader), which might explain the different approaches.s</div><div><br></div><div>Having said that, I do think the API is inconsistent and could benefit from some cleanup and also we need better documentation for this. Any pull requests are welcome!</div><div><br></div><div>Andreas</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Nov 22, 2014 at 12:10 PM, Paolo Pavan <span dir="ltr">&lt;<a href="mailto:paolo.pavan@gmail.com" target="_blank">paolo.pavan@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Dear all,<br></div>Me and Jacek Grzebyta have added support for reading features, qualifiers and nested locations with &quot;split&quot; indications in genbank files and we hope this feature will be included in the next 4.0 release.<br></div><br>Anyway we face the<span lang="EN-US"> existing of two
ways to parse a genbank file: via GenbankProxySequenceReader and via GenbankReader. </span><span lang="EN-US">Both use the same underlying GenbankSequenceParser now updated, but in different ways.<br><br>Is there a reason that
escapes to me of why such a dichotomy design or is just the result of the efforts of two
independent working groups? This “proxy” naming suggests me it wants to add
something more to the standard GenbankReader, isn’t it? There is an advised one?
One difference is that one is using an InputStream, the second a BufferedReader.<br><br></span></div><span lang="EN-US">Can someone of the original authors add any note on that?<br><br></span></div><span lang="EN-US">Thank you very much,<br>Paolo<br></span> </div>
<br>_______________________________________________<br>
biojava-dev mailing list<br>
<a href="mailto:biojava-dev@mailman.open-bio.org" target="_blank">biojava-dev@mailman.open-bio.org</a><br>
<a href="http://mailman.open-bio.org/mailman/listinfo/biojava-dev" target="_blank">http://mailman.open-bio.org/mailman/listinfo/biojava-dev</a><br></blockquote></div><br><br clear="all"><div><br></div>
</div></div>
</blockquote></div>