본문 바로가기

시각화 도구 설명서

[pajek] 4. .net 파일 구조

.net 파일은 pajek에서 사용하는 기본 데이터 파일입니다. 여기에 네트워크 구조 정보가 들어갑니다.
따라서 pajek을 능수능란하게 다룰려면 이 파일의 구조를 정확히 이해해야 합니다. 아쉽게도 pajek은 친절한 프로그램이 아니라서, 사용자가 직접 데이터 파일을 고쳐야할 일이 무척 많거든요.

우선 .net 파일의 구조를 확인하기 위해, 간단한 .net 파일을 만들어 보겠습니다.

pajek에는 데이터가 없이도 랜덤 네트워크를 만들 수 있는 옵션이 있습니다. 에르되스-레니(Erdos-Renyi) 네트워크를 비롯한 몇 가지 네트워크 모델을 만들 수 있는데, 하나씩 설명하려면 글이 무척 길어집니다. 따라서 가장 간단한 랜덤 네트워크만 우선 만들어 보죠.

아래 그림처럼 pajek을 실행시키고 메뉴에서 Net > Total No. of Arcs를 고릅니다.

사용자 삽입 이미지

그림 1


이 것은 노드(Node) 수와 링크(Link) 수가 정해져 있는 랜덤 네트워크를 만드는 명령입니다.

노드 수와 링크 수를 차례로 입력합니다. 이 예제에선 6개씩 하기로 하죠.

사용자 삽입 이미지

그림 2

사용자 삽입 이미지

그림 3


아래 창에서 겹 링크(multiple link)를 허용할 지 여부를 선택할 수 있습니다. 노드 사이에 링크가 두 개 이상 존재할 경우에 그것을 겹 링크라 합니다.
사용자 삽입 이미지

그림 4


 위 까지 실행하면 성공 메세지와 함께 창에 "Simple Random Network [6](6)"이라는 제목의 새 파일이 생겼을 겁니다. 이 파일은 다음의 디스켓 아이콘을 클릭하여 다른 이름으로 저장할 수 있습니다.

사용자 삽입 이미지

그림 5


저장한 파일은 텍스트 형식입니다. 이제 데이터 파일을 메모장 같은 적당한 에디터로 열어보죠.
아마 다음과 같은 텍스트를 볼 수 있을 겁니다. (랜덤 네트워크이므로, 세세한 값은 다를 수 있습니다.)

*Vertices       6
       1 "v1" 0.1000    0.5000    0.5000
       2 "v2" 0.3000    0.1536    0.5000
       3 "v3" 0.7000    0.1536    0.5000
       4 "v4" 0.9000    0.5000    0.5000
       5 "v5" 0.7000    0.8464    0.5000
       6 "v6" 0.3000    0.8464    0.5000
*Arcs
       2 6 1
       5 4 1
       1 4 1
       2 3 1
       5 2 1
       5 1 1

위 파일을 pajek에서 연 상태에서 메인 메뉴의 Draw > Draw 를 실행시키면 다음과 같은 네트워크 그림을 볼 수 있습니다.

사용자 삽입 이미지

그림 6


하나씩 뜯어 볼까요?

*Vertices 6

맨 첫 줄은 노드가 6개 있다는 뜻입니다. 그 다음 6줄에 노드 정보가 나온다는 뜻이죠.

1 "v1" 0.1000    0.5000    0.5000

그 다음 줄은 노드 정보를 담고 있습니다.
첫 번째 숫자는 노드의 인덱스 번호(vertex_num)입니다.
두 번째 따옴표 안의 문자는 노드의 이름(label)입니다.
연달아 나오는 세 숫자는 노드의 x,y,z 좌표를 뜻합니다.

노드 정보의 일반적인 구조를 쓰면 다음과 같습니다.

vertex_num label [x y z] [shape] [parameters]


대괄호는 생략해도 된다는 뜻입니다. 기본적으로 노드의 인덱스 번호와 노드의 이름만 있으면 네트워크를 그릴 수 있습니다.

