Pemrosesan DNA dan Bioinformatika
Pemrosesan DNA dan Bioinformatika
Cusco–Peru
2021
Pengembangan
defcont_puri_piri(sec_adn):
jika_validasi_adn(sec_adn):
SEC_ADN
cantidad = {"Purinas":0,"Pirimidinas":0}
forcantinsec_adn
ifcantin['A','G']:
+=1
elifcantin['C','T']:
+=1
lainnya:
kembaliTidakAda
returnprint(sec_adn,cantidad)
lainnya: kembalikan cetak("Urutan DNA tidak valid")
cont_puri_piri("atagagagatatcg")
2."Tulis program yang membaca urutan DNA dan memverifikasi
ue jika sama dengan komplemen inversnya.
defeje2(sec_adn):
ifvalidar_adn(sec_adn):
sec
comp = komplemen_inverso(sec_adn)
forcinsec_adn.upper():
jika ifc == "G":
C
elifc == "C":
G
elifc == "A":
T
elifc=="T":
A
jika komparasi==sec:
eje2("atagataactcgcatag")
3."Tulis dan uji fungsi yang, diberikan urutan AD
N, kembalikan jumlah total pasangan "CG" yang terkandung.
defeje3(sec_adn):
ifvalidar_adn(sec_adn):
seqC = sec_adn.upper()
cg_count =0
forsinseqC
CG
cg_count +=0.5
returnprint("Jumlah total pasangan adalah: ",
cg_count)
eje3("acgt")
4."Tulis dan uji fungsi Python yang, mengingat sebuah urutan
ncia de ADN, kembalikan ukuran protein pertama yang dapat
dikalikan oleh urutan itu dalam salah satu dari yang tiga
marcos bacaan). Fungsi seharusnya mengembalikan - jika tidak ada
Tidak ada protein yang ditemukan.
defproteina(secu_p):
secu_p
frekuensi(sec_aa)
list_f = sorted (frec_aa.items(), key=lambdax: x[1], reverse =T
rue)
untuk (k, v) di list_f:
:
defeje4(sec_adn):
a=sec_adn
ifvalidar_adn(a):
dic = {}
seqC = [Link]()
p = protein(seqC)
errors =0
forbinseqC
jika bin"CG":
jika dic[b] +=1
lainnya: dic[b] = 1
lainnya: kesalahan +=1
kamus kembali
lainnya: kembalikan cetak("-1")
eje4("ATGTACTCATCGTTTCGGAAGAGACAGGTACGTTAATAGTTAATAGCGTACTTCTTTTAAA
ACCTTCTTTTTACGTTTACTCTCGTGTTAAAAATCTGAATTCTTCTAGAGTTCCTGATCTTCTGGTC
TAA")
5."Tulis dan uji sebuah fungsi yang, mengingat sebuah
urutan asam amino, kembalikan nilai logis
yang menunjukkan apakah urutan tersebut dapat menjadi suatu protein atau
tidak
defvalidarAdn(seq_adn):
#mengubah string ke huruf kapital dan menyimpannya dalam variabel
seqm
seqm = seq_adn.upper()
#validacion adalah variabel bertipe int yang mengakumulasi jumlah dari
s nukleotida
validasi = [Link]("A") + [Link]("C") + [Link]("G")
+ [Link]("T")
jumlah validasi dibandingkan dengan ukuran string ini
cial
jika validasi == panjang(seqm):
kembalikanBenar
lainnya:
kembaliSalah
deftranslate_codon(cod):
A
C
D
E
F
G
H
Saya
K
L
M
P
Q
R
S
T
V
W
Y
TAA
ifcodintc:
kembali tc[cod]
lainnya:
kembalikanTidakAda
deftranslate_seq(dna_seq,ini_pos=0):
assertvalidarAdn(dna_seq),"Urutan DNA tidak valid"
seqm = dna_seq.upper()
seq_aa
forposinrange(ini_pos,len(seqm)-2,3):
cod = seqm[pos:pos+3]
seq_aa += terjemahkan_kodon(cod)
returnseq_aa
defprimera_protina(seqAA):
validasiADN(seqAA)
adn = translate_seq(seqAA,0)
inProt =False
endProt =False
prot
pos =0
selama tidak ada akhir Prot dan pos <len(adn):
ifinProt
ifadn[pos] == "_": endProt = True
lainnya: prot += adn[pos]
lainnya:
ifadn[pos]=="M":
Benar
M
pos +=1
ifendProt =="_":
kembali0
lainnya:
kembali-1
Urutan asam amino:
primera_protina("")
iflprot==0: print("Jika ini protein ")
sebaliknya: cetak("Bukan protein")
6."Tulis dan uji fungsi Python yang, diberikan sebuah urutan
ncia DNA, buat peta (kamus) dengan frekuensi d
dan asam amino yang dikodekan (mengasumsikan bahwa terjemahan
se mulai di posisi pertama dari urutan DNA). Los
kodon penghenti harus diabaikan.
defcrea_mapa(sec_adn):
ifvalidar_adn(sec_adn):
frec_trad = {}
pos_i=0
foriintraductor_sec(sec_adn,pos_i):
ifi=='_':
lanjutkan
ifiinfrec_trad
frec_trad[i] +=1
lainnya:
frec_trad[i] =1
returnfrec_trad
lain:embalikan cetak("Sekuen dna tidak valid")
ATGTACTCATCGTTTCGGAAGAGACAGGTACGTTAATAGTTAA
TAGCGTACTTCTTTTAAAACCTTCTTTTTACGTTTACTCTCGTGTTAAAAATCTGA
ATTCTTCTAGAGTTCCTGATCTTCTGGTCTAA
buat_peta(sekuens)
7."Tulis program yang membaca urutan asam amino dan
sebuah urutan DNA dan mencetak daftar semua subsekuensi
ncias dari urutan
ADN yang mengkodekan urutan protein yang diberikan.
defsubseqs(seqDNA,seqAA):
A
C
D
E
F
G
H
Aku
K
L
L
M
P
Q
R
R
S
S
T
V
W
Y
TAA
}
subseqs = []
lastpos = len(seqDNA) - len(seqAA) * 3 + 1
foriinrange(lastpos):# posisi awal
prot
forkinrange(i, i +len(seqAA)*3,3):
codao = seqDNA[k : k+3]
aa = d[codao]
prot += aa
jika prot == seqAA:
[Link](i)
kembali subsekuens
utama
MASUKKAN SEBUAH SEKUENS AMINOASID:
masukkan("MASUKKAN SEBUAH SEKUENS DNA:")
subs = subsekuens(seqDNA, seqAA)
ifsubs
Subsekuens yang mengkodekan urutan asam amino
dianae
forsinsubs
print(seqDNA[s:s+len(seqAA*3)])
lainnya:
Tidak ada subsekuens yang mengkode urutan asam amino
s diana
8."Tulis sebuah fungsi yang, dengan urutan sebagai argumen
mengizinkan mendeteksi apakah ada subsekuensi berulang dengan ukuran k
Argumen kedua dari fungsi) Hasilnya harus berupa di
kamus di mana kuncinya adalah subsekuensi dan nilainya adalah
pada jumlah kali yang terjadi (setidaknya 2) Gunakan fungsi
n dalam sebuah program yang membaca
sekuensi dan k cetak hasilnya.
9. "Tulis dan uji fungsi yang, mengingat sebuah urutan AD
N, kembalikan jumlah total pasangan "CG" yang ada.
defeje9(sec_adn):
ifvalidar_adn(sec_adn):
seqC = sec_adn.upper()
cg_count =0
forsinseqC:
CG
cg_count +=0.5
returnprint("Jumlah total pasangan adalah: ",
cg_count)
eje9("acgt")
Proyek 1
Mengambil sebagai dasar kelas MySeq yang dikembangkan di kelas, implementasikan subkelas untuk yang tiga
tipos distintos de secuencias biológicas: ADN, ARN y proteínas. En cada uno defina un
konstruktor yang tepat. Definisikan ulang metode kelas induk, dalam kasus dimana Anda merasa bahwa
ini diperlukan atau berguna. Sesuaikan jenis keluaran di setiap metode sesuai kebutuhan.
classMySeq:
Kelas untuk urutan biologis.
def__init__(self,seq,seq_type="DNA"):
[Link] = [Link]
self.seq_type
def__len__(self):
returnlen ([Link])
def__getitem__(self,n):
[Link][n]
def__getslice__(self,i,j):
[Link][i:j]
def__str__(self):
kembalikan [Link]
defget_seq_biotype(self):
returnself.seq_type
defshow_info_seq(self):
cetak ("Urutan: "+[Link] +" biotipe: "+self.seq_type)
defalphabet(self):
jika(self.seq_type=="DNA"):
kembali "ACGT"
elif(self.seq_type=="RNA"):
kembali"ACGU"
elif(self.seq_type=="PROTEIN"):
KEMBALI"ACDEFGHIKLMNPQRSTVWY"
lainnya: kembalikanTidakAda
defvalidasi(self):
alp =[Link]()
res =True
i=0
sementara i <len([Link])dan res:
jika [Link][i] tidak ada dalam alp: res = Salah
lainnya: i +=1
kembalikan
deftranskripsi(self):
jika(self.seq_type == "DNA"):
returnMySeq([Link]("T","U"),"RNA")
lainnya:
kembalikanTidakAda
defreverse_comp(self):
jika(self.seq_type !="DNA"):returnNone
comp
[Link]:
jika(c == "A"): comp = "T" + comp
elif(c =="T"): comp ="A" + comp
elif(c =="G"): comp ="C" + comp
elif(c=="C"): comp ="G"+ comp
returnMySeq(comp,"DNA")
deftranslate(self,iniPos=0):
jika(self.seq_type !="DNA"):kembaliNone
seq_aa
untukposindrange (iniPos,len([Link])-2,3):
cod =[Link][pos:pos+3]
seq_aa += terjemahkan_kodon(cod)
kembalikanMySeq(seq_aa,"PROTEIN")
kelasADN(MySeq):
lewat
classARN(MySeq):
lewat
kelasProteina(MySeq):
lewat
ADN("ATGTGATAAGAATAGAATGCTGAATAAATAGAATGACAT")
cetak(transkripsi(adn1))
Proyek 2
Paket random mencakup serangkaian fungsi yang memungkinkan untuk menghasilkan angka acak.
Menggunakan beberapa fungsi tersebut, bangun modul yang menerapkan generasi
urutan DNA acak dan analisis mutasi pada urutan ini. Dapat mencakup
fungsi untuk menghasilkan urutan acak dengan ukuran tertentu, untuk mensimulasikan
kemunculan sejumlah mutasi tertentu dalam urutan DNA di posisi
acak (termasuk penyisipan, penghapusan, dan penggantian) dan fungsi untuk mempelajari dampak
mutasi pada protein yang dikodekan oleh urutan tersebut.
importrandom
defgenADN():
DNA=['A','C','G','T']
tamaADN=len(DNA)
cetak(tamaADN)
fornuminrange(2):
ADN=[Link](DNA,k=10)
cetak("Primer ADN: ", ADN)
Apakah Anda ingin memasukkan mutasi?:
1
masukkan jumlah mutasi:
untuk dalam rentang(mutasi):
Masukkan nukleotida:
[Link](nukleotida)
print("ADN baru adalah:", ADN)
elifmutati=="0":
Apakah Anda ingin menghapus suatu senyawa?:
ifboolremo=="1":
masukkan jumlah yang akan dihapus:
untuk dalam rentang(remover):
Masukkan nukleotida:
[Link](nucleoremove)
cetak("ADN baru adalah:", ADN)
elifboolremo=="0":
Apakah Anda ingin mengganti suatu senyawa?
ifreplacesADN=="1":
masukkan jumlah yang akan dihapus:
"))
untuk dalam rentang (reemplace):
masukkan senyawa pengganti:
")
masukkan nukleotida:
forn,iinenumerate(ADN):
ifi==valorre:
nukleoreplace
lainnya:
Cetak("Nilai tidak ditemukan")
print("ADN baru adalah:", ADN)
elifreplacesADN=="0":