티스토리 툴바


/*
 * http://sosal.tistory.com/
 * made by so_Sal
 */

Bioinformatics.



단일염기 다형성 (SNP) 의 정의?


SNP(Single Nucleotide Polymorphism): 단일 염기 다형성.

DNA sequence에서 각 염기에 나타나는 일반적인 돌연변이로, 유전체에서 인종, 개인차, 질병 등을 가져오게 되는 부분입니다.

DNA 염기순서가 개체 사이에서 500 ~ 1,000개 염기 당 1개 정도 나타나며,
이런 미세한 차이에 의해 유전자의 기능이 달라질 수 있습니다.

이런 것들이 유전적인 개인차를 알아내는 유력한 단서가 되며,
인간의 개놈에는 약 300만개의 SNP가 존재한다고 합니다.

 


RFLP(Restriction fragment length polymorphism)은 특정한 염기배열을 인식하여 절단하는 제한효소로, DNA 유전자를 절단하였을 때, 절단된 유전자의 길이가 개인에 따라 다양하게 나타나는 현상을 이야기합니다.


약 1,000개의 염기마다 나타나는 SNP에 의해 RFLP를 이용하여 개인차를 판별할 수 있습니다.
이것은 유전자의 SNP를 판별할 ‘마커’ 라고 부르는데,
RFLP 마커 뿐만 아니라 HRM, Microsatellite 등 마커의 종류는 굉장히 많습니다.


SNP 빈도는 한 위치의 염기에서 얼마만큼의 확률로 다형성이 존재하는지를 뜻합니다. 많은 사람들의 DNA에서 특정한 SNP를 조사하여 그 빈도를 통계적으로 추정하는 것입니다. 예를 들어, 다수의 사람이 어떤 위치에서 A라는 염기를 가지고 있었는데, 10%의 사람만이 G 염기를 가지고 있다고 한다면, SNP 빈도는 10%이라고 추정할 수 있다는 것입니다.

 


서로 다른 SNP 간의 linkage disequilibrium?

염색체의 서로 다른 유전자 위치에서 관측되는 대립유전자들 간에 존재하는 특정한 연관관계는 멘델의 유전법칙을 어긋나게 하는 요인인데, 바로 이것을 연관불평형이라고 말한다. 일반적으로 이 수치가 |D’| > 0.8인 경우에 두 SNP는 강한 연관관계가 있다고 판단한다. 아래 D는 다음과 같이 정의한다.

 


출처: SNP데이터 분석방법

 


연관성 분석 (association analysis)

연관성 분석(Association analysis)은 데이터들 내에 존재하는 특징 및 샘플 사이의 연관성을 찾아내기 위해 하는 것으로, 데이터들을 분석하는 Data mining 기법들 중 하나입니다. 아래 3가지의 평가 기준을 이용하여 실제 데이터의 연관성을 분석합니다.

1. 지지도(support): 전체 데이터 수에 대한 연관 데이터의 수.

2. 신뢰도(Confidence): 연관된 샘플중 한가지 데이터 수에 대한 연관 데이터의 수 
   ( Support(X,Y)  /  Suppot(X) )

3. 향상도(Lift): 두가지 항목이 독립적인지 아닌지 판단하는 측도. 
   Lift(X,Y) = P(X || Y) / P(X) * P(Y) = Confidence(Y) / P (B). 

   이 값이 1이라면, X, Y데이터는 서로 독립이다. (1보다 크면 양의 연관성, 1보다 작으면 음의 연관성)

 


이러한 연관성 분석은 시장 분석에서부터 이 문제에서 우리가 수행하고자 하는 SNP와 사람의 특성관계까지도 수치화 할 수 있는데, support, confidence, lift 수치를 구하여 분석하는 것입니다.

Support수치가 분석하고자 하는 연관 규칙이 데이터 집합에 얼마나 자주 적용할 수 있을지를 알려주고, Confidence 수치가 데이터들의 연관되어있는 정도를 나타내주며, Lift 수치를 기준으로 우리가 판단하고자 하는 데이터의 연관성이 데이터들의 무작위적인 추측에 비해 얼마나 더 우수한가를 판별해주는 기준이 됩니다.



틀린 내용이 있다면 지적해주세요. 감사합니다

저작자 표시 비영리 변경 금지
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */





1회 전국 대학생 바이오 컴퓨팅 대회에서 우수상을 수상했습니다.

참가자가 무지 많거나, 대회 규모가 크진 않았지만

기분 좋네요 ㅠㅠ


저작자 표시 비영리 변경 금지
Posted by sosal

댓글을 달아 주세요

  1. 하얀무 2012/01/16 01:05  댓글주소  댓글쓰기 수정/삭제

    오 축하드립니다. 대단하시네요..

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */



DNA 염기서열을 이용하여
최종 만들어질 Protein을 구하는 프로그램을 만들 때
구현해봤던 함수입니다.


