Python Class and function

day 1 Lecture (01)




1. 새로운 Project 시작

  • python project를 새로 시작 해 보자.

create_NewProject


create_NewProject_file

pycham을 실행하여 project file을 만들어도 되지만, 원하는 directory에 file 을 만들고, 그 file에서 pycharm을 실행 해도 된다.

2. main.py :

stop point

main.py

1
2
3
4
5
6
7
8
9
10
11
12
13
# This is a sample Python script.
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
# 인공지능 / 머신러닝 --> 리서치 관점 (논문리뷰, 정리, End User) / Engineer 관점


def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.

# f string
# Press the green button in the gutter to run the script.

def name(name): 함수 정의 하기

1
2
3
4
5
6
7
def print_hi(name):
print(f'Hi, {name}')

if __name__ == '__main__':
print_hi('PyCharm')

print("hi", name)
  • Ctrl + shift + F10 : Run
  • def 로 함수 정의 이름(print_hi), 인수(name)을 설정 :

    • 원하는 동작(print(f’Hi, {name})) 넣기
  • 함수 실행 : 왜 이렇게 해야 하는가를 공부 해 오자.

    • if name == ‘main‘:
      print_hi(‘PyCharm’)
  • print(“hi”, print_hi(‘YH’))

Hi, PyCharm

Hi, YH

hi None

3. Import.

1
2
3
4
5
6
numpy == 1.21.4
pandas ==1.3.4
seaborn==0.11.2
matplotlib==3.5.0
scipy ==1.7.3
scikit-learn == 1.0.1

가상환경 설정을 하는 이유

Python PKG : 20~30 만개 있다.

  • 라이브러리 : 종속성이 있다.
  • 범용성이 좋아서 data analysis, web site development, 앱, 게임 등 개발, GUI, 개발 그 외 여러가지 가능
  • Matplotlib (기초가 되는 라이브러리, 3.5.0)를 참조하여 seaborn, plotly, …
  • 버전 관리 불가.
  • data 분석을 위한 가상 환경
    같은 Local machine 위에
    Game 개발을 위한 가상 환경 조성 (다른 버전을 사용 할 수 있다. )

PKG 설정:

https://pypi.org 에 들어가서 PKG 버전을보고 설치 하면 된다.

4. venu : 가상 환경 설정

venv_En

1
2
3
4
5
6
7
8
9
10
11

#terminal

$ source ./venv/Scripts/activate
(venv)

#terminal
$ which python
/c/Users/brill/Desktop/PyThon_Function/venv/Scripts/python
(venv)

가상환경 설정

  • $ which python
    /c/ProgramData/Anaconda3/python

  • $ source ./venv/Scripts/activate

    (venv)

  • $ which python

/c/Users/brill/Desktop/PyThon_Function/venv/Scripts/python

(venv)

(venv)

가 있어야 가상환경 설정이 된것이다.

raise_ValueError

terminal에서 pandas import 하는 방법

1
2
brill@DESKTOP-1IO6A45 MINGW64 ~/Desktop/PyThon_Function (master)
$ pip install pandas

Requirement already satisfied: pandas in c:\users\brill\desktop\python_function\venv\lib\site-packages (1
.3.4)
Requirement already satisfied: pytz>=2017.3 in c:\users\brill\desktop\python_function\venv\lib\site-packa
ges (from pandas) (2021.3)
Requirement already satisfied: numpy>=1.17.3 in c:\users\brill\desktop\python_function\venv\lib\site-pack
ages (from pandas) (1.21.4)
Requirement already satisfied: python-dateutil>=2.7.3 in c:\users\brill\desktop\python_function\venv\lib
site-packages (from pandas) (2.8.2)
Requirement already satisfied: six>=1.5 in c:\users\brill\desktop\python_function\venv\lib\site-packages
(from python-dateutil>=2.7.3->pandas) (1.16.0)
WARNING: You are using pip version 21.1.2; however, version 21.3.1 is available.
You should consider upgrading via the ‘C:\Users\brill\Desktop\PyThon_Function\venv\Scripts\python.exe -m pip install –upgrade pip’ c
ommand.
(venv)

pandas 등을 하나씩 install 하는 방법도 있지만, file(requirements)
를 만들어 install 하는 방법도 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# /c/Users/brill/Desktop/PyThon_Function/venv/Scripts/python
# -*- coding : utf-8 -*-

"""
모방 : 부모 클래스를 모방 후 자식이 창조
"""

import pandas as pd

