feherje200605_obj.py
1    class aminosav:
2        def __init__(self,lst):
3            self.az=lst[0]
4            self.b =lst[1]
5            self.C =lst[2]
6            self.H =lst[3]
7            self.O =lst[4]
8            self.N =lst[5]
9            self.S =lst[6]
10   
11       def atomtomeg(self):
12           return  self.C*12 + self.H*1 + self.O*16 + self.N*14 + self.S*32
13   
14       def szotar(self):
15           return {'C':self.C,'H':self.H,'O':self.O,'N':self.N,'S':self.S}
16   
17   matrix=[]
18   
19   def kiir(ssz,sz):
20       print('********************************************************************')
21       print(f'* {ssz}. feladat - {sz}')
22       print('********************************************************************')
23       
24   def F1():
25       kiir(1, 'Adatok beolvasása...')
26       fbe=open('aminosav.txt','r')
27   
28       i=1
29       tmp=[]
30       for sor in fbe:         # 1 2 3 4 5 6 7
31           if i<7:
32               tmp.append(sor.strip())
33               i+=1
34           else:
35               tmp.append(sor.strip())     # 7. elem itt kerül bele
36               tmp[2:]=map(int,tmp[2:])
37               matrix.append(aminosav(tmp))
38               tmp.clear()
39               i=1
40           
41       print(len(matrix))
42   
43   def F2():
44       for amin in matrix:
45           print(f'{amin.az} {amin.atomtomeg()}')
46   
47   def F3():
48       kiir(3,'Atomtömegek rendezetten')
49       m_sorted=sorted(matrix, key=lambda x:x.atomtomeg())
50       for amin in m_sorted:
51           print(f'{amin.az} {amin.atomtomeg()}')
52   
53   def F4():
54       kiir(4,'BSA összegképlete...')
55       global bsa
56       bsa=[sor.strip() for sor in open('bsa.txt','r')]
57       atom={'C':0,'H':0,'O':0,'N':0,'S':0}
58       for elem in bsa:
59           for amin in matrix:
60               if elem==amin.b:
61                   for k, v in amin.szotar().items():
62                       atom[k]+=v
63   
64       kapcsolodas=len(bsa)-1
65       atom['H']-=2*kapcsolodas
66       atom['O']-=kapcsolodas
67       for k,v in atom.items():
68           print(f'{k} {v}',end=' ')
69       print()
70       
71   def F5():
72       kiir(5,'Hasítás során keletkező leghosszabb lánc...')
73       # a Tirozin (Y), Fenilalanin (W) és a Triptofán (F) után hasít
74       hasit={'Y','W','F'}
75       maxh=[0]*3
76       kezdete=1
77       for i, elem in enumerate(bsa,start=1):
78           if elem in hasit:
79               vege=i
80               hossz=vege-kezdete+1
81               if hossz>maxh[0]:
82                   maxh[0]=hossz
83                   maxh[1]=kezdete
84                   maxh[2]=vege
85               kezdete=vege+1
86       print(f'Leghosszabb lánc: {maxh[0]}')
87       print(f'.........kezdete: {maxh[1]}')
88       print(f'............vége: {maxh[2]}')
89               
90   def F6():
91       kiir(6,'Másik hasítás során keletkező első lánc vizsgálata...')
92       # Arginin (R) után hasít, de csak akkor, ha Alinin (A) vagy Valin (V) követi
93       hasit={'RA','RV'}
94       for i in range(len(bsa)-1):
95           if bsa[i]+bsa[i+1] in hasit:
96               elso=bsa[:i+1]
97               C=elso.count('C')
98               break
99       print(f'A hasítás során keletkező első fehérjelánc részletben:\n{C} Cisztein (C) található.')
100       
101  F1()
102  # F2()
103  F3()
104  F4()
105  F5()
106  F6()
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  
126  
127  
128  
129  
130  
131  
132