char translation(string input){
char RET;
switch(input[0]){
case 'A':
switch(input[1]){
case 'A'://AA
switch(input[2]){
case 'A':
case 'G':
RET='K';
break;
case 'C':
case 'T':
RET='N';
break;
}
break;
case 'C'://AC
switch(input[2]){
case 'A':
case 'G':
case 'C':
case 'T':
RET='T';
break;
}
break;
case 'G'://AG
switch(input[2]){
case 'A':
case 'G':
RET='R';
break;
case 'C':
case 'T':
RET='S';
break;
}
break;
case 'T'://AU
switch(input[2]){
case 'G':
RET='M';
break;
case 'A':
case 'C':
case 'T':
RET='I';
break;
}
}
/////////////////////
break;
case 'C':
switch(input[1]){
case 'A': //CA
;
switch(input[2]){
case 'A':
case 'G':
RET='Q';
break;
case 'C':
case 'T':
RET='H';
break;
}
break;
case 'C': //CC
switch(input[2]){
case 'A':
case 'C':
case 'G':
case 'T':
RET='P';
break;
}
break;
case 'G': //CG
switch(input[2]){
case 'A':
case 'C':
case 'G':
case 'T':
RET='R';
break;
}
break;
case 'T': //CU
switch(input[2]){
case 'A':
case 'C':
case 'G':
case 'T':
RET='L';
break;
}
}
break;
case 'G':
switch(input[1]){
case 'A': //GA
switch(input[2]){
case 'A':
case 'G':
RET='E';
break;
case 'C':
case 'T':
RET='D';
break;
}
break;
case 'G': //GG
switch(input[2]){
case 'A':
case 'G':
case 'C':
case 'T':
RET='G';
break;
}
break;
case 'C': //GC
switch(input[2]){
case 'A':
case 'G':
case 'C':
case 'T':
RET='A';
break;
}
break;
case 'T': //GU
switch(input[2]){
case 'A':
case 'G':
case 'C':
case 'T':
RET='V';
break;
}
break;
}
break;
case 'T':
switch(input[1]){
case 'A': //UA
switch(input[2]){
case 'A':
case 'G':
RET='0';
break;
case 'C':
case 'T':
RET='Y';
break;
}
break;
case 'G': //UG
switch(input[2]){
case 'A':
RET='0';
break;
case 'G':
RET='W';
break;
case 'C':
case 'T':
RET='C';
break;
}
break;
case 'C': //UC
switch(input[2]){
case 'A':
case 'G':
case 'C':
case 'T':
RET='S';
break;
}
break;
case 'T': //UU
switch(input[2]){
case 'A':
case 'G':
RET='L';
break;
case 'C':
case 'T':
RET='F';
break;
}
break;
}
}
return RET;
}
저작자 표시 비영리 변경 금지
Posted by sosal

댓글을 달아 주세요


제 1회 전국 대학생 Biocomputing 경진대회
분류   생물학관련 모든 분야
주관   한국생물정보시스템생물학회 (KSBSB)
날짜   2011.10.01
장소   KAIST 정문술 빌딩
교육비   무료
문의처 seokjongyu@gmail.com
URL   http://biosoft.kisti.re.kr/bcc2011
첨부파일 1   BCC2011_Poster.jpg (626.12 KB)

경진대회 목적

생물정보분석에대한 공지된 문제를 관련 소프트웨어를 활용하여 해결함으로써
융합연구에 대한 인식을 재고하며, 대학생들의 성취의욕 고취하고자 함.

경진대회 내용

주어진 바이오.의료.헬스 분야의 컴퓨팅 문제해결
예선: 문제해결 제안서 평가를 통해 본선 진출팀 결정
본선: 자신이 개발한 방법을 사용하여 대회 당일 경진

대회일정

  • 경진대회 문제 공지 : 2011년 6월 11일
  • 제안서접수 : 2011년 8월 15일
  • 본선 진출자 공고 : 2011년 8월 31일
  • 경진대회 : 2011년 10월 1일

본선 행사장

KAIST 정문술 빌딩

수상내역

  • 대상 : 300만원 (1팀)
  • 최우수상 : 100만원(1팀)
  • 우수상 : 40만원 (2팀)
  • KISTI상 : 20만원 (4팀)

참가대상자

대학생 2인 1팀 구성




저작자 표시 비영리 변경 금지
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */

Bioinformatics.
생물정보학 수업을 들으면서 가장 재미있었던 sequence alignment 관련 내용입니다. 

1. Global alignment vs Local alignment

 서열분석의 목적은 관심 있는 서열의 유사점과 차이점을 분석하여 염기와 아미노산 수준에서 서열간의 구조적 기능적 및 진화론적 관련성을 추론하려는 것입니다.


Figure 2.1


Dynamic programming(DP) : 두 개의 염기서열에 대해서 정렬하기 위해 사용되는 알고리즘.

이러한 방법은 두 개의 서열 사이에서 Optimal aliment를 구해줍니다. Optimal alignment는 두 개의 sequence에 대해서 matched, mismatched character와 gap을 가지게 됩니다. 

 Global and local alignment : 두 가지 형태의 서열 정렬은 똑같이 DP 알고리즘을 사용하여 matrix를 만듭니다. 이 matrix는 ‘figure 1.1’ 점화식을 사용하여 만들어집니다. 하지만, global, local alignment의 차이점은 아래와 같습니다..


