정리 조금/Codes

[R] FTP로 파일 받기

Turtle0105 2023. 9. 15. 18:36

  최근 connectivity map (CMAP)의 rank information만 아니라, fold change의 값을 알아야 하는 일이 생겼다. 때문에 CMAP original data를 찾기위해 인터넷을 뒤졌다. 여러 커뮤니티에서 MIT broad institute site에서 찾을 수 있을거라 하지만, 결국 알 수 없는 페이지만 보게된다. https://portals.broadinstitute.org/cmap/

그러다 아래 논문에서 먹음직스러워 보이는 URL(ftp://ftp.broad.mit.edu/pub/cmap/ratioMatrix.txt)을 발견했다. 

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8413422/#Sec10

 

Evaluation of connectivity map shows limited reproducibility in drug repositioning

The Connectivity Map (CMap) is a popular resource designed for data-driven drug repositioning using a large transcriptomic compendium. However, evaluations of its performance are limited. We used two iterations of CMap (CMap 1 and 2) to assess their compar

www.ncbi.nlm.nih.gov

  ftp로 시작하는 처음보는 URL이였다. 계속하여 접속이 실패하자, 죄없는 방화벽만 들들 볶았다. FTP가 뭔지 조금 알아보았으며, 나와같이 CMAP의 원본 자료에 접근하고자하는 사람들이 도움을 받으면 좋겠다.

 

FTP

  FTP (File Transfer Protocol)란 PC와 서버간의 파일을 주고받는 통신 프로토콜이다. 웹 브라우져 상에서는 대용량 파일을 송수신시에 http보다 ftp가 유리하다. http 대신 ftp를 입력하여 로그인 뒤 서버의 파일을 다운받는 것이 가능하다. 하지만, (패스워드의) 보안성이 취약하다는 이유로 ftp사용이 크롬, 파이어폭스등 많은 웹 브라우져에서 제한되었다. 현재 IE는 못 사용하고, Opera 정도에서나 사용 가능하다고 한다.

 

  서버전문가도 아니고, 아직 네트워크에 대한 깊은 지식을 필요로하는 상황을 마주치지도 않았다. 때문에 R을 사용하는 유저로서, R을 통해 ftp 서버접속하여 파일을 내려받는 방법 정도만 소개하고자 한다.

code

서버에 어떤 파일이 있는지 확인할 때. 

library(curl)
url = "ftp://ftp.broadinstitute.org/distribution/cmap/"
h = new_handle(dirlistonly=TRUE)
con = curl(url, "r", h)
tbl = read.table(con, stringsAsFactors=TRUE, fill=TRUE)
close(con)

tbl

그중 관심있는 1,3,4,8 번째 행의 파일 중, ratioMatrix.txt를 받을 때.

urls <- paste0(url, tbl[c(1,3,4,8),1])
fls = basename(urls)
ratios = curl_fetch_disk(urls[4], fls[4])

결과물로 $content를 열어보면 실제 그 경로에 가면 거기에 다운이 되어있다!