Skip to content

ISG-Edu22-10 #

Find similar titles

19회 업데이트 됨.

Edit
  • 최초 작성자
    Hyungyong Kim
  • 최근 업데이트

아주대 의료인공지능 융합인재양성 사업단 - 인실리코젠 산학협동 프로그램

의료인공지능 부트캠프

  • 일시: 10-07(금), 10-14(금) 18:00~21:00
  • 목표: 파이썬 기본 활용법을 익히고 인공지능 분석사례를 확인하며, 이를 실습함으로써 실무활용 역량을 키운다.
  • 실습환경

1일차 첫째시간 #

파이썬 개요 #

참고자료

소프트웨어 개발방법론과 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일차 둘째시간 #

EDA, pandas, matplotlib 이론 #

EDA 실습 #

2일차 첫째시간 #

2일차 둘째시간 #

의료 데이터 기반 딥러닝 실습 #

참고

  • 실습 환경 설정(코랩):
    1. [파일] → [노트 업로드] → 아래 “주피터 노트북 실습 자료”를 선택하여 업로드
    2. [런타임] → [런타임 유형 변경] → 하드웨어 가속기: GPU 로 설정하여 저장
  • 코랩에서 실습 데이터 사용하는 방법
    1. 데이터를 구글 드라이브에 업로드 (셋 중 하나만 사용하면 됨)
      1. 데이터 링크 → chest_xray 클릭 → [드라이브에 바로가기 추가] → 내 드라이브 선택 → 바로가기 추가
      2. 데이터 링크 → chest_xray 클릭 → 다운로드 클릭 → 다운로드 완료되면 압축 해제 → 새로 만들기 → 폴더 업로드 → 압축해제한 chest_xray 폴더 업로드 (시간 오래 걸림)
    2. 구글 드라이브와 colab 연동(코랩)
      1. 왼쪽 사이드바에서 폴더 아이콘 선택 → 세 번째 아이콘 클릭(구글 드라이브 연동) → 마운트 코드 실행
0.0.1_20230725_7_v68