Global alignment: trace back은 항상 matrix의 끝에서 시작한다.
Local alignment: trace back은 matrix 안에 있는 가장 큰 값에서부터 시작한다. Matrix에 음수는 존재할 수 없다.

  

2. scoring matrix: Blosum62 matrix


Substitution matrix: 2개의 sequence를 비교할 때, 모든 경우의 수에 해당되는 염기쌍에 대해 score를 나타내는 표입니다. Protein 서열에는 여러 가지 amino acid가 있는데, 단순한 alignment로는 어떻게 배열하는 것이 더욱 비슷한 서열, 성질, 구조를 갖게 되는지 알지 못합니다. 따라서 우리는 모든 염기쌍에 대해 점수를 부여해야만 하는데, 서열 속에 나타나는 기대빈도수, 그리고 중요성에 따라 차별화 하여 점수를 줍니다.

Blosum62 (BLOcks of Amino Acid SUbstitution Matrix) 는 특히 protein sequence에 해당하는 substitution matrix입니다. 이 matrix 안에 해당되는 score는 Amino Acid 쌍의 relative frequencies, substitution probabilities에 기반합니다. 이것은 Gap을 포함한 총 21개의 아미노산 쌍에 대해 Log-odds score를 계산하여, 2by2 table 형식으로 나타낸 표입니다.

 


Figure 2.2

출처: http://en.wikipedia.org/wiki/BLOSUM

 

 
3. Alignment의 결과인 유사도와 계통수(phylogenetic tree)를 결정법

유사도: Alignment의 결과로 얻은 가장 정렬이 잘된 2개의 sequence에 대한
‘동일한 염기들의 수’ / ‘전체 염기의 길이‘ 를 계산한 값.
계통수: 생물의 유연관계와 관련된 분류학적 계급을 나뭇가지처럼 표현한 그림.

 
우리는 각 sequence에 해당되는 table을 구할 수 있습니다.

 


Figure 2.3. 개별 sequence와 유사도 테이블    Figure 2.4. 계통수(phylogenetic tree)의 예


유사도 테이블을 이용하여, 각 sequence끼리 그룹을 지어가는 형태로는 다음의 방법을 이용합니다.
Hierarchical Clustering: 계층적 트리를 만들기 위해 사용하는 Cluster analysis방법중 하나입니다.

수치가 유사도일 경우, 서로 높은 유사도를 가지는 것과 (거리라면, 가까운 거리)
그룹을 지어가며 tree를 구성하는 것입니다.

 


Figure 2.5. 유사도 테이블과 계통수(phylogenetic tree)의 예.  



 

저작자 표시 비영리 변경 금지
Posted by sosal

댓글을 달아 주세요

/*
 * http://sosal.tistory.com/
 * made by so_Sal
 */

 

Central dogma:
유전정보는 DNA상의 염기배열에서 상보적 염기배열을 가지는 mRNA로 옮겨져, 다시 ribosome위에서 단백질의 아미노산 배열로 전달된다는 한 방향의 흐름이 있음. Crick는 이 유전정보 전달의 흐름을 생물의 일반적 원칙으로서 central dogma 라 부르게 함.
                                               /Naver 지식사전


1) Shotgun: DNA 서열분석 방법 중 하나

 분석하려는 대상이 되는 유전체를 여러 개 준비하여 각각에 대해 무작위 적으로 2,000 bp, 10,000 bp크기만큼 잘라, 그 서열들을 plasmid에 삽입하여 clone library를 만든 후, 모든 부분 서열에 대해 양쪽으로 500bp 만큼 해독하여 데이터를 저장하는 방식입니다. 이 데이터는 분석하려는 유전체의 여러 copy를 분리하였기 때문에 해독된 염기서열들은 서로 overlab(겹치는?) 되는 성질을 가집니다. 따라서 pairwise comparison을 통해 각 fragment를 조합하여 원래의 유전체 염기서열을 구하는 방법이 바로 Shotgun sequencing 방법입니다.

 

2) Shotgun 방법으로부터 얻은 염기서열들을 조합하여 원래의 DNA 서열을 알아내기 

 500bp씩 분석한 fragment의 양 끝 서열은 여러 copy에 의해 만들어진 것으로, overlab 되는 성질을 가지고 있습니다. 이 성질을 이용하여 문자열 비교 알고리즘을 각 fragment에 대해 수행하면서 이들의 조각을 맞추는 방식으로 원래의 DNA 서열을 찾아냅니다.

 


위 실험을 수행할 시 유의할 사항은 4가지를 들 수 있습니다.

1.  Incomplete coverage.

당연한 이야기지만, 모든 fragment가 전체 DNA 서열을 포괄하여야 합니다.

2.  Sequencing errors

DNA fragment를 조합하는 과정에서 base 1~2개가 잘못 읽혀지게 되면 amino acid로 decoding하는데 잘못 읽혀질 수 있으므로, 유의하여야 합니다.

3.  Repetitive DNA

overlab 되는 부위에 대한 substring들이 반복적으로 나타나게 된다면 조합할 수 있는 여러가지 경우의 수가 나올 수 있으므로, 특히 대처하기 힘든 부분이며, 조심해야 하는 부분입니다.

4.  Unknown orientation

