Domains (53)

반응형
 

Single Gene 2 alleles Model의 결점


앞서 살펴본 것들은 Single Gene 2 alleles 모델이다. 이는 현실과는 다른데 그 이유로는 아래와 같은 것들을 들 수 있다.


1. Penetrance : 질병 유전자가 반드시 형질의 변화에 영향을 주지 않고 suceptability에 영향을 줌

2. 하나의 유전자가 아니라 많은 수의 유전자가 형질에 관여함

3. Epistatsis : 유전자들간의 상호작용

4. 한 유전자에 많은 allele이 있을 수 있음 (ex. 혈액형 - 3개의 alleles)

5. 형질에는 환경이 관여한다. : (선탠을 하면 피부가 탄다-environment effect, 어떤 사람은 선탠을 하면 피부가 더 잘탄다-genotype, environment interaction)


Mutation Rate


Mutation Rate는 mutation이 한 번의 generation에 얼마나 발생하는지를 나타내는 수치이다. muation rate는 mutation을 어떻게 정의하냐에 따라 달라지긴하지만 보통은 어떠한 하 나의 base가 다른 base로 변경되는 것을 mutation이라고 한다. C elegans를 대상으로 muation rate를 조사해봤을 때, 2.1*10^-8 / per base / per generation 이었다. 이를 인간에 적용해보면 3.1*10^9 * 2.1*10^-8 = 65개의 새로운 mutation이 평균적으로 매 generation 마다 생겨나는 것을 알 수 있다. 그리고 실제 인간을 대상으로 mutation rate를 연구를 한 논문에서도 63개 정도의 mutation이 generation마다 평균적으로 발생한다고 밝혀졌다. 그리고 새롭게 생기는 mutation의 수는 아버지의 나이와 관련 있다. 아버지의 나이가 많을 수록 더 많은 수의 mutation이 평균적으로 발생한다. 그 mutation들 중에서 평균적으로 1~2개의 mutation이 해롭다고 한다.




QTL


양적 형질에 관여하는 것으로 예상되는 loci를 QTL이라 한다. 실제로 그것의 정확한 위치는 알 수 없지만 마커와의 연관을 통해 근사적으로 추론한다. 특정 양적 형질에 영향을 미치는 많은 QTL이 많이 발견되었다.


genotype-phenotype의 관계를 추론하는데 사용하는 근본적인 방법은 phenotype에 영향을 미치는 gene 근처의 마커와 phenotype의 연관(association)을 보는 것이다. A라는 마커의 genotype을 AA, Aa, aa라고 하고, AA인 사람의 키의 평균이 180cm, Aa인 사람의 키의 평균이 175, aa인 사람의 키의 평균이 170cm였다면, A가 disease와 연관이 있다고 볼 수 있다. 그리고 실제 QTL은 A 마커와 연관이 되어 있다고 추론할 수 있다. A 마커와 실제 QTL에 recombination이 거의 없을수록 A 마커의 effect는 크게 나타날 것이다. 



이는 마치 누군가가 실종되었는데, 그 사람의 위치를 정확하게 말하지 않고 "노스캐롤라이나 주" 라고 말하는 것과 같다. 따라서 많은 마커를 통해 실제 QTL의 위치를 specific 하게 찾는 것이 중요하다.



Localizing QTL


이러한 LOD plot을 통해 QTL을 localization할 수 있다. 이 그림을 통해 토마토의 10번 염색체 위의 마커들이 ph와 연관 되었음을 확인할 수 있다. 단순형질과 다른 점은 이러한 연관된 region이 한 군데가 아니라 여러곳에 존재한다는 것이다.



하지만 위 그림을 보고 B, C 사이에 QTL이 존재할 것이라고 생각하는 건 위험할 수 있다.


바로 위와 같은 상황이 있을 수 있기 때문이다. B, C 사이에 T가 있고 T의 연관은 적을 수도 있다. 이 상황에서는 B, C 사이에 한 개의 QTL이 있는 게 아니라 B 근처에 한 개, C 근처에 한 개가 있다고 볼 수 있다.



출처 - 코세라 Duke University 유전학 강의


반응형

'Domains > Genetics' 카테고리의 다른 글

Genetics - Gene vs Environment  (0) 2017.11.14
Genetics - Genome-wide association study  (0) 2017.11.13
Genetics - Genetic Mapping2  (0) 2017.11.11
Genetics - Genetic Mapping1  (0) 2017.11.11
Genetics - Recombination  (0) 2017.11.11
반응형


