아주대 의료인공지능 융합인재양성 사업단 - 인실리코젠 산학협동 프로그램
의료인공지능 부트캠프
- 일시: 10-07(금), 10-14(금) 18:00~21:00
- 목표: 파이썬 기본 활용법을 익히고 인공지능 분석사례를 확인하며, 이를 실습함으로써 실무활용 역량을 키운다.
- 실습환경
- Google Colab: https://colab.research.google.com
- (예비용) 실습서버: https://g1-py.sysmed.kr (bootcamp / bc0714!!)
Table of Contents
1일차 첫째시간 #
파이썬 개요 #
참고자료
- 프로그래밍 언어 순위: https://www.tiobe.com/tiobe-index/
- 파이썬의 선 (The Zen of Python): https://wikidocs.net/7907
- 파이썬 코딩스타일 PEP 8: https://peps.python.org/pep-0008/
소프트웨어 개발방법론과 TDD #
TDD 시작 코드
#!python
import unittest
class MyTest(unittest.TestCase):
def test1(self):
pass
if __name__ == '__main__':
unittest.main(argv=['first-arg-is-ignored'], exit=False)
파이썬 OOP #
Person 클래스 예제 코드
#!python
class Person:
count = 0
def __init__(self, name, gender):
self.name = name
self.gender = gender
Person.count += 1
def set_age(self, age):
self.age = age
@staticmethod
def get_number_of_persons():
return Person.count
yong = Person('yong', 'male')
print(yong.name)
yong.set_age(27)
Person.get_number_of_persons()
class Student(Person):
def sing_a_song(self):
print("숨 참고 Love dive~")
hyuna = Student('hyuna', 'female')
hyuna.set_age(11)
hyuna.sing_a_song()
class Childern(Person):
def sing_a_song(self):
print("송아지 송아지~")
minji = Childern('minji', 'female')
minji.set_age(6)
minji.sing_a_song()
택시 클래스 예시코드 1
#!python
class Taxi:
'''This class describes how a taxi may look like'''
def __init__(self, driver_name, on_duty, cities, type_='general'):
self.driver_name = driver_name
self.on_duty = on_duty
self.cities = cities
self.num_passengers = 0
self.type_ = type_ # (general, mobum, electric)
def set_driver_name(self, driver_name):
self.driver_name = driver_name
def get_the_fee(self, distance):
if self.type_ == 'general':
unit_price = 500
elif self.type_ == 'mobum':
unit_price = 700
elif self.type_ == 'electric':
unit_price = 400
return distance * 500 # km 당 500원
taxi_a = Taxi('Yong', True, ['Seoul', 'Anyang'])
taxi_b = Taxi('Gunhee', True, ['Anyang'], type_='mobum')
taxi_c = Taxi('Choi', True, ['Suwon'], type_='electric')
taxi_a.get_the_fee(20)
taxi_b.get_the_fee(20)
taxi_c.get_the_fee(20)
택시 클래스 예시코드 2
#!python
class Taxi:
'''This class describes how a taxi may look like'''
def __init__(self, driver_name, on_duty, cities):
self.driver_name = driver_name
self.on_duty = on_duty
self.cities = cities
self.num_passengers = 0
def set_driver_name(self, driver_name):
self.driver_name = driver_name
def get_the_fee(self, distance):
return distance * 500
class MobumTaxi(Taxi):
def get_the_fee(self, distance):
return distance * 700
class ElectricTaxi(Taxi):
def get_the_fee(self, distance):
return distance * 400
taxi_a = Taxi('Yong', True, ['Seoul', 'Anyang'])
taxi_b = MobumTaxi('Gunhee', True, ['Anyang'])
taxi_c = ElectricTaxi('Choi', True, ['Suwon'])
taxi_a.get_the_fee(20)
taxi_b.get_the_fee(20)
taxi_c.get_the_fee(20)
TDD로 OOP하기 실습 #
Google Colab 시작하기 참고 영상: https://youtu.be/inN8seMm7UI
DNA reverse complement 강의시간 시연 코드
#!python
class Nucleotide:
def __init__(self, title, sequence):
self.title = title
self.sequence = sequence
def get_reverse_complement(self):
result = []
for base in self.sequence:
result.append(self.base_pairs[base])
return ''.join(reversed(result))
class DNA(Nucleotide):
base_pairs = {
'A': 'T',
'T': 'A',
'G': 'C',
'C': 'G',
}
class RNA(Nucleotide):
base_pairs = {
'A': 'U',
'U': 'A',
'G': 'C',
'C': 'G',
}
DNA reverse complement 전체 코드
#!python
class Nucleotide:
def __init__(self, title, sequence):
self.title = title
self.sequence = sequence
def get_reverse_complement(self):
return ''.join(self.base_pairs[base] for base in self.sequence[::-1])
def to_fasta(self, cols=60):
lines = [f'>{self.title}']
seq = self.sequence
while seq:
lines.append(seq[:cols])
seq = seq[cols:]
return '\n'.join(lines)
@classmethod
def from_fasta(klass, astr):
lines = astr.splitlines()
title = lines[0][1:]
sequence = ''.join(lines[1:])
return klass(title, sequence)
class DNA(Nucleotide):
base_pairs = {
'A': 'T',
'T': 'A',
'G': 'C',
'C': 'G',
}
class RNA(Nucleotide):
base_pairs = {
'A': 'U',
'U': 'A',
'G': 'C',
'C': 'G',
}
import io
import unittest
class DNATest(unittest.TestCase):
def test_dna_object(self):
dna = DNA('test1', 'AGTCAA')
self.assertEqual('test1', dna.title)
self.assertEqual('AGTCAA', dna.sequence)
dna2 = DNA('test2', 'AAGGG')
self.assertEqual('test2', dna2.title)
self.assertEqual('AAGGG', dna2.sequence)
def test_reverse_complement(self):
dna = DNA('test1', 'AGTCAA')
self.assertEqual('TTGACT', dna.get_reverse_complement())
def test_fasta(self):
input = """\
>test1
AGTCAA
AGTCAA"""
dna = DNA.from_fasta(input)
self.assertEqual('test1', dna.title)
self.assertEqual('AGTCAAAGTCAA', dna.sequence)
def test_write_fasta(self):
dna = DNA('test1', 'AGTCAA')
expected = '''\
>test1
AGTC
AA'''
self.assertEqual(expected, dna.to_fasta(cols=4))
class RNATest(unittest.TestCase):
def test1(self):
rna = RNA('test1', 'AGUUAA')
self.assertEqual('test1', rna.title)
self.assertEqual('AGUUAA', rna.sequence)
def test_reverse_complement(self):
rna = RNA('test1', 'AGUUAA')
self.assertEqual('UUAACU', rna.get_reverse_complement())
if __name__ == '__main__':
unittest.main(argv=['first-arg-is-ignored'], exit=False)
1일차 둘째시간 #
- 강사: 박주희 jheepark@insilicogen.com
EDA, pandas, matplotlib 이론 #
EDA 실습 #
- 실습 파일 : https://imghub.insilicogen.com/media/files/EDA_heartdisease.ipynb
- 실습 데이터 셋 : https://imghub.insilicogen.com/media/files/heart.csv
2일차 첫째시간 #
- 강사: 권영인 yikwon@insilicogen.com
-
실습 데이터 셋 : https://imghub.insilicogen.com/media/files/heartdisease.csv
- 실습 자료 :2022_아주대학교_AI교육_ML_heartdisease_실습.ipynb
- 실습 강의 자료 :2022_아주대학교_AI교육_ML_heartdisease.ipynb
2일차 둘째시간 #
- 강사: 이주연 jylee@insilicogen.com
- 강의자료: 의료인공지능부트캠프-04-딥러닝.v1.0.pdf
의료 데이터 기반 딥러닝 실습 #
- 실습 환경: google colaboratory
- 실습 자료:
참고
- 실습 환경 설정(코랩):
- [파일] → [노트 업로드] → 아래 “주피터 노트북 실습 자료”를 선택하여 업로드
- [런타임] → [런타임 유형 변경] → 하드웨어 가속기: GPU 로 설정하여 저장
- 코랩에서 실습 데이터 사용하는 방법