염기를 읽을 때, 방향을 고려하지 못해 조립 (assembly) 과정에서 문제가 발생할 수 있습니다.


 

 


3)  DNA에서 단백질정보를 가지고 있는 ORF.
 

Open reading frame(ORF)은 단백질 아미노산 배열로 번역되는 DNA 염기서열을 말합니다. Start codon (ATG)으로 시작하여 Stop codon(TGA, TAA, TAG)로 끝나며, 최종적으로 protein을 구성하게 되는 coding region입니다.

        

위 그림은 원핵세포에 해당되는 유전자 구조인데, Promoter에서부터 Transcription start site – 5’ Untranslated region(UTR),

start-codon, Coding region, stop codon, 3’UTR 단계로 아주 간단하게 구성되어있습니다. (진핵생물은 더 복잡)

 Coding region이 바로 우리가 이 문제에서 궁극적으로 찾고자 하는 ‘단백질 아미노산 순서를 규정하는 유전자 영역’입니다..

이 영역을 지정해주는 것이 바로 start codon(ATG)와 stop codon(TGA,TAA,TAG) 입니다.

Promoter는 원핵생물에서 Transcription Start Site 근처의 전사를 개시하는 DNA 결합부위로, 전사를 조절하는 부위입니다. DNA를 주형으로 RNA를 합성시키는 RNA중합효소가promoter 부위에 결합하여 전사를 시작하는데, 이때 DNA 이중나선의 한 가닥만이 주형으로 이용되며, 이를 결정하는것도 promoter입니다.

 


4)  ORF의 전사(transcription), 그리고 해독(translation)


전사(transcription)는 DNA가 mRNA로 유전적 정보를 옮기는 작업입니다. ‘RNA 중합효소’가 DNA의 promoter 부분에서 DNA 이중나선 구조에서 한쪽가닥만이 해독되는데, 이때 프로모터가 두 가닥 중에서 어느 가닥이 주형으로 이용될 지 결정하게 됩니다 (방향은 5` -> 3`). 이렇게 RNA는 일반적으로 한 가닥으로 이루어져 있고, DNA가 가지는 염기중의 하나인 T (Thymine) 대신 U (Uracil) 를 갖는 것을 제외하고는 비주형 가닥과 동일한 방향성 및 염기서열을 가집니다.

 
전사된 후 RNA는 해독(translation)되기 전에 splicing 과정을 거치는데, 이것은 RNA 염기서열 중에서 intron 부위를 제거하고, exon부위를 합치는 과정을 말합니다.

 
Splicing 후에 RNA는 세포질 내 리보솜(ribosome : translation이 일어나는 장소)으로 이동하여 해독(translation)을 시작합니다.

Exon만 남은 RNA는 각 염기 3개를 하나로 묶어 codon이라고 부르는데, tRNA가 특정 아미노산을 선택하여 mRNA와 상보적인 결합을 통해 protein chain을 만들어가게 됩니다.

 


ex)
CGGGTTTCGGGCTCATGCCCTACGATGCGT
GACCGTGTTGAGAATATCGGGTTTCGGGCT
GAATATCGGGTTTCGGGCTCATGCCCTACG
TCATGCCCTACGATGCGTAACGGACTAGTA
GCTCATGCCCTACGATGCGTAACGGACTAG
GAGAATATCGGGTTTCGGGCTCATGCCCTA
GTTTCGGGCTCATGCCCTACGATGCGTAAC
GTTGAGAATATCGGGTTTCGGGCTCATGCC
CGTGTTGAGAATATCGGGTTTCGGGCTCAT
ATCGGGTTTCGGGCTCATGCCCTACGATGC
CATGGACCGTGTTGAGAATATCGGGTTTCG
TTTCGGGCTCATGCCCTACGATGCGTAACG
GTGTTGAGAATATCGGGTTTCGGGCTCATG
ATATCGGGTTTCGGGCTCATGCCCTACGAT
ATGGACCGTGTTGAGAATATCGGGTTTCGG
GACCGTGTTGAGAATATCGGGTTTCGGGCT
TATCGGGTTTCGGGCTCATGCCCTACGATG
GTTTCGGGCTCATGCCCTACGATGCGTAAC
GTTGAGAATATCGGGTTTCGGGCTCATGCC
AGAATATCGGGTTTCGGGCTCATGCCCTAC
TGTTGAGAATATCGGGTTTCGGGCTCATGC
CCGTGTTGAGAATATCGGGTTTCGGGCTCA
ACCGTGTTGAGAATATCGGGTTTCGGGCTC
TCGGGCTCATGCCCTACGATGCGTAACGGA
TCGGGTTTCGGGCTCATGCCCTACGATGCG
GTGTTGAGAATATCGGGTTTCGGGCTCATG
TCGGGTTTCGGGCTCATGCCCTACGATGCG
ATGGACCGTGTTGAGAATATCGGGTTTCGG
TTTCGGGCTCATGCCCTACGATGCGTAACG
GAGAATATCGGGTTTCGGGCTCATGCCCTA
CGTGTTGAGAATATCGGGTTTCGGGCTCAT
CATGGACCGTGTTGAGAATATCGGGTTTCG
TCGGGTTTCGGGCTCATGCCCTACGATGCG
AATATCGGGTTTCGGGCTCATGCCCTACGA
TCGGGCTCATGCCCTACGATGCGTAACGGA
ACCGTGTTGAGAATATCGGGTTTCGGGCTC
GCTCATGCCCTACGATGCGTAACGGACTAG
AGAATATCGGGTTTCGGGCTCATGCCCTAC
TGTTGAGAATATCGGGTTTCGGGCTCATGC
CATGGACCGTGTTGAGAATATCGGGTTTCG
TCGGGCTCATGCCCTACGATGCGTAACGGA
TTGAGAATATCGGGTTTCGGGCTCATGCCC
ATCGGGTTTCGGGCTCATGCCCTACGATGC

 