Genetic Mapping2


유전자의 상대적 위치를 결정하고, 특정 질병과 관련있는 유전자를 특정하는 것 genetic mapping이라고 한다. Genetic mapping의 궁극적인 목표는 genotype과 phenotype의 association을 알아내는 것이다.


[genetic mapping의 개념]



Human Genom Project를 통해 인간 유전체 30억개 서열을 읽을 수 있게 되었고, 20000여개의 gene을 찾아내었다. 하지만 서열을 통해 gene이 무슨 역할을 하는지 어느정도 알 수있었지만, 어떤 변이가 disease-causing 인지는 "추측"할 수 밖에 없다.


수십년전부터 시작된 Gene Mapping은 disease-causing mutation이 어디인지 상대적으로 결정하는 것이다. gene mapping은 dna sequencing이 발달하기 이전의 최초 접근법이라고 볼 수 있다. 상대적으로 결정한다는 것은 genome 상에 어떤 reference point와의 상대적 위치를 결정한다는 것인데 이 reference point를 genetic marker라고 한다. genetic marker는 보통 SNP(single nucleotide polymorphism)을 사용한다.



다소 극단적인 예를 들어보자. A, B 라는 SNP marker가 있고, 위는 offspring의 genotype과 질병 여부를 나타낸 것이다. B marker의 genotype이 bb인 경우, 모두 질병에 걸렸으므로, B의 bb genotype이 질병과 연관(linked)이 있다는 것을 알 수 있다. 따라서 B marker가 실제 disease-causing mutation과 association이 있다고 추론해볼 수 있다.



Genetic Mapping Example


Gene Mapping을 하기 위해서는 parents와 offspring의 Marker의 genotype이 필요하다. 또 parents 중 한 명은 heterozygous여야한다. homozygous인 경우, recombination을 관찰할 수 없기 때문이다. 예를 들어서 genetic mapping을 실제로 하는 법을 살펴보자. 마커 AB에 대하여, AB/ab genotype과 ab/ab genotype인 부모의 자손을 조사했을 때 다음과 같은 genotype-phenotype 결과를 얻었다고 하자. Genetic Mapping의 목표는 disease-causing mutation의 A,B와 비교한 상대적인 위치를 알아내는 것이다.


위 경우에는 A marker가 disease와 연관이 있다는 것을 알 수 있다. C 유전자가 실제 disease-causing이라면, 이 C 유전자의 genotpe이 A와 같이 유전될 것이다.


그러면 C 유전자를 포함해 위와 같은 genotype-phenotype 관계를 알 수 있고, 이를 통해 gene map을 추론할 수 있다. 위 문제의 답은 A-C-B 이다. 가장 희귀한 case인 abC/abc, ABc/abc를 보면, A와 B 는 parental이고, C만 recombinant임을 알 수 있다. 빈도가 희귀한 것과, A-B는 parental인데, C만 recombinant 인 것을 보면 이는 A-C-B 에서 double recombination이 일어나, A-c-B, a-b-C가 되었음을 알 수 있다. 혹은 각각의 유전자들마다 recombination fraction을 구해서 gene map을 구할 수도 있다. 즉, A-B, B-C, A-C의 recombination fraction을 구한 후, 이를 통해 유전자의 상대적 위치를 알 수 있다. 예를 들어, A-B의 recombination fraction = 157/843+157 = 0.157


문제


AbC/aBc X abc/abc의 결과로 아래와 같은 빈도가 관찰되었다.


ABC/abc = 13

ABc/abc = 11

abC/abc =6

AbC/abc = 257

aBc/abc = 237

Abc/abc = 1

aBC/abc = 0

abc/abc = 8


A-C의 recombination fraction의 근사값은?


ABC/abc = 13 => parental

ABc/abc = 11 => recombinant

abC/abc =6=> recombinant

AbC/abc = 257=> parental

aBc/abc = 237 => parental

Abc/abc = 1=> recombinant

aBC/abc = 0 => recombinant

abc/abc = 8 => parental


11+6+1+0/13+11+6+257+237+1+0+8 = 0.033




Population Mapping


Genetic mapping은 앞서본것처럼 가족을 대상으로 할 수도 있지만, 인구 집단을 대상으로 할 수도 있다.



