반응형

Synteny Circos plot 그리기.




2017/08/23 - [bioinformatics] - SyMap 설치 및 실행하기

2017/08/15 - [bioinformatics] - Circos plot 그리기.


두 프로그램을 사용하여 synteny circos plot을 그려보고자 한다.



SyMap에서는 


symap결과는 align이 끝난 뒤 SyMAP Queries 로 들어가 받을 수 있는 CSV 파일을 쓴다.


받을 때 반드시 Select columns에 가서 각 assembly의 start와 end를 체크해서 block의 시작과 끝을 다운받는다.


이제 csv 파일을 circos의 link 포맷으로 바꿔야 하는데 link의 포맷은 아래와 같다.


...
hs1 100 200 hs2 250 300
hs1 400 550 hs3 500 750
hs1 600 800 hs4 150 350
...


assembly1 start1 end1 assembly2 start2 end2


의 양식으로 바꾸면 된다. 여기서 assembly1과 assembly2는 당연히 circos의 karyotype을 설정할 때 넣어줬던 이름과 같아야한다.


또한 link의 개수가 25000개를 넘어가면 너무 많다는 경고와 함께 너무 많은 링크는 해석하기 어려울 것이라고 하면서 실행되지 않는다. 


  but the maximum is currently set at [25000]. To increase this number change

  max_links in etc/housekeeping.conf. Keep in mind that drawing that many links

  may create an image that is too busy and uninterpretable.


etc/housekeeping.conf에서 변수 조절 할 수 있으나 별로 추천하지 않는다. 차라리 block의 사이즈에 제한을 두고 link의 개수를 줄이는 것이 좋다.



Circos에서는 configure파일을 조정해줘야 하는데


1. 두 assembly의 karyotype을 모두 불러오기.

2. 위의 파일을 불러오기.

3. color, orientation 조절하기.


등을 모두 설정하면 아래와 같은 그림을 그릴 수 있다.




실제로 위의 그림을 그릴 때 사용한 옵션은 각각


1.


karyotype = circos/circos-0.69-/data/karyotype/assembly1.txt,circos/circos-0.69-3/data/karyotype/assembly2.txt


2.


<links>


<link>

ribbon = no

file          = assembly1_to_assembly2.link

color         = black_a5

radius        = 0.95r

#bezier_radius = 0.1r

thickness     = 1

</link>


</links>


3. 


chromosomes_order = assemblya1,assemblya2,assemblya3,assemblya4,assemblya5,assemblya6,assemblya7,assemblya8,assemblya9,assemblya10,assemblya11,assemblya12,assemblya13,assemblya14,assemblya15,assemblya16,assemblya17,assemblya18,assemblya19,assemblya20,assemblya21,assemblya22,assemblya23,assemblya24,assemblya25,assemblya26,assemblya27,assemblya28,assemblya29,assemblya30,assemblya31,assemblyaX,assemblybX,assemblyb31,assemblyb30,assemblyb29,assemblyb28,assemblyb27,assemblyb26,assemblyb25,assemblyb24,assemblyb23,assemblyb22,assemblyb21,assemblyb20,assemblyb19,assemblyb18,assemblyb17,assemblyb16,assemblyb15,assemblyb14,assemblyb13,assemblyb12,assemblyb11,assemblyb10,assemblyb9,assemblyb8,assemblyb7,assemblyb6,assemblyb5,assemblyb4,assemblyb3,assemblyb2,assemblyb1

chromosomes_reverse = assemblybX,assemblyb31,assemblyb30,assemblyb29,assemblyb28,assemblyb27,assemblyb26,assemblyb25,assemblyb24,assemblyb23,assemblyb22,assemblyb21,assemblyb20,assemblyb19,assemblyb18,assemblyb17,assemblyb16,assemblyb15,assemblyb14,assemblyb13,assemblyb12,assemblyb11,assemblyb10,assemblyb9,assemblyb8,assemblyb7,assemblyb6,assemblyb5,assemblyb4,assemblyb3,assemblyb2,assemblyb1


그리고 input으로 넣는 link파일에서 크로모좀이 같으면 color=크로모좀을 넣고

다르면 color=black을 넣는다.


assemblya8 64927554        64987328        assemblyb8 67051330        67111104        color=chr8

assemblya26        372029  420198  assemblyb4 25320273        25373211        color=black


3번이 조금 헷갈릴 수 있을거 같은데 assembly a와 assembly b를 각각 assembly 이름으로 바꿔놓으면 된다.




반응형

'bioinformatics' 카테고리의 다른 글

Phylip 설치 및 실행하기  (0) 2017.09.18
CAFE v4.0 설치 및 실행하기  (0) 2017.09.11
Arrow/Quiver 설치 및 사용하기  (0) 2017.08.24
SyMap 설치 및 실행하기  (0) 2017.08.23
GMAP 설치 및 실행하기  (0) 2017.08.22
반응형