DNA 조각으로 부터, fragment 조합 프로그램을 통해

CATGGACCGTGTTGAGAATATCGGGTTTCGGGCTCATGCCCTACGATGCGTAACGGACTAGTA
를 얻는다.

ORF를 분석하여 실제 protein이 될 DNA 서열을 찾는다.

CATGGACCGTGTTGAGAATATCGGGTTTCGGGCTCATGCCCTACGATGCGTAACGGACTAGTA

찾은 Exon을 이용하여 Protein을 완성한다.

MTVLRISGFG


(이렇게 짧은 Protein은 사실 거의 존재하지 않습니다만..)

Fragment로부터 DNA서열을 복원하고,
DNA서열에서 ORF를 찾아 실제 Protein으로 번역하는 과정이었습니다.




잘못된 내용이 있다면 댓글로 지적 부탁합니다 ^^

 

저작자 표시 비영리 변경 금지
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */


Thread는 CPU-utilization의 기본 단위이다.
Program counter, register set, stack, thread ID로 구성되어있다.
하나의 프로세스에 다양한 스레드가 붙어있으며, 그 스레드들은 프로세스의
code section을 공유한다. 즉 프로세스에서 새로운 스레드로 실행하고자 하는 루틴을
함수 형태로 지정하여 스레드를 생성하게 되는데, 그때 공유하는 code section이 바로 함수이다.




코드 전영역을 공유하지 않고, 지정된 함수만 받아 사용한다는 것.

이 스레드는 유저의 어플리케이션에서 멀티프로그래밍을 위해 사용되기도 하지만
서버에서 다양한 client들에게 thread를 새로 생성하여 리소스를 제공한다.
특히 웹서버의 데이터베이스 접근 등에 스레드 풀들 많이 사용한다. (아래 그림)


 

The benefits of multithreaded programming

1. Responsiveness.
어떤 루틴을 실행하는 동시에 원하는 영역을 동시에 실행할 수 있다.

2. Resource sharing.
각 스레드마다 전역변수 혹은 포인터 등을 공유할 수 있게 되는데,
멀티 프로세스 프로그래밍이 필요할 때 훨씬 더 경제적인 방법으로 이를 수행할 수 있게된다.

3. Economy.
스레드는 프로세스 안에 속해있기 때문에, 운영체제에 의해 관리되어질 필요가 없다.
즉 관리 대상이 프로세스 이므로, multi-executing이 더욱 빠르고 경제적이다.

4. Scalability
Single-threaded process는 비록 프로세서가 다수일지라도 오직 하나의 루틴만 실행할 수 있다.
하지만 멀티스레딩은 병렬성을 더욱 증가시킨다.


Many - to - One model.



Many-to-One model은 user-level의 많은 thread들을 하나의 커널 thread로써 관리한다.
이것은 커널이 관여하지 않는 사용자단 멀티 스레딩 기법이다.
따라서 시스템 입장에서는 매우 효율적인 방법이다.
하지만 하나의 커널 스레드에 달려있는 프로세스이기 때문에,
실행되고 있는 thread 들이 block 등을 건다고 하면 프로세스 전체가 멈출 위험이 있다.




One-to-One model.



이경우는 커널이 하나의 프로세스의 모든 스레드를 관여하는 방법이다.
운영체제에서 정밀하게 관여해주기 때문에 user단의 multi-threading인 Many-to-One 기법보다
훨씬 concurrency(동시에 실행) 하며, 한 스레드가 다른 스레드의 실행을 block하거나 하는 경우가 없다.
하지만 스레드를 만듬과 동시에 시스템콜이 실행되어야 하기 때문에
운영체제의 퍼포먼스가 조금 떨어질 수 있다.



Many-to-Many model.



Many-to-One 과 One-to-One 의 중간 형태로,
One-to-One만큼 완벽한concurrency는 가지지 않지만
보다 효율적으로 리소스르 사용하기 때문에, 부담없이 thread를 만들 수 있다.
역시 병렬 멀티 프로세서에서 실행 가능하며,
Many-to-One처럼 스레드가 전체 프로세스를 block 시킬 위험도 없다.


To-level model.


여러가지 형태의 스레딩 모델을 사용하는 방법.

참고도서 : Operating system concepts - 8th edition. Silberschatz, Galvin, Gagne.

저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

Multithreading models  (0) 2011/03/22
File system-call assignment.  (3) 2011/03/16
Operating system 기본 개념.  (0) 2011/03/08
DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */

파일구조론 Assignment1. 발표자료였습니다.

 The programming of  Basic  file system-call.

1st
Input file name, and make file.
Save the content written by user in the file.
If user enter the buffer “The end”, then end the program.

2nd

Input  2 files name, and make file1, file2.
Save the content written by user in the file.
If user enter the buffer “The end”, then end the program.
Append the content on the file2.
Repeat 1-4 level.  ( quit  option added in level1.)


 

Assignment 1.



The source code of program.

fcntl.h : Header file
                  To use file system call.

Open( buffer, O_WRONLY | O_CREAT, 00644);

File name: contents of ‘buffer’.

FD attribute:  O_WRONLY,O_CREAT
only writing mode.
unless file exists, make the new file.

Permission:  r w - | r - - |  r - -

write( fd,  buffer, strlen(buffer));

Write contents of the buffer on the file which 'fd' point

 

Assignment 2.



Source code, and annotation.

Rewind : return FD to fisrt side of file

Memset : Initialize the buffer.

저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

Multithreading models  (0) 2011/03/22
File system-call assignment.  (3) 2011/03/16
Operating system 기본 개념.  (0) 2011/03/08
DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
Posted by sosal

댓글을 달아 주세요

  1. Custom Assignment Writing 2011/06/08 04:37  댓글주소  댓글쓰기 수정/삭제

    yes...:) great work ! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post

  2. law thesis proposal 2012/04/24 22:50  댓글주소  댓글쓰기 수정/삭제

    I am searching for my search of my law topics ... thanks for the post it just make me smile

/*

 http://sosal.tistory.com/
 * made by so_Sal
 */

* Bioinformatics의 정의

Bio – 생물학
Informatics – 전산학
Bioinformatics – 전산학, 통계학적인 기술들을 이용하여 생물학에서 발생하는 문제들을 해결하는 분야

* 이번 포스트에서 다룰 단어들
1. Chromosomes 염색체
2. DNA - deoxyribonucleic acid
3. Gene and genome
4. RNA
5. Synthesis of protein 단백질합성
6. Exon , intron
7. Codon / RNA 암호 기본단위





1. Chromosomes - 염색체



위에 있는 그림은 세포막 속의 여러 개의 소 기관들을 나타냅니다.

Nucleus : 핵. 핵속에 Chromosomes이 보이네요.
오른쪽밑에 미토콘드리아도 보이네요.
염색체는 핵 내에 있습니다, 염섹체는 23쌍으로 총 46가지가 존재하며,
각각의 염색체를 chromatic 이라고 함니다.



순서는 긴 염색체일수록 순번이 높습니다.
즉 염기의 수가 가장 많은 염색체는 1번입니다.
23번 X,Y 사람의 성을 결정하는 염색체는 크기순이 아닙니다.
(그림에서 보이듯 X가 Y보다 큽니다.)





염색체는 DNA로 구성되어 있습니다.
사람 세포속의 DNA는 약 2m입니다.
인간은 대략 32억개의 DNA로 구성되어 있습니다.
사람 몸속에 있는 모든 DNA의 총 길이 합은 2 * 10 ^11 km 입니다.
지구와 달 사이의 거리의 약 1333배 라고 하네요.

염색체는 위 그림에서 보듯, 염기로 이루어진 2개의 선에 의해
나선형으로 아주 매우 compact하게 꼬여있는 구조를 가지고 있습니다.


2. DNA : Deoxyribonucleic acid.
Deoxy : 탈산소의. 라는 뜻



DNA는 Nucleotide로 구성되어 있습니다.



Nucleotide의 구조.
Nucleotide = Sugar + Phosphate + Nitrogenous base
Nucleotide는 모두 같은 Sugar, Phosphate (당인산, 둘을 합쳐 backbone) 으로 구성되어있고,
4가지 종류의 Nitrogenous base 에 따라 달라집니다.
- 2중 나선형 구조

A : Adenine : 항상 Thymine과 결합.
C : Cytosine : 항상 Guanine과 결합
T : Thymine : 항상 Adenine과 결합
G : Guanine : 항상 Cytosine과 결합.

즉 A-T, C-G 는 항상 쌍으로 존재하게 되는데, 이를 '상보적인 결합' 이라고 한다.


* DNA 복제



자신과 같은 모습의 새로운 DNA 복제.
2중 나선구조를 풀어버리면 이전과 같은모습의 DNA 서열이 2개가 된다.
A,G,C,T 각각은 항상 정해진 Nucleotide와 결합하기 때문에 (A-T, C-G)
똑같은 모습으로 복제가 된다.


3. Gene - 유전자, Genome - 유전체




Gene : 유전자
 - Fundamental unit of heredity
 - 단백질 합성하는데 필요한 정보들을 포함한다.
 - Genome의 일부이다.

Genome : 유전체
 - 생명체가 갖는 전체 DNA 집합.


4. RNA : Ribonucleic acid. (DNA에서 Deoxy가 빠졌다.)

