Input file은 여러 가지 작업 명령을 기입하여 CHARMM 프로그램에 지시하는 것입니다.
어떤 text editor든 사용하여 작성하면 됩니다. 몇 가지 기본 사항은 다음과 같습니다.
- 대소 문자 구별없이 일단 대문자로 변환되어 명령을 처리합니다. 단 file 이름은 소문자로 변환됩니다. 모든 file 이름은 소문자로 쓰기를 권장합니다. 부득이 대소문자를 같이 써야하는 경우에는 따옴표 사이에 넣습니다. 그러나 이것이 인식되지 않는 경우가 있을 수 있습니다.
- "!" 다음은 다 주석으로 처리됩니다.
- 명령어와 그에 속한 옵션은 한 줄에 넣어야 합니다. 문장이 길어져서 여러 줄이 될 경우에는 연결자 "-"를 각 줄의 맨 마지막에 씁니다.
[1] Title
대부분의 CHARMM file은 타이틀로 시작됩니다.
타이틀은 "*" 로 시작하고 그 작업에 대한 제목 및 설명을 적어 넣으면 됩니다.
내용 없이 "*" 만 입력하면 타이틀이 끝났다는 신호가 됩니다. 타이틀은 최대 32줄까지 허용됩니다.
[2] Flow control
일반적으로 맨 위에서 아래로 한줄씩 명령이 수행됩니다만, 고급컴퓨터언어와 유사하게 흐름을 조정할 수 있습니다.
GOTO <label>
LABEL <label>
일방적으로 실행 포인트를 옮기는 것입니다. <label> 은 "iloop" 등과 같은 어떤 고유한 이름입니다. GOTO <label> 에서
LABEL <label> 로 바로 옮겨서 실행을 계속합니다. LABEL <label> 은 GOTO 보다 앞에 있든 뒤에 있든 상관이 없습니다.
조건에 따라 실행포인트를 옮기려면 IF 문을 이용합니다.
IF <parameter> op <value> CHARMM_명령문
op(연산자)로는 EQ(equal), LE(less than or equal), GE(greater than or equal), LT(less than), GT(greater than),
NE(not equal), AE(almost equal) 등을 쓸 수 있는데, FORTRAN 에서와 같이 .EQ. .LE., .GE, .LT., .GT., .NE., .AE. 로
쓸 수도 있습니다. 여기서 AE 는 값의 차이가 0.0001 보다 작을 때 참임을 나타냅니다. 조건이 참이면 뒤에 나오는 명령을 실행하고
거짓이면 실행하지 않고 바로 아래로 내려갑니다.
다음과 같이 block-IF 를 쓸 수도 있습니다. 중첩(IF 문안에 또 IF를 쓰는 것)도 가능합니다.
IF <conditional> THEN
statements
ENDIF
IF <conditional> THEN
statemsnts
ELSE
statements
ENDIF
실행을 종료하려면
STOP
을 사용합니다. 이후는 무시됩니다.
[3] Stream file
이것은 subroutine 을 부르는 것과 같은 flow control 입니다.
외부 파일에 작성되어 있는 내용을 불러서 실행시키는 것입니다.
STREam <stream_file> [arg1 arg2 arg3 arg4]
이 시점에서 <stream_file> 이라는 외부 input file 로 실행포인트가 옮겨갑니다.
arg1, arg2, arg3, arg4 등은 반드시 주어야 하는 것은 아니지만 주게되면
<stream_file> 안에서 IN1, IN2, IN3, IN4 등 파라미터의 값으로 설정됩니다.
반복적으로 많이 사용되는 명령들을 모아서 <stream_file>로 작성하고 경우에 따라 필요한 파라미터값을 치환하여 사용할 수 있습니다.
stream file 도 input file 과 마찬가지로 타이틀로 시작하고 여러가지 필요한 명령을 수행한 다음에
RETURN
명령에 의해서 STREam 명령 아래로 실행포인트를 옮겨오게 됩니다.
[4] 변수 및 상수 치환
여기서 파라미터라고 하는 것은 force field 파라미터가 아니라 CHARMM command parameter 를 뜻합니다.
프로그래밍언어에서 변수에 해당됩니다. 파라미터로는 단일문자파라미터 (0-9, A-Z 의 36개)와 변수파라미터가 있습니다.
원래는 단일문자파라미터 밖에 지원을 하지 않았지만, 나중에 변수를 도입하였습니다. 변수는 고유한 문자열로 32자 이내로 정의합니다.
SET <parameter> <value>
SET명령에 의해서 <parameter> 가 정의되고 <value>라는 값이 기억됩니다. 예를 들어
SET mypar 71
이라고 하면 mypar 라는 파라미터가 정의되고 그 값은 71 입니다.
일단 "71"은 문자열로 저장되는데, 문맥에 따라서 값으로 전환될 수 있습니다.
파라미터 값을 참조하려면 "@"을 붙여야 합니다.
ECHO @mypar
라고 하면 71 이라고 출력됩니다. 여기서 ECHO 는 다음에 나오는 문장을 output에 출력하는 명령입니다.
INCRease <parameter> [ by <val> ]
DECRease <parameter> [ by <val> ]
이것은 <parameter>의 값을 <val> 만큼 증가(INCR)시키거나 감소(DECR)시킵니다.
[ ... ] 는 생략할 수 있는데, by <val> 이 생략되면 1을 증가시키거나 감소시키게 됩니다.
CHARMM에는 command line substitution parameter 라는 것이 있습니다.
이들 치환파라미터를 이용하여 PI값처럼 일반적인 것, SELEct 명령을 실행했을 때 선택된 원자의 수를 나타내는 NSEL 등 실행에
따른 결과값, 각종 에너지 값등을 호출할 수 있습니다. 치환파리미터는 "?"를 붙여서 값을 호출합니다. 예를 들어 퍼텐셜에너지 값은
?ENER 로 나타냅니다. 일반적인 치환파라니터에 관해서는 doc/subst.doc, 각종 에너지항에 관한 치환파라미터에 관해서는
doc/energy.doc 에 설명이 있습니다.
[5] 연산
CALCulation 명령을 사용하여 여러 가지 계산을 수행하고 그 값을 지닌 변수를 설정할 수 있습니다.
보통 FORTRAN 에서 지원되는 각종 함수를 포함한 계산을 할 수 있습니다. (SIN, COS, TAN, EXP, LOG 등)
CHARMM command line parameter 나 substitution parameter 를 참조한 계산도 가능합니다.
몇 가지 예를 들어 보겠습니다.
COOR STAT
CALC xcen = 0.5 * ( ?xmin + ?xmax )
coordinate statistics 명령으로 어떤 분자 구조의 경계를 알 수 있습니다. 그 중에서도 x-축방향의 중간점을 계산하는 식입니다.
여기서 xcen 이라는 변수가 설정되었습니다. 이후에 다른 변수 (command line parameter) 와 마찬가지로 @를 붙여서
xcen 값을 참조할수있습니다 (@xcen).
[6] Run level
정상적인 실행이 어려울 경우를 대비하여 각종 오류 검사가 이루어 집니다. 보통의 경우에는 오류가 발생하면 실행이 중단됩니다.
Bomblev 를 설정하여 이와 같은 오류를 비켜갈 수 있습니다.
BOMBlev <integer>
오류 수준보다 낮은 정수값을 설정하면 그 오류 때문에 실행이 중단되는 것을 피할 수 있습니다. 예를 들어 전하가 정수가 아닐 때
실행이 중단됩니다 (0 수준). 분자 모델을 변경하는 중간 과정이라면 또는 자신이 이러한 오류를 이미 파악하고 있는 경우라면
BOMB -1
과 같이 그 수준 이하 정수값을 설정하여 실행을 계속할 수 있습니다. 이밖에도 출력수준을 제어하는 PRNLev, 경고 수준을 제어하는
WRNLev 등이 있습니다.
[7] 예제
1부터 10까지 더하는 CHARMM input file 을 만들어 보세요.
* Sum from 1 to 10
*
set sum 0
set i 0
label iloop
incr i
incr sum by @i
if i .lt. 10 goto iloop
echo The sum from 1 to 10 is @sum
stop
CHARMM은 분자 모델링 및 동역학 시뮬레이션 프로그램입니다.
그 보다는 분자 모델링과 동역학 시뮬레이션을 수행하기 위한 최고급 언어라고 이해하시면 좋겠습니다.
[참고] doc/usage.doc http://www.charmm.org/html/documentation/c35b1/usage.html
[참고] doc/miscom.doc http://www.charmm.org/html/documentation/c35b1/miscom.html
[참고] doc/subst.doc http://www.charmm.org/html/documentation/c35b1/subst.html
Copyright © 2010-2013 IMMM, All rights reserved.