Re: [Biopython] [ext] Re: A possibility for speeding up FASTA/FASTQ reading in BioPython

"Jones Kelly, Terence Carleton" <[email protected]> Tue, 25 Nov 2025 19:56:46 +0000
Newsgroups gmane.comp.python.bio.general
Message-ID <[email protected]>
--===============8359502673403356115==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_5b4705cef7194d299e17295c627e8ce5charitede_"

--_000_5b4705cef7194d299e17295c627e8ce5charitede_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

SGkgYWxsDQoNClRoYW5rcyBmb3IgdGhlIHJlcGxpZXMgYW5kIEknbSBzb3JyeSB0byBiZSBzbyBz
bG93IGluIHJlcGx5aW5nLg0KDQpQZXRlciAtIEnigJltIHNjZXB0aWNhbCwgdG9vLiAgSSB0aG91
Z2h0IGl0IGhpZ2hseSB1bmxpa2VseSB0aGF0IEJpb1B5dGhvbiB3b3VsZCB3YW50IHRvIGFkZCBh
IGRlcGVuZGVuY2Ugb24gUnVzdC4gVGhlIEMgY29kZSBjb3VsZCBiZSB1c2VkIHRvIGdldCB0aGUg
c2FtZSBzcGVlZC11cC4gVGhlIGF1dG9tYXRpYyBkZXRlY3Rpb24gb2YgY29tcHJlc3NlZCBpbnB1
dCAoaW5jbHVkaW5nIG9uIHN0ZGluKSB3b3VsZCBiZSBsb3N0LCBidXQgcGVyaGFwcyBjb3VsZCBi
ZSBhZGRlZC4gIERhbiAtIG1heWJlIENsYXVkZSBjb3VsZCBtYWtlIHRoZSBjaGFuZ2VzIGZvciBh
IHByLiBJIHdvdWxkbuKAmXQgYmUgc3VycHJpc2VkLCBldmVuIHdpdGggc3VjaCBhIGxhcmdlIGNv
ZGViYXNlLg0KDQpSZWdhcmRpbmcgdGhlIHdpZGVyIHBvaW50cyBtYWRlIGJ5IFBldGVyIGluIGhp
cyBibG9nIHBvc3QsIEkgYWdyZWUgd2l0aCBwcm9iYWJseSBhbGwgb2YgaXQuIEkgaGlnaGx5IGRv
dWJ0IHRoYXQgdGhlIGN1cnJlbnQgdHJhamVjdG9yeSAoaW4gdGVybXMgb2YgZW5lcmd5IHVzZSkg
b2YgdGhlc2UgdG9vbHMgaXMgc3VzdGFpbmFibGUsIGFuZCBJIHJlZ3VsYXJseSB3b25kZXIgYWJv
dXQgYWN0dWFsIGNvc3QgKHRvIHRoZSBwbGFuZXQpIEkgYW0gaW5jdXJyaW5nIHdoZW4gdXNpbmcg
Q2xhdWRlLCBlc3BlY2lhbGx5IHdoZW4gaXTigJlzIGRvaW5nIHNvbWV0aGluZyBJIGNvdWxkIGRv
IGluIGVtYWNzIG9yIHdpdGggZS5nLiwgYSBwZXJsIG9uZS1saW5lci4gQnV0IEkgZ2V0IHN0dWZm
IGRvbmUgYWJvdXQgMjB4IGFzIGZhc3Qgd2hlbiB1c2luZyBDbGF1ZGUsIGFuZCBJIGp1c3Qgc3Bl
YWsgdG8gaXQgKHVzaW5nIERpY3RhdGlvbiBvbiBPUyBYKSwgYmFyZWx5IHR5cGluZyBhIHRoaW5n
LiBUaGF04oCZcyBhbGwgYW4gaW5jcmVkaWJsZSBjaGFuZ2UgYWZ0ZXIgNDArIHllYXJzIG9mIGhh
dmluZyB0byBnZXQgdGhvdWdodHMgb3V0IG9mIG15IGJyYWluIGFuZCBpbnRvIHRoZSBjb21wdXRl
ciBvbmUga2V5c3Ryb2tlIGF0IGEgdGltZS4gSXQgZmVlbHMgbGlrZSBtYWdpYy4gQlVULCBJIGhh
dmUgdG8gd2F0Y2ggQ2xhdWRlIHZlcnkgY2FyZWZ1bGx5LCBsb29rIGF0IGl0cyBjb2RlLCBtYWtl
IGl0IHdyaXRlIG1hbnkgdGVzdHMgYW5kIGV4cGxpY2l0bHkgcHJvdmUgdGhhdCBpdCBoYXMgbWFu
YWdlZCB0byBkbyB3aGF0IHdhcyBpbnRlbmRlZC4gVGhhdOKAmXMgbm90IHNvIGRpZmZlcmVudCBm
cm9tIHdhdGNoaW5nIHlvdXJzZWxmIG9yIGRvaW5nIGNvZGUgcmV2aWV3IG9mIGEganVuaW9yICh2
ZXJ5IGVuZXJnZXRpYyBldmVyLWNoZWVyZnVsKSBwcm9ncmFtbWVyLg0KDQpJIGFncmVlIHRoYXQg
YW4gQUkgKENsYXVkZSwgY2VydGFpbmx5KSBjb3VsZCBiZSB1c2VkIHRvIHZlcnkgcXVpY2tseSBt
YWtlIGdlbmVyYWwgaW1wcm92ZW1lbnRzIHRvIGEgY29kZWJhc2Ugd2l0aCB2ZXJ5IGxpdHRsZSBy
aXNrIChhc3N1bWluZyBhIHRlc3Qgc3VpdGUgZXhpc3RzKS4gSeKAmXZlIGRvbmUgdGhhdCBxdWl0
ZSBhIGZldyB0aW1lcywgZS5nLiwgdGVsbGluZyBDbGF1ZGUgSSBubyBsb25nZXIgbmVlZCBzdXBw
b3J0IGZvciBQeXRob24gMy5YIGFuZCB0byBtb2Rlcm5pc2UgdGhlIHR5cGluZyBoaW50cyBmb3Ig
My5YKzEsIG9yIHRvIGFkZCB0eXBpbmcgaGludHMsIGV0Yy4gIEl04oCZcyBhbHNvIGdvb2QgYXQg
cHJvZHVjaW5nIGRvY3VtZW50YXRpb24uDQoNCknigJltIG5vdCBzdXJlIHdoZXJlIHRoaXMgbGVh
dmVzIHVzLiAgSWYgdGhlcmXigJlzIGFncmVlbWVudCB0aGF0IGEgQyBleHRlbnNpb24gd291bGQg
YmUgZ29vZCB0byBoYXZlLCB0aGUgb25lIENsYXVkZSBtYWRlIGZvciBteSBwcnNlcSBwcm9qZWN0
IGJlbmNobWFyayBzdWl0ZSBpcyB0ZXN0ZWQgYW5kIGNvdWxkIGJlIHVzZWQuIEkgaGF2ZW7igJl0
IGxvb2tlZCBhdCB0aGUgQmlvUHl0aG9uIGNvZGUgY2xvc2VseSBlbm91Z2ggdG8ga25vdyBob3cg
bXVjaCB3b3JrIHRoYXQgd291bGQgYmUsIHRob3VnaC4NCg0KVGhhbmtzIGFnYWluIGZvciB0aGUg
dGhvdWdodGZ1bCByZXBsaWVzLiBUaGVyZSB3YXMgYW4gZWFybGllciBvbmUgYXNraW5nIHdoeSB0
aGUgQmlvUHl0aG9uIGNvZGUgd2FzIHNsb3dlciB0aGFuIENsYXVkZeKAmXMgbWluaW1hbCBwdXJl
IFB5dGhvbiwgYW5kIHN1Z2dlc3RpbmcgdGhhdCB3b3VsZCBiZSBkdWUgdG8gdGhlIG92ZXJoZWFk
IG9mIG1ha2luZyBTZXFSZWNvcmRzLiBJIHRoaW5rIHRoYXQgbXVzdCBiZSB0aGUgY2FzZS4gVGhl
IGltcGFjdCBpcyBtdWNoIG1vcmUgc2V2ZXJlIHdpdGggRkFTVFEgdGhhbiBGQVNUQSwgc28gSSBn
dWVzcyBkZWFsaW5nIHdpdGggdGhlIHF1YWxpdHkgc3RyaW5ncyBtdXN0IGJlIHF1aXRlIGV4cGVu
c2l2ZS4NCg0KQmVzdCwNClRlcnJ5DQoNCkZyb206IFBldGVyIENvY2sgPHAuai5hLmNvY2tAZ29v
Z2xlbWFpbC5jb20+DQpEYXRlOiBNb25kYXksIDI0LiBOb3ZlbWJlciAyMDI1IGF0IDEwOjQxDQpU
bzogSm9uZXMgS2VsbHksIFRlcmVuY2UgQ2FybGV0b24gPHRlcmVuY2Uuam9uZXNAY2hhcml0ZS5k
ZT4NCkNjOiBiaW9weXRob25AYmlvcHl0aG9uLm9yZyA8YmlvcHl0aG9uQGJpb3B5dGhvbi5vcmc+
DQpTdWJqZWN0OiBbZXh0XSBSZTogW0Jpb3B5dGhvbl0gQSBwb3NzaWJpbGl0eSBmb3Igc3BlZWRp
bmcgdXAgRkFTVEEvRkFTVFEgcmVhZGluZyBpbiBCaW9QeXRob24NCg0KSGVsbG8gVGVycnksDQoN
CkkganVzdCBwb3N0ZWQgYSBibG9nIGFib3V0IG15IHRob3VnaHRzIG9uIHJlY2VpdmluZyBnZW5l
cmF0aXZlIEFJDQpjb250cmlidXRpb25zIGFzIGFuIE9wZW4gU291cmNlIHByb2plY3QgbWFpbnRh
aW5lcjoNCg0KaHR0cHM6Ly9ibGFzdGVkYmlvLmJsb2dzcG90LmNvbS8yMDI1LzExL3Rob3VnaHRz
LW9uLWdlbmVyYXRpdmUtYWktY29udHJpYnV0aW9ucy5odG1sDQoNCkkgYW0gc2NlcHRpY2FsLCBh
bmQgaW4gdGhpcyBjYXNlIGFkZGluZyBhIFJ1c3QgZGVwZW5kZW5jeSB0byBCaW9weXRob24NCnNl
ZW1zIHRvbyBtdWNoIHRvIGFzay4gSSB0aGluayB5b3UgY291bGQgZ2V0IHNpbWlsYXIgcGVyZm9y
bWFuY2UgZ2FpbnMNCndpdGggQyAod2hpY2ggd2UgZG8gdXNlKSB3aGVyZSBhdCBsZWFzdCB0aGUg
bWFpbnRhaW5lcnMgaGF2ZSBzb21lDQpleHBlcmllbmNlLiBIb3dldmVyLCBldmVuIHRoZXJlLCBn
YWlucyBtYXkgbm90IG1ha2UgdGhlIGFkZGl0aW9uYWwNCmNvbXBsZXhpdHkgYW5kIG1haW50ZW5h
bmNlIGJ1cmRlbiB3b3J0aHdoaWxlLg0KDQpUaGFuayB5b3UgZm9yIHdyaXR0aW5nIGFuZCBhc2tp
bmcsIHJhdGhlciB0aGFuIHN1cHJpc2luZyBldmVyeW9uZSB3aXRoDQphIGxhcmdlIHB1bGwgcmVx
dWVzdC4NCg0KUGV0ZXINCg0KUC5TLiBDcm9zcyByZWZlcmVuY2UgaHR0cHM6Ly9naXRodWIuY29t
L2Jpb3B5dGhvbi9iaW9weXRob24vcHVsbC81MDg1DQoNCk9uIFR1ZSwgTm92IDExLCAyMDI1IGF0
IDEwOjAw4oCvUE0gSm9uZXMgS2VsbHksIFRlcmVuY2UgQ2FybGV0b24NCjx0ZXJlbmNlLmpvbmVz
QGNoYXJpdGUuZGU+IHdyb3RlOg0KPg0KPiBIaSBhbGwNCj4NCj4gSSByZWd1bGFybHkgcHJvY2Vz
cyByZWFzb25hYmx5IGxhcmdlIEZBU1RRIChodW5kcmVkcyBvZiBiaWxsaW9ucyBvZiBzZXF1ZW5j
aW5nIHJlYWRzKSBhbmQgRkFTVEEgZmlsZXMgdXNpbmcgQmlvUHl0aG9uLiBGb3Igc29tZSB5ZWFy
cyBJJ3ZlIGJlZW4gbWVhbmluZyB0byBpbXBsZW1lbnQgYSBGQVNUUS9GQVNUQSByZWFkZXIgaW4g
YSBjb21waWxlZCBsYW5ndWFnZSBhbmQgYWRkIFB5dGhvbiBiaW5kaW5ncyB0byBpbXByb3ZlIHRo
ZSBzcGVlZC4gSSBjb3VsZCd2ZSBkb25lIHRoaXMgaW4gQyBidXQgSSBzcGVudCBzb21lIGRlY2Fk
ZXMgd3JpdGluZyBDIGFuZCBJIHdhbnRlZCB0byBsZWFybiBzb21ldGhpbmcgbmV3LCBzbyBJIGNv
bnNpZGVyZWQgYSBmZXcgbGFuZ3VhZ2VzLiBCZWNhdXNlIFJ1c3QgbWFrZXMgaXQgdmVyeSBlYXN5
IHRvIGNyZWF0ZSBQeXRob24gYmluZGluZ3MsIEkgZGVjaWRlZCB0byBnaXZlIGl0IGEgdHJ5LiBJ
IHRob3VnaHQgSSdkIGdldCBnb2luZyBieSBhc2tpbmcgdGhlIENsYXVkZSBDTEkgdG8gd3JpdGUg
bWUgc29tZSBSdXN0LiBUaGF0IHR1cm5lZCBvdXQgdG8gYmUgYSBtdWNoLCBtdWNoIGJldHRlciBl
eHBlcmllbmNlIHRoYW4gSSBoYWQgYW50aWNpcGF0ZWQuIFdpdGggQ2xhdWRlIEkgcGxheWVkIHdp
dGggc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMsIGtlZXBpbmcgdHJhY2sgb2YgdGltaW5nLiBDbGF1
ZGUgYWxzbyB3cm90ZSBzb21lIHRlc3RzLiBUbyBjb21wYXJlIHdoYXQgSSB3YXMgc2VlaW5nIEkg
Z290IENsYXVkZSB0byB3cml0ZSBhIHB1cmUgUHl0aG9uIHZlcnNpb24sIGEgcHVyZSBDIHZlcnNp
b24sIFB5dGhvbiBiaW5kaW5ncyB0byB0aGUgQywgYW5kIHRvIGNyZWF0ZSBhIGJlbmNobWFyayBz
dWl0ZS4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBSdXN0L1B5dGhvbiAoYW5kIHRoZSBDL1B5
dGhvbikgRkFTVEEgcmVhZGluZyBpcyB0d2ljZSBhcyBmYXN0IGFzIEJpb1B5dGhvbiBhbmQgRkFT
VFEgcmVhZGluZyBpcyBmb3VyIHRpbWVzIGFzIGZhc3QuIEkgZGlkbid0IHdyaXRlIGEgc2luZ2xl
IGxpbmUgb2YgY29kZS4gSSBqdXN0IGRpZCBzb21lIG1pbmltYWwgY2xlYW5pbmcgdXAgd2hlbiB0
aGluZ3Mgd2VyZSBhbHJlYWR5IGZhciBhbG9uZy4gSSd2ZSBiZWVuIHVzaW5nIHRoZSBjb2RlIGZv
ciB0aGUgbGFzdCBtb250aCBvciB0d28gd2l0aCBubyBwcm9ibGVtcy4NCj4NCj4gVGhlIHJlcG8g
aXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL1Zpcm9sb2d5Q2hhcml0ZS9wcnNlcSAgKHByc2VxID0g
UHl0aG9uL1J1c3QgZm9yIHNlcXVlbmNlcykuIFlvdSdsbCBmaW5kIHRoZSBiZW5jaG1hcmsgcmVz
dWx0cyBvbiB0aGF0IHBhZ2UuICBUaGVyZSBhcmUgc3RpbGwgc29tZSBzbWFsbCB0aGluZ3MgSSB3
b3VsZCBhZGp1c3QgaW4gdGhlIEFQSS4gIEJUVywgQ2xhdWRlIGFsc28gd3JvdGUgdGhlIFJFQURN
RSAod2hpY2ggc2hvdWxkIGRlZmluaXRlbHkgYmUgaW1wcm92ZWQpLg0KPg0KPiBJIGFtIHdvbmRl
cmluZyBpZiB0aGVyZSBtaWdodCBiZSBpbnRlcmVzdCBpbiBpbmNvcnBvcmF0aW5nIHRoaXMgaW50
byBCaW9QeXRob24uIEkgZG9uJ3Qga25vdyBpZiB0aGVyZSBhcmUgYW55IFJ1c3QgZGVwZW5kZW5j
aWVzIGluIEJpb1B5dGhvbiBidXQgSSBrbm93IHRoYXQgdGhlcmUgYXJlIHNvbWUgQyBleHRlbnNp
b25zLiBXZSBjb3VsZCB1c2UgZWl0aGVyLCBhcyB0aGVpciBzcGVlZHMgYXJlIGNvbXBhcmFibGUu
IElmIHRoZXJlJ3MgaW50ZXJlc3QsIEknZCBiZSBoYXBweSB0byBoZWxwIChvciB0byBkbyBpdCBh
bGwsIGFmdGVyIHNvbWUgZGlzY3Vzc2lvbiBhbmQgbWF5YmUgd2l0aCBzb21lIGd1aWRhbmNlKS4N
Cj4NCj4gVGhhbmtzIHZlcnkgbXVjaCBmb3IgYWxsIHRoZSB3b3JrIG9uIEJpb1B5dGhvbi4gSXQn
cyByZWFsbHkgYmVlbiBhIHBsZWFzdXJlIHRvIHVzZSB0aGUgY29kZSBvdmVyIHRoZSBsYXN0IGRv
emVuIHllYXJzIG9yIHNvLg0KPg0KPiBUZXJyeSBKb25lcw0KPg0KPg0KPiBfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBCaW9weXRob24gbWFpbGluZyBs
aXN0ICAtICBCaW9weXRob25AYmlvcHl0aG9uLm9yZw0KPiBodHRwczovL21haWxtYW4ub3Blbi1i
aW8ub3JnL21haWxtYW4vbGlzdGluZm8vYmlvcHl0aG9uDQo=