* Transcription 전사
RNA polymerase [RNA중합효소]는 DNA를 주형으로 RNA을 합성하는 효소이다.
Nucleotide간에 인산이 에스테르결합을 형성하여 긴 사슬모양의 RNA를 만든다.
// rRNA는 인과 세포질에서, mRNA는 핵에서, tRNA는 세포질에서 만들어진다.
// 원형질에서 핵을 제외한 나머지 부분.

DNA는 A - C - G - T 4개의 염기로 구성되어있지만
RNA는 A - C - G - U 4개의 염기로 구성된다.
여기서 U는 Uracil.

* mRNA : Messenger RNA
DNA에서 gene을 전사(transcription)하여
세포내에서 단백질을 합성하는 기관인 ribosome에 정보를 전달한다.
* ribosome : 단백질이 만들어지는 기관

* tRNA : Transfer RNA
Ribosome이 아미노산을 만들 때, mRNA와 아미노산 사이의 adaptor 역할을 한다.



5. Synthesis of protein

(ribosome : 단백질을 만드는 기관)

DNA->RNA->Protein 과정을 central dogma, 혹은 Gene expression (유전자 발현)
이라고 부른다.




위 그림을 보면 DNA에서부터 단백질이 되는 과정을 간단하게 볼 수 있다.

염색체들은 핵 내에 존재하며, 그 염색체들은 DNA로 이뤄져 있다.
2중 나선형 구조로 이루어진 DNA가 풀리면서 복제가 일어나고
그것들이 transcription(전사)하여 mRNA 혹은 tRNA가 된다.

tRNA는 자유로운 아미노산과 결합하여 Ribosome에서 자신과 맞는 mRNA와 결합하여
protein sequence를 만들어낸다.

* Exon and Intron

Exon : 최종적으로 단백질로서 발현하는 유전자의 배열부분
Intron : 유전정보를 가지고 있지 않아서 단백질을 만들지 못하는 DNA 영역

32억 개의 염기쌍 중에 유전자에 포함되는 부분 (Exon)은 극히 적다.
수많은 DNA중 Exon만이 단백질 번역에 사용된다.



DNA(ACGT) -> Transcription -> RNA(AGCU) -> splicing -> Exon만이 남는다.
이렇게 만들어진 mRNA -> tRNA와 아미노산과 결합 -> protein.


* Codon

tRNA는 3개의 Nucleotide (혹은 Nucleic acid)와 결합한다.
우리는 이 3개의 Nucleotide를 묶어 codon이라 부른다.



Nucleotide는 A-C-G-U로 총 4종류가 있는데,
이들이 3개 모이는 경우의 수는 4*4*4 총 64가지이다.

따라서 쉽게 codon은 64가지라고 생각할 수 있는데,
codon으로부터 선택되는 아미노산의 종류는 20개밖에 되지 않는다.
아니 아미노산의 종류 자체가 20개밖에 없다.

그 이유는, 각 다른 조합의 codon일지라도 같은 아미노산과 결합하는 경우가 있기 때문이다.
아래 표를 보자.




1st - 2nd - 3rd 순으로 nucleotide를 읽는데,
UAA, UAG, UGA = STOP codon,
AUG = Met = Start codon 정도는 알아두는게 좋다.

AUG 코돈 배열은 단백질 서열의 시작이고,
UAA, UAG, UGA 는 단백질 서열의 끝이라고 생각하면 된다.

sperm whale myoglobin 으로 예를 들어보자.
http://www.ncbi.nlm.nih.gov 사이트에서 nucleotide 로 검색하면
첫번째에 바로 sperm whale myoglobin의 nucleotide 정보가 뜬다.

그곳의 정보를 보자.

LOCUS       SYNWHLMG                 507 bp    DNA     linear   SYN 27-APR-1993
DEFINITION  Sperm whale synthetic myoglobin gene, complete cds.
ACCESSION   J03566

....
.... <중략>
....
FEATURES             Location/Qualifiers
     source          1..507
                     /organism="synthetic construct"
                     /mol_type="genomic DNA"
                     /db_xref="taxon:32630"
     CDS             34..498
                     /note="synthetic myoglobin"
                     /codon_start=1
                     /transl_table=11
                     /protein_id="AAA72199.1"
                     /db_xref="GI:209564"
                     /translation="MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKF
                     DRFKHLKTEAEMKASEDLKKHGVTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPI
                     KYLEFISEAIIHVLHSRHPGNFGADAQGAMNKALELFRKDIAAKYKELGYQG"
ORIGIN      5 bp upstream of PstI site.
  1 ctgcagataa ctaactaaag gagaacaaca acaatggttc tgtctgaagg tgaatggcag
 61 ctggttctgc atgtttgggc taaagttgaa gctgacgtcg ctggtcatgg tcaggacatc
121 ttgattcgac tgttcaaatc tcatccggaa actctggaaa aattcgatcg tttcaaacat
181 ctgaaaactg aagctgaaat gaaagcttct gaagatctga aaaaacatgg tgttaccgtg
241 ttaactgccc taggtgctat ccttaagaaa aaagggcatc atgaagctga gctcaaaccg
301 cttgcgcaat cgcatgctac taaacataag atcccgatca aatacctgga attcatctct
361 gaagcgatca tccatgttct gcattctaga catccaggta acttcggtgc tgacgctcag
421 ggtgctatga acaaagctct cgagctgttc cgtaaagata tcgctgctaa gtacaaagaa
481 ctgggttacc agggttaatg aggtacc


