Biopython - Hoạt động I / O theo trình tự

Biopython cung cấp một mô-đun, Bio.SeqIO để đọc và ghi các trình tự từ và vào một tệp (bất kỳ luồng nào) tương ứng. Nó hỗ trợ gần như tất cả các định dạng tệp có sẵn trong tin sinh học. Hầu hết các phần mềm cung cấp cách tiếp cận khác nhau cho các định dạng tệp khác nhau. Tuy nhiên, Biopython tuân theo một cách có ý thức một cách tiếp cận duy nhất để trình bày dữ liệu trình tự đã được phân tích cú pháp cho người dùng thông qua đối tượng SeqRecord của nó.

Hãy cùng chúng tôi tìm hiểu thêm về SeqRecord trong phần sau.

SeqRecord

Mô-đun Bio.SeqRecord cung cấp SeqRecord để giữ thông tin meta của chuỗi cũng như dữ liệu chuỗi như được cung cấp bên dưới:

  • seq - Đó là một chuỗi thực tế.

  • id - Nó là định danh chính của dãy đã cho. Loại mặc định là chuỗi.

  • tên - Nó là Tên của dãy. Loại mặc định là chuỗi.

  • mô tả - Nó hiển thị thông tin con người có thể đọc được về trình tự.

  • chú thích - Nó là một từ điển thông tin bổ sung về trình tự.

SeqRecord có thể được nhập như được chỉ định bên dưới

from Bio.SeqRecord import SeqRecord

Hãy để chúng tôi hiểu các sắc thái của việc phân tích cú pháp tệp trình tự bằng tệp trình tự thực trong các phần tiếp theo.

Phân tích cú pháp các định dạng tệp trình tự

Phần này giải thích về cách phân tích cú pháp hai trong số các định dạng tệp trình tự phổ biến nhất, FASTAGenBank.

FASTA

FASTAlà định dạng tệp cơ bản nhất để lưu trữ dữ liệu trình tự. Ban đầu, FASTA là một gói phần mềm để sắp xếp trình tự của DNA và protein được phát triển trong quá trình phát triển sơ khai của Tin sinh học và được sử dụng chủ yếu để tìm kiếm sự tương đồng về trình tự.

Biopython cung cấp một tệp FASTA mẫu và nó có thể được truy cập tại https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta.

Tải xuống và lưu tệp này vào thư mục mẫu Biopython của bạn dưới dạng ‘orchid.fasta’.

Mô-đun Bio.SeqIO cung cấp phương thức phân tích cú pháp () để xử lý các tệp trình tự và có thể được nhập như sau:

from Bio.SeqIO import parse

Phương thức parse () chứa hai đối số, đối số đầu tiên là xử lý tệp và đối số thứ hai là định dạng tệp.

>>> file = open('path/to/biopython/sample/orchid.fasta') 
>>> for record in parse(file, "fasta"): 
...    print(record.id) 
... 
gi|2765658|emb|Z78533.1|CIZ78533 
gi|2765657|emb|Z78532.1|CCZ78532 
.......... 
.......... 
gi|2765565|emb|Z78440.1|PPZ78440 
gi|2765564|emb|Z78439.1|PBZ78439 
>>>

Ở đây, phương thức parse () trả về một đối tượng có thể lặp lại, nó trả về SeqRecord trên mỗi lần lặp. Có thể lặp lại, nó cung cấp nhiều phương pháp phức tạp và dễ dàng và cho chúng ta xem một số tính năng.

kế tiếp()

Phương thức next () trả về mục tiếp theo có sẵn trong đối tượng có thể lặp, chúng ta có thể sử dụng mục này để lấy chuỗi đầu tiên như dưới đây:

