Category: R

  • GSEA

    사실 이쪽 항목으로 분류되는 것은 아닌데…

    예전에는 분명 R script 로 되어 있는 GSEA 를 R에서 실행하는 것이 가능했다. 그런데 최근에 R이 버젼이 올라가면서 생긴 문제로 생각되는데, R에서 GSEA가 안돌아가고 있다. 원인을 도저히 찾을 수 없어서 R 이 아닌 다른 방식으로 접근을 하기로 했다. Java 로 제작된 프로그램이기도 하고 command line 으로 실행하는데 성공하면 메모리가 빵빵한 Ubuntu 컴퓨터에서 R을 사용하여 실행이 가능할 것이라고 생각해서 Java 이용하는 쪽으로 해결책을 찾기로 했다.

    우선 Ubuntu 에 Java를 설치해야 한다. 그런데 Java 홈페이지에 가면 유독 Ubuntu 가 분리되어 안내되어 있다. 그래서 그 곳(https://help.ubuntu.com/community/Java)에 들어가면 여러가지 설치 옵션이 있는 것을 알 수 있는데 가장 무난하게 생긴 Oracle Java 8 항목 부분에 있는 링크(http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html)  에 쓰여있는데로 실행하면 어려움 없이 설치가 가능하다.

    그 다음 문제인데 command line 으로 GSEA를 실행하려면 정말 복잡한 명령어를 입력해야 한다. 물론 이걸 직접 입력하는 것은 귀찮으니까 같은 자료 파일을 Java 기반의 프로그램에서 불러온 다음 하단 메뉴에 있는 Command 항목에 있는 것을 참조해서 수정하면 된다. 그리고 실행하면 끝.

    난 GSEA 분석에 사용되는 gene sets 을 따로따로 실행하는 것을 선호하니까 그 파일들을 한 군데에 몰아 넣은 후 다음과 같은 식으로 계속 실행하도록 했다.

    실행하면서 확인한 것으로 이렇게 Java 기반으로 실행을 할 경우 multicore 를 지원하는 것 같다. R에서 다중코어를 지원하도록 하는 것이 대단히 어려워서 그 동안 Hyperthreadiing 을 끈 i3 CPU 를 사용하고 있었는데 HT를 다시 켜야 할 지 조금 고민된다.

    gct.location = “/home/rstudio/TCGA/GSEA/20150326.gct”
    cls.location = “/home/rstudio/TCGA/GSEA/20150326.cls”
    gs.number = length(grep(“*.gmt”, dir()))

    for (X in 1:gs.number){
            gs.location = dir()[grep(“*.gmt”, dir())][X]
            gsea.command = paste(“java -cp /home/rstudio/TCGA/GSEA/gsea2_2_2_0.jar xtools.gsea.Gsea -res “, gct.location, ” -cls “, cls.location,  “#MUT_versus_WILD -gmx “, gs.location, ” -collapse false -mode Max_probe -norm meandiv -nperm 1000 -permute phenotype -rnd_type no_balance -scoring_scheme weighted -rpt_label my_analysis -metric Signal2Noise -sort real -order descending -include_only_symbols true -make_sets true -median false -num 100 -plot_top_x 20 -rnd_seed timestamp -save_rnd_lists false -set_max 500 -set_min 15 -zip_report false -out /home/rstudio/TCGA/GSEA/ -gui false”, sep=””)
            system(gsea.command)
           
            rm(gs.location, gsea.command)
           
    }

  • layout

    layout

     

     

     

     

    사용방법에는 여러가지가 있는 것으로 보여지만, 내가 필요한 기능은 이런거다. mfrow 나 mfcol 로 화면을 나누면 일정한 비율로 밖에 나누어지지 않지만, layout 이라는 명령어를 사용하면 이렇게 비대칭적으로 나누어진 화면을 볼 수가 있다. 사용방법도 어렵지 않고 꽤 쉬움. layout 으로 지정하고, layout.show() 라는 명령을 사용하면, 어떻게 화면이 나뉘는지 보여줌.

    layout(matrix(data=c(1, 1, 2, 3), nrow=2))
    layout.show(3)
  • 약물 반응 곡선

    약물 반응 곡선

    2014/09/29 – [공부해 봅시다/Pathology] – Drug inhibition analysis

    그 동안의 여러번의 실수를 통해서 이번에 수행한 약물 농도에 따른 성장 억제 곡선을 그려 보았다. 몇몇 이상한 부분이 있는데 이 부분은 도대체 어떻게 해석을 해야하는지는 모르겠다. 월요일에 남은 2개의 결과를 더 확인해보면 어떤 결론을 내려야 할지 알 수 있을 듯 함.

  • 날짜, 시간 출력

    > format(Sys.time(), "%Y%m%d-%H%M%S")
    [1] "20141004-165820"

    파일로 결과물을 저장할 때에 있어서, 중복된 것인지 아닌지 혹은 언제 만들었는지 표현해야할 경우가 있다. 특히 짧은 시간에 여러개의 파일을 만들 경우에 중복되지 않은 이름을 생성하는 방법이 필요하다. 문자를 포함하는 난수를 이용해서 시도하는 방법도 있겠지만, 그것보다는 시각정보를 사용하는게 편하다. 0.001초 단위를 사용하지 않아도 충분히 다른 문자를 생성할 수가 있다.

    Sys.time() 으로 현재 날짜와 시간을 불러온 다음 format 명령어를 이용해서 원하는 형식으로 출력해서 사용하면 된다. 파일명에 띄어쓰기나 특수기호가 있으면 좀 곤란할 때가 있으므로, 위와 같은 식으로 하면 될 것 같다.

    > format(Sys.time(), "%S %OS6")
    [1] "21 21.499652"

    추가적으로 초를 표현할 때에 보통은 %S로 하겠지만, R에서는 %OSn(n; 1~6)를 사용하면 소숫점 단위의 초를 불러올 수 있다.