'Python'에 해당되는 글 1건

  1. 2011.04.07 Ubigraph를 이용한 networks visualization 3
컴퓨터/linux2011. 4. 7. 21:44
Ubigraph 란 것을 알게된지도 좀 됬었는데 그동안 포스팅을 한다고한다고 하는걸 이제야 포스팅 하게 되네요. 물런 잘쓰시는 분은 그냥 보기만 하면  바로바로 따라 하실수 있습니다. 
Ubigraph란 어떤 종류의 네트워크나 시스템의 움직임이나 모습을 시뮬레이션을 하면서 실시간으로 그것들의 동력학적 변화를 눈으로 볼수 있게 해주는 아주 유용한 툴입니다.  일단 동영상을 보시죠.  


그냥 봐도 화려하죠?  
우선 설치하는 법부터 알려드리죠. 


http://ubietylab.net/ubigraph/index.html

홈페이지에 들어가셔서 자신의 컴퓨터와 운영체제에 맞는 것을 다운로드 합니다. 

$ tar xvfz UbiGraph-....tar
$ cd UbiGraph-...
$ bin/ubigraph_server & (empty black window)
$ cd examples/Python
$ ./run_all.sh
이렇게 하면 설치가 완료된것입니다. 마지막에 보면 실행이 잘 될거에요. 중간에 검은 윈도우가 떠야합니다. 그게 안뜨면 안돼요. 그게 안될경우에는 xmlrpc쪽이 문제일수도 있지만 웬만하면 잘 뜹니다. 잘 안뜨면 컴퓨터가 정말 이상한것일 가능성이 있습니다. 이 글을 쓰면서 그 문제를 어떻게 해결해야 하는 기억이 나지 않아서 한 4시간을 버렸네요... 정말 이럴때마다 이런야가 너무 싫어지네요. 너무 화가 나요. 전에 몇번 깔아 봤었기 때문에 쉬울줄 알았는데 엉뚱하고 쓸데없는데서 시간을 허비했네요 ㅠ_ㅠ 다시한번 기록의 중요성을 느낌니다. 이제 뭘 하든간에 무조건 다 기록하는 습관을 남겨야겠습니다. 

홈페이지에 나온 템플릿대로 쓰면 웬만하면 다 됩니다. 
소스 코드에 대한 설명을 하자면 이것은 랜덤 그래프인데요. 

소스코드 쓰실땐 한글부분은 모두 지우고 쓰세요. 

#!/usr/bin/python

import random as rd
#랜덤함수를 사용하기 위해서 라이브러리를 불러줍니다.

import xmlrpclib 

import time
#중간에 쉬는 시간을 주기위해 넣어줍니다. 너무 빨리 없어지면 보지를 못하죠. 


server_url = 'http://127.0.0.1:20738/RPC2'

server = xmlrpclib.Server(server_url)

G=server.ubigraph
#이 부분은 템플릿이라고 생각하시면 됩니다. 자세한건 저도 xml쪽을 잘 몰라서 모르겠네요. 


G.set_edge_style_attribute(0, "color", "#fff000")

G.set_edge_style_attribute(0, "width", "3.0")
#edge 즉 링크의 색과 굵기를 지정해줍니다. 


G.set_vertex_style_attribute(0, "color", "#ff0000")

G.set_vertex_style_attribute(0, "shape", "sphere")

#vertex 즉 노드의 색과 모양을 지정해 줍니다. 크기도 조절할수 있고 라벨도 붙일수 있습니다.

for i in range(100) :

G.new_vertex_w_id(i)
#일단은 공간에 노드들을 만들어서 뿌립니다.  


time.sleep(0.5)
#잠깐 쉬어주구요. 

for i in range(100) :

for j in range(i+1, 100) :

if rd.random() < 0.15 :

G.new_edge(i,j)

time.sleep(0.1)

#어떤 확률에 따라서 가능한 링크들을 연결해줍니다. 

ubigraph의 장점은 무엇보다도 웬만한 모든 언어를 지원 한다는 것입니다. 어떤 놈들을 python만 지원 되거나 어떤 놈들은 c만 지원 되거나 하는 단점이 있는데 이 프로그램은 들어본 거의 모든 언어에 사용할수 있다는 장점이 있습니다. 

홈페이지에 들어가면 아주 다양하게 응용해서 쓰는데요. 물리학분야에서 많이 쓸수 있을거라고 기대해 봅니다. 이것을 이용해서 복잡한 분자의 구조라던지 결정모양의 고체의 구조를 나타낼수 있을 뿐만 아니라, 그것들을 움직이게 하므로써 물질의 동력학적인 행동들을 눈으로 확인할수 있다는 장점이 있습니다. 

Posted by blindfish