◈ 이 책에서 다루는 내용 ◈
◆ 매개 변수를 문서화하고 검증할 커맨드 라인 파이썬 프로그램 생성
◆ 리팩토링 프로그램을 확인하고 올바른지 확인하기 위한 테스트 작성
◆ 바이오파이썬과 같은 파이썬 데이터 구조와 모듈을 사용한 생물정보학 아이디어 해결
◆ makefile을 사용해서 재현 가능한 바로 가기와 워크플로 제작
◆ FASTA과 FASTQ와 같은 필수 생물정보학 파일 형식 구문 분석
◆ 정규식을 사용해서 문자 패턴 찾기
◆ 파이썬에서 filter(), map(), reduce()와 같은 고차 함수 사용
◈ 이 책의 대상 독자 ◈
프로그래밍 기술에 관심이 있고, 문서를 생성하고, 매개 변수를 검증하고, 우아하게 실패하고, 안정적으로 작동하는 프로그램을 작성하는 방법을 배우고 싶다면 이 책을 읽어야 한다. 테스트는 코드를 이해하고 코드의 정확성을 확인하는 데 중요한 기술이다. 이 책에서는 저자가 작성한 테스트 사용 방법과 프로그램에 대한 테스트 작성 방법을 소개할 것이다.
내용을 최대한 활용하기 위해서는 파이썬에 대한 확실한 이해가 있어야 한다. 『21개의 작고 재미난 파이썬 프로젝트』(제이펍, 2021)에서 가르친 기술을 바탕으로 문자열, 리스트, 튜플, 딕셔너리, 집합, 명명된 튜플과 같은 파이썬 데이터 구조를 사용하는 방법을 보여줄 것이다. 파이썬 전문가가 될 필요는 없지만, 타입, 정규 표현식, 고차 함수에 대한 아이디어, 테스트와 스타일, 구문, 정확성 체크를 위한 pylint, flake8, yapf, pytest 도구 사용 방법과 같은 몇 가지 고급 개념을 이해하도록 확실히 밀어줄 것이다. 한 가지 주목할 만한 차이점은 이 책의 모든 코드에서 일관되게 타입 주석을 사용하고, mypy 개발 툴을 사용해서 올바른 타입 사용을 보장한다는 것이다.
◈ 이 책의 구성 ◈
이 책은 크게 두 부분으로 나뉜다. 1부는 Rosalind.info 웹사이트에서 발견된 프로그래밍 문제 중 14개를 다룬다(http://rosalind.info/about). 2부는 생물정보학에서 내가 중요하다고 생각하는 다른 패턴이나 개념을 보여 주는 더 복잡한 프로그램을 다룬다. 모든 장에서는 작성해야 할 코딩 과제를 설명하고 작업 프로그램을 언제 작성했는지 확인할 수 있는 테스트 모음을 제공한다.
비록 ‘Zen of Python(https://oreil.ly/20PSy)’은 “프로그램을 수행하는 분명한 방법이 하나 있어야 하며, 가급적이면 하나만 있어야 한다”라고 말하지만, 나는 문제에 대해 다양한 접근 방식을 시도함으로써 상당히 많은 것을 배울 수 있다고 생각한다. 펄(Perl)은 생물정보학으로 들어가는 관문이었고, 펄 커뮤니티의 ‘시도하기 위한 한 가지 이상의 방법이 있다(TMTOWTDI, There’s More Than One Way To Do It)’ 정신은 여전히 나에게 공감을 일으킨다. 일반적으로 각 장의 주제와 변형 접근 방식을 따르며, 파이썬 구문과 데이터 구조의 다양한 측면을 탐색하기 위한 많은 솔루션을 보여준다.
◈ 옮긴이의 말 ◈
생물정보학은 생명공학과 컴퓨터공학 두 가지 지식을 다 가지고 있어야 제대로 이해할 수 있다고 생각한다. 특히 컴퓨터공학 지식을 더 많이 가지고 있는 사람이 더 이해하기 쉬운 학문인 것 같다. 왜냐하면 처음 내가 생물정보학을 배울 때 이해를 하나도 못 했었기 때문이다. 그러나 이 책을 번역하면서 생명공학에 대한 지식이 부족해서가 아니라, 컴퓨터 지식이 없어서였다는 사실을 깨달았다. 소프트웨어 개발자가 된 지금은 컴퓨터 용어에 대한 지식을 통해 파이썬 로직이 왜 그렇게 진행되는지 이해할 수 있게 됐다.
그렇기 때문에 컴퓨터 코딩 지식, 특히 파이썬과 알고리듬을 배웠다면 이해하기 수월할 것이다. 특히, 문서화하고 테스트하는 과정은 생명공학도로서는 이해하기 힘들 것이다. 테스트는 TDD(테스트 주도 개발론)적으로 꼭 필요한 과정이고, 문서화하는 과정도 개발자가 소통하기 위해 꼭 필요한 과정이다. 그렇기 때문에, 개발자의 입장에서 쓴 생물정보학 책이라고 볼 수 있다.
그렇지만 생명공학도가 봐도 좋은 책이다. 코드로 분석하는 방법을 정말 자세히 설명하고 있어서 초보자도 차근차근 따라하기 쉽다. 물론 파이썬에 대한 기초지식은 있어야 이해하기 쉽다. 생명공학도든 개발자든 생물정보학을 기초부터 시작해서 깊이 있게 배우고 싶다면 큰 도움이 될 것이라고 확신한다.
이 책은 나의 첫번째 번역서로 서투르게 진행했다. 그렇지만 책을 번역하면서 많이 배웠으며, 아직도 개발적으로 지식이 부족하다는 생각을 자주 했다. 독자들은 책을 차근차근 읽어 나가며 나보다 더 많이 얻어갔으면 좋겠다. 책을 읽으며 표현이 어색하거나 해석이 이상한 부분이 있다면 언제든 피드백을 주길 바란다.