[Biopython] Increase line length when writing EMBL format
Pedro Almeida
p.almeida.mc at gmail.com
Fri Sep 18 13:07:45 UTC 2020
Thanks Peter!
The accession is CAADRP010000001 and the EMBL file for the genome annotation can be downloaded directly from: ftp://ftp.ebi.ac.uk/pub/databases/ena/wgs/public/ca/CAADRP01.dat.gz
All the best,
Pedro
> On 18 Sep 2020, at 13:54, Peter Cock <p.j.a.cock at googlemail.com> wrote:
>
> Thanks Pedro,
>
> Could you share the accession / URL for the problem record(s) then?
>
> And to clarify why your experiment didn't work, the Bio.GenBank.Record
> objects are irrelevant to Bio.SeqIO which uses SeqRecord objects. The
> GenBank parser can either produce records using Bio.GenBank.Record
> (mimics a GenBank record very closely, see the Bio.GenBank.parse
> function), or SeqRecords (as used in SeqIO).
>
> The output from SeqIO is via the EmblWriter object here, where MAX_WIDTH = 80:
>
> https://github.com/biopython/biopython/blob/master/Bio/SeqIO/InsdcIO.py#L1105
>
> Peter
>
> On Fri, Sep 18, 2020 at 1:52 PM Pedro Almeida <p.almeida.mc at gmail.com> wrote:
>>
>> Hi Peter,
>>
>> thank you so much for the prompt reply. Yes, it was downloaded directly from EMBL. It's from a recent submission early this year, so maybe there were some modifications related to these cases as you pointed out.
>>
>> All the best,
>> Pedro
>>
>>
>>> On 18 Sep 2020, at 13:47, Peter Cock <p.j.a.cock at googlemail.com> wrote:
>>>
>>> Hello Pedro,
>>>
>>> Sadly this annotation value is one of those awkward cases of a long
>>> value with no spaces, so there is no good place to break it for line
>>> wrapping.
>>>
>>> Where is your original file from? The input line was 81 characters
>>> long, which I believe is too long. It is from EMBL themselves? If so,
>>> perhaps we need to more closely match how they now handle this corner
>>> case - which may have changed since I last looked at this code.
>>>
>>> Peter
>>>
>>> On Fri, Sep 18, 2020 at 1:36 PM Pedro Almeida <p.almeida.mc at gmail.com> wrote:
>>>>
>>>> Dear BioPython Developers and enthusiasts,
>>>>
>>>> I’m working in a script to perform some modifications in an EMBL file format I have at hand. Everything seems to be working OK, except for some features where `SeqIO.write(record, fh, 'embl')` seems to be writing the last closing quote (`"`) in a new line as a feat of its own.
>>>>
>>>> Here’s how the original feature is:
>>>>
>>>> ```
>>>> FT /standard_name="species:rnd-4_family-1331|genus:Unspecified"
>>>> ```
>>>>
>>>> but with `SeqIO.write` gets printed in 2 lines as:
>>>>
>>>> ```
>>>> FT /standard_name="species:rnd-4_family-1331|genus:Unspecified
>>>> FT "
>>>> ```
>>>>
>>>> I remember seeing (can’t remember where though) that the ‘embl’ format uses for the most part the genbank structure, so thought that increasing the value of `record.GB_LINE_LENGTH` say to 100 `record.GB_LINE_LENGTH=100` could work, but it doesn’t…
>>>>
>>>> I actually think that `record.GB_LINE_LENGTH` is not taken into account with ‘embl’ writing format because the default value seems to be [79](https://biopython.org/docs/1.75/api/Bio.GenBank.Record.html#Bio.GenBank.Record.Record.GB_LINE_LENGTH) but by default it prints the line above with a width of 81.
>>>>
>>>> Any ideas/suggestions on how to work around this? I could probably write another parser to correct for this but would be easier/better if this could be worked with BioPython.
>>>>
>>>> Many thanks,
>>>> Pedro
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Biopython mailing list - Biopython at mailman.open-bio.org
>>>> https://mailman.open-bio.org/mailman/listinfo/biopython
>>
More information about the Biopython
mailing list