1. 광고배너
  2. 광고배너
/ 이전버튼 다음버튼
2
미리보기

생물정보학을 위한 파이썬 - 유연한 파이썬 코드 작성 테스트 리팩토링(에이콘 프로그래밍 언어 시리즈)
저자 : 켄 유엔스 클락 ㅣ 출판사 : 에이콘출판 ㅣ 역자 : 황태웅

2023.11.29 ㅣ 576p ㅣ ISBN-13 : 9791161758022

정가45,000
판매가42,750(5% 할인)
적립금 1,800원 (4%)
배송일정 05월 14일 출고 가능
주문 수량 변경시 안내 배송안내
쿠폰 및 결제혜택 확인하기

크기 기타 규격
제품구성 단행본
이용약관 청약철회
국내도서 > 컴퓨터 > 인터넷 > 웹프로그래밍(웹디자...
파이썬으로 생물정보학 데이터를 분석하는 법을 배운다. 생물정보학에서 중요한 계산, 즉 뉴클레오티드 빈도 계산, mRNA 번역, DNA 역상보체 구하기, GC함량 계산, DNA의 모티프 찾기, ORF 프레임 찾기 등을 파이썬 코드로 구현하는 방법을 알아본다. 파이썬 코드를 다루면서 결과를 테스트하고, 문서화해서 작성하는 방법까지 살펴본다. 또한, 여러 솔루션을 제시하면서 독자가 직접 계산해볼 수 있게 하고, 여러 방면으로 생각할 수 있게끔 도와준다. 이후 Seqmagique, FASTX, BLAST 등을 소개하며 파이썬 외의 다른 분석법을 소개하며 지식의 범위를 넓혀준다.
펼쳐보기

[목 차]

1부. Rosalind.info 챌린지

1장. 테트라뉴클레오타이드 빈도: 빈도수 계산
__시작하기
____new.py를 사용해 새 프로그램 만들기
____argparse 사용하기
____코드의 오류를 찾기 위한 개발 툴
____명명된 튜플 소개
____명명된 튜플에 타입 추가하기
____NamedTuple로 인수 표현하기
____커맨드 라인 또는 파일에서 입력값 읽기
____프로그램 테스트하기
____출력 테스트하기 위해 프로그램 실행하기
__솔루션
____솔루션 1: 문자열의 문자 반복과 계산
____뉴클레오타이드 계산하기
____솔루션 작성 및 검증
__추가적인 솔루션
____솔루션 2: count() 함수 생성과 단위 테스트 추가하기
____솔루션 3: str.count() 사용하기
____솔루션 4: 딕셔너리를 사용해 모든 문자 계산하기
____솔루션 5: 원하는 염기만 계산하기
____솔루션 6: collections.defaultdict() 사용하기
____솔루션 7: collections.Counter() 사용하기
__더 나아가기
__요점 정리


2장. DNA를 mRNA로 변환: 문자열 변경, 파일 읽기와 쓰기
__시작하기
____프로그램의 매개 변수 정의
____선택적 매개 변수 정의
____하나 이상의 필수 위치 매개 변수 정의하기
____nargs를 사용해 인수의 수 정의하기
____argparse.FileType()을 사용해 파일 인수의 유효성 검사하기
____Args 클래스 정의하기
____의사 코드를 사용한 프로그램 개요
____입력 파일 반복
____출력 파일 이름 생성하기
____출력 파일 열기
____출력 염기 서열 쓰기
____상태 보고서 출력하기
____테스트 모음 사용하기
__솔루션
____솔루션 1: str.replace() 사용하기
____솔루션 2: re.sub() 사용하기
__벤치마킹하기
__더 나아가기
__요점 정리


3장. DNA 역상보체: 문자열 조작
__시작하기
____역문자열을 반복하기
____의사결정 트리 만들기
____리팩토링하기
__솔루션
____솔루션 1: for 루프와 의사결정 트리 사용하기
____솔루션 2: 딕셔너리 검색 사용하기
____솔루션 3: 리스트 컴프리헨션 사용하기
____솔루션 4: str.translate() 사용하기
____솔루션 5: Bio.Seq 사용하기
__요점 정리


4장. 피보나치 수열 만들기: 알고리듬 작성, 테스트, 벤치마킹하기
__시작하기
__명령적 접근법
__솔루션
____솔루션 1: 리스트를 스택으로 사용하는 명령적 솔루션
____솔루션 2: 생성자 함수 만들기
____솔루션 3: 재귀 및 메모이제이션 사용하기
__솔루션 벤치마킹하기
__좋은 테스트, 나쁜 테스트, 못생긴 테스트
__모든 솔루션에서 테스트 모음집 실행하기
__더 나아가기
__요점 정리


5장. GC 함량 계산하기: FASTA 파싱하고 염기 서열 분석하기
__시작하기
____바이오파이썬을 사용해 FASTA 구문 분석하기
____루프를 사용해 염기 서열 반복하기
__솔루션
____솔루션 1: 리스트 사용하기
____솔루션 2: 타입 주석과 단위 테스트
____솔루션 3: 실행 중인 최대 변수 유지하기
____솔루션 4: 리스트 컴프리헨션인 Guard를 사용하기
____솔루션 5: filter() 함수 사용하기
____솔루션 6: map() 함수와 합산 부울 사용하기
____솔루션 7: 정규식을 사용해서 패턴 찾기
____솔루션 8: 더 복잡한 find_gc() 함수
__벤치마킹하기
__더 나아가기
__요점 정리


6장. 해밍 거리 찾기: 점 돌연변이 계산하기
__시작하기
____두 문자열의 문자 반복
__솔루션
____솔루션 1: 반복과 계산
____솔루션 2: 단위 테스트 작성하기
____솔루션 3: zip() 함수 사용하기
____솔루션 4: zip_longest() 함수 사용하기
____솔루션 5: 리스트 컴프리헨션 사용하기
____솔루션 6: filter() 함수 사용하기
____솔루션 7: zip_longest()와 map() 함수 사용하기
____솔루션 8: starmap() 함수와 operator.ne() 함수 사용하기
__더 나아가기
__요점 정리


7장. mRNA를 단백질로 변환하기: 더 많은 함수형 프로그래밍
__시작하기
____K-mer와 코돈
____코돈 번역
__솔루션
____솔루션 1: for 루프 사용하기
____솔루션 2: 단위 테스트 추가하기
____솔루션 3: 또 다른 함수와 리스트 컴프리헨션
____솔루션 4: map(), partial(), takewhile() 함수를 사용한 함수형 프로그래밍
____솔루션 5: Bio.Seq.translate() 사용하기
__벤치마킹하기
__더 나아가기
__요점 정리


8장. DNA에서 모티프 찾기: 염기 서열 유사성 탐색하기
__시작하기
____부분 염기 서열 찾기
__솔루션
____솔루션 1: str.find() 메서드 사용하기
____솔루션 2: str.index() 메서드 사용하기
____솔루션 3: 순수한 기능적 접근 방식
____솔루션 4: k-mer 사용하기
____솔루션 5: 정규식을 사용해 겹치는 패턴 찾기
__벤치마킹하기
__더 나아가기
__요점 정리


9장. 중첩 그래프: 공유 K-mer를 사용한 염기 서열 조립
__시작하기
____STDOUT, STDERR, 로깅을 사용한 런타임 메시지 관리하기
____중첩 찾기
____중첩된 염기 서열 그룹화하기
__솔루션
____솔루션 1: 교차로 설정을 사용해 중복 찾기
____솔루션 2: 그래프를 사용해서 모든 경로 찾기
__더 나아가기
__요점 정리


10장. 가장 긴 공유 부분 염기 서열 찾기: k-mer 찾기, 함수 작성, 이진 탐색 사용
__시작하기
____FASTA 파일에서 가장 짧은 염기 서열 찾기
____염기 서열에서 k-mer 추출하기
__솔루션
____솔루션 1: k-mer의 빈도수 세기
____솔루션 2: 이진 탐색으로 속도 향상시키기
__더 나아가기
__요점 정리


11장. 단백질 모티프 찾기: 데이터 가져오기 및 정규식 사용하기
__시작하기
____커맨드 라인에서 염기 서열 파일 다운로드
____파이썬으로 염기 서열 파일 다운로드하기
____모티프를 찾기 위한 정규 표현식 작성하기
__솔루션
____솔루션 1: 정규식 사용
____솔루션 2: 수동 솔루션 작성하기
__더 나아가기
__요점 정리


12장. 단백질에서 mRNA 유추하기: 리스트의 곱셈과 리스트 줄이기
__시작하기
____리스트의 곱 만들기
____나머지 연산 곱셈으로 오버플로 방지하기
__솔루션
____솔루션 1: RNA 코돈 테이블 딕셔너리 사용하기
____솔루션 2: 비트 전환
____솔루션 3: 최소 정보 인코딩하기
__더 나아가기
__요점 정리


13장. 위치 제한 부위: 코드 사용, 코드 테스트, 코드 공유
__시작하기
____k-mer를 사용한 모든 부분 염기 서열 찾기
____모든 역상보체 찾기
____모든 것을 합치기
__솔루션
____솔루션 1: zip()과 enumerate() 함수 사용하기
____솔루션 2: operator.eq() 함수를 사용하기
____솔루션 3: revp() 함수 작성하기
__프로그램 테스트하기
__더 나아가기
__요점 정리


14장. 열린 번역 프레임 찾기
__시작하기
____각 프레임 내부의 단백질 번역
____단백질 서열에서 ORF 찾기
__솔루션
____솔루션 1: str.index() 함수 사용하기
____솔루션 2: str.partition() 함수 사용하기
____솔루션 3: 정규식 사용하기
__더 나아가기
__요점 정리


2부. 다른 프로그램

15장. Seqmagique: 보고서 생성과 형식 지정
__Seqmagick을 사용해서 염기 서열 파일 분석하기
__MD5 해시를 사용해서 파일 확인하기
__시작하기
____tabulate()를 사용해서 텍스트 테이블 서식 지정하기
__솔루션
____솔루션 1: tabulate()로 형식 지정하기
____솔루션 2: rich로 형식 지정하기
__더 나아가기
__요점 정리


16장. FASTX grep: 염기 서열을 선택하기 위한 유틸리티 프로그램 만들기
__grep을 사용해서 파일에서 줄 찾기
__FASTQ 레코드의 구조
__시작하기
____파일 형식 추측하기
__솔루션
____파일 확장명에서 파일 형식 추측하기
____계획이 함께 올 때가 좋다
____정규식 검색 플래그 결합하기
____부울 값 줄이기
__더 나아가기
__요점 정리


17장. DNA 합성기: 마르코프 체인으로 합성 데이터 생성하기
__마르코프 체인의 이해
__시작하기
____무작위 시드 이해하기
____훈련 파일 읽기
____염기 서열 생성하기
____프로그램 구조화
__솔루션
__더 나아가기
__요점 정리


18장. FASTX 샘플러: 염기 서열 파일 무작위 서브샘플링
__시작하기
____프로그램 매개 변수 검토하기
____매개 변수 정의하기
____비결정적 샘플링하기
____프로그램 구성하기
__솔루션
____솔루션 1: 일반 파일 읽기
____솔루션 2: 많은 압축 파일 읽기
__더 나아가기
__요점 정리


19장. Blastomatic: 구분된 텍스트 파일 구문 분석
__BLAST 소개
__csvkit과 csvchk 사용하기
__시작하기
____인수 정의
____csv 모듈을 사용해서 구분된 텍스트 파일 구문 분석
____pandas 모듈을 사용해서 구분된 텍스트 파일 구문 분석
__솔루션
____솔루션 1: 딕셔너리를 사용해서 수동으로 테이블 조인하기
____솔루션 2: csv.DictWriter()를 사용해서 출력 파일 쓰기
____솔루션 3: pandas를 사용해서 파일 읽기와 쓰기
____솔루션 4: pandas를 사용해서 파일 조인하기
__더 나아가기
__요점 정리


부록 A. make를 사용해서 명령 문서화와 워크플로 생성하기
부록 B. $PATH 이해하고 커맨드 라인 프로그램 설치하기
펼쳐보기
◈ 이 책에서 다루는 내용 ◈
◆ 매개 변수를 문서화하고 검증할 커맨드 라인 파이썬 프로그램 생성
◆ 리팩토링 프로그램을 확인하고 올바른지 확인하기 위한 테스트 작성
◆ 바이오파이썬과 같은 파이썬 데이터 구조와 모듈을 사용한 생물정보학 아이디어 해결
◆ 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)’ 정신은 여전히 나에게 공감을 일으킨다. 일반적으로 각 장의 주제와 변형 접근 방식을 따르며, 파이썬 구문과 데이터 구조의 다양한 측면을 탐색하기 위한 많은 솔루션을 보여준다.