이 그림은 4개의 염색체가 시간이 오래지나서 뒤죽박죽 섞여 있는 모습을 나타낸 그림이다. (D=Disease Allele, M1=Marker1, M2=Marker2) 이 그림에서 중요한 사실은 아무리 많은 세대가 지나더라도 D와 M1사이의 연관은 그대로 남아있다는 것이다. 이렇게 연관이 그대로 남아있을 수 있는 이유중 하나로, Recombination이 완전히 임의로 일어나지 않는다는 사실을 들 수 있다. 염색체에서 Recombination이 자주 일어나는 부분을 Recombination hotspot이라 하는데(hot spot은 평균적으로 매 3000bp 마다 한 번씩 존재한다.) 이 부분을 제외한 나머지 부분은 recombination fraction이 거의 0에 가깝다. 따라서 hotspot과 hotspot 사이에 window가 형성되는데 이 window 내에서는 recombination이 거의 일어나지 않고 세대가 지나더라도 같이 유전된다. 이를 Linkage disequilibrium(LD)이라 한다. 어떠한 window 내에 disease gene이 있을 수 있고, 우리는 이러한 LD를 이용하여 disease gene을 찾을 수 있다. hot spot이 평균적으로 매 3000bp 마다 한 번씩 있으므로 30억/3000 = 100만개의 SNP을 마커로 사용한다면 disease gene을 찾을 수 있다.



이 그림은 window와 LD에 대해 이해하기 좋은 그림이다. 이를 통해 disease locus의 위치를 알아내기 위해 마커가 어떻게 쓰이는지를 이해할 수 있다. 예를 들어 SNP2=G일 때 Disease Allele인 A가 높은 비율로 존재한다. 따라서 SNP2은 Disease에 대해 연관이 있고 좋은 정보를 준다는 것을 알 수 있다. 하지만 윈도우 밖의 SNP5의 경우 disease와 아무런 연관이 없다.


위에서 말한 100만개의 SNP 마커를 (genotype) 알아내는 기술을 microarray라 한다. 많은 회사들이 이러한 SNP 마커를 이용해 disease suceptabilty를 알려주는 서비스를 제공한다.



Pedigree와 population으로 mapping하는 것의 차이는 위 그림에서 볼 수 있다. pedigree는 세대수가 적기 때문에 recombination이 된 부분이 적다. 따라서 같은 염색체 내에서 두 locus가 recombination이 되었을 확률이 적다. 하지만 Population의 경우 매우 많은 세대가 지난 것이기 때문에 같은 염색체 내에서라도 많은 recombination이 일어났을 것이다. 그러므로 recombination이 안일어났을 것이라고 보장되는 범위가 pedigree에서는 ~2백만bp이지만 population을 이용했을 때는 ~3000bp 정도이다. 또 Population을 대상으로하면 질병이 희귀한 경우 연구하기 힘들다. 엄청나게 많은 sample을 뽑아야하기 때문이다.





출처 - Coursera Duke Univ 유전학 강의


반응형

'Domains > Genetics' 카테고리의 다른 글

Genetics - Genome-wide association study  (0) 2017.11.13
Genetics - Genetic Mapping3  (0) 2017.11.12
Genetics - Genetic Mapping1  (0) 2017.11.11
Genetics - Recombination  (0) 2017.11.11
EM 알고리즘 haplotype frequency 추정  (0) 2017.10.08
반응형


Genetic Mapping


gene mapping은 human genone project가 완성되고, dna sequencing 기술이 발전되기 훨씬 이전부터 있던 개념이다. Gene Mapping의 기본 개념은 dna sequencing을 하지 않고도 염색체 안에서 gene의 순서를 결정하고 질병과의 연관성을 정립하는 것이다.



Recombintation Fraction 계산을 통한 Gene Mapping


앞서 포스팅한 http://3months.tistory.com/216 을 통해 Recombination Fraction을 구하는 방법을 알아보았다. 이번엔 3개의 linked라고 예상되어는 gene들에 대해 각각 서로의 recombination fraction을 구해본다. 부모의 phase가 ABC/abc * abc/abc 일 때를 예로 들어보자. 3개의 gene일 때 recombination fraction을 구하는 방법은 구하고자하는 유전자외의 나머지 유전자는 가리고 구하면된다. 즉, A-B를 구하려면 C를 가리고 AB에 대해서만 보면된다. 그러면 AB/ab, ab/ab만 parental이고 나머지는 recombinant이다. 따라서 recombinant의 숫자는 15+13+1+1 = 30 따라서 recombination fraction = 30/1000 = 0.03 이다. 이런식으로 나머지 유전자들에 대해서도 구하면, A-C간에는 0.046, B-C간에는 0.02가 나온다. 따라서 A-B-C 순서로 유전자가 염색체상에 존재하는 것을 알 수 있다. 이를 Gene Map 이라 한다.