class newDataFrame(pd.dataFrame):
pass

temp_dic = {"A": [1, 2, 3],
"B":[4, 5, 6]}

if __name__ == "__main__":
temp = pd.DataFrame(temp_dic, columns=["A","B"])
print(temp)
print("-----------------")
temp2 = newDataFrame(temp_dic, columns=["B", "A"])
print(temp2)

Pandas_Series

#Pandas에서 series 자료구조

series는 1차원 배열같은 자료 구조를 말한다.

아래 code는 python pandas의 parameter 값이다.

1
2
3

def __init__(data=None, index=None, dtype=None, name=None,
copy=False, fastpath=False)

series의 parameter는 data, index, dtype, name, copy, fastpath로 나뉘어져 있는데
name의 경우는 이름 인 것 같고 기본적으로 Index와 value라는 parameter를 많이 이용 하는 듯 하다.

  • Index : 배열의 이름
  • value : 값

python의 dictionalry와 거의 유사 한 것 같다.

(다음에 찾아보자 오늘은 벅참.)

series의 dtype에는 str, numpy.dtype, or ExtensionDtype, optional Data type 을
담을 수 있는데 이는 자동으로 값이 입력 되는 것같다.

series 객체를 생성 할 때 value와 Index를 직접 지정 해 줄 수 있다.

1
2
3
4
import pandas as pd
sr = pd.Series([24000, 20000, 1000, 5000],
index=["피자", "치킨", "콜라", "생맥"])
print(sr)

구글 코랩에서 작업 하고 있는데,
아래에 보면 series 객체의 parameter에대한 팝업이 나와 공부 하기 참 편하게 해 준다.