작가의 말
리처드 해밍(Richard Hamming)은 벨(Bell) 연구소에서 수학자와 연구원으로 수십 년을 보냈다. 그는 자신이 모르는 사람들을 찾아내고 그들의 연구에 대해 묻는 것으로 유명했다. 그런 다음 그는 그들에게 자신의 분야에서 답이 없는 가장 크고 시급한 질문이 무엇이라고 생각하는지 물었다. 이 두 가지에 대한 답변이 동일하지 않은 경우 그는 “그럼 왜 그 작업을 하지 않습니까?”라고 물었다.
생물정보학에서 가장 시급한 문제 중 하나는 많은 소프트웨어가 제대로 작성되지 않았고 적절한 문서와 테스트가 부족하다는 것이다. 시간이 지남에 따라 새로운 기능을 추가하고 더 좋고 더 나은 소프트웨어를 출시하는 것이 더 쉬워질 것이기 때문에 타입, 테스트, 린터(linter)를 사용하는 것이 덜 어렵다는 것을 보여주고 싶었다. 최소한 어느 정도의 정확성을 위해 프로그램이 정확할 때 확실하게 알 수 있는 자신감을 갖게 될 것이다.
이를 위해 소프트웨어 개발의 모범 사례를 소개하고자 한다. 나는 파이썬을 매개체로 사용하고 있지만 원칙은 C에서 R, 자바스크립트(JavaScript)에 이르기까지 모든 언어에 적용된다. 이 책에서 배울 수 있는 가장 중요한 것은 우리 모두가 함께 과학 연구 컴퓨팅을 발전시킬 수 있도록 소프트웨어를 개발하고, 테스트하고, 문서화하고, 출시하고, 지원하는 기술이다.