--_000_5b4705cef7194d299e17295c627e8ce5charitede_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5Pg0KPGRpdiBkaXI9Imx0
ciIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJp
ZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpIaSBhbGw8L2Rpdj4N
CjxkaXYgZGlyPSJsdHIiIHN0eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFyaWFsLCBIZWx2ZXRp
Y2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0K
PGJyPg0KPC9kaXY+DQo8ZGl2IGRpcj0ibHRyIiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBB
cmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2Io
MCwgMCwgMCk7Ij4NClRoYW5rcyBmb3IgdGhlIHJlcGxpZXMgYW5kIEknbSBzb3JyeSB0byBiZSBz
byBzbG93IGluIHJlcGx5aW5nLjwvZGl2Pg0KPGRpdiBkaXI9Imx0ciIgc3R5bGU9ImZvbnQtZmFt
aWx5OiBBcHRvcywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0
OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgZGlyPSJsdHIiIHN0
eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZv
bnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KUGV0ZXIgLSBJ4oCZbSBzY2Vw
dGljYWwsIHRvby4gJm5ic3A7SSB0aG91Z2h0IGl0IGhpZ2hseSZuYnNwO3VubGlrZWx5IHRoYXQg
QmlvUHl0aG9uIHdvdWxkIHdhbnQgdG8gYWRkIGEgZGVwZW5kZW5jZSBvbiBSdXN0LiBUaGUgQyBj
b2RlIGNvdWxkIGJlIHVzZWQgdG8gZ2V0IHRoZSBzYW1lIHNwZWVkLXVwLiBUaGUgYXV0b21hdGlj
IGRldGVjdGlvbiBvZiBjb21wcmVzc2VkIGlucHV0IChpbmNsdWRpbmcgb24gc3RkaW4pIHdvdWxk
IGJlIGxvc3QsIGJ1dCBwZXJoYXBzIGNvdWxkDQogYmUgYWRkZWQuICZuYnNwO0RhbiAtIG1heWJl
IENsYXVkZSBjb3VsZCBtYWtlIHRoZSBjaGFuZ2VzIGZvciBhIHByLiBJIHdvdWxkbuKAmXQgYmUg
c3VycHJpc2VkLCBldmVuIHdpdGggc3VjaCBhIGxhcmdlIGNvZGViYXNlLjwvZGl2Pg0KPGRpdiBk
aXI9Imx0ciIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXJpYWwsIEhlbHZldGljYSwgc2Fu
cy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8
L2Rpdj4NCjxkaXYgZGlyPSJsdHIiIHN0eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFyaWFsLCBI
ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAw
KTsiPg0KUmVnYXJkaW5nIHRoZSB3aWRlciBwb2ludHMgbWFkZSBieSBQZXRlciBpbiBoaXMgYmxv
ZyBwb3N0LCBJIGFncmVlIHdpdGggcHJvYmFibHkgYWxsIG9mIGl0LiBJIGhpZ2hseSBkb3VidCB0
aGF0IHRoZSBjdXJyZW50IHRyYWplY3RvcnkgKGluIHRlcm1zIG9mIGVuZXJneSB1c2UpIG9mIHRo
ZXNlIHRvb2xzIGlzIHN1c3RhaW5hYmxlLCBhbmQgSSByZWd1bGFybHkgd29uZGVyIGFib3V0IGFj
dHVhbCBjb3N0ICh0byB0aGUgcGxhbmV0KSBJIGFtIGluY3VycmluZw0KIHdoZW4gdXNpbmcgQ2xh
dWRlLCBlc3BlY2lhbGx5IHdoZW4gaXTigJlzIGRvaW5nIHNvbWV0aGluZyBJIGNvdWxkIGRvIGlu
IGVtYWNzIG9yIHdpdGggZS5nLiwgYSBwZXJsIG9uZS1saW5lci4gQnV0IEkgZ2V0IHN0dWZmIGRv
bmUgYWJvdXQgMjB4IGFzIGZhc3Qgd2hlbiB1c2luZyBDbGF1ZGUsIGFuZCBJIGp1c3Qgc3BlYWsg
dG8gaXQgKHVzaW5nIERpY3RhdGlvbiBvbiBPUyBYKSwgYmFyZWx5IHR5cGluZyBhIHRoaW5nLiBU
aGF04oCZcyBhbGwgYW4gaW5jcmVkaWJsZQ0KIGNoYW5nZSBhZnRlciA0MCYjNDM7IHllYXJzIG9m
IGhhdmluZyB0byBnZXQgdGhvdWdodHMgb3V0IG9mIG15IGJyYWluIGFuZCBpbnRvIHRoZSBjb21w
dXRlciBvbmUga2V5c3Ryb2tlIGF0IGEgdGltZS4gSXQgZmVlbHMgbGlrZSBtYWdpYy4gQlVULCBJ
IGhhdmUgdG8gd2F0Y2ggQ2xhdWRlIHZlcnkgY2FyZWZ1bGx5LCBsb29rIGF0IGl0cyBjb2RlLCBt
YWtlIGl0IHdyaXRlIG1hbnkgdGVzdHMgYW5kIGV4cGxpY2l0bHkgcHJvdmUgdGhhdCBpdCBoYXMg
bWFuYWdlZA0KIHRvIGRvIHdoYXQgd2FzIGludGVuZGVkLiBUaGF04oCZcyBub3Qgc28gZGlmZmVy
ZW50IGZyb20gd2F0Y2hpbmcgeW91cnNlbGYgb3IgZG9pbmcgY29kZSByZXZpZXcgb2YgYSBqdW5p
b3IgKHZlcnkgZW5lcmdldGljIGV2ZXItY2hlZXJmdWwpIHByb2dyYW1tZXIuPC9kaXY+DQo8ZGl2
IGRpcj0ibHRyIiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcmlhbCwgSGVsdmV0aWNhLCBz
YW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4N
CjwvZGl2Pg0KPGRpdiBkaXI9Imx0ciIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXJpYWws
IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAs
IDApOyI+DQpJIGFncmVlIHRoYXQgYW4gQUkgKENsYXVkZSwgY2VydGFpbmx5KSBjb3VsZCBiZSB1
c2VkIHRvIHZlcnkgcXVpY2tseSBtYWtlIGdlbmVyYWwgaW1wcm92ZW1lbnRzIHRvIGEgY29kZWJh
c2Ugd2l0aCB2ZXJ5IGxpdHRsZSByaXNrIChhc3N1bWluZyBhIHRlc3Qgc3VpdGUgZXhpc3RzKS4g
SeKAmXZlIGRvbmUgdGhhdCBxdWl0ZSBhIGZldyB0aW1lcywgZS5nLiwgdGVsbGluZyBDbGF1ZGUg
SSBubyBsb25nZXIgbmVlZCBzdXBwb3J0IGZvciBQeXRob24gMy5YDQogYW5kIHRvIG1vZGVybmlz
ZSB0aGUgdHlwaW5nIGhpbnRzIGZvciAzLlgmIzQzOzEsIG9yIHRvIGFkZCB0eXBpbmcgaGludHMs
IGV0Yy4gJm5ic3A7SXTigJlzIGFsc28gZ29vZCBhdCBwcm9kdWNpbmcgZG9jdW1lbnRhdGlvbi48
L2Rpdj4NCjxkaXYgZGlyPSJsdHIiIHN0eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFyaWFsLCBI
ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAw
KTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGRpcj0ibHRyIiBzdHlsZT0iZm9udC1mYW1pbHk6IEFw
dG9zLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9y
OiByZ2IoMCwgMCwgMCk7Ij4NCknigJltIG5vdCBzdXJlIHdoZXJlIHRoaXMgbGVhdmVzIHVzLiAm
bmJzcDtJZiB0aGVyZeKAmXMgYWdyZWVtZW50IHRoYXQgYSBDIGV4dGVuc2lvbiB3b3VsZCBiZSBn
b29kIHRvIGhhdmUsIHRoZSBvbmUgQ2xhdWRlIG1hZGUgZm9yIG15IHByc2VxIHByb2plY3QgYmVu
Y2htYXJrIHN1aXRlIGlzIHRlc3RlZCBhbmQgY291bGQgYmUgdXNlZC4gSSBoYXZlbuKAmXQgbG9v
a2VkIGF0IHRoZSBCaW9QeXRob24gY29kZSBjbG9zZWx5IGVub3VnaCB0byBrbm93IGhvdyBtdWNo
IHdvcmsNCiB0aGF0IHdvdWxkIGJlLCB0aG91Z2guPC9kaXY+DQo8ZGl2IGRpcj0ibHRyIiBzdHls
ZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250
LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBk
aXI9Imx0ciIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXJpYWwsIEhlbHZldGljYSwgc2Fu
cy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpUaGFua3Mg
YWdhaW4gZm9yIHRoZSB0aG91Z2h0ZnVsIHJlcGxpZXMuIFRoZXJlIHdhcyBhbiBlYXJsaWVyIG9u
ZSBhc2tpbmcgd2h5IHRoZSBCaW9QeXRob24gY29kZSB3YXMgc2xvd2VyIHRoYW4gQ2xhdWRl4oCZ
cyBtaW5pbWFsIHB1cmUgUHl0aG9uLCBhbmQgc3VnZ2VzdGluZyB0aGF0IHdvdWxkIGJlIGR1ZSB0
byB0aGUgb3ZlcmhlYWQgb2YgbWFraW5nIFNlcVJlY29yZHMuIEkgdGhpbmsgdGhhdCBtdXN0IGJl
IHRoZSBjYXNlLiBUaGUgaW1wYWN0IGlzDQogbXVjaCBtb3JlIHNldmVyZSB3aXRoIEZBU1RRIHRo
YW4gRkFTVEEsIHNvIEkgZ3Vlc3MgZGVhbGluZyB3aXRoIHRoZSBxdWFsaXR5IHN0cmluZ3MgbXVz
dCBiZSBxdWl0ZSBleHBlbnNpdmUuPC9kaXY+DQo8ZGl2IGRpcj0ibHRyIiBzdHlsZT0iZm9udC1m
YW1pbHk6IEFwdG9zLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEy
cHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBkaXI9Imx0ciIg
c3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg
Zm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpCZXN0LDwvZGl2Pg0KPGRp
diBkaXI9Imx0ciIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXJpYWwsIEhlbHZldGljYSwg
c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpUZXJy
eTwvZGl2Pg0KPGRpdiBkaXI9Imx0ciIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXJpYWws
IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAs
IDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgaWQ9Im1haWwtZWRpdG9yLXJlZmVyZW5jZS1tZXNz
YWdlLWNvbnRhaW5lciI+DQo8ZGl2IGNsYXNzPSJtcy1vdXRsb29rLW1vYmlsZS1yZWZlcmVuY2Ut
bWVzc2FnZSBza2lwUHJvb2ZpbmciPg0KPG1ldGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJN
aWNyb3NvZnQgRXhjaGFuZ2UgU2VydmVyIj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0ibXMtb3V0bG9v
ay1tb2JpbGUtcmVmZXJlbmNlLW1lc3NhZ2Ugc2tpcFByb29maW5nIiBzdHlsZT0idGV4dC1hbGln
bjogbGVmdDsgcGFkZGluZzogM3B0IDBpbiAwaW47IGJvcmRlci13aWR0aDogMXB0IG1lZGl1bSBt
ZWRpdW07IGJvcmRlci1zdHlsZTogc29saWQgbm9uZSBub25lOyBib3JkZXItY29sb3I6IHJnYigx
ODEsIDE5NiwgMjIzKSBjdXJyZW50Y29sb3IgY3VycmVudGNvbG9yOyBmb250LWZhbWlseTogQXB0
b3M7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IGJsYWNrOyI+DQo8Yj5Gcm9tOiA8L2I+UGV0ZXIg
Q29jayAmbHQ7cC5qLmEuY29ja0Bnb29nbGVtYWlsLmNvbSZndDs8YnI+DQo8Yj5EYXRlOiA8L2I+
TW9uZGF5LCAyNC4gTm92ZW1iZXIgMjAyNSBhdCAxMDo0MTxicj4NCjxiPlRvOiA8L2I+Sm9uZXMg
S2VsbHksIFRlcmVuY2UgQ2FybGV0b24gJmx0O3RlcmVuY2Uuam9uZXNAY2hhcml0ZS5kZSZndDs8
YnI+DQo8Yj5DYzogPC9iPmJpb3B5dGhvbkBiaW9weXRob24ub3JnICZsdDtiaW9weXRob25AYmlv
cHl0aG9uLm9yZyZndDs8YnI+DQo8Yj5TdWJqZWN0OiA8L2I+W2V4dF0gUmU6IFtCaW9weXRob25d
IEEgcG9zc2liaWxpdHkgZm9yIHNwZWVkaW5nIHVwIEZBU1RBL0ZBU1RRIHJlYWRpbmcgaW4gQmlv
UHl0aG9uPGJyPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJQbGFpblRleHQiIHN0eWxlPSJm
b250LXNpemU6IDEwcHQ7Ij5IZWxsbyBUZXJyeSw8YnI+DQo8YnI+DQpJIGp1c3QgcG9zdGVkIGEg
YmxvZyBhYm91dCBteSB0aG91Z2h0cyBvbiByZWNlaXZpbmcgZ2VuZXJhdGl2ZSBBSTxicj4NCmNv
bnRyaWJ1dGlvbnMgYXMgYW4gT3BlbiBTb3VyY2UgcHJvamVjdCBtYWludGFpbmVyOjxicj4NCjxi
cj4NCjxhIGhyZWY9Imh0dHBzOi8vYmxhc3RlZGJpby5ibG9nc3BvdC5jb20vMjAyNS8xMS90aG91
Z2h0cy1vbi1nZW5lcmF0aXZlLWFpLWNvbnRyaWJ1dGlvbnMuaHRtbCIgZGF0YS1vdXRsb29rLWlk
PSI3NWNmZjczYy1kMDkxLTQ0OWUtODhmOS0xOTkyYzE1OGFkNTQiPmh0dHBzOi8vYmxhc3RlZGJp
by5ibG9nc3BvdC5jb20vMjAyNS8xMS90aG91Z2h0cy1vbi1nZW5lcmF0aXZlLWFpLWNvbnRyaWJ1
dGlvbnMuaHRtbDwvYT48YnI+DQo8YnI+DQpJIGFtIHNjZXB0aWNhbCwgYW5kIGluIHRoaXMgY2Fz
ZSBhZGRpbmcgYSBSdXN0IGRlcGVuZGVuY3kgdG8gQmlvcHl0aG9uPGJyPg0Kc2VlbXMgdG9vIG11
Y2ggdG8gYXNrLiBJIHRoaW5rIHlvdSBjb3VsZCBnZXQgc2ltaWxhciBwZXJmb3JtYW5jZSBnYWlu
czxicj4NCndpdGggQyAod2hpY2ggd2UgZG8gdXNlKSB3aGVyZSBhdCBsZWFzdCB0aGUgbWFpbnRh
aW5lcnMgaGF2ZSBzb21lPGJyPg0KZXhwZXJpZW5jZS4gSG93ZXZlciwgZXZlbiB0aGVyZSwgZ2Fp
bnMgbWF5IG5vdCBtYWtlIHRoZSBhZGRpdGlvbmFsPGJyPg0KY29tcGxleGl0eSBhbmQgbWFpbnRl
bmFuY2UgYnVyZGVuIHdvcnRod2hpbGUuPGJyPg0KPGJyPg0KVGhhbmsgeW91IGZvciB3cml0dGlu
ZyBhbmQgYXNraW5nLCByYXRoZXIgdGhhbiBzdXByaXNpbmcgZXZlcnlvbmUgd2l0aDxicj4NCmEg
bGFyZ2UgcHVsbCByZXF1ZXN0Ljxicj4NCjxicj4NClBldGVyPGJyPg0KPGJyPg0KUC5TLiBDcm9z
cyByZWZlcmVuY2UgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Jpb3B5dGhvbi9iaW9weXRo
b24vcHVsbC81MDg1IiBkYXRhLW91dGxvb2staWQ9IjI0YjYyYzlhLWFjMDctNDZmNC04ZWQ2LWVm
M2E5OTMwNWEwZSI+DQpodHRwczovL2dpdGh1Yi5jb20vYmlvcHl0aG9uL2Jpb3B5dGhvbi9wdWxs
LzUwODU8L2E+PGJyPg0KPGJyPg0KT24gVHVlLCBOb3YgMTEsIDIwMjUgYXQgMTA6MDDigK9QTSBK
b25lcyBLZWxseSwgVGVyZW5jZSBDYXJsZXRvbjxicj4NCiZsdDt0ZXJlbmNlLmpvbmVzQGNoYXJp
dGUuZGUmZ3Q7IHdyb3RlOjxicj4NCiZndDs8YnI+DQomZ3Q7IEhpIGFsbDxicj4NCiZndDs8YnI+
DQomZ3Q7IEkgcmVndWxhcmx5IHByb2Nlc3MgcmVhc29uYWJseSBsYXJnZSBGQVNUUSAoaHVuZHJl
ZHMgb2YgYmlsbGlvbnMgb2Ygc2VxdWVuY2luZyByZWFkcykgYW5kIEZBU1RBIGZpbGVzIHVzaW5n
IEJpb1B5dGhvbi4gRm9yIHNvbWUgeWVhcnMgSSd2ZSBiZWVuIG1lYW5pbmcgdG8gaW1wbGVtZW50
IGEgRkFTVFEvRkFTVEEgcmVhZGVyIGluIGEgY29tcGlsZWQgbGFuZ3VhZ2UgYW5kIGFkZCBQeXRo
b24gYmluZGluZ3MgdG8gaW1wcm92ZSB0aGUgc3BlZWQuDQogSSBjb3VsZCd2ZSBkb25lIHRoaXMg
aW4gQyBidXQgSSBzcGVudCBzb21lIGRlY2FkZXMgd3JpdGluZyBDIGFuZCBJIHdhbnRlZCB0byBs
ZWFybiBzb21ldGhpbmcgbmV3LCBzbyBJIGNvbnNpZGVyZWQgYSBmZXcgbGFuZ3VhZ2VzLiBCZWNh
dXNlIFJ1c3QgbWFrZXMgaXQgdmVyeSBlYXN5IHRvIGNyZWF0ZSBQeXRob24gYmluZGluZ3MsIEkg
ZGVjaWRlZCB0byBnaXZlIGl0IGEgdHJ5LiBJIHRob3VnaHQgSSdkIGdldCBnb2luZyBieSBhc2tp
bmcgdGhlDQogQ2xhdWRlIENMSSB0byB3cml0ZSBtZSBzb21lIFJ1c3QuIFRoYXQgdHVybmVkIG91
dCB0byBiZSBhIG11Y2gsIG11Y2ggYmV0dGVyIGV4cGVyaWVuY2UgdGhhbiBJIGhhZCBhbnRpY2lw
YXRlZC4gV2l0aCBDbGF1ZGUgSSBwbGF5ZWQgd2l0aCBzZXZlcmFsIGltcGxlbWVudGF0aW9ucywg
a2VlcGluZyB0cmFjayBvZiB0aW1pbmcuIENsYXVkZSBhbHNvIHdyb3RlIHNvbWUgdGVzdHMuIFRv
IGNvbXBhcmUgd2hhdCBJIHdhcyBzZWVpbmcgSSBnb3QgQ2xhdWRlDQogdG8gd3JpdGUgYSBwdXJl
IFB5dGhvbiB2ZXJzaW9uLCBhIHB1cmUgQyB2ZXJzaW9uLCBQeXRob24gYmluZGluZ3MgdG8gdGhl
IEMsIGFuZCB0byBjcmVhdGUgYSBiZW5jaG1hcmsgc3VpdGUuIEZyb20gd2hhdCBJIGNhbiB0ZWxs
LCB0aGUgUnVzdC9QeXRob24gKGFuZCB0aGUgQy9QeXRob24pIEZBU1RBIHJlYWRpbmcgaXMgdHdp
Y2UgYXMgZmFzdCBhcyBCaW9QeXRob24gYW5kIEZBU1RRIHJlYWRpbmcgaXMgZm91ciB0aW1lcyBh
cyBmYXN0LiBJIGRpZG4ndA0KIHdyaXRlIGEgc2luZ2xlIGxpbmUgb2YgY29kZS4gSSBqdXN0IGRp
ZCBzb21lIG1pbmltYWwgY2xlYW5pbmcgdXAgd2hlbiB0aGluZ3Mgd2VyZSBhbHJlYWR5IGZhciBh
bG9uZy4gSSd2ZSBiZWVuIHVzaW5nIHRoZSBjb2RlIGZvciB0aGUgbGFzdCBtb250aCBvciB0d28g
d2l0aCBubyBwcm9ibGVtcy48YnI+DQomZ3Q7PGJyPg0KJmd0OyBUaGUgcmVwbyBpcyBhdCA8YSBo
cmVmPSJodHRwczovL2dpdGh1Yi5jb20vVmlyb2xvZ3lDaGFyaXRlL3Byc2VxIiBkYXRhLW91dGxv
b2staWQ9ImM0MzA4ODhmLTBiZTgtNDc0Yi04MDBjLTAzNGRhYmUyNzhmNCI+DQpodHRwczovL2dp
dGh1Yi5jb20vVmlyb2xvZ3lDaGFyaXRlL3Byc2VxPC9hPiZuYnNwOyAocHJzZXEgPSBQeXRob24v
UnVzdCBmb3Igc2VxdWVuY2VzKS4gWW91J2xsIGZpbmQgdGhlIGJlbmNobWFyayByZXN1bHRzIG9u
IHRoYXQgcGFnZS4mbmJzcDsgVGhlcmUgYXJlIHN0aWxsIHNvbWUgc21hbGwgdGhpbmdzIEkgd291
bGQgYWRqdXN0IGluIHRoZSBBUEkuJm5ic3A7IEJUVywgQ2xhdWRlIGFsc28gd3JvdGUgdGhlIFJF
QURNRSAod2hpY2ggc2hvdWxkIGRlZmluaXRlbHkgYmUgaW1wcm92ZWQpLjxicj4NCiZndDs8YnI+
DQomZ3Q7IEkgYW0gd29uZGVyaW5nIGlmIHRoZXJlIG1pZ2h0IGJlIGludGVyZXN0IGluIGluY29y
cG9yYXRpbmcgdGhpcyBpbnRvIEJpb1B5dGhvbi4gSSBkb24ndCBrbm93IGlmIHRoZXJlIGFyZSBh
bnkgUnVzdCBkZXBlbmRlbmNpZXMgaW4gQmlvUHl0aG9uIGJ1dCBJIGtub3cgdGhhdCB0aGVyZSBh
cmUgc29tZSBDIGV4dGVuc2lvbnMuIFdlIGNvdWxkIHVzZSBlaXRoZXIsIGFzIHRoZWlyIHNwZWVk
cyBhcmUgY29tcGFyYWJsZS4gSWYgdGhlcmUncyBpbnRlcmVzdCwNCiBJJ2QgYmUgaGFwcHkgdG8g
aGVscCAob3IgdG8gZG8gaXQgYWxsLCBhZnRlciBzb21lIGRpc2N1c3Npb24gYW5kIG1heWJlIHdp
dGggc29tZSBndWlkYW5jZSkuPGJyPg0KJmd0Ozxicj4NCiZndDsgVGhhbmtzIHZlcnkgbXVjaCBm
b3IgYWxsIHRoZSB3b3JrIG9uIEJpb1B5dGhvbi4gSXQncyByZWFsbHkgYmVlbiBhIHBsZWFzdXJl
IHRvIHVzZSB0aGUgY29kZSBvdmVyIHRoZSBsYXN0IGRvemVuIHllYXJzIG9yIHNvLjxicj4NCiZn
dDs8YnI+DQomZ3Q7IFRlcnJ5IEpvbmVzPGJyPg0KJmd0Ozxicj4NCiZndDs8YnI+DQomZ3Q7IF9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPg0KJmd0OyBC
aW9weXRob24gbWFpbGluZyBsaXN0Jm5ic3A7IC0mbmJzcDsgQmlvcHl0aG9uQGJpb3B5dGhvbi5v
cmc8YnI+DQomZ3Q7IDxhIGhyZWY9Imh0dHBzOi8vbWFpbG1hbi5vcGVuLWJpby5vcmcvbWFpbG1h
bi9saXN0aW5mby9iaW9weXRob24iIGRhdGEtb3V0bG9vay1pZD0iZWNhOTY3YjEtZGM5Ni00OGI0
LWJhZTgtZTE0MTQ5MDVjY2IyIj4NCmh0dHBzOi8vbWFpbG1hbi5vcGVuLWJpby5vcmcvbWFpbG1h
bi9saXN0aW5mby9iaW9weXRob248L2E+PGJyPg0KPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjwv
aHRtbD4NCg==

--_000_5b4705cef7194d299e17295c627e8ce5charitede_--

--===============8359502673403356115==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Biopython mailing list  -  [email protected]
https://mailman.open-bio.org/mailman/listinfo/biopython

--===============8359502673403356115==--