Nature or Nurture (유전 또는 환경) ? 



Nature or nurture에 대한 이미지 검색결과



태어나면서 부터 가지고 태어난 유전적 요인으로 인한 영향이 클지 아니면 자라면서 받은 주변 환경의 영향이 클지에 대한 토론은 꽤 오래 전부터 하고있었다. 문헌에는 17세기 문학 작품 셰익스피어의 The Tempest에서 발견할 수 있다.

(원문, The Tempest 4.1: a born devil, on whose nature nurture can never stick)


물론 저 때 당시의 유전이란 개념은 제대로 없었겠지만 천성? 쯤으로 생각했었을듯... 큰 의미에서는 유전이랑 다르지 않다고 생각한다.



일반적으로 서로 다른 환경에서 자란 유전적 정보 동일한 일란성 쌍둥이를 찾아서 얼마나 비슷한지를 조사하는 식으로 유전과 환경이 끼치는 영향력을 조사한다. 

근거는 부족한 내용이지만 이미 BC 5세기 부터 Hippocrates가 쌍둥이에 대한 관심을 가지고 있었고 비슷한 질병에 잘 걸린다라는 것을 밝힌 바 있다고 한다. 

현대에 와서는 Sir Francis Galton이라는 사람이 유전과 환경에 대한 연구를 진행하였으나 이 당시에는 일란성 쌍둥이와 이란성 쌍둥이를 구분하지는 못 했다. 


현대에서는 King's college London 이라는 세계 대학 랭킹 25위 안에 드는 대학에 Department of twin research and genetic epidemiology 라는 곳이 쌍둥이에 대한 연구를 많이 하고 있다. 아마도 쌍둥이 연구 기관중에는 가장 큰 것이라고 생각된다. 총 12,000 쌍의 성인 쌍둥이가 등록되어 있으며 2010년 이후로 출판한 논문 수만 500편이 넘어간다고 한다.



일란성 쌍둥이라고 할 지라도 DNA가 100% 일치하는 것은 아니다. 하나의 난자와 정자에서 출발하기 때문에 수정란일 때의 DNA는 동일하지만 성장 과정에서 계속해서 DNA를 복사, 분리하는 과정이 진행되고 이 과정에서 염기 서열에 변이가 일어날 수 있다. 이러한 변이가 일어날 확률이 매우 낮으며 같은 것에서 시작해서 차이가 나는것이 처음붙터 차이가 나는것 보다는 당연히 비슷할 것이고 따라서 무작위로 두 사람을 비교하는 것 보다는 쌍둥이의 DNA가 당연히 훨씬 비슷할 것이다. 

DNA의 염기서열 변화로 인한 차이뿐만 아니라 외부 환경이 epigenetic한 변화를 일으킬 수도 있다. (epigenetic이란 DNA 염기서열 변화는 없지만 다른 요인으로 유전자 발현을 조절하는 것을 말한다. 대표적으로 DNA metylation, histone modification, miRNA expression 등이 해당한다.)



즉 유전이 기본 베이스가 되나 외부 환경 또는 무작위 변수에 의하여 DNA염기 서열 자체가 바뀌거나 전사, 번역에 영향을 주는 변이가 생길 수 있고 그러면 형질 자체가 다르게 발현될 수도 있다는 얘기다. 



재밌는건 관련 문헌 조사를 해보면 유전 또는 환경에 대해서 가장 관심이 많은 분야는 교육과 건강이다. 


교육 부분에서는 지능 지수(IQ)가 얼마나 비슷한지를 본다. 


건강 부분에서는 비만 정도나 특정 질환에 대한 저항성 등을 본다.



하지만 여전히 궁금한건 그래서 둘 중 누가 더 영향을 강하게 끼치느냐? 일 것이다.


정답은 "무엇을 보느냐에 따라 다르다" 이다.



다수의 논문에서 IQ는 어렸을 때는 유전적인 비율이 적다가 성인이 되면서 높아지는 것으로 나타난다...? 이유는 정확히 밝혀지지 않았다. 1994년 Behavior Genetics에 출판된 논문을 보면 이 유전적인 비율은 어떤 특성인지에 따라 또 달라짐. 말하기, 기억력, 등등에서 비율이 다르다고 한다.