옮긴이의 말
생물정보학은 생명공학과 컴퓨터공학 두 가지 지식을 모두 갖고 있어야 제대로 이해할 수 있다고 생각한다. 특히 컴퓨터공학 지식을 더 많이 갖고 있다면 더 이해하기 쉬운 학문인 것 같다. 왜냐하면 내가 생물정보학을 처음 배울 때 이해를 하나도 못 했었기 때문이다. 그러나 이 책을 번역하면서 생명공학에 대한 지식이 부족해서가 아니라, 컴퓨터 지식이 없어서였다는 사실을 깨달았다. 소프트웨어 개발자가 된 지금은 컴퓨터 용어에 대한 지식을 통해 파이썬 로직이 왜 그렇게 진행되는지 이해할 수 있게 됐다.
그렇기 때문에 컴퓨터 코딩 지식, 특히 파이썬과 알고리듬을 배웠다면 이 책을 이해하기 수월할 것이다. 특히, 문서화하고 테스트하는 과정은 생명공학도로서는 이해하기 힘들 수 있다. 테스트는 테스트 주도 개발론TDD적으로 꼭 필요한 과정이고, 문서화하는 과정도 개발자가 소통하기 위해 꼭 필요한 과정이다. 그렇기 때문에, 개발자의 입장에서 쓴 생물정보학 책이라고 볼 수 있다.
그렇지만 생명공학도가 봐도 좋은 책이다. 코드로 분석하는 방법을 정말 자세히 설명하고 있어서 초보자도 차근차근 따라하기 쉽다. 물론 파이썬에 대한 기초 지식은 있어야 이해하기 쉽다. 생명공학도든 개발자든 생물정보학을 기초부터 시작해서 깊이 있게 배우고 싶다면 이 책이 큰 도움이 될 것이라고 확신한다.
이 책은 나의 첫 번째 번역 책으로 서툴게 진행했다. 그렇지만 책을 번역하면서 많이 배웠으며, 아직도 개발적으로 지식이 부족하다는 생각을 자주 했다. 독자들은 책을 차근차근 읽으며 나보다 더 많이 얻어갔으면 좋겠다. 책을 읽으며 표현이 어색하거나 해석이 이상한 부분이 있다면 언제든 피드백을 주길 바란다.