def init(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
One-dimensional ndarray with axis labels (including time series).

Labels need not be unique but must be a hashable type. The object supports both integer- and label-based indexing and provides a host of methods for performing operations involving the index. Statistical methods from ndarray have been overridden to automatically exclude missing data
(currently represented as NaN).
Operations between Series (+, -, /, *, **) align values based on their associated index values– they need not be the same length. The result index will be the sorted union of the two indexes.



Parameters

data : array-like, Iterable, dict, or scalar value

Contains data stored in Series.


index : array-like or Index (1d)

Values must be hashable and have the same length as data.

Non-unique index values are allowed. Will default to RangeIndex (0, 1, 2, …, n)
if not provided. If both a dict and index sequence are used, the index will
override the keys found in the dict.


dtype : str, numpy.dtype, or ExtensionDtype, optional

Data type for the output Series.

If not specified, this will be inferred from data.

See the user guide <basics.dtypes> for more usages.


name : str, optional


The name to give to the Series.


copy : bool, default False

Copy input data.

type

  • list []
  • tuple ()
  • set {}
  • dict {Key:value}

series

pandas

Pandas_panel

#pandas에서 panel 자료구조.

Pandas_DataFrame

#pandas에서 dataFrame 자료구조.

dataFrame은 표와 같은 스프레드 시트 형식의 자료 구조이다.

2차원 배열 또는 리스트, data table 전체를 포함하는 object라고 볼수 있음.

여러개의 column이 있고, 각 컬럼은 숫자, 문자열, boolean type을 담을 수 있다.

dataFrame은 Rew, column에대한 Index 이렇게 2가지 변수를 담고 있는데 matrix라고 할 수 있다.



pd.dataframe()

1
2
3
4
5
6
7
import pandas as pd
values = [['rose', 'tulip', 'Liry'], [4, 5, 6], ['red', 'blue', 'green']]
index = ['flower', 'Number', 'color']
columns = [1, 2, 3]

df = pd.DataFrame(values, index=index, columns=columns)
print(df)

df 는 data frame의 준말.

       1     2     3
flower rose  tulip Liry
Number 4     5     6
color  red   blue  green

Index와 column 의 dtype은 object이다.

데이터프레임은 리스트(List), 시리즈(Series), 딕셔너리(dict), Numpy의 ndarrays,
또 다른 데이터프레임으로 생성할 수 있습니다.

Ref.

DataFrame

python_Tuple

Open In Colab

Tuple

Tuple은 List에비해 메모리 사용 효율이 좋지만, 정보 수정이 어렵다.

splicing 기능, +, * 의 연산은 가능하다.

1

Dictionary

1

If 조건문

1

for 반복문

1

python_List

google Colaboratory 를 이용한 실습

Open In Colab

Intro_ print와 주석처리

  • print Out
1
print("Hello, World !!")
Hello, World !!

이제 우리는 모든 것을 나타 낼 수 있습니다.

  • 주석처리
1
2
3
4
5
6
7
# 한 줄로 주석 처리 하는 방법 
"""
여러줄은 이렇게
print("Hello, World??")
"""

print("Hello, World!!") #주석 처리한 부분은 안나오지
Hello, World!!

변수의 종류

  • int : 정수
  • float : 실수
  • bool : 참/거짓
  • none : null
  • String : 문자

이전에 배웠던 JAVA와는 다르게 변수형을 지정 해 주지 않아도 된다

Type 함수는 그 변수의 type이 어떤 것인지 알려준다.

1
2
3
4
5
6
7
8
9
10
11
12
N_int = 1
print (type(N_int))
#Type 함수 : type 을 print 해 준다

N1_float = 2.0
print (type(N1_float))

bool_N = True
print (type(bool_N))

X= None
print (type(X))
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'NoneType'>

연산

  • 사칙연산

Number type

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
a = 1
b = 2
c = 3.14
d = 1.414
print ("정수_int_의 사칙연산 ")
print ('a + b = ' , a+b)
print('a - b = ', a-b)
print('a * b = ', a*b)
print('a / b = ', a/b)
print('a // b = ', a//b)
print('a % b = ', a%b)
print('a ** b = ', a**b)
print ("실수_float_의 사칙연산 ")
print('c + d =', c+d)
print('c - d =', c-d)
print('c * d =', c*d)
print('c / d =', c/d)
print('c // d =', c//d)
print('c % d =', c%d)
print('c ** d =', c**d)

정수_int_의 사칙연산 
a + b =  3
a - b =  -1
a * b =  2
a / b =  0.5
a // b =  0
a % b =  1
a ** b =  1
실수_float_의 사칙연산 
c + d = 4.554
c - d = 1.7260000000000002
c * d = 4.43996
c / d = 2.2206506364922207
c // d = 2.0
c % d = 0.3120000000000003
c ** d = 5.042646477882085
  • String 연산
1
2
3
4
str1 = "hi"
str2 = "bye"
print('str1 + str2 = ', str1 + str2 )
print ('str 1 * 3 + str * 2 = ', str1 * 3 + str2 * 2 )
str1 + str2 =  hibye
str 1 * 3 + str * 2 =  hihihibyebye

indexing

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
greeting = "Hi!Hellow? AnNyung!"
print(greeting)
#greeting, 이하니처럼 인사를 해 봅시다.

print(greeting[6:])
print(greeting [:6])


G = "12345 6789@"
print (G[2:])
print (G[:3])
print (G[1:9])
print (G[0:7:3])

"""
[a : b : c]
a : 시작 index
b : 끝 Index
c : 띄워서
"""
Hi!Hellow? AnNyung!
low? AnNyung!
Hi!Hel
345 6789@
123
2345 678
146





' \n[a : b : c]\n  a :  시작 index\n  b : 끝 Index\n  c : 띄워서\n'

List

  • List 함수 종류

    • .append() : 추가
    • .extend() : 연장
    • .remove() : 제거
    • .del() : 제거
    • .pop() :Index설정
    • .clear() : 전체 삭제

    Internet에 더 많은 함수를 찾을 수 있는 documents 가 있을 것이다.
    ^^

    List Function

List란, java로 치면 배열

List create 부터

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
print("List 를 생성 해 봅시다.")
A = [] #변수선언으로 빈 리스트 만들기
a= list() #List 함수로 만들기

a = ['I', 'Have', ['a', 'DreAm']]


print ("a함수에 직접적 Index로 넣어주기")
print (a)
print ("a[0]= 'YOU'의 결과 ")
a[0]= 'YOU'
print (a)


#List에 값 추가 해 주기
print(A)
A.append('U')
A.append('song')
A.append(['to', 'sing'])
print("A[0:] : A의 모든 원소 추출")
print(A[0:])
print(" ")
#Extend
print("a : a에 Extend를 이용하여 원소 추가하기")
print(a)
a.extend('U')
print(a)
a.extend(['song', 'to', 'sing'])
print(a)

#Extend 와 같은 느낌으로 "+=" 연산자를 써 줄수 있다.
print("a : a에 연산자를 이용하여 원소 추가하기")
a += ['Like U']
print(a)

#Insert는 중간에 인덱스 값을 넣어 주어서 List에 값을 추가 해 줄 수 있다.
print(a)
print("a : a에 insert를 이용하여 원하는 Index번호에 원소 추가하기")
a.insert(1,'do not')
print(a)
del a[1:1]
#다음 코드를 위해 a의 Index 1에 넣어준 원소를 제거 했음
List 를 생성 해 봅시다.
a함수에 직접적 Index로 넣어주기
['I', 'Have', ['a', 'DreAm']]
a[0]= 'YOU'의 결과 
['YOU', 'Have', ['a', 'DreAm']]
[]
A[0:] : A의 모든 원소 추출
['U', 'song', ['to', 'sing']]
 
a : a에 Extend를 이용하여 원소 추가하기
['YOU', 'Have', ['a', 'DreAm']]
['YOU', 'Have', ['a', 'DreAm'], 'U']
['YOU', 'Have', ['a', 'DreAm'], 'U', 'song', 'to', 'sing']
a : a에 연산자를 이용하여  원소 추가하기
['YOU', 'Have', ['a', 'DreAm'], 'U', 'song', 'to', 'sing', 'Like U']
['YOU', 'Have', ['a', 'DreAm'], 'U', 'song', 'to', 'sing', 'Like U']
a : a에 insert를 이용하여 원하는 Index번호에 원소 추가하기
['YOU', 'do not', 'Have', ['a', 'DreAm'], 'U', 'song', 'to', 'sing', 'Like U']

리스트 연산

1
2
C = a+A
print("a+A의 연산결과 : ", C)
['U', 'do not', 'song', 'to', 'sing', 'U', 'song', ['to', 'sing']]

리스트에 값 삭제 해 주기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
b=[1, 2, 3, 4, 5, 6 ]
B=[7, 8, 9, 10, 11, 12, 13, 1, 4]
print("리스트 값 삭제하기 ")
print(b)
print(B)

print("b의 1번째 삭제")
#1개씩 삭제 해 주기
del b[1]
print(b)

print("B의 1~2 번째 삭제 : [1:2]")
#범위로 삭제 해 주기
del B[1:2]
print(B)


#중복 값을 삭제 해 주는 function
K=[0, 1, 2, 3, 4, 5, 8, 6, 7, 9, 10, 0, 12]
print("K : ", K)

K.remove(0)
print("K.remove(0) : ", K)

K.insert(0, 1)
print("K.insert(0,1) : ", K)



#pop은 Index를 정해서 특정 문자에 정해 줄 수 있다.
S = b.pop()
SS= B.pop(1)
print("b.pop() : ")
print (S, " : ()안에 아무것도 쓰지 않으면 맨 마지막 ")
print("B.pop(1) : ")
print(SS, " : ()안에 숫자를 쓰면 (1) 1번Index 뽑아내기")

#pop과 같은 느낌으로 특정 문자를 뽑아 내기
print("Index 숫자로 pop과 같은 기능을 실행 할 수 있다. ")
print (a[0:])
print (a[2][1])
print (a[2][1][3])

#List 전체 삭제


리스트 값 삭제하기 
[1, 2, 3, 4, 5, 6]
[7, 8, 9, 10, 11, 12, 13, 1, 4]
b의 1번째 삭제
[1, 3, 4, 5, 6]
B의 1~2 번째 삭제 : [1:2]
[7, 9, 10, 11, 12, 13, 1, 4]
K :  [0, 1, 2, 3, 4, 5, 8, 6, 7, 9, 10, 0, 12]
K.remove(0) :  [1, 2, 3, 4, 5, 8, 6, 7, 9, 10, 0, 12]
K.insert(0,1) :  [1, 1, 2, 3, 4, 5, 8, 6, 7, 9, 10, 0, 12]
b.pop() : 
6  : ()안에 아무것도 쓰지 않으면 맨 마지막 
B.pop(1) : 
9  : ()안에 숫자를 쓰면 (1) 1번Index 뽑아내기
Index 숫자로 pop과 같은 기능을 실행 할 수 있다. 
['hi', 'do not', 'Have', ['a', 'DreAm'], 'U', 'song', 'to', 'sing', 'd', 'i', 'd', ' ', 'n', 'o', 't']
a



---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

<ipython-input-112-d37801788a81> in <module>()
     40 print (a[0:])
     41 print (a[2][1])
---> 42 print (a[2][1][3])
     43 
     44 #List 전체 삭제


IndexError: string index out of range

List 값을 덮어 쓰는 기능

1
2
3
4
5
6
7
8
print ("A[] = ", A) 
print ("A[1:2]= ['i', 'do', 'NOT', 'know']의 결과 ")
A[1:2]= ['i', 'do', 'NOT', 'know']
print (A)
# A[]에 1번 Index에 범위보다 큰 수가 엎어 씌어 진 것을 볼 수 있다.

del A [1:4]
print("del A [1:4] : ", A)
A[] =  ['U', 'i', 'do', 'NOT', 'know', 'do', 'NOT', 'know', 'do', 'NOT', 'know', ['to', 'sing']]
A[1:2]= ['i', 'do', 'NOT', 'know']의 결과 
['U', 'i', 'do', 'NOT', 'know', 'do', 'NOT', 'know', 'do', 'NOT', 'know', 'do', 'NOT', 'know', ['to', 'sing']]
del A [1:4] :  ['U', 'know', 'do', 'NOT', 'know', 'do', 'NOT', 'know', 'do', 'NOT', 'know', ['to', 'sing']]

Ref.

https://dojang.io/course/view.php?id=7

보고 공부 할 수 있어요

Making Category

---
title: "Making Category"
excerpt :"Credit card"
classes: wide
categories:
-init
tags:
-python
-title
-coding
last_modified_at: 2021-11-03
---

color 바꾸고 싶은에 안되네

https://www.color-hex.com/color/f4dcdc

become a BDS

##Big data 를 이용 할 수 있는 BioData Scientist가 되고 싶다.



생물학은 점점 디지털화되고 있으며 이제 양적인 과학 분야의 빛을 발하고 있다.

핵심 추진 요인은 생물학적 연구에서 처리량이 높은 기술 플랫폼의 확산이 증가하는 것으로,
체계적인 연구를 위해 수천 개의 조직과 유기체에 걸친
유전자, 단백질 및 기타 생물학적 부분에 대한 수백만 개의 데이터 포인트가
수집, 세척, 저장 및 통합될 수 있도록 한다.

이처럼 데이터가 풍부한 환경에서 생물학적(그리고 임상 샘플에 배치된 경우 생물의학)
연구의 미래는 데이터의 전략적 극대화 에 있다고 해도 과언이 아니다.

오늘날의 기술 환경에서 데이터 과학 및 인공지능(AI)은
이미 비즈니스 및 금융과 같은 영역에서 혁신 동력으로 작용하고 있다.
여기서 데이터 과학자는 막후에서 작업하는 대신 데이터를 실질적인
통찰력으로 변환하는 역할을 담당하고 있다.

예를 들어, 인공지능 기반 알고리즘 거래와 금융 기술(FinTech)의 주식 추천 시스템,
엔지니어링의 자동화 엔진 설계, 시스템 유지보수 및 로봇공학 등이 있다.
최근의 데이터 폭발과 이에 따른 비즈니스, 금융 및 컴퓨팅과 같은
다른 분야의 데이터 과학의 발전을 감안할 때, 우리는 특히 생물학과 관련된 영역별
문제를 다루는 새로운 변형인 빠르고 방대한 양의 데이터 생성과 함께 데이터 과학이
등장할 것으로 예상한다. 이를 “바이오 데이터 과학” 이라고 한다.

###BDS(BioData Science)에는 세 가지 핵심 분야가 있다.

  • 생물학 영역: Biology
  • 수학 및 통계 : mathematics (statistics)
  • 컴퓨터 공학 : computer science

BDS_componets.png


생물학 영역은 질병의 원인이나 유추된 바이오 마커의 진단 효용 이해와 같은 생물학적 기원에 대한 질문과 관련이 있다.

컴퓨터 과학 코어는 특히 분석할 데이터가 큰 경우 문제 해결을 위한 적절한
알고리즘 고안, 반복 처리 (예: 데이터의 큰 부분 집합에서
동일한 알고리즘 여러 번 실행) 및 데이터 저장 문제 해결과 관련이 있다.

수학 및 통계 핵심 영역은 데이터 요약, 정규화 및 모델링을 포함한 문제와 관련이 있다.
기술 및 탐색적 통계 데이터 분석이 BDS에만 국한된 것은 아니지만
(생물 통계의 필수 구성 요소이기도 하며, 더 낮은 정도로 생물 정보학이기도 함),
BDS는 빅데이터에 AI/ML을 적용하는 것에 기초한 신흥 기술을 이용한 예측에 초점을 맞추고 있다.


###바이오 데이터 과학은 다른 과학 분야와 다르지 않은 탐구 과학이다.
BDS는 단순히 기술(technology), 기계 학습(machine learning) 인공지능(AI)이 아니다.

인공지능이 여러분을 위해 그렇게 해주기를 바라는 대신, 사람의 강한 논리적 사고에 기초해야 한다.
BDS가 궁극적으로 연구의 과학이라는 이런 점에서, 전형적인 과학적 조사와 다르지 않다.

우리는 유전자 발현 변화가 정신 상태와 의미있게 상관되는지에 대한 질문에 답하도록 돕기 위해
다음의 7가지 단계를 사용할 수 있다.


가장 큰 차이점은 BDS는 낮은 처리량 또는 저전력 물리적 실험에 대한 강조를 줄이면서
의미 있는 데이터 조작 및 분석에 강력한 능력을 필요로 한다는 것이다.

데이터 과학은 다른 과학적 추구와 같은 과정으로 진행 된다.

- 조사할 질문을 먼저 선택
- 테스트 가능한 관련 가설을 확인함으로써 이 질문의 범위를 넓힘
- 가설에 답하기 위한 데이터를 얻기 위한 적절한 실험을 설계하고 현장 적용할 
- 결과를 결정하고 그 타당성, 즉 데이터가 연구 질문에 답하는 데 적합한지 여부를 평가
- 마지막으로, 모델을 배치하고 연구 결과가 반복 가능한지 확인



###데이터 분석은 복잡한 다단계 프로세스이다.
**BDS(BioData Science)**는 도전적인 분야이지만, 생물정보학이나 전산생물학과 비슷하게 어렵다.

생물학적 시스템을 측정하기 위한 기술적 플랫폼은 매우 정교하지만, 생물학적 시스템은 매우 복잡하다.
게다가 생물학적 실체를 측정하기 위해 개발된 기술적 도구는 생물학적 시스템의
구성요소가 변화하고 시간이 지남에 따라 자연스럽게 변화하는 동안 기술적 불확실성에 영향을 받는다.
바이오 빅 데이터는 이러한 문제에 대한 자연스러운 솔루션이 아니며 새로운 문제를 야기한다.


BDS_Investigation.png


BDS 데이터는 매우 많은 수의 관측에서 보존된 패턴을 식별하는 과정과 같은 데이터 과학
노력을 촉진할 수 있지만, 적절한 분석 파이프라인이 개발될 경우에만 그렇게 할 수 있다.
이 작업은 하찮지 않다. 이러한 분석 파이프라인은 데이터 수집에서 시작하여
더 높은 수준의 생물학적 해석과 통찰력을 향한 계산 및 통계 평가를 통해 계속 이어지는
다양한 접근 방식의 엔드 투 엔드 통합으로 상상할 수 있다.


  • omics 데이터의 바이오 마커 분석을 위한 단순화된 파이프라인과 관련 주요 고려 사항은 다음과 같을 수 있다.

BDS_omics.png


분석 파이프라인은 매우 유연해야 하며 연구 질문의 필요에 따라 변화해야 한다.
완벽한 지식이 부족하기 때문에 최적화와 재현성을 어느 정도 달성하기 위해 몇 단계를 왔다 갔다
반복하고 다듬는 것도 일반적이다.

예를 들어, 정규화 단계에서 두 개의 서로 다른 정규화 절차를
사용하여 매우 다르고 겹치지 않는 차등 유전자 세트를 발견했다고 가정 해 보자.
정규화 절차는 데이터에 대해 잘못된 가정을 하거나 잘못 구현되었을 수 있다.
표시된 주요 고려사항은 엄청나게 많다. 고려사항의 예와 함께 단계를 보여주는 목적은
각 단계마다 완벽한 시스템이나 파이프라인이 없지만, 각 의사결정 지점마다 이후 단계에 대한
결과를 갖는 많은 고려사항이 있음을 입증하는 것이다.

우리는 또한 특정 정규화 접근법이 다운스트림 통계 절차와 잘 작동하는지와 같은
호환성 문제나 특정 절차가 배치 효과 보정 알고리즘 및 일부 다중 시험 보정 방법과 관련된
과다 탈락 및 과다 첨가로 이어질 수 있는지 여부와 같은 문제를 걱정해야 한다.

일반적으로 좋은 결과를 보장하는 노선도나 표준 운영 절차는 없다는 점에서
BDS는 예술에 가까운 과학인 것이다.

Ref.
https://gohwils.github.io/biodatascience/biodatascience.html