어제에 이어서 오늘도 열심히 머리를 뜯으면서 숙제를 해 보려고 하는 1인.. 암튼,, Reminisce횽님 1번을 보다가 계속 생각해봤는데요... 예제를 보면.. count base('TACgtACGaCGT', 'a') T -- this means the other half is A, so +1 A -- +1 C -- not counting g -- not counting t -- this means the other half is A, so +1 A -- +1 C -- not counting G -- not counting a -- +1 C -- not counting G -- not counting T -- the other half is A, so +1
횽님이 적어주신거는 일단 그 베이스 하나만 찾아서 그 숫자만큼 더블 하는거 잖아요.. def count_base(dna_sequence, base): dna = dna_sequence.upper() base1 = base.upper() count = 0 for ch in dna: if base1 == ch : count = count + 1 return count*2 요렇게... 이거는 전체 다 해야 할거 같은데 sequence 자체가 홀수도 될 수 있으니 2배를 하는건 아닌거 같아요.. 일단 카운트를 안해야 하는 부분에서 막혀요..ㅠㅠ 아무리 해봐도 안되네요..ㅠㅠ
그리고 3번을 푸는데 대충 감은 오는데 코딩을 어떻게 해야하는지 미어터지네요.. 일단 3번 자체가 DNA의 녹는점을 구하는 거잖아요..
그래서 2가지의 공식을 쓰는거고, classical 공식은,,, DNA sequence 중에 A 와 T 페어가 있으면 각각 그 수만큼 3% 증가하는거고 DNA sequence 중에 C 와 G 페어가 있으면 각각 그 수만큼 5% 증가하는거잖아요 그래서.. 일단은 1번에서 구한 함수를 call 해서 찾아서 공식을 써봤구요,
modern formula 는 위에 classical formula 에서 구한 온도를 시작으로 하잖아요, 그래서 melting temperature of classical formula * AT_adjacent 로 해봤어요..
여기까지가 제가 한거에욤. 봐주세용
def melting_temperature(dna_sequence, formula): if formula == 'c': if base == 'A': AT_pair = count_base(dna_sequence, base) elif base == 'C': CG_pair = count_base(dna_sequence, base) melting_temperature = 25 * (1.03 ** AT_pair) * (1.04 ** CG_pair) + 273.15 elif formula == 'm': AT_adjacent = count_base(dna_sequence, base) #base = 'AT' or 'TA' melting_temperature == melting_temperature(dna_sequence, formula) * 1.01* AT_adjacent return melting_temperature