💻 Б7: Старт/стоп кодони во произволен CDS¶
Опис на барање
Одберете еден CDS и најдете ги сите старт и стоп кодони во неговата РНА.
За произволен CDS врз кој ќе експериментирам, се одлучив да одам со “pim
” генот, ;YP_pPCP05:
from Bio import SeqIO
gene_record = SeqIO.read("yersinia-pestis-fasta/NC_005816.gb", "genbank")
print(gene_record.features[21])
type: CDS
location: [4342:4780](+)
qualifiers:
Key: codon_start, Value: ['1']
Key: db_xref, Value: ['GI:45478716', 'GeneID:2767712']
Key: gene, Value: ['pim']
Key: locus_tag, Value: ['YP_pPCP05']
Key: note, Value: ['similar to many previously sequenced pesticin immunity protein entries of Yersinia pestis plasmid pPCP, e.g. gi| 16082683|,ref|NP_395230.1| (NC_003132) , gi|1200166|emb|CAA90861.1| (Z54145 ) , gi|1488655| emb|CAA63439.1| (X92856) , gi|2996219|gb|AAC62543.1| (AF053945) , and gi|5763814|emb|CAB531 67.1| (AL109969)']
Key: product, Value: ['pesticin immunity protein']
Key: protein_id, Value: ['NP_995571.1']
Key: transl_table, Value: ['11']
Key: translation, Value: ['MGGGMISKLFCLALIFLSSSGLAEKNTYTAKDILQNLELNTFGNSLSHGIYGKQTTFKQTEFTNIKSNTKKHIALINKDNSWMISLKILGIKRDEYTVCFEDFSLIRPPTYVAIHPLLIKKVKSGNFIVVKEIKKSIPGCTVYYH']
Локацијата ја зимам од главната секвенца и истотака табелата за преведување на RNA е со вредност 11! Ова е доста корисно за транслација.
Зимање на подстринг од главната секвенца:
sub_record = gene_record[4342:4780]
print(sub_record)
print(len(sub_record))
ID: NC_005816.1
Name: NC_005816
Description: Yersinia pestis biovar Microtus str. 91001 plasmid pPCP1, complete sequence
Number of features: 2
Seq('ATGGGAGGGGGAATGATCTCAAAGTTATTTTGCTTGGCTCTCATATTTTTATCA...TAA')
438
Добивање на RNA со транскрипција од подстрингот:
sub_rna = sub_record.seq.transcribe()
print(sub_rna)
AUGGGAGGGGGAAUGAUCUCAAAGUUAUUUUGCUUGGCUCUCAUAUUUUUAUCAUCAAGUGGCCUUGCAGAAAAAAACACAUAUACAGCAAAAGACAUCUUGCAAAACCUAGAAUUAAAUACCUUUGGCAAUUCAUUGUCUCAUGGCAUCUAUGGGAAACAGACAACCUUCAAGCAAACCGAGUUUACAAAUAUUAAAAGCAACACCAAAAAACACAUUGCACUUAUCAAUAAAGACAACUCAUGGAUGAUAUCAUUAAAAAUACUAGGAAUUAAGAGAGAUGAGUAUACUGUCUGUUUUGAAGAUUUCUCUCUAAUAAGACCGCCAACAUAUGUAGCCAUACAUCCUCUACUUAUAAAAAAAGUAAAAUCUGGAAACUUUAUAGUAGUGAAAGAAAUAAAGAAAUCUAUCCCUGGUUGCACUGUAUAUUAUCAUUAA
Табела за процесот на транслација:
from Bio.Data import CodonTable
mito_table = CodonTable.unambiguous_rna_by_id[11]
print(mito_table)
Table 11 Bacterial, Archaeal, Plant Plastid
| U | C | A | G |
--+---------+---------+---------+---------+--
U | UUU F | UCU S | UAU Y | UGU C | U
U | UUC F | UCC S | UAC Y | UGC C | C
U | UUA L | UCA S | UAA Stop| UGA Stop| A
U | UUG L(s)| UCG S | UAG Stop| UGG W | G
--+---------+---------+---------+---------+--
C | CUU L | CCU P | CAU H | CGU R | U
C | CUC L | CCC P | CAC H | CGC R | C
C | CUA L | CCA P | CAA Q | CGA R | A
C | CUG L(s)| CCG P | CAG Q | CGG R | G
--+---------+---------+---------+---------+--
A | AUU I(s)| ACU T | AAU N | AGU S | U
A | AUC I(s)| ACC T | AAC N | AGC S | C
A | AUA I(s)| ACA T | AAA K | AGA R | A
A | AUG M(s)| ACG T | AAG K | AGG R | G
--+---------+---------+---------+---------+--
G | GUU V | GCU A | GAU D | GGU G | U
G | GUC V | GCC A | GAC D | GGC G | C
G | GUA V | GCA A | GAA E | GGA G | A
G | GUG V(s)| GCG A | GAG E | GGG G | G
--+---------+---------+---------+---------+--
Соодветните старт/стоп кодони според табелата со број 11:
print(f"Старт кодони: {mito_table.start_codons}")
print(f"Стоп кодони: {mito_table.stop_codons}")
Старт кодони: ['UUG', 'CUG', 'AUU', 'AUC', 'AUA', 'AUG', 'GUG']
Стоп кодони: ['UAA', 'UAG', 'UGA']
# Листи за позиции на старт и стоп кодони
start_codon_positions = []
stop_codon_positions = []
# Листи за имињата на најдените кодони
start_found = []
stop_found = []
# Конверзија во стринг, за полесна работа
rna_string = str(sub_rna)
"""
Идеја на пребарување:
- Започни од 0 и движи се до целата секвенца -2
- Земи го моменталниот триплет
- Провери дали е во старт кодоните -> Ако е зачувај торка (позиција, триплет)
- Ако не, провери дали е во стоп кодоните -> Ако е зачувај торка (позиција, триплет)
- Зголеми го бројачот
"""
k = 0
while k < len(rna_string)-2:
# extract a three-nucleotide subsequence
current_codon = rna_string[k:k+3]
if current_codon in mito_table.start_codons:
start_found.append((k, current_codon))
elif current_codon in mito_table.stop_codons:
stop_found.append((k, current_codon))
k += 1
print(gene_record.features[21])
print(f"Вкупна должина на CBS: {len(sub_rna)}")
print(sub_rna)
print()
print(f'Вкупен број на старт кодони: {len(start_found)}')
print(f'Најден старт кодон со позиција: {start_found}')
print()
print(f'Вкупен број на стоп кодони: {len(stop_found)}')
print(f'Најден стоп кодон со позиција: {stop_found}')
type: CDS
location: [4342:4780](+)
qualifiers:
Key: codon_start, Value: ['1']
Key: db_xref, Value: ['GI:45478716', 'GeneID:2767712']
Key: gene, Value: ['pim']
Key: locus_tag, Value: ['YP_pPCP05']
Key: note, Value: ['similar to many previously sequenced pesticin immunity protein entries of Yersinia pestis plasmid pPCP, e.g. gi| 16082683|,ref|NP_395230.1| (NC_003132) , gi|1200166|emb|CAA90861.1| (Z54145 ) , gi|1488655| emb|CAA63439.1| (X92856) , gi|2996219|gb|AAC62543.1| (AF053945) , and gi|5763814|emb|CAB531 67.1| (AL109969)']
Key: product, Value: ['pesticin immunity protein']
Key: protein_id, Value: ['NP_995571.1']
Key: transl_table, Value: ['11']
Key: translation, Value: ['MGGGMISKLFCLALIFLSSSGLAEKNTYTAKDILQNLELNTFGNSLSHGIYGKQTTFKQTEFTNIKSNTKKHIALINKDNSWMISLKILGIKRDEYTVCFEDFSLIRPPTYVAIHPLLIKKVKSGNFIVVKEIKKSIPGCTVYYH']
Вкупна должина на CBS: 438
AUGGGAGGGGGAAUGAUCUCAAAGUUAUUUUGCUUGGCUCUCAUAUUUUUAUCAUCAAGUGGCCUUGCAGAAAAAAACACAUAUACAGCAAAAGACAUCUUGCAAAACCUAGAAUUAAAUACCUUUGGCAAUUCAUUGUCUCAUGGCAUCUAUGGGAAACAGACAACCUUCAAGCAAACCGAGUUUACAAAUAUUAAAAGCAACACCAAAAAACACAUUGCACUUAUCAAUAAAGACAACUCAUGGAUGAUAUCAUUAAAAAUACUAGGAAUUAAGAGAGAUGAGUAUACUGUCUGUUUUGAAGAUUUCUCUCUAAUAAGACCGCCAACAUAUGUAGCCAUACAUCCUCUACUUAUAAAAAAAGUAAAAUCUGGAAACUUUAUAGUAGUGAAAGAAAUAAAGAAAUCUAUCCCUGGUUGCACUGUAUAUUAUCAUUAA
Вкупен број на старт кодони: 64
Најден старт кодон со позиција: [(0, 'AUG'), (12, 'AUG'), (15, 'AUC'), (26, 'AUU'), (29, 'UUG'), (33, 'UUG'), (42, 'AUA'), (44, 'AUU'), (50, 'AUC'), (53, 'AUC'), (58, 'GUG'), (64, 'UUG'), (80, 'AUA'), (82, 'AUA'), (96, 'AUC'), (99, 'UUG'), (113, 'AUU'), (118, 'AUA'), (124, 'UUG'), (130, 'AUU'), (134, 'AUU'), (135, 'UUG'), (142, 'AUG'), (147, 'AUC'), (151, 'AUG'), (190, 'AUA'), (192, 'AUU'), (216, 'AUU'), (217, 'UUG'), (225, 'AUC'), (229, 'AUA'), (242, 'AUG'), (246, 'AUG'), (249, 'AUA'), (251, 'AUC'), (254, 'AUU'), (261, 'AUA'), (270, 'AUU'), (280, 'AUG'), (286, 'AUA'), (289, 'CUG'), (293, 'CUG'), (298, 'UUG'), (304, 'AUU'), (315, 'AUA'), (329, 'AUA'), (331, 'AUG'), (339, 'AUA'), (343, 'AUC'), (354, 'AUA'), (368, 'AUC'), (370, 'CUG'), (381, 'AUA'), (387, 'GUG'), (396, 'AUA'), (404, 'AUC'), (408, 'AUC'), (412, 'CUG'), (416, 'UUG'), (421, 'CUG'), (425, 'AUA'), (427, 'AUU'), (430, 'AUC'), (433, 'AUU')]
Вкупен број на стоп кодони: 21
Најден стоп кодон со позиција: [(13, 'UGA'), (109, 'UAG'), (115, 'UAA'), (194, 'UAA'), (230, 'UAA'), (247, 'UGA'), (256, 'UAA'), (265, 'UAG'), (272, 'UAA'), (281, 'UGA'), (299, 'UGA'), (313, 'UAA'), (316, 'UAA'), (334, 'UAG'), (355, 'UAA'), (364, 'UAA'), (382, 'UAG'), (385, 'UAG'), (388, 'UGA'), (397, 'UAA'), (435, 'UAA')]
Ова е конечниот резултат од пребарувањето и интересното што може да се забележи е дека некои од кодоните старт и стоп се поклопуваат и во следното барање при процесот на транслација можеме да видиме дека може произволно да зимаме комбинации од еден старт и стоп за да читаме триплети во процесот на транслација од РНА во протеинска секвенца.