추천사
저자의 광범위한 교육 배경과 생물정보학 및 파이썬에 대한 전문 지식은 이런 복잡한 주제를 접근 가능하고 재미있게 만든다. 파이썬에 대한 경험이 있든 처음이든, 생물정보학 문제를 해결하기 위한 모범 사례를 배울 것이다. 강력히 추천한다.
─알 쉐러(Al Scherer), Follett 기술 이사
펼쳐보기
켄 유엔스 클락
약 25년 동안 프로그래밍을 해왔다. 노스텍사스대학교(University of North Texas)에서 음악으로 시작해서 영문학으로 끝난 방황하는 학부 교육을 받은 후, 직장에서 다양하고 잡다한 언어를 사용해서 프로그래밍을 배웠다. 결국 생물정보학 실험실에 들어갔고, 생물정보학이 전에 했던 프로그래밍들보다 훨씬 더 멋져 보인다고 생각했으며, 그래서 생물정보학을 고수했다. 미국 애리조나 주 투싼(Tucson)에 살고 있으며, 애리조나대학교(University of Arizona)에서 2019년에 바이오시스템 공학 석사 학위를 취득했다.


옮긴이 황태웅
고등학교 때 생물이 재밌어서 경희대학교 유전공학과에 입학했고, 2학년 때 ‘생물정보학을 위한 파이썬’이라는 전공 과목을 듣고 생물과 코딩의 조합에 빠져 생물정보학을 공부하게 됐다. 더 깊게 공부하고 싶어서 식물유전체학 연구실에서 벼를 키우며 생물정보학을 배웠다. 실험실에서는 리눅스 시스템 내에서 파이썬과 R로 분석해 연구를 진행했다. 생물정보학을 배우다 보니 유전자에 관한 지식보다는 소프트웨어 코딩에 조금 더 관심을 갖게 됐고, 웹 프로그래머가 되고자 독학을 해서 웹 개발자로 취직했다. 현재는 롯데정보통신 회사에서 소프트웨어 개발자로 일하는 중이며, 앱 개발도 배워 여러 개발을 해보고 싶다는 생각을 하고 있다.
펼쳐보기

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.
도서평점
내용
등록하기
0/2000자
교환/반품 방법
  • 마이페이지 > 주문관리 > 주문/배송조회 > 주문조회 후  [1:1상담신청]  또는 고객센터 (1544-9020)
  • ※ 오픈마켓, 해외배송 주문상품 문의 시 [1:1상담신청] 또는 고객센터 (1544-9020)
교환/반품 가능기간
  • 변심반품의 경우 수령 후 7일 이내
  • 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
교환/반품 비용
  • 단순변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 해외직배송 도서 구매 후 단순변심에 의한 취소 및 반품 시 도서판매가의 20% 수수료 부과
교환/반품 불가사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 예) 만화, 잡지, 수험서 및 문제집류
  • 복제가 가능한 상품 등의 포장을 훼손한 경우 예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
상품 품절
  • 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기 >

    이 분야의 신간

    더보기 >
      맨위로가기

      영풍문고 로고

      • 회사명 : (주)영풍문고
      • 대표이사 : 김경환
      • 소재지 : 서울특별시 종로구 청계천로 41 (우)03188
      • 사업자 등록번호 : 773-86-01800 ㅣ 통신판매업 신고번호 : 2023-서울종로-0130 [ 사업자정보확인 ]
      • 개인정보관리 책임자 : 조순제 ㅣ customer@ypbooks.co.kr ㅣ 대량주문 : webmaster@ypbooks.co.kr
      COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED.
      영풍문고 네이버블로그 영풍문고 인스타그램
      맨위로가기