다음으로 넘어가죠.

*Arcs

"*Arcs"가 나오면 이 다음부터 링크 정보가 나온다는 뜻입니다. 링크는 노드와 달리 전체 개수를 써줄 필요가 없습니다.

참고로 "*Arcs" 대신 "*Edges"도 쓸 수 있습니다. Arc와 Edge의 차이는, 화살표 링크냐, 보통 링크냐의 차이죠.

2 6 1


위 세 숫자가 링크의 정보입니다. 2는 시작 노드의 인덱스(v1)를 뜻합니다. 즉, "v2"죠.
6은 끝 노드의 인덱스(v2)를 뜻합니다. 따라서 이 문장은 2->6 사이에 링크가 있다는 뜻이죠.
1은 링크의 값(value)을 뜻합니다. 보통 가중치-있는 네트워크(weighted network)에서 가중치를 표현하는 숫자가 되죠.

일반적인 링크 표현은 다음과 같습니다.

v1 v2 value [additional parameters]



이번에는 파라메터(parameter)의 사용법을 알아봅시다. pajek 매뉴얼을 보면 수많은 파라메터를 지원한다고 되어있습니다. 하지만 그 중에 제대로 동작하지 않는 것이 많습니다. 아무래도 매뉴얼 버전과 실제 프로그램 버전이 잘 맞지 않는 것 같아요.

일단 제가 잘 쓰는 파라메터만 소개하겠습니다. 다음 .net 파일을 보시죠.

*Vertices       6
       1 "p" sh ellipse x_facty_fact 2
       2 "a" sh box     x_fact 2  y_fact 2
       3 "j" sh diamond     x_fact 2  y_fact 2  ic Blue 
       4 "e" sh triangle x_fact 2  y_fact 2  ic Green bc Black  bw 5
       5 "k" sh cross    x_fact 2  y_fact 2  ic Cyan
       6 "m" sh empty        
*Arcs
       2 6 1
       5 4 1
       1 4 4
       2 3 1
       5 2 1
       5 1 1

노드 정보 뒤에 파라메터를 입력했습니다. 파라메터는 보통  "(Parameter_name  parameter_value)" 의 구조로 되어있습니다. 파라메터 이름과 값을 연달아 쓰는 거죠.

빨간 글씨로 된 것이 파라메터 이름입니다.
sh 는 노드의 모양,
x_fact 는 노드의 x 축 방향 크기,
y_fact 는 노드의 y 축 방향 크기,
ic 는 노드의 색깔,
bc 는 노드의 테두리 색깔,
bw 는 노드의 테두리 두께입니다.

노드의 x,y,z 위치는 필수정보가 아니므로 생략했습니다.
그리고 링크의 값을 1에서 4로 살짝 바꿨고, 노드의 이름도 새로 주었습니다.

위 데이터 파일로 네트워크를 그리면 다음과 같이 됩니다.

사용자 삽입 이미지

그림 7


여기까지가  .net 파일에 대한 간단한 설명입니다. .net 파일에 대한 좀 더 자세한 설명을 원하시는 분은 다음의 영문 매뉴얼을 참고하세요.

http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/pajekman.pdf

잘 맞지 않는 매뉴얼이지만, 없는 것보다는 나을 것으로 생각합니다.

@  pajek 한글 매뉴얼을 처음부터 끝까지 잘 써보고 싶은 마음은 굴뚝 같지만, pajek이 다른 프로그램에 비해 사용하기 어려운 점이 많아 쓸 엄두를 못 내고 있습니다. 영문 매뉴얼 대로 실행해봐도 잘 동작하지 않는 경우가 많거든요.  그래서 당분간은 팁 위주로 짤막하게 글을 올리도록 하겠습니다. 팁을 조금씩 쌓다보면, 나중에 제대로 된 한글 매뉴얼을 만들 수 있을지도 모르니까요.