>>> first_seq_record = next(SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta')) 
>>> first_seq_record.id 'gi|2765658|emb|Z78533.1|CIZ78533' 
>>> first_seq_record.name 'gi|2765658|emb|Z78533.1|CIZ78533' 
>>> first_seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', SingleLetterAlphabet()) 
>>> first_seq_record.description 'gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA' 
>>> first_seq_record.annotations 
{} 
>>>

Ở đây, seq_record.annotations trống vì định dạng FASTA không hỗ trợ chú thích trình tự.

hiểu danh sách

Chúng tôi có thể chuyển đổi đối tượng có thể lặp lại thành danh sách bằng cách sử dụng tính năng hiểu danh sách như được cung cấp bên dưới

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> all_seq = [seq_record for seq_record in seq_iter] >>> len(all_seq) 
94 
>>>

Ở đây, chúng tôi đã sử dụng phương pháp len để lấy tổng số. Chúng ta có thể nhận được chuỗi có độ dài tối đa như sau:

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> max_seq = max(len(seq_record.seq) for seq_record in seq_iter) 
>>> max_seq 
789 
>>>

Chúng tôi cũng có thể lọc trình tự bằng cách sử dụng mã dưới đây:

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> seq_under_600 = [seq_record for seq_record in seq_iter if len(seq_record.seq) < 600] 
>>> for seq in seq_under_600: 
...    print(seq.id) 
... 
gi|2765606|emb|Z78481.1|PIZ78481 
gi|2765605|emb|Z78480.1|PGZ78480 
gi|2765601|emb|Z78476.1|PGZ78476 
gi|2765595|emb|Z78470.1|PPZ78470 
gi|2765594|emb|Z78469.1|PHZ78469 
gi|2765564|emb|Z78439.1|PBZ78439 
>>>

Việc ghi một tập hợp các đối tượng SqlRecord (dữ liệu được phân tích cú pháp) vào tệp đơn giản như cách gọi phương thức SeqIO.write như bên dưới:

file = open("converted.fasta", "w) 
SeqIO.write(seq_record, file, "fasta")

Phương pháp này có thể được sử dụng hiệu quả để chuyển đổi định dạng như được chỉ định bên dưới:

file = open("converted.gbk", "w) 
SeqIO.write(seq_record, file, "genbank")

GenBank

Đây là một định dạng trình tự phong phú hơn cho các gen và bao gồm các trường cho nhiều loại chú thích khác nhau. Biopython cung cấp một tệp GenBank mẫu và nó có thể được truy cập tạihttps://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta.

Tải xuống và lưu tệp vào thư mục mẫu Biopython của bạn dưới dạng ‘orchid.gbk’

Kể từ đó, Biopython cung cấp một chức năng duy nhất, phân tích cú pháp để phân tích cú pháp tất cả các định dạng tin sinh học. Phân tích cú pháp định dạng GenBank đơn giản như thay đổi tùy chọn định dạng trong phương pháp phân tích cú pháp.

Mã cho điều tương tự đã được đưa ra bên dưới -

>>> from Bio import SeqIO 
>>> from Bio.SeqIO import parse 
>>> seq_record = next(parse(open('path/to/biopython/sample/orchid.gbk'),'genbank')) 
>>> seq_record.id 
'Z78533.1' 
>>> seq_record.name 
'Z78533' 
>>> seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', IUPACAmbiguousDNA()) 
>>> seq_record.description 
'C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA' 
>>> seq_record.annotations {
   'molecule_type': 'DNA', 
   'topology': 'linear', 
   'data_file_division': 'PLN', 
   'date': '30-NOV-2006', 
   'accessions': ['Z78533'], 
   'sequence_version': 1, 
   'gi': '2765658', 
   'keywords': ['5.8S ribosomal RNA', '5.8S rRNA gene', 'internal transcribed spacer', 'ITS1', 'ITS2'], 
   'source': 'Cypripedium irapeanum', 
   'organism': 'Cypripedium irapeanum', 
   'taxonomy': [
      'Eukaryota', 
      'Viridiplantae', 
      'Streptophyta', 
      'Embryophyta', 
      'Tracheophyta', 
      'Spermatophyta', 
      'Magnoliophyta', 
      'Liliopsida', 
      'Asparagales', 
      'Orchidaceae', 
      'Cypripedioideae', 
      'Cypripedium'], 
   'references': [
      Reference(title = 'Phylogenetics of the slipper orchids (Cypripedioideae:
      Orchidaceae): nuclear rDNA ITS sequences', ...), 
      Reference(title = 'Direct Submission', ...)
   ]
}