2012년 nature 자매지인 Internation Journal of Obesity에 출판된 논문 (J Naukkarinen et al, Causes and consequences of obesity: the contribution of recent twin studies, International Journal of Obesity, 2012) 에서는 비만 정도는 라이프 스타일에 영향을 많이 받을 것이라고 이 전까지 생각해 왔지만 유전적 요인도 크게 작용한다고 말하고 있다.  658명의 일란성 쌍둥이를 25년간 추적했을 때 두 쌍둥이간의 BMI지수가 significant하게 차이나는 쌍둥이는 18쌍 밖에 없었다고 한다. 비슷한 환경에서 자라는 일란성 쌍둥이는 라이프 스타일도 비슷하겠지만 25년동안 추적한다면 독립한 이후에도 비슷하다고 해석할 수 있을 것 같다. but, 어렸을 때 식습관이 비슷하게 형성된다면 독립 이후에도 영향을 줄 것 같다는 생각이 든다.


2011년에 Epigenomics 에서 출판된 논문 (Alegría-Torres JA, Baccarelli A, Bollati V. Epigenetics and lifestyle. Epigenomics. 2011;3(3):267-277. doi:10.2217/epi.11.22.)  에서는 영양, 행동, 스트레스, 육체적 활동, 일하는 습관, 흡연이나 음주 여부등의 생활 습관이 epigenetic한 영향을 끼친다고 말하며 관련 논문을 정리한 바 있다. 




결론은 아직까지 유전이 어느정도, 환경이 어느정도 영향을 미친다고 말 할 단계는 아니지만, 그것이 지능 지수인지, 비만인지, 또는 특정한 질병에 대한 저항성인지에 따라 어떤 것이 더 영향을 크게 미치는지는 대략적으로만 알고있다. 관련 연구가 진행 될 수록 어떠한 행동을 하면 그것이 긍정적으로 또는 부정적으로 작용하는지 알게 될 것이며 (뇌 발달에 유아기 환경이 영향을 크게 미친다는 것은 이미 잘 알려져 있음) 향후 사람들의 행동에 영향을 줄 수 있을 것이라고 생각된다.


 

Reference -


Alegría-Torres JA, Baccarelli A, Bollati V. Epigenetics and lifestyle. Epigenomics. 2011;3(3):267-277. doi:10.2217/epi.11.22.


J Naukkarinen et al, Causes and consequences of obesity: the contribution of recent twin studies, International Journal of Obesity, 2012


반응형
반응형

StatsBase 모듈 사용하기




Julia에서 수치를 다 구한 뒤에 그에 대한 stats을 구할 때 사용할 수 있다.


Array에다가 값을 다 넣은 뒤에 summarystats 함수를 사용하면 편하다.


but Array type에 따라서 자꾸 에러가 나서 정리해 보고자 한다.


Summarystats 함수는 real-valued array를 받아서 mean, minimum, 25 percentile, median, 75 percentile and maximum을 구해준다.


help?> summarystats()

  summarystats(a)


  Compute summary statistics for a real-valued array a. Returns a SummaryStats object containing the mean,

  minimum, 25th percentile, median, 75th percentile, and maxmimum.



julia> summarystats(a)

Summary Stats:

Mean:           2.800000

Minimum:        1.000000

1st Quartile:   2.000000

Median:         3.000000

3rd Quartile:   4.000000

Maximum:        4.000000



먼저 summarystats()를 사용하기 위해서는 StatsBase 모듈을 불러와야한다.


using StatsBase


만약 StatsBase가 설치되어 있지 않다면


Pkg.add("StatsBase")


로 설치할 수 있다.


설치된 모듈은 $HOME/.julia/lib/version/ 안에 있다.



사용법은


summarystats는 real array를 받기 때문에 julia에서는 array선언할 때 아래와 같이 선언해 줘야 한다.


testarray = Array{Real}(0)


Array(Real,0) 으로 선언할 수도 있지만 이렇게 선언하고 코드를 돌리면 


WARNING: Array{T}(::Type{T}, m::Int) is deprecated, use Array{T}(m) instead.


위와 같은 선언은 deprecated되었다고 말한다.


Array를 선언한 후에 값을 넣을 때는 append!를 하면 된다.


append!(testarray,"value")


append!가 끝나면 아래와 같이 마무리 해주면 된다.


result = summarystats(testarray)



println(result)


Summary Stats:

Mean:           290.114559

Minimum:        2.000000

1st Quartile:   89.000000

Median:         128.000000

3rd Quartile:   180.500000

Maximum:        95925.000000


결과가 제대로 나오는 것을 확인할 수 있다!

반응형
반응형

cURL 로컬 설치하기




Julia에서 Pkg.add를 하려고 했는데 아래와 같은 에러메세지가 나타났다.


julia> Pkg.add("StatsBase")

INFO: Installing Plots v0.12.2

INFO: Building Plots

INFO: Cannot find deps/plotly-latest.min.js... downloading latest version.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0

curl: (35) SSL connect error

==================================================[ ERROR: Plots ]==================================================


