1.15k likes | 3.63k Views
Slides for the "One-liner Bioinformatics" session<br>IT Basics for Bioinformatics, Spring 2019<br>Interdisciplinary Program in Bioinformatics, Seoul National University
E N D
생물정보학을 위한 IT기초 2019년 1학기 한 줄짜리 생물정보학 One-liner Bioinformatics 장혜식 서울대학교 생명과학부
따로 저작권이 표시되지 않은 슬라이드는 Creative Commons 4.0 BY-SA 조건으로 사용하실 수 있습니다. 실습용 데이터는 https://gist.github.com/hyeshik/027766edb624cac2576db0bcca1fe76c 에서 받으실 수 있습니다.
Unix Command Line for Genomics
Unix 명령행—왜 쓰나? - 대부분의 생물정보학 도구는 커맨드 라인 인터페이스만 제공한다. - 만들기 쉽다. 필요한 기능만 만들면 된다. - 확장하기 좋다. 다른 프로그램에서 불러 쓰기도 좋고, 파이프라인 을 만들고, 여러 프로그램을 조합해서 쓰기도 좋다. - 작은 일 하나만 정말 잘 하는 도구로 만들기 좋다. - 범위가 좁을 수록 시장이 넓다. (제작, 유지보수에서 경제적임) - 범위가 좁을 수록 검증이 쉽고 신뢰할 수 있다. - 지원하는 기능 만큼은 최선을 다 할 수 있다. - 기록, 자동화, 복사&붙여넣기가 쉽다. - 실수할 가능성이 줄어든다. - 원격지 컴퓨터를 쓰기에 편하다. - 거의 모든 주요 OS에서 잘 지원함. macOS (FreeBSD), Windows (Ubuntu Linux외)
Unix가 도대체 뭔가? AT&T의 Ken Thompson과 Dennis Richie가 만든 (주로 시분할 시스템을 위한) 운영체제 © Peter Hamer CC BY-SA 2.0 모듈러 설계가 특징
1969 1969 Unnamed PDP-7 operating system Open source 1971 to 1973 1971 to 1973 Unix Mixed/shared source Version 1 to 4 1974 to 1975 1974 to 1975 Unix Closed source PWB/Unix Version 5 to 6 1978 1978 BSD 1.0 to 2.0 Unix Version 7 1979 1979 Unix/32V 1980 1980 BSD 3.0 to 4.1 Xenix 1.0 to 2.3 1981 1981 System III 1982 1982 Xenix 3.0 BSD 4.2 1983 1983 SunOS 1 to 1.1 System V R1 to R2 1984 1984 SCO Xenix Unix Version 8 1985 1985 SCO Xenix V/286 System V AIX 1.0 R3 BSD 4.3 1986 1986 Unix-like systems HP-UX 1.0 to 1.2 SunOS 1.2 to 3.0 SCO Xenix V/386 Unix 9 and 10 (last versions from Bell Labs) 1987 1987 HP-UX 2.0 to 3.0 1988 1988 BSD 4.3 Tahoe System V R4 SCO Xenix V/386 1989 1989 BSD Net/1 BSD 4.3 Reno 1990 1990 NexTSTEP/ OPENSTEP 1.0 to 4.0 복잡하지만 간단한 Unix 가계도 BSD Net/2 1991 1991 Linux 0.0.1 SunOS 4 Minix 1.x 386BSD 1992 1992 HP-UX 6 to 11 NetBSD 0.8 to 1.0 Linux 0.95 to 1.2.x BSD 4.4-Lite & Lite Release 2 UnixWare 1.x to 2.x (System V R4.2) SCO UNIX 3.2.4 1993 1993 FreeBSD 1.0 to 2.2.x 1994 1994 1995 1995 NetBSD 1.1 to 1.2 OpenBSD 1.0 to 2.2 OpenServer 5.0 to 5.04 Solaris 2.1 to 9 1996 1996 1997 1997 NetBSD 1.3 FreeBSD 3.0 to 3.2 1998 1998 OpenServer 5.0.5 to 5.0.7 Minix 2.x 1999 1999 Mac OS X Server AIX 3.0-7.2 2000 2000 2001 to 2004 2001 to 2004 Linux 2.x 2005 2005 UnixWare 7.x (System V R5) 2006 to 2007 2006 to 2007 OpenBSD 2.3-6.1 Solaris 2008 2008 10 Mac OS X, OS X, macOS 10.0 to 10.12 (Darwin 1.2.1 to 17) FreeBSD 3.3-11.x NetBSD 1.3-7.1 OpenServer 6.x HP-UX 11i+ 2009 2009 DragonFly BSD 1.0 to 4.8 Minix 3.1.0-3.4.0 2010 2010 OpenSolaris & derivatives (illumos, etc.) 2011 2011 Linux 3.x 2012 to 2015 CC BY-SA 3.0 https://en.wikipedia.org/wiki/File:Unix_history-simple.svg 2012 to 2015 Solaris 11.0-11.3 2016 2016 Linux 4.x OpenServer 10.x 2017 2017
1969 Unnamed PDP-7 operating system 1971 to 1973 Unix Version 1 to 4 1974 to 1975 Unix Version 5 to 6 1978 BSD 1.0 to 2.0 Unix Version 7 1979 Unix/32V 1980 BSD 3.0 to 4.1 1981 1982 BSD 4.2 1983 SunOS 1 to 1.1 1984 Unix Version 8 1985 BSD 4.3 1986 Unix-like systems SunOS 1.2 to 3.0 Unix 9 and 10 (last versions from Bell Labs) 1987 1988 BSD 4.3 Tahoe 1989 BSD Net/1 BSD 4.3 Reno 1990 BSD Net/2 1991 Linux 0.0.1 SunOS 4 Minix 1.x CC BY-SA 3.0 https://en.wikipedia.org/wiki/File:Unix_history-simple.svg 386BSD NexTSTEP/ OPENSTEP 1.0 to 4.0 1992 NetBSD 0.8 to 1.0 Linux BSD
1969 Unnamed PDP-7 operating system Open source 1971 to 1973 Mixed/shared source 1974 to 1975 Closed source PWB/Unix 1978 1979 Unix/32V 1980 Xenix 1.0 to 2.3 1981 System III 1982 Xenix 3.0 1983 SunOS 1 to 1.1 System V R1 to R2 1984 SCO Xenix 1985 SCO Xenix V/286 System V AIX 1.0 R3 1986 HP-UX 1.0 to 1.2 SunOS 1.2 to 3.0 SCO Xenix V/386 1987 HP-UX 2.0 to 3.0 1988 System V R4 SCO Xenix V/386 1989 1990 1991 SunOS CC BY-SA 3.0 https://en.wikipedia.org/wiki/File:Unix_history-simple.svg 4 1992 HP-UX 6 to 11 UnixWare SCO UNIX
1985 SCO Xenix V/286 System V AIX 1.0 R3 1986 HP-UX 1.0 to 1.2 SunOS 1.2 to 3.0 SCO Xenix V/386 1987 HP-UX 2.0 to 3.0 1988 System V R4 SCO Xenix V/386 1989 1990 1991 SunOS 4 1992 HP-UX 6 to 11 UnixWare 1.x to 2.x (System V R4.2) SCO UNIX 3.2.4 1993 1994 1995 OpenBSD 1.0 to 2.2 OpenServer 5.0 to 5.04 Solaris 2.1 to 9 1996 1997 1998 OpenServer 5.0.5 to 5.0.7 1999 AIX 3.0-7.2 2000 2001 to 2004 2005 UnixWare 7.x (System V R5) 2006 to 2007 OpenBSD 2.3-6.1 Solaris 2008 10 OpenServer 6.x HP-UX 11i+ 2009 CC BY-SA 3.0 https://en.wikipedia.org/wiki/File:Unix_history-simple.svg 2010 OpenSolaris & derivatives (illumos, etc.) 2011
Unix/32V 1980 BSD 3.0 to 4.1 1981 1982 BSD 4.2 1983 SunOS 1 to 1.1 1984 대격변기 Unix Version 8 1985 BSD 4.3 1986 Unix-like systems SunOS 1.2 to 3.0 Unix 9 and 10 (last versions from Bell Labs) 1987 1988 BSD 4.3 Tahoe 1989 BSD Net/1 BSD 4.3 Reno 1990 BSD Net/2 1991 Linux 0.0.1 SunOS 4 Minix 1.x 386BSD NexTSTEP/ OPENSTEP 1.0 to 4.0 1992 NetBSD 0.8 to 1.0 Linux 0.95 to 1.2.x BSD 4.4-Lite & Lite Release 2 1993 FreeBSD 1.0 to 2.2.x 1994 1995 NetBSD 1.1 to 1.2 OpenBSD 1.0 to 2.2 1996 1997 NetBSD 1.3 FreeBSD 3.0 to 3.2 1998 Minix 2.x 1999 Mac OS X Server CC BY-SA 3.0 https://en.wikipedia.org/wiki/File:Unix_history-simple.svg 2000 2001 to 2004
(last versions from Bell Labs) 1988 BSD 4.3 Tahoe 1989 BSD Net/1 BSD 4.3 Reno 1990 BSD Net/2 1991 Linux 0.0.1 SunOS 4 Minix 1.x 386BSD NexTSTEP/ OPENSTEP 1.0 to 4.0 1992 NetBSD 0.8 to 1.0 Linux 0.95 to 1.2.x BSD 4.4-Lite & Lite Release 2 1993 FreeBSD 1.0 to 2.2.x 1994 1995 NetBSD 1.1 to 1.2 OpenBSD 1.0 to 2.2 1996 1997 NetBSD 1.3 FreeBSD 3.0 to 3.2 1998 Minix 2.x 1999 Mac OS X Server 2000 2001 to 2004 Linux 2.x 2005 2006 to 2007 OpenBSD 2.3-6.1 2008 Mac OS X, OS X, macOS 10.0 to 10.12 (Darwin 1.2.1 to 17) FreeBSD 3.3-11.x NetBSD 1.3-7.1 2009 DragonFly BSD 1.0 to 4.8 Minix 3.1.0-3.4.0 2010 2011 Linux 3.x 2012 to 2015 CC BY-SA 3.0 https://en.wikipedia.org/wiki/File:Unix_history-simple.svg 2016 Linux 4.x 2017
오늘 진행할 내용 쉽고 재미있고 다채로운 Unix Command Line 사용법 ➡ 완전 입문 다양한 도구를 알아가는 과정 오늘의 범위 http://rik.smith-unna.com/command_line_bootcamp/ https://datacarpentry.org/shell-genomics/ https://github.com/raynamharris/Shell_Intro_fo.... 입문부터 기본 연습 man, info, Unix Power Tools (O’Reilly), stackoverflow.com, biostars.org 여러가지 다양한 도구와 기가 막히게 멋진 사용례들…
터미널…이 왜 터미널이지? macOS Terminal.app PuTTY on Windows © Aaron Quinlan, CC BY-SA
터미널…이 왜 터미널이지? © Liberal Classic, X11 license https://commons.wikimedia.org/wiki/File:X-Window-System.png
터미널…이 왜 터미널이지? © Gorthmog, CC BY-SA 4.0 https://commons.wikimedia.org/wiki/File:DEC_VT100_terminal_transparent.png
터미널…이 왜 터미널이지? © Marcin Wichary, CC BY 2.0 https://en.wikipedia.org/wiki/File:TTY33ASR.jpg
셸, 터미널은 어디서 돌아가는 녀석들인가? © Paul Harrison
셸, 터미널은 어디서 돌아가는 녀석들인가? © Paul Harrison
셸, 터미널은 어디서 돌아가는 녀석들인가? © Paul Harrison
셸 명령행 기본 사용 Prompt
셸 명령행 기본 사용 – ls flag 또는 switch, option 등으로 부름
Absolute path, relative path root home bin vol CWD: /home/luke ls head cat luke leia proj1/data1.txt ← relative path /home/luke/proj1/data1.txt ↑ absolute path proj1 ../../bin/head ← relative path /bin/head ← absolute path data1.txt data2.txt © Aaron Quinlan, CC-BY-SA
셸 명령행 기본 사용 – man 조작 키 (less) j 다음 줄 k 이전 줄 ctrl-f, space 다음 페이지 ctrl-b 이전 페이지 q 끝내기 / 찾기
셸 명령행 기본 사용 – 자동 완성 [Tab][Tab]
셸 명령행 기본 사용 – 자동 완성 [Tab][Tab]
셸 명령행 기본 사용 – ~ 줄여쓰기 [Tab][Tab]
셸 명령행 기본 사용 – ~ 줄여쓰기 [Tab][Tab] [Tab][Tab]
셸 명령행 기본 사용법 익히기 고수가 주변에 있으면 조용히 옆에서 계속 보고 있는다 (대체로 말로 가르쳐 줄 수 있는 것보다 더 많이 알고 쓰고 있음) (배경이미지 저작권 불확실)
셸 명령행 기본 사용 – cat [Tab][Tab] [Tab][Tab]
FASTQ format 이름 (보통 리드의 물리적 위치 또는 ID) 서열 (한 줄에 쭉 붙여서 씀) @a1110:00138680/1 TCTGGCTGCTGGATGCCCTGGGGACCGCTCAGCCCTTCCCACCTGTCTCTC + (비워도 되고, 이름을 반복해서 쓰기도 함. 여러 줄 서열이 허용되던 시절의 잔재) + ;?CB>>A:?CB><B:><>BB==>=@=B?BA?B><>DB?<A<@>C@B?D?5A 리드 품질 (phredQ+33 -> 아스키코드)
명령행에서 FASTQ 분석하기 - less 조작 키 (less) j 다음 줄 k 이전 줄 ctrl-f, space 다음 페이지 ctrl-b 이전 페이지 q 끝내기 / 찾기