ORACLE PGX를 생물의 사람이 실제로 사용해 본다 ②(데이터 통합)
이번은, 전회 실시한 단백질 상호작용의 데이터를 PGX에 읽어들이게 할 수 있었던 계속으로서, 한층 더 이 데이터내에 약제와 단백질의 연결의 데이터를 더해(통합시켜) 보려고 합니다! !
하는 것
①단백질과 약제의 연결 데이터를 입수
이 데이터를 얻기 위해 이번에는 "DrugBank"을 사용했습니다!
DrugBank란, 약제 자체의 데이터(구조식, 기능 등)나, 약제가 결합, 작용하는 것(단백질 등)의 정보(무엇과 무엇이 결합하고 있는지?어디에 결합하고 있는가?등)를 제공하는 사이트입니다.
그러나 데이터를 얻으려면 계정 등록이 필요합니다! !
얻고 싶은 정보는 어떤 약물과 어떤 단백질이 결합되어 있는가? 그래서, "DrugBank"의 페이지내에 있는 < Downloads⇒PROTEIN IDENTIFIERS >의 순서로 선택해, 그 페이지의
$ curl -Lfv -o filename.zip -u EMAIL:PASSWORD https://www.drugbank.ca/releases/5-0-9/downloads/target-all-polypeptide-ids
☝ 실제로 사이트 내에 게재된 커맨드입니다! 커멘드의 EMAIL:PASSWORD에는 계정 등록에 사용한 EMAIL, PASSWORD를 입력해 주세요. 물론 GUI의 조작으로 로컬 환경에 떨어뜨릴 수도 있습니다! (맨 오른쪽의
다운로드한 데이터는 zip 형식으로 저장됩니다. 그런 다음 압축을 풀면 두 개의 CSV 파일이 생성됩니다. 이번은 이 중 all.csv라는 분을 이용합니다! (실제로 그 연결의 의미의 유무에 관계없이 결합하는 데이터가 모두 들어 있는 것입니다)
이 데이터와, 전회의 기사에서 작성한 데이터를 이용해 갑니다!
② 필요한 정보를 추출하여 성형한다
create_drug_edge.sh
#!/bin/bash
sed 's/"\([^"]*\)"//g' all.csv > temp_all_1.csv
awk -v FS=',' -v OFS=',' '{if (NR != 1) print $1, $3}' temp_all_1.csv > temp_all.csv
awk -v FS='\t' -v OFS=',' '{if (NR != 1) print $1, $3}' uniprot.tab > temp_uniprot_id.csv
awk -v FS=',' -v OFS=',' '{if (NR != 1) print $1, $13}' temp_all_1.csv > temp_drug_ids.csv
awk -v FS=',' -v OFS=',' '{split($2, array, "; "); for (i in array) { print $1, array[i] }}' temp_drug_ids.csv > temp_drug_ids_split.csv
sort -t ',' -k 2 temp_uniprot_id.csv | uniq > temp_uniprot_id_sorted.csv
sort -t ',' -k 1 temp_drug_ids_split.csv > temp_drug_ids_sorted.csv
join -t ',' -1 2 -2 1 -o 0 1.1 2.2 temp_uniprot_id_sorted.csv temp_drug_ids_sorted.csv > temp_drug_edge.csv
awk -v FS=',' -v OFS=',' '{print $2,$3=$3",1"}' temp_drug_edge.csv > drug_edge.csv
awk -v FS=',' -v OFS=',' '{print $2,$1,"0","0","0","0","0","0","0","0"}' drug_edge.csv | sort | uniq > detailed_drug_edge.csv
rm temp_* drug_edge.csv
이것은 그래프의 가장자리에 해당하는 데이터입니다. 이전과 다른 점으로,
예: Protein ID,…,DB00023; DB00044; DB00099
Protein ID,DB00023Protein ID,DB00044Protein ID,DB00099
있습니다.
create_drug_node.sh
#!/bin/bash
awk -v FS=',' -v OFS=',' '{print $1,"*",$1}' detailed_drug_edge.csv | sort | uniq > drug_node.csv
이것은 노드에 해당하는 데이터의 추출입니다. 노드 속성에는 ID 번호가 있습니다.
그리고 이러한 데이터와 이전에 작성한 PPI(단백질 상호작용)의 데이터를 통합합니다.
create_drug_ppi_edgelist.sh
#!/bin/bash
sh create_ppi_node.sh 100000
sh create_ppi_edge.sh 12000000
sh create_drug_edge.sh
sh create_drug_node.sh
cat drug_node.csv detailed_drug_edge.csv ppi_node.csv ppi_edge.csv > drug_ppi_edgelist.csv
명령의 숫자는 인수입니다. 적당히 딱 좋은 인수를 넣어주세요!
③PGX로 불러오기
이전부터 계속 말하고 있습니다만, PGX에 읽어들이기 위해서는 JSON 파일이 필요합니다.
drug_ppi_edgelist.json
{
"uri": "置いてあるディレクトリまでのパス/drug_ppi_edgelist.csv"
, "format": "edge_list"
, "vertex_id_type": "string"
, "vertex_labels": false
, "edge_label": false
, "vertex_props":[
{"name":"name", "type":"string"}
]
, "edge_props":[
{"name":"neighborhood", "type":"integer"}
, {"name":"fusion", "type":"integer"}
, {"name":"cooccurence", "type":"integer"}
, {"name":"coexpression", "type":"integer"}
, {"name":"experimental", "type":"integer"}
, {"name":"database", "type":"integer"}
, {"name":"textmining", "type":"integer"}
, {"name":"combined_score", "type":"integer"}
]
, "separator": ","
}
덧붙여서 전회와 완전히 같습니다 (웃음)
※이번 이것을 이용하면 단백질, 약제의 노드의 정보의 식별은 할 수 없습니다만, 약제 쪽은 ID 번호로 표시되므로 식별 가능하다고 하는 것으로 고려하고 있지 않습니다!
자, 읽어 보겠습니다.
pgx > G = session.readGraphWithProperties("置いてあるディレクトリのパス/drug_ppi_edgelist.json")
PgxGraph[name=drug_ppi_edgelist,N=24493,E=11365453,created=1509003440476]
그래프 구조로 로딩에 성공했습니다! 좋았어,,,
다음에 넣은 그래프 구조의 데이터 검색을 간단하게 해 보려고합니다! 그럼!
Reference
이 문제에 관하여(ORACLE PGX를 생물의 사람이 실제로 사용해 본다 ②(데이터 통합)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aadoxsin/items/481d690fc523a302ee5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)