One of the BioPythonTip

제목에서 알 수 있듯이 이 패키지는 다른 어플리케이션을 실행하고 제어하는 내용을 포함한다. 대다수의 다른 커맨드라인 어플리케이션들은 커맨드라인에 명령어 적고, 인수를 쭈욱 써주게 된다. 이 패키지는 이들 인수를 보다 편리하게 관리 할 수 있도록 해주며, 실행결과역시 Undo가 가능한 file handler 형태로 만들어준다.

Application/init.py 파일을 보면,

  • 커맨드라인에 관한 AbstractCommandline 클래스

  • 옵션에 관한 _Option 클래스
  • 아규먼트에 관한 _Argument 클래스가 있다.
  • 그리고, 정작 그 어플리케이션을 실행시키는 generic_run 함수가 있다.

사용방법은 AbstractCommandline 클래스를 상속받는 자신만의 어플리케이션 커맨드라인 클래스를 다음처럼 만든다.

아래 예에서는 "myappl" 이라는 OS path에 잡혀있는 프로그램을 실행한다고 할때, 또한 그 프로그램이 -sequence, -outfile, -task, -umereturn, - includedragion 의 옵션을 필요로 한다고 할때 다음과 같다.

   1 from Bio.application import AbstractCommandline, _Option, _Argument, generic_run 
   2 
   3 class MyApplCommandline(AbstractCommandline): 
   4     def __init__(self, cmd = "myappl"): 
   5         AbstractCommandline.__init__(self) 
   6         self.program_name = cmd 
   7 
   8         self.parameters = [
   9            _Option(["-sequence"], ["input"], None, 1, 
  10                    "Sequence to choose primers from"), 
  11            _Option(["-outfile"], ["output", "file"], None, 1, 
  12                    "Output file name"), 
  13            _Option(["-task"], ["input"], None, 0), 
  14            _Option(["-numreturn"], ["input"], None, 0), 
  15            _Option(["-includedregion"], ["input"], None, 0), 
  16           ] 

_Option 클래스의 construction를 적절히 이용하여 프로그램이 사용하는 option과 argument를 적절히 self.parameters에 세팅한다.

그리고 나서, 그 객체를 만들고,

theMyAppCom = MyApplCommandline("myappl") 

그 객체를 다음 함수의 인수로 전달한다.

generic_run(theMyAppCom) 

그러면, 세개짜리 튜플을 얻게 되는데

  1. 해당 프로그램의 일반적 옵션세팅상황의 객체
  2. 해당 프로그램의 Standard output 실행결과의 undo가능 파일핸들러
  3. 해당프로그램의 StdErr 결과의 undo가능 파일 핸들러이다.

이상의 방법을 사용하면, 복잡한 옵션 및 아규먼트가 필요한 커맨드라인 프로그램을 [Python]내에서 용이하게 관리할 수 있다는 장점이 있으며, Stdout 의 파일핸들러가 언도가능 파일핸들러라는 장점이 있다.

자세한 사항은 Bio/Application/__init.py 파일의 주석을 참고한다.

BioPythonTip/Application (last edited 2011-08-03 11:01:08 by localhost)

web biohackers.net