위에서 sperm whale myoglobin 의 nucleotide 정보를 상세히 볼 수 있다.
DNA sequence를 살펴보면 CDS : 34 ~ 498 을 볼 수 있는데,
이부분이 실제로 단백질과 합성이 될 때 사용되는 부분이다.

위 DNA가 RNA로 변하면서, Thymine 은 Uracil로 바뀌어,
첫부분 빨간색 atg는 aug로, 마지막 taa는 uaa로 바뀌게 된다.
실제로 aug와 uaa는 각각 start codon, stop codon이다.
위 예에서 보듯 start codon, stop codon의 역할을 반드시 숙지하자!

참고)
http://www.ebi.ac.uk/Tools/emboss/transeq/
이사이트의 transeq라는 프로그램은 Nucleotide sequence를
protein sequence로 바꿔주는 프로그램이다.



참고서적: Bioinformatics - A practical guide to the analysis of genes and proteins 3rd. WILEY
                                     Edited by Andreas D. Baxevanis, B.F. Francis Ouellette.
            : 인하대학교 한경숙 교수님 bioinformatics 강의자료

저작자 표시 비영리 변경 금지
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */

Computer system은 4개의 구성요소로 나눌 수 있다.
1. Hardware.
2. Operating system.
3. Application program.
4. Users. ( machine user도 포함한다.)



이렇게, Operating system은 User가 hardware에 쉽게 접근하도록 도와주는 역할을 한다.

Definition : A program that acts as an intermediary between a user of computer and hardware.

OS는 굉장히 작게 시작하여 점점 내용들이 덧붙여졌는데, 앞으로도 어떻게 더욱 커질지는 알 수 없다.
따라서 정확히 정의되지 않고, 책 혹은 사전마다 정의가 다르다.





OS is a resource allocator.
여기서 resource는 computer hardware를 말하는데,
프로세스들이 hardware를 점거하기 위해 os에 요청을 보내면,
효율적이고 공정하게 프로세스에게 resource를 사용하도록 허가하는 역할을 한다.

OS is a control program.
컴퓨터의 에러나 잘못된 resource 사용으로부터 보호해주는 controller 역할을 한다.




그림 : A modern computer system.

Resource를 사용하기 위해 사용자는 OS에게 operation을 요청하는데,
모든 operation은 memory를 거치게 된다.
CPU는 직접 접근할 수 있는 메모리는 RAM밖에 없다. (Cache는 예외)
프로세스는 자신의 모든 Instruction, Data를 RAM에 올려놓고 CPU에게 제어를 맡긴다.

하나의 CPU로는 하나의 프로세스 instruction set을 실행할 수 밖에 없는데,
이때 OS는 concurrent한 작업을 수행하기 위해 multiprogramming 과 time-sharing 2가지 방법을 쓴다.

Multiprogramming
CPU가 하나의 프로세스를 실행하는데, 프로세스가 대기상태를 가지게 되면 ( I/O 작업 등에 의한)
다른 프로세스의 루틴으로 switch 하게된다.

Timesharing
각 프로세스마다 시간을 부여해서 계속 switching 하는 방법이다.
respnse time의 단위는 매우 짧다.

Context switch
대기상태의 프로세스가 CPU를 점거하려 할 때,
현재 실행되고있는 프로세스의 Register set들을 저장한 후
자신의 Register set을 CPU에 적재한 후 실행상태로 바꾸는 과정


Context switch 과정에서 interrupt가 발생한다.

Interrupt
Service routine을 바꿔주는 신호.
프로세스가 인터럽트 신호를 받게되면
현재 실행되는 instruction의 Program counter는 저장되어
다시 CPU 제어권을 찾았을 때 이전에 실행하던 위치부터 다시 실행된다.





DMA : Direct Memory Access
I/O 가 Resource를 굉장히 많이 사용하는데, CPU가 메모리 싸이클을 중재해주기 때문이다.
Device와 Memory가 직접 연결되어있으면 항상 CPU를 거쳐야 하는 비효율적 구조를 극복할 수 있다.

Symmetric Multiprocessing, Dual-core design



경재적인 이유 때문에, 대부분 dual-core를 사용한다.



User-mode, Kernel-mode

System-call
OS에서 지원하는 함수들로 User가 하드웨어에 직접적으로 접근할 수 있는 권한을 얻는 유일한 방법.



read, write, unlink, rmdir 등, 하드에 파일을 새로 만들거나 읽는 하드웨어 접근을 하기 위해서는
운영체제에 권한을 얻어야 한다. 이렇게 권한을 둔 이유는 보안상 이유때문이며
일반유저가 하드웨어에 직접적으로 접근하는 유일한 수단이기도 하다.


참고도서 : Operating system concepts 8th edition. - Wiley
               Abraham Silberschatz, Peter B. Galvin, Greg Gagne.

저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

Multithreading models  (0) 2011/03/22
File system-call assignment.  (3) 2011/03/16
Operating system 기본 개념.  (0) 2011/03/08
DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
Posted by sosal

댓글을 달아 주세요