(<-) |
. |
. |
(->) |
Chap 6. Appendix: Useful stuff about Python
만약 당신이 python으로 프로그래밍하는데 많은 시간을 보내지 않았었다면, Biopython을 사용하면서 python과 관련된 많은 문제에 부딪혔을 것이다. 이번 섹션은 Biopython library를 사용하면서 자주 발생하는 (적어도 우리에겐) 문제의 code나 idea 를 보여주도록 하겠다. 만약 당신이 여기에 알맞는 유용한 제안이 있다면, 도움을 주길 바란다.
6.1 What the heck in a handle?
이 문서에서 Handle은 꽤 자주 등장하였고, 또한 그 개념이 혼동스럽기도 하다(적어도 나에게는!). 기본적으로 당신은 handle을 text information을 둘러싸고 있는 "wrapper"로 생각할 수 있다. Handle은 (적어도) plain text information에 비해 두가지 장점을 제공한다.
1. 여러가지 다른 방법으로 저장된 정보를 다루는 표준 방법(standard way)를 제공한다. Text Information은 file도 될 수 있고, 메모리상에 있는 string이나, remote website의 string이 될 수 도 있지만 handle은 이런 모든 포맷에서 제공하는 정보를 다루는 공통된 방법(common way)를 제공한다.
2. Text information을 한번에 다 읽는 방법외에 한줄씩 읽을 수 있도록 해준다. 이것은 huge text file을 읽을 때 중요하다. (huge text file을 통채로 읽게 된다면 load된 text가 메모리를 다 차지하게 되는경우)
Handle은 text information을 읽거(파일에서 infomation을 읽기) 나 쓸 수(파일에 information 저장) 있다. handle로 "read"하는 경우, 보통 read() 를 사용하여 모든 text information을 갖고 오고, readline() 을 사용하여, information을 한 줄씩 갖고 온다. Handle에 "write"하는 경우에는 보통 write() 함수를 사용한다. Handle은 가장 일반적으로 python에서 제공하는 built-in 함수인 open()을 이용하여 파일에서 information을 읽는데 사용된다.
>>> handle = open("m_colde.fasta","r") >>> handle.readline() ">gi|8234242|gb|BE03700.1 ..."
Handle은 Biopython에서 parser로 information을 넘겨 줄 때 사용된다.
6.1.1 Creating a handle from a string
string에 저장된 정보를 handle로 바꾸는 방법은 유용하게 쓰인다. 다음 예제는 python standard library에서 제공하는 cStringIO 을 이용하여 string의 정보를 handle로 바꾸는 방법을 보여준다.
>>> my_info = 'A string\n with multiple lines.' >>> print my_info A string with multiple lines. >>> import cStringIO >>> my_info_handle = cStringIO.StringIO(my_info) >>> first_line = my_info_handle.readline() >>> print first_line A string >>> second_line = my_info_handle.readline() with multiple lines.