머리말 ... ⅲ 이 책의 내용 ... ⅴ 이 책의 구성 ... ⅶ 이 책을 보는 방법 ... ⅸ 감사의 글 ... xi Part 1 chapter 01 정보학의 측면에서 바라본 바이오인포매틱스 ... 1 1.1 로제타스톤과 인간게놈지도 ... 2 1.2 바이오인포매틱스란? ... 3 1.3 인간게놈프로젝트의 완성까지... ... 4 1.4 바이오디지털 정보들 ... 6 1.5 대표적인 게놈 포털 사이트 ... 14 1.6 바이오디지털 데이터 분석 ... 17 1.7 마무리 ... 18 인터넷 리소스 ... 19 연습문제 ... 20 chapter 02 자바의 개요 ... 21 2.1 자바 프로그래밍 언어 ... 22 자바의 역사 ... 22 자바 프로그램의 구성요소 ... 23 2.2 클래스의 개념 ... 26 2.3 자바의 API ... 29 2.4 자바코드의 기본적인 문법 ... 31 기본 자료형 ... 31 배열 ... 32 문자열 ... 33 연산자 ... 33 다중 break ... 34 메모리 관리와 가비지 수집 ... 34 예외 처리 ... 35 스레드 ... 36 2.5 실제 자바 프로그램의 예 ... 36 2.6 자바 설치하기 ... 39 JDK 다운로드 ... 39 JDK 설치 ... 41 자바 프로그래밍의 시작 ... 46 2.7 마무리 ... 48 인터넷 리소스 ... 49 연습문제 ... 49 chapter 03 기본 서열정보 다루기 ... 51 3.1 자바 프로그래밍 시작 ... 52 서열정보 표현 ... 52 변수와 상수 ... 56 3.2 클래스 사용 ... 57 서열 길이 알아내기 ... 57 3.3 프로그램의 구조 ... 59 조건문 ... 60 반복문 ... 62 3.4 조건문과 반복문 활용 ... 69 코돈 만들기 ... 70 역상보 서열 만들기 ... 72 3.5 서열정보를 입력받기 위한 다양한 방법 ... 75 명령어 라인에서 입력 ... 76 프로그램 실행중에 대화식으로 입력 ... 79 3.6 마무리 ... 81 인터넷 리소스 ... 82 연습문제 ... 82 chapter 04 DNA 서열 클래스 ... 85 4.1 자바의 클래스 ... 86 객체란? ... 86 객체지향과 클래스 ... 87 객체 생성 ... 88 참조변수 ... 91 STATIC 클래스에 관하여 ... 95 4.2 생성자 사용자 정의 ... 96 오버로딩 ... 98 this 변수 ... 99 4.3 메소드 ... 100 4.4 접근 제어자 ... 104 4.5 서열정보 다루기 ... 107 부분 서열 얻기 ... 107 서열 덧붙이기 ... 108 역상보 서열 얻기 ... 109 DNA 빈도수 ... 112 4.6 서열 정렬 ... 117 4.7 마무리 ... 125 인터넷 리소스 ... 125 연습문제 ... 126 chapter 05 RNA 서열 클래스 ... 129 5.1 RNA로 확장 ... 130 RNA 서열 ... 130 5.2 DNA와 RNA의 상속관계 ... 134 객체지향의 상속 ... 134 상속으로 SimpleDNASequence 클래스 다시 정의하기 ... 137 상속으로 SimpleRNASequence 클래스 정의하기 ... 142 오버라이딩 ... 144 코돈에 관한 문제 재고찰 ... 146 5.3 RNA 접힘 문제 ... 154 5.4 형변환 ... 159 상향 캐스팅 ... 159 하향 캐스팅 ... 162 5.5 다형성 ... 164 오버라이딩 ... 164 인터페이스와 추상 클래스 ... 165 5.6 마무리 ... 169 인터넷 리소스 ... 170 연습문제 ... 170 chapter 06 바이오 정보의 파일 입출력 ... 173 6.1 파일 입출력과 예외 ... 174 FASTA 형식 ... 174 스트림을 통한 입출력 ... 175 입출력 과정에서의 예외상황 ... 179 6.2 향상된 파일 입출력 ... 181 버퍼를 이용한 파일 입출력 ... 181 버퍼를 내장하는 입출력 스트림 ... 183 텍스트 파일 입출력을 위한 Reader/Writer ... 186 버퍼를 사용하는 Reader/Writer ... 189 6.3 파일 입출력 활용 ... 191 파일로부터 SimpleDNASequence 객체 생성 ... 191 6.4 예외 관련 클래스 ... 193 예외 클래스 정의 ... 194 예외 발생 ... 195 6.5 메드라인으로부터 논문 초록 다운로드 ... 201 6.6 마무리 ... 203 인터넷 리소스 ... 204 연습문제 ... 204 chapter 07 서열정보 데이터베이스와 GenBank 파일 파싱 ... 205 7.1 GenBank 데이터베이스 ... 206 GenBank ... 206 GenBank 데이터의 분류 ... 209 GenBank 파일 ... 211 7.2 파싱 ... 216 ACCESSION 번호 추출 ... 216 서열정보 추출 ... 219 7.3 기타 서열정보 파일 ... 224 7.4 마무리 ... 228 인터넷 리소스 ... 228 연습문제 ... 228 chapter 08 바이오자바 ... 231 8.1 바이오자바의 개요 ... 232 바이오자바 설치 ... 232 8.2 바이오자바의 서열정보 ... 235 SymbolList 클래스 ... 235 Sequence 클래스 ... 240 8.3 서열분석 정보를 위한 클래스 ... 243 Annotation 클래스 ... 243 Feature 클래스 ... 245 8.4 BioJava 객체 활용 ... 247 BioJava 객체 입출력 ... 247 8.5 서열정보 파일의 형식 변환 ... 249 8.6 단백질 구조정보와 바이오자바 ... 252 PDB ... 252 PDB 파일이 표현하는 3차원 구조 ... 253 PDB 파일 구조 ... 255 8.7 BLAST와 바이오자바 ... 261 BLAST ... 261 BLAST의 실행결과 ... 262 BlastLikeSAXParser ... 265 8.8 마무리 ... 271 인터넷 리소스 ... 271 연습문제 ... 272 chapter 09 윈도 프로그래밍과 그래픽 ... 273 9.1 AWT와 스윙 ... 274 9.2 기초적인 윈도 프로그래밍 ... 274 윈도 생성 ... 274 윈도의 이벤트 처리 ... 278 스윙 ... 284 9.3 윈도 프로그래밍의 실제 ... 286 염기서열 파일 뷰어 ... 286 9.4 자바 그래픽 ... 297 도형 그리기 ... 298 9.5 마무리 ... 312 인터넷 리소스 ... 312 연습문제 ... 312 Part 2 chapter 10 프로젝트 예제 1 - 제한지도 작성 ... 313 10.1 제한효소 ... 314 제한효소와 제한지도 ... 314 제한효소 데이터베이스 ... 316 제한효소의 종류 ... 319 10.2 프로그램 구현단계 ... 319 프로그램 흐름 설계 ... 320 자료구조 설계 ... 321 10.3 제한효소 클래스 ... 321 10.4 제한지도 작성Ⅰ ... 330 10.5 제한지도 작성Ⅱ ... 333 RestrictionMapper 클래스 ... 333 Restriction ver2 ... 335 10.6 바이오자바의 제한효소 ... 338 바이오자바의 RestrictionEnzyme ... 338 바이오자바의 RestrictionMapper ... 340 바이오자바를 이용한 제한지도 작성 프로그램 ... 342 10.7 GUI를 이용한 제한지도 프로그램 - RestrictionEnzMap ... 345 프로그램 개요 ... 345 프로그램 설계 ... 346 자료구조 및 클래스 설계 ... 346 10.8 구현 ... 347 RestrictionEnz ... 347 RestrictionEnzFrame 클래스 ... 350 GraphicPanel ... 364 RestrictionEnzMap 클래스 ... 366 10.9 실행결과 ... 367 10.10 마무리 ... 369 인터넷 리소스 ... 369 chapter 11 프로젝트 예제 2 - 유전자지도 시각화 프로그램 ... 371 11.1 프로그램 개요 ... 372 11.2 프로그램 흐름 ... 374 11.3 자료구조 및 프로그램 구성 ... 374 11.4 구현 ... 375 GenbankFileInfo 클래스 ... 375 GenbankBrowserFrame 클래스 ... 379 MonitorPanel 클래스 ... 386 LinearBrowserComponent 클래스 ... 387 CircularBrowserComponent 클래스 ... 393 11.5 실행결과 ... 403 11.6 마무리 ... 404 인터넷 리소스 ... 404 chapter 12 프로젝트 예제 3 - 미토콘드리아 SNP 비교 브라우저 ... 407 12.1 SNP ... 408 12.2 미토콘드리아 DNA ... 410 12.3 데이터베이스 ... 411 데이터베이스의 구성 ... 411 SQL ... 412 12.4 JDBC ... 416 12.5 MySQL ... 418 12.6 MitoSNPBrowser ... 418 프로그램 개요 ... 418 프로그램 흐름 ... 419 자료구조 및 프로그램 구성 ... 422 12.7 구현 ... 422 ArrayMax 클래스 ... 422 DBManager 클래스 ... 423 MitoSNPBrowser 클래스 ... 425 MonitorPanel 클래스 ... 426 MitoSNPBrowserFrame 클래스 ... 427 MitoSNPBrowserComponent 클래스 ... 432 SequenceViewFrame 클래스 ... 446 ViewSnpSequence 클래스 ... 448 12.8 실행결과 ... 456 12.9 마무리 ... 458 인터넷 리소스 ... 458 chapter 13 프로젝트 예제 4 - 단백질 3차원 구조 시각화 ... 461 13.1 단백질과 단백질 구조 ... 462 13.2 3D 그래픽 ... 463 13.3 프로그램 개요 ... 464 13.4 프로그램 흐름 ... 465 13.5 자료구조 및 프로그램 구성 ... 465 13.6 구현 ... 466 AtomObject 클래스 ... 466 HelixObject 클래스 ... 469 ThreeDModel 클래스 ... 472 PDBOpen 클래스 ... 481 PDBViewer 클래스 ... 486 나머지 클래스들 ... 505 13.7 실행결과 ... 507 13.8 마무리 ... 508 인터넷 리소스 ... 509 Appendix A 자바의 키워드 ... 511 Appendix B 예제 코드에 사용된 메소드 ... 513 찾아보기 ... 525