Double Cross-over



유전자의 순서가 A-B-C 순서라면 왜 거리가 4.6 vs 5 로 정확히 맞지 않을까? 한 가지 이유는 Double Cross-over 때문이다. 위 그림에서 빈도수가 1인 AbC/abc, aBc/abc는 Double cross-over가 일어났다. 그래서 A-C 사이의 recombination fraction을 계산할 때 parental 이 아니라 recombinant로 들어가야한다. (+4가 되어야함) 왜 이것이 double cross-over 인가? 우선 빈도수가 매우 낮기 때문이다. 위 그림에서 A-B에 recombination 될 확률이 1%, B-C에 될 확률이 1%라면 double로 될 확률은 0.01%이다. 또, A-B-C 순서로 gene이 위치한다면, 저런 조합이 나온 이유는 double recombination에 의한 것이다.




반응형

'Domains > Genetics' 카테고리의 다른 글

Genetics - Genetic Mapping3  (0) 2017.11.12
Genetics - Genetic Mapping2  (0) 2017.11.11
Genetics - Recombination  (0) 2017.11.11
EM 알고리즘 haplotype frequency 추정  (0) 2017.10.08
DNA 결합 단백질  (2) 2017.08.12
반응형

Recombination


Recombination=Crossing-over이 아니다. Crossing-over은 Recombination의 한 종류이다. Independant Assortment(독립유전)도 Recombination의 한 종류이다. 즉, Recombination의 두 가지 타입은


1. 독립 유전

- 주로 다른 염색체 간에 진행되는 과정. 독립유전에서는 독립적으로 유전이 이루어지므로 자손의 allele은 단순히 확률을 곱해서 구할 수 있다.


2. Crossing-over

- 이것이 Recombination과 동의어로써 쓰이기도 한다. 주로 같은 상동 염색체끼리 부위를 교환하는 과정이다. 아빠로부터 받은 염색체의 일부와 엄마로부터 받은 염색체의 일부가 감수분열 시 교환되는 현상


Crossing-over


감수분열 과정에서 crossing-over이 일어나지 않은 것이 NR이고, R은 crossing-over이 일어난 것. NR은 어머니로부터 받은 염색체가 그대로 생식세포로 전달되었고, R은 어머니와 아버지로부터 받은 염색체가 crossing-over이 되었다.


어떻게 Crossing-over이 일어난 것을 알 수 있나?


Genetic Marker을 통해 Crossing-over이 일어난 것을 알 수 있다. 위 그림을 보면, Allelse는 AaBb이다. 만약 recombination(crossing-over)이 일어나지 않았다면 생식세포의 alleles는 AB 또는 ab일 것이다. 왜냐하면 AB, ab는 같은 염색체에 있기 때문에 같이 다닐 것이기 때문이다. 하지만 recombination이 일어나면 같은 염색체 내의 Allele이 aB나 Ab가 될 수 있다.


가까운 variants(allele)은 연관이 되었을 경향이 크다


위 그림에는 AB는 linked 되어있다. 둘다 엄마로부터 받거나 둘다 아빠로부터 받는다. 가까운 위치에 있기 때문에 생식세포를 형성할 때 같이 다니기 때문이다. 반면 AC는 2/5의 확률로 염색체의 주인이다르다. 이 경우에는 독립유전의 법칙이 깨지게 된다.


이 그림에서 보듯이 Ab aB alleles를 갖고 있더라도(그림은 아버지로부터 받은 alleles(Ab)와 어머니루부터부 받은 alleles(aB)를 보여주는데 이렇게 allele이 누구로부터 왔는지, 같은 염색체 내에 있는지를 보여주는 것을 이를 Phase라고 한다.) 다른 염색체에 있거나, 멀리 떨어져서 recombination이 일어나지 않으면 생식세포가 Ab, aB 형태만 갖는 것이 아니라 AB, ab 형태도 갖을 수 있게 된다.


이 중에서 Recombinant 인 경우는? 답 : Aabb, aaBb (만약 Recombination 없다면 각각이 나올 확률을 1/4이다.)



Alleles Association


Point :  두 allele의 위치가 멀리 떨어져있다면, 그 두 allele이 같이 생식세포로 갈 확률은 50%이다. 두 allele이 가까운 위치에 있다면, 같이 생식세포로 갈 확률은 거의 0%이다.