LoadError: failed process: Process(`curl -L -f -o /home/kyoungwoo/.julia/v0.6/Plots/deps/plotly-latest.min.js https://cdn.plot.ly/plotly-latest.min.js`, ProcessExited(35)) [35]

while loading /home/kyoungwoo/.julia/v0.6/Plots/deps/build.jl, in expression starting on line 7


====================================================================================================================


==================================================[ BUILD ERRORS ]==================================================


WARNING: Plots had build errors.


 - packages with build errors remain installed in /home/kyoungwoo/.julia/v0.6

 - build the package(s) and all dependencies with `Pkg.build("Plots")`

 - build a single package by running its `deps/build.jl` script


====================================================================================================================

INFO: Package database updated

INFO: METADATA is out-of-date — you may not have the latest version of StatsBase

INFO: Use `Pkg.update()` to get the latest versions of your packages


curl이 제대로 자동하지 않는 것 같아 shell 화면에서 명령어만 따로 실행해 보았다..


Thu Aug 24 15:21:26 [kyoungwoo@biglab-master gtf_to_fasta]$ curl -L -f -o /home/kyoungwoo/.julia/v0.6/Plots/deps/plotly-latest.min.js https://cdn.plot.ly/plotly-latest.min.js

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

curl: (35) SSL connect error


SSL connect error 35가 나오는 것을 확인하였다.


구글링해서 문제 해결방법을 찾아보니 curl의 버전이 낮아서 최신버전을 설치하라고 해서



local로 cURL을 설치하는 법을 찾아보았다.



들어가서 다운로드 후 configure 파일을 생성하기 위해서는 ./buildconf 를 실행해 줘야 한다.


buildconf 후에 configure 파일이 만들어지면 


./configure --prefix=/PATH/TO/INSTALL/CURL

make && make install


export PATH = /PATH/TO/INSTALL/CURL/bin:$PATH

export PATH = /PATH/TO/INSTALL/CURL/lib:$PATH


끝!


Julia 명령도 정상적으로 잘 실행되는 것을 확인했다.


반응형

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

GMP 설치하기  (1) 2017.09.19
GCC 설치하기  (1) 2017.09.18
Repeatmasker 설치  (0) 2017.05.05
GBrowse2 설치하기  (0) 2017.04.25
Perl 설치 및 실행하기  (0) 2017.04.25
반응형

PacificBiosciences 에서 제공하는 Arrow/Quiver 설치 및 사용하기.




Pacbio only assembly는 Canu나 Falcon 등의 프로그램으로 진행됨. assembly가 끝나고 난 뒤 polish과정을 거쳐야 하는데 polish는 SNPs이나 small tandem repeat등으로 인해 assembly에 생기는 작은 오류를 수정하는 과정이다.


과거에는 Quiver라는 이름으로 제공되었으나 legacy가 되고 Arrow로 이름이 바뀌었다.

(정확히는 프로그램 이름은 여전히 Quiver이나 안에 있는 알고리즘이 Arrow가 쓰이는 것이다.)



git hub에서 GenomicConsensus라는 이름으로 제공되는 패키지를 받아서 설치해야한다.



GenomicConsensus는 Python 모듈이며 2.7+ 버전을 요구한다. (3.X버전은 안됨)


git clone 설치 후 


python setup.py install


로 설치 가능한데 


아래와 같은 dependency가 필요하다.


        'pbcore >= 1.2.9',

        'pbcommand >= 0.3.20',

        'numpy >= 1.6.0',

        'h5py >= 2.0.1',

        'ConsensusCore >= 1.0.1'

        # , 'ConsensusCore2 >= 0.9',

 

다른 모듈들은 pip 등으로 설치 가능하나 ConsensusCore는 따로 설치해 줘야 한다.


ConsensusCore2는 legacy로 들어간듯 하고 그냥 ConsensusCore를 설치하면 된다.



Pacbio에서 만든 파이썬 모듈같다. 위와 마찬가지로


Python setup.py install 


하면 되는데 이번엔 SWIG를 설치하라고 한다....



SWIG는 인터페이스 컴파일러라는데 정확히는 뭔지 파악 불가..


http://www.swig.org/download.html


설치방법은 일반적인 프로그램이랑 같다.


./configure --prefix=/PATH/TO/INSTALL/SWIG

make && make install


export PATH=/PATH/TO/INSTALL/SWIG/bin:$PATH


SWIG을 설치하고 다시 ConsensusCore2를 설치하면 된다.






반응형

'bioinformatics' 카테고리의 다른 글

CAFE v4.0 설치 및 실행하기  (0) 2017.09.11
Synteny Circos plot 그리기  (0) 2017.08.30
SyMap 설치 및 실행하기  (0) 2017.08.23
GMAP 설치 및 실행하기  (0) 2017.08.22
AGOUTI 설치 및 실행하기  (0) 2017.08.21

+ Recent posts