Biopython GenBank

Tôi đã sử dụng SARS-CoV-2 (Genbank. PA544053), vì không có mục Genbank nào được đưa ra trong câu hỏi của OP. Nếu ví dụ của tôi là đại diện (có thể không), tôi nghĩ đó là về các thuộc tính đối tượng. Để hiểu đối tượng tôi đã liệt kê các thuộc tính của nó,

print(record[0].__dict__.keys())

đầu ra

dict_keys(['_seq', 'id', 'name', 'description', 'dbxrefs', 'annotations', '_per_letter_annotations', 'features'])

Tài liệu và phản hồi rất tử tế của @jesse nói rằng có thuộc tính 'gia nhập' (Tài liệu Biopython bên dưới). @Jesse đã đề cập đến print(record[0].annotations['accessions']) 6, điều đó thật tuyệt. Tôi không thể tìm thấy print(record[0].annotations['accessions']) 7 hoặc có lẽ là print(record[0].annotations['accessions']) 8 và OP có thể gặp vấn đề tương tự

Trong ví dụ của tôi, có một thuộc tính print(record[0].annotations['accessions']) 9 và bên dưới đó là print(record[0].annotations['accessions']) 0 được truy cập thông qua,

print(record[0].annotations['accessions'])

đầu ra

['PA544053']

nó đây rồi. Đây là mã đầy đủ bao gồm gói CSV, tôi đang sử dụng print(record[0].annotations['accessions']) 0 nên nó sẽ chỉ cần sao chép và dán và chạy

from Bio import Entrez from Bio import SeqIO import csv from pathlib import Path fileout = Path('/mypath/mydir', 'test.csv') handle = Entrez.efetch(db="nucleotide", id="PA544053", rettype="gb",retmode="text") #, record = [rec for rec in SeqIO.parse(handle,'genbank')] fieldnames = ['Accession', 'db_xref', 'organism'] # print(record[0].__dict__.keys()) print(record[0].annotations['accessions']) with open (fileout, 'w') as f: csvwriter = csv.writer(f, delimiter="\t", quotechar='"') csvwriter.writerow(fieldnames) for feature in record[0].features: if feature.type == 'organism' or "mol_type" and "db_xref" in feature.qualifiers: csvwriter.writerow([''.join(record[0].annotations['accessions']), ''.join(feature.qualifiers['db_xref']), ''.join(feature.qualifiers['organism'])])

đầu ra

Accession db_xref organism PA544053 taxon:2697049 Severe acute respiratory syndrome coronavirus 2

Tài liệu Biopython Một lý do có thể cho câu hỏi là thuộc tính bị thiếu được mô tả trong tài liệu chính thức. Sử dụng đối tượng print(record[0].annotations['accessions']) 1 (không phải print(record[0].annotations['accessions']) 2) chắc chắn có thuộc tính print(record[0].annotations['accessions']) 3, https. // sinh học. org/docs/1. 75/api/Sinh học. Ngân hàng gen. html

Trang Biopython chính thức

________số 8

Tôi nghĩ cơ sở của câu hỏi là liên kết số gia nhập với thông tin sinh hóa/di truyền. Lưu ý, tôi không biết sự khác biệt giữa các đối tượng print(record[0].annotations['accessions']) 2 và print(record[0].annotations['accessions']) 1

Các lớp học. Iterator Lặp qua một tệp gồm các mục nhập GenBank Từ điển Truy cập tệp GenBank bằng giao diện từ điển. ErrorFeatureParser Bắt lỗi gây ra trong quá trình phân tích cú pháp. FeatureParser Phân tích dữ liệu GenBank trong các đối tượng Seq và SeqFeature. RecordParser Phân tích dữ liệu GenBank thành một đối tượng Record. NCBIDictionary Truy cập GenBank bằng giao diện từ điển

_BaseGenBankConsumer Một lớp cơ sở dành cho người tiêu dùng GenBank thực hiện một số chức năng hữu ích chung giữa những người tiêu dùng. _FeatureConsumer Tạo đối tượng SeqFeature từ thông tin do Máy quét tạo _RecordConsumer Tạo đối tượng bản ghi GenBank từ thông tin Máy quét. _PrintingConsumer Một người tiêu dùng gỡ lỗi