Point : Recombintation Fractor은 gene의 거리를 반영한다. 두 유전자의 거리가 멀면 Recombination Fraction은 크고, 가까우면 Recombination Fraction은 작다. Recombination Fraction은 0~50% 사이의 값이다.


Recombination 계산

부모의 phase가 위와 같을 때, recombination이 아예 없다면, cn+vg, cnvg+만 나타날 것이다. 이것을 parental 이라고 한다. 그 외의 cn+vg+, cnvg는 상동염색체 끼리의 recombination이 일어나서 생겨난 것으로 recombinant라고 한다. recombination fraction은 전체 개체수중에 recombinant된 offspring의 비율이다. 따라서 9+11/(92+88+9+11) = 20/200 = 0.1이다. 이 recombination fraction은 두 gene사이의 거리에 관한 정보를 준다.



출처 - 코세라 Duke Univsersity 유전학 강의

반응형

'Domains > Genetics' 카테고리의 다른 글

Genetics - Genetic Mapping2  (0) 2017.11.11
Genetics - Genetic Mapping1  (0) 2017.11.11
EM 알고리즘 haplotype frequency 추정  (0) 2017.10.08
DNA 결합 단백질  (2) 2017.08.12
유전체학을 위한 신경망 모델  (0) 2017.08.12
반응형

Medical Image 분야에서의 Deep Learning 응용


약 100여년 전, 의학분야에 처음 Medical Image가 도입되었을 때 그것은 의학 분야의 패러다임을 바꾸었습니다. X-RAY와 같은 의영상 기술을 통해 비침습적으로 내부 장기들을 볼 수 있고, 이를 통해 병을 진단할 수 있고, 암환자의 경우 자신의 남은 수명 또한 알 수 있었습니다. 최근, Deep Learning 기술의 발전이 이 분야에 적용됨으로써 의영상 분야에 다시 한 번 새로운 가능성을 만들어나가고 있습니다.


CBInsigt에서 제시한 이 HeatMap을 보시면 Medical Image분야에 대한 투자가 2015년에 정점을 찍고 계속해서 높은 관심을 받고 있는 것을 볼 수 있습니다. 그만큼 이 분야에 많은 가능성이 있다는 것을 알 수 있습니다. IBM 연구자에 따르면 Medical Image 데이터가 전체 Medical 데이터의 90%를 차지한다고 합니다. 용량만 놓고 말하면 소위 말하는 "헬스케어 데이터" 의 대부분이 Medical Image 데이터 인 것입니다. 데이터의 양만 보더라도 이 분야가 헬스케어 산업에서 차지하는 비중이 매우 높다는 것을 알 수 있습니다. 영상의학 전문의들은 병원에서 하루에 수많은 영상 데이터를 본다고 합니다. 그러므로 그러한 의사들이 마주치는 데이터로부터 어떤 특징을 추출해서 정보를 효율적으로 보여주는 방식이 진단의 속도와 정확성을 높이고 병원이 더 많은 환자를 처리할 수 있게 되어 사회적 문제 해결에도 도움이 될 수 있는 것이죠.


현재 Medical Image 분야에서 Machine Learning, Deep Learning이 응용되는 부분


Tumor Detection


미국에서는 년간 500만건의 피부암의 발생이 보고된다합니다. 피부암은 미국에서 가장 흔하게 진단되는 암이며, 미국의 헬스케어 시스템에서 80억달러가 매년 피부암 치료에 사용된다고 합니다. 이중에서 악성흑색종(Melanoma)의 경우 치명적인 종양인데, 빠른 진단과 치료가 이루어진다면 높은 확률로 이를 치료할 수 있습니다. 피부암은 언제 진단되느냐에 따라 생존률이 15%~65%로 달라지며, 빠른 진단과 치료가 이루어진다면 5년 생존률은 무려 98%에 달한다고 합니다. 피부암을 진단하기 위해서는 피부암을 영상이미지에서 찾아내는 것(Detection)이 중요합니다. Deep Learning을 통해 피부암과 관련된 특징들을 학습하고 이를 통해 피부암을 찾아내는 것이 응용되는 부분 중 하나입니다.


