|| (<-) ||.|| [BioPythonTutorial/CookBook] ||.|| (->) || '''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. }}}