_Scanner Thiết lập trình phân tích cú pháp GenBank dựa trên Martel để phân tích bản ghi

ParserFailureError Ngoại lệ cho biết lỗi trong trình phân tích cú pháp (nghĩa là. máy quét hoặc người tiêu dùng) LocationParserError Ngoại lệ chỉ ra sự cố với trình phân tích cú pháp vị trí dựa trên tia lửa

Chức năng. index_file Nhận tệp GenBank sẵn sàng để sử dụng làm Từ điển. search_for Thực hiện truy vấn đối với GenBank. download_many Tải xuống nhiều bản ghi GenBank

Các định dạng GenBank và Embl quay trở lại những ngày đầu của cơ sở dữ liệu bộ gen và trình tự khi các chú thích lần đầu tiên được tạo. Chúng là một (loại) định dạng có thể đọc được của con người nhưng không thực tế đối với thao tác lập trình. Các định dạng này được thiết kế để chú thích và lưu trữ vị trí của các đặc điểm gen và thường là trình tự nucleotide. Mặc dù chúng không thực tế đối với các tác vụ như gọi biến thể, nhưng chúng vẫn được sử dụng rất nhiều trong cơ sở dữ liệu chính của INSDC. Do đó, các ngôn ngữ lập trình có thư viện sinh học như Python có chức năng sử dụng chúng. Gói Biopython chứa mô-đun SeqIO để phân tích cú pháp và viết các định dạng này mà chúng tôi sử dụng bên dưới. Bạn cũng có thể sử dụng thư viện sckit-bio mà tôi chưa thử. Lưu ý rằng phương pháp này hữu ích nếu bạn muốn tự động chỉnh sửa hàng loạt tính năng. Ví dụ: đối với các chỉnh sửa nhỏ, việc thực hiện thủ công trong trình soạn thảo văn bản hoặc tương tác trong Artemis sẽ dễ dàng hơn nhiều

tính năng ngân hàng gen

Gần đây chúng tôi có nhiệm vụ cập nhật các chú thích cho các chuỗi protein và lưu chúng trở lại định dạng embl. Các tệp như vậy chứa một hoặc nhiều bản ghi có tính năng cho từng trình tự mã hóa (hoặc yếu tố di truyền khác). Mỗi thuộc tính tính năng được gọi là một hạn định e. g. protein_id (xem bên dưới). Thật hữu ích khi có thể ghi các tính năng vào khung dữ liệu gấu trúc, chỉnh sửa tính năng này và sau đó viết lại các tính năng bằng cách sử dụng khung dữ liệu này sang tệp embl mới

print(record[0].annotations['accessions']) 1

Mã số

Mã này yêu cầu pandas và biopython để chạy. Trước tiên, chúng tôi tạo một hàm chuyển đổi thành khung dữ liệu trong đó các tính năng là các hàng và cột là các giá trị vòng loại

print(record[0].annotations['accessions']) 2

Sau đó, chúng ta có thể bọc cái này trong một hàm để dễ dàng đọc trong các tệp và trả về một khung dữ liệu

print(record[0].annotations['accessions']) 3

Giả sử chúng tôi chỉnh sửa bảng khung dữ liệu trong python (hoặc thậm chí trong bảng tính). Sau đó, chúng tôi muốn cập nhật các bản ghi tính năng và viết một tệp mới. Một cách thuận tiện để xử lý các tính năng là quét qua chúng và xây dựng ánh xạ (từ điển python) thẻ locus tới chỉ mục tính năng (từ mã của Peter Cock). Khóa được sử dụng phải là duy nhất để locus_tag là tốt nhất

print(record[0].annotations['accessions']) 4

Chỉ mục này sau đó được sử dụng để tìm tính năng thích hợp để cập nhật. Chúng ta cần sử dụng cùng một khóa như được sử dụng trong chỉ mục, trong trường hợp này là locus_tag

print(record[0].annotations['accessions']) 5

Cách sử dụng

Đây là cách chúng tôi sử dụng tất cả mã đó cùng nhau để tạo các tệp embl mới. Ở đây chúng tôi đã chỉnh sửa lĩnh vực sản phẩm. Các giá trị mới sẽ thay thế các giá trị cũ

Chủ đề