피부 병변의 양성/악성 분류하는 CNN (출처 - https://web.stanford.edu/~kalouche/cs229.html)


다음으로 폐암(Lung Cancer) Detection에도 DeepLearning이 많이 사용됩니다. 주로 폐의 CT scan 데이터를 통해 암을 Detection 하는 알고리즘이 많이 사용되고 있습니다. (Enlitic 이라는 Medical Image 관련 호주 회사) 이 회사에 보고에 따르면 이미지로부터 폐암의 특성을 찾아내는 정확도가 영상의학 전문의보다 높다고합니다.


Medical Image 분야에서는 데이터를 어떻게 획득하냐는 문제가 있습니다. 데이터가 있어야 이를 통해 학습하는 알고리즘을 만들 수 있기 때문입니다. IBM은 2015년 8월 Merge Health Care라는 의영상업체를 인수함으로써 이러한 문제를 해결하고자 하였습니다. Merge의 홈페이지에 가보면 이제 IBM Watson HealthCare라는 이름이 붙어있습니다. IBM은 Merge의 약 300억개의 Medical 이미지 데이터를 통해 Watson을 학습시켜 의사의 진단을 보조할 수 있도록 하는 방법을 꾸준히 연구해나가고 있습니다.



간암 Segmentation하는 논문의 Groud Truth 데이터 Deep Learning은 이러한 CT 데이터를 학습하여 테스트 데이터가 들어왔을 때,

간의 위치와 종양의 위치를 Segmentation 할 수 있다.


암 전이 Tracking


Medical Image는 non-invasive로 질병을 모니터링함으로써 의학적인 중재에 활용할 수 있습니다. Deep Learning은 시간의 흐름에 따른 영상 데이터를 통해 암의 전이 과정을 추적하는데 활용되기도 합니다. 이 논문은 유방암의 Historical 데이터를 통해 암 전이 과정을 평가한 논문입니다. Fraunhofer Institute for Medical Image Computing 은 2013년도에 딥러닝을 통해 암 이미지의 변화를 추적하는 새로운 툴을 공개하였습니다. 이를 통해 임상의들이 암 치료를 어떻게 할지를 결정할 수 있습니다. 이러한 기술들이 더욱 발전된다면 암의 Progress 모니터링을 자동화할 수 있는 가능성이 있습니다.



Tumor Detection & Classification 사례


병변이 의심되는 지점을 찾더라도 그것이 양성인지 악성인지 분류하는 것이 필요한데 삼성은 초음파 이미지에 딥러닝을 활용하여 유방의 병변을 분석하는데 활용하고 있습니다. 삼성의 시스템은 수많은 유방의 케이스를 학습함으로써, 해당 병변의 특성과 그것이 양성인지 악성인지를 분류해 냅니다. 특히 의영상 분야에서는 한국 스타트업의 활약이 두드러지는데 대표적으로 LunitVuno가 있습니다. Lunit은 유방암 Detection 대회에서 마이크로소프트와 IBM을 제치고 1위에 올라 CB Insight 선정 100대 AI 스타트업에 그 이름을 올린 것으로 유명합니다. 삼성 연구원들이 퇴사후 2014년에 설립한 Vuno의 경우 Medical Image Interpretation분야에서 의사를 보조하는 기술을 개발하고 있습니다. 여기에 머신러닝/딥러닝 기술이 들어가며, 이를 통해 의사의 진단 과정을 더욱 빠르고 정확하게 보조하는 역할을 합니다. 

Vuno의 데모영상(https://youtu.be/i7CS05WvOLE)을 보면 Medical Image 데이터를 통해 DILD(Diffuse Interstitial Lung Disease)를 Detection하는 시스템의 데모를 볼 수 있습니다.



참고

https://www.techemergence.com/deep-learning-applications-in-medical-imaging/


반응형
반응형

Stacking을 위한 패키지 vecstack


stacking을 쉽게 할 수 있는 패키지가 있을까 해서 찾아보았는데 역시 이미 여러개가 있었다.. 여러가지 패키지중에 vecstack이 사용하기 쉬워보였는데, 매우 간단한 코드로 stacking을 구현할 수 있었다. vectstack은 아래와 같이 선택된 모델마다 "K-fold  averaging prediction" (이 명명법이 맞는지 모르겠지만, K-fold로 K번 prediction을 한 후 이 예측치들의 평균을 결과 예측치로 내놓는 방법을 뜻한다.) 을 한 후 이 결과를 앙상블하여 최종 예측 결과를 내놓게 된다. 결론적으로 stacking에 5개의 모델이 쓰이고 3-fold라면 총 15번 fitting을 하고 5개의 모델에 대한 5번의 예측결과가 나오고 다시 이것을 최종 classifier에 통과시켜 최종 prediction을 만들게 된다. 이러한 과정을 실제 코드로 구현하기는 어렵지는 않지만 코드의 양이 많아질 수도 있다.




이러한 stacking을 vecstack은 간단하게 구현한다. 단순히 모델을 정의하고, 모델들의 리스트와 train_x, train_x, test_x만 넣어주면 된다. 그러면 그 안에서 모델들에 대해 k-fold averaging prediction을 수행하며, 이를 통해 트레이닝셋과 테스트셋에 대해 각각 예측 결과 4개씩을 내놓는다. 그게 S_train, S_test이며 다시 이를 최종 classifier로 학습시켜 최종 예측 결과를 내놓게 된다. 하지만 sklearn 형식의 모델만 stacking에 활용할 수 있는 것 같다. 그것이 단점이지만 sklearn의 패키지만으로도 충분히 좋은 예측 결과를 내놓을 수 있기 때문에 stacking을 간단하게 적용해보기에 좋은 패키지인 것 같다.

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.ensemble import ExtraTreesClassifier from sklearn.ensemble import RandomForestClassifier from xgboost import XGBClassifier from vecstack import stacking # Load demo data iris = load_iris() X, y = iris.data, iris.target # Make train/test split # As usual in machine learning task we have X_train, y_train, and X_test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0) # Caution! All models and parameter values are just # demonstrational and shouldn't be considered as recommended. # Initialize 1-st level models. models = [ ExtraTreesClassifier(random_state = 0, n_jobs = -1, n_estimators = 100, max_depth = 3), RandomForestClassifier(random_state = 0, n_jobs = -1, n_estimators = 100, max_depth = 3), XGBClassifier(seed = 0, n_jobs = -1, learning_rate = 0.1, n_estimators = 100, max_depth = 3)] # Compute stacking features S_train, S_test = stacking(models, X_train, y_train, X_test, regression = False, metric = accuracy_score, n_folds = 4, stratified = True, shuffle = True, random_state = 0, verbose = 2) # Initialize 2-nd level model model = XGBClassifier(seed = 0, n_jobs = -1, learning_rate = 0.1, n_estimators = 100, max_depth = 3) # Fit 2-nd level model model = model.fit(S_train, y_train) # Predict y_pred = model.predict(S_test) # Final prediction score print('Final prediction score: [%.8f]' % accuracy_score(y_test, y_pred))

코드 출처

https://github.com/vecxoz/vecstack



실행결과

task:   [classification]
metric: [accuracy_score]

model 0: [ExtraTreesClassifier]
    fold 0: [0.93548387]
    fold 1: [0.96666667]
    fold 2: [1.00000000]
    fold 3: [0.89655172]
    ----
    MEAN:   [0.95000000]

model 1: [RandomForestClassifier]
    fold 0: [0.87096774]
    fold 1: [0.96666667]
    fold 2: [1.00000000]
    fold 3: [0.93103448]
    ----
    MEAN:   [0.94166667]

model 2: [XGBClassifier]
    fold 0: [0.83870968]
    fold 1: [0.93333333]
    fold 2: [1.00000000]
    fold 3: [0.93103448]
    ----
    MEAN:   [0.92500000]
    
Final prediction score: [0.96666667]



반응형

'Domains > Kaggle' 카테고리의 다른 글

Stacking 사용할 때 가이드  (0) 2017.10.15
반응형

IGV Tutorial


IGV(Intergrative Genomics View)는 게놈 데이터를 시각화하고 인터랙티브하게 볼 수 있는 생명정보학 툴이다. 또한 다양한 포맷의 데이터를 로드할 수 있어 매우 편리한 것 같다. array-based 데이터, ngs 데이터, annotation 데이터 모두 로드할 수 있다고 한다.


1. 다운로드


http://www.broadinstitute.org/software/igv/download

실행은 다운받은 폴더에서 igv.bat 을 실행하면 된다.


2. reference fasta 파일 로드


Genomes - Load Genome From File을 통해 reference file을 로드한다. 필자는 hg19 13번 염색체 fasta 파일을 로드하였다.


3. bam 파일 로드


File - Load from File에서 bam 파일을 로드한다. 이 때 bam 파일 인덱스 파일도 필요하다. IGV에서 로드하기 전에 samtools를 통해 bam 파일의 인덱스 파일을 만든다. bam 파일은 reference 에 mapping된 시퀀스 데이터를 나타내주기 때문에 이처럼 reference 파일과 같이 로드해야한다. bam 파일은 ENCODE 데이터 중에서 아무거나 가져와서 로드했다. 용량은 91.6Mb 정도 됐던 것 같다.





둘 다 로드를 완료하면 위 화면과 같이 나온다. 매핑된 부분이 옅은 회색으로 나오는 것을 볼 수 있다. 짙은 회색은 coverage를 나타낸다. bam 파일에는 어떤 reference 데이터에 매핑되어있는지를 이름으로 나타 내는데 만약 이 이름이 다르다면 bam 파일을 로드할 수 없다. 예를 들어, 앞서 로드한 reference fasta 파일의 >chr13 부분을 다르게 변경하면 bam 파일을 로드할 수 없다. 왜냐하면 bam 파일에는 chr13이라는 이름으로 align 되어있기 때문이다. 이 데이터는 ENCODE에서 받았는데 시퀀스가 이어져있지않고 조각조각 흩어져있다. "특정 기능" 을 하는 부분만 시퀀스 된 정보로 볼 수 있다. 저 회색 부분에 마우스를 올려보면 아래와 같은게 뜬다.



이는 그 리드의 기본적인 정보(이름, 길이)와 reference sequence에 매핑된 위치와 CIGAR 정보를 나타내준다.



참고

TreeGenes_IGV_Tutorial.pdf


반응형

'Domains > Bioinformatics' 카테고리의 다른 글

Chip-seq 데이터를 통한 binding motif 분석 [rGADEM]  (0) 2018.01.13
Variant calling 이란?  (0) 2017.11.20
Sam File  (0) 2017.10.16
K-MERS 란  (2) 2017.10.12
Chip-seq 관련 정리 - 데이터 받기  (1) 2017.10.07

Domains/Bioinformatics

Sam File

2017. 10. 16. 02:46
반응형

Sam File


sam file은 시퀀스 정보를 저장하는 파일이다. 근데 fasta 포맷처럼 시퀀스가 일렬로 쭉 나열되 있는 것이 아니라 reference 시퀀스에 align된 시퀀스를 저장한다. 그래서 시퀀스와 함께, 그 시퀀스가 referecne 시퀀스에 매핑된 정보를 CIGAR 포맷으로 나타낸다. 또 bam file로 변환할 수 있는데 bam file은 sam file과 같은 정보를 갖고 있지만 binary 형태로 변환된 데이터이다. sam file은 텍스트 데이터인데 이를 binary로 변환함으로써 데이터를 압축하는 효과를 나타낸다.





이것이 sam 파일의 기본적인 포맷. (https://genome.sph.umich.edu/wiki/SAM)


그리고 각각의 필드에 대한 설명은 https://en.wikipedia.org/wiki/SAM_(file_format)에 나와 있다.

반응형

'Domains > Bioinformatics' 카테고리의 다른 글

Variant calling 이란?  (0) 2017.11.20
IGV Tutorial [BAM File]  (0) 2017.10.16
K-MERS 란  (2) 2017.10.12
Chip-seq 관련 정리 - 데이터 받기  (1) 2017.10.07
dbSNP 관련 정리  (4) 2017.09.25
반응형



적절한 조합에 대한 다양한 시도가 stacking의 성능을 높일 수 있다.


http://blog.kaggle.com/2016/12/27/a-kagglers-guide-to-model-stacking-in-practice/

반응형

'Domains > Kaggle' 카테고리의 다른 글

Stacking을 위한 패키지 vecstack  (0) 2017.10.18

Domains/Bioinformatics

K-MERS 란

2017. 10. 12. 01:59
반응형

k-mer 이란


genomics에서 k-mers란 어떤 시퀀스가 주어졌을 때, 길이가 k 가능한 모든 substring의 집합이다.


위키피디아에 따르면 다음과 같다.

The term k-mer typically refers to all the possible substrings of length k that are contained in a string.


즉, 아래 시퀀스의 경우

ATCGAAGGTCGT


k=4이면 4-kmers는 아래와 같다.

ATCG  TCGA  CGAA  GAAG  AAGG  AGGT  GGTC  GTCG  TCGT


이를 이처럼 Sequence Assembly에도 활용할 수 있다.

Bioinformatics에서는 주로 k-mers가 어떤 시퀀스의 "시그니쳐" 를 나타낸다. 즉, 어떤 시퀀스에서 feature를 뽑을 때, 이 k-mers를 이용한다.

반응형

'Domains > Bioinformatics' 카테고리의 다른 글

IGV Tutorial [BAM File]  (0) 2017.10.16
Sam File  (0) 2017.10.16
Chip-seq 관련 정리 - 데이터 받기  (1) 2017.10.07
dbSNP 관련 정리  (4) 2017.09.25
NGS 분석의 기초 개념  (2) 2017.09.10
반응형