<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>In Silico Note</title>
    <link>https://is-note.tistory.com/</link>
    <description>is-note 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Fri, 17 Jul 2026 06:15:17 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>데이터로 읽는 생명</managingEditor>
    <item>
      <title>[RNA-seq 분석 개념] Central Dogma 심화: 전사의 3단계와 RNA Polymerase II</title>
      <link>https://is-note.tistory.com/190</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 앞서 배운 전사(Transcription)를 한 단계 더 들어가서, 실제로 그 안에서 몇 단계가 일어나는지, 그리고 각 단계가 왜 발현 조절의 지점이 되는지를 다룹니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 전사는 한 번에 일어나지 않는다: 4단계 구조&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전사는 크게 이렇게 나뉩니다.&lt;/p&gt;
&lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;개시(Initiation) &amp;rarr; 일시정지(Promoter-proximal Pausing) &amp;rarr; 신장(Elongation) &amp;rarr; 종결(Termination)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본편에서는 &quot;개시 &amp;rarr; 신장 &amp;rarr; 종결&quot;만 얘기했는데, 사실 개시 직후에 &lt;b&gt;일시정지라는 별도 단계&lt;/b&gt;가 끼어 있다는 것이 최근 20~30년 사이 밝혀진 중요한 사실입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 왜 중요한지는 아래에서 설명하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 개시(Initiation): RNA Pol II 혼자서는 시작 X&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RNA Polymerase II(Pol II)는 혼자서 DNA의 프로모터를 찾아가 전사를 시작하지 못합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;일반전사인자(General Transcription Factors, GTF)&lt;/b&gt;라고 불리는 여러 단백질(TFIIA, TFIIB, TFIID 등)이 먼저 프로모터에 결합해서 &lt;b&gt;전사 전 개시 복합체(Pre-Initiation Complex, PIC)&lt;/b&gt;를 조립해야 Pol II가 자리를 잡을 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TFIID가 프로모터의 특정 서열(TATA box 등)을 인식하며 조립을 시작합니다.&lt;/li&gt;
&lt;li&gt;이 GTF들이 모여야 Pol II가 DNA에 정확히 자리 잡고 전사를 시작할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pol II의 꼬리 부분(C-terminal Domain, CTD)&lt;/b&gt;에 특정 위치가 인산화되는지 여부가 &quot;지금이 개시 단계인지 신장 단계인지&quot;를 구분하는 화학적 신호로 쓰입니다. &lt;br /&gt;(세부 인산화 코드까지는 기본 이해에 필요 없지만, &quot;Pol II 꼬리의 화학적 변형이 단계마다 다르다&quot;라는 개념 알아두기)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 일시정지(Promoter-proximal Pausing): 숨어있던 조절 지점&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pol II는 전사를 시작한 직후, 약 30~60개 염기 정도만 합성하고 &lt;b&gt;일시적으로 멈춥니다.&lt;/b&gt; &lt;br /&gt;이 현상을 &lt;b&gt;Promoter-proximal Pausing&lt;/b&gt;이라고 부릅니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 멈춤은 &lt;b&gt;DSIF&lt;/b&gt;와 &lt;b&gt;NELF&lt;/b&gt;라는 두 단백질 복합체가 Pol II를 붙잡아서 일어납니다.&lt;/li&gt;
&lt;li&gt;멈춰있던 Pol II는 &lt;b&gt;P-TEFb&lt;/b&gt;(핵심 성분: CDK9라는 인산화 효소)가 와서 Pol II, DSIF, NELF를 인산화시켜야 풀려나서 본격적인 신장 단계로 넘어갑니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;왜 이게 중요한가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에는 &quot;유전자 발현 조절은 전사가 시작되느냐 마느냐(개시 단계)에서 결정된다&quot;고 생각했습니다. &lt;br /&gt;그런데 실제로는 많은 유전자에서 &lt;b&gt;Pol II가 이미 프로모터 근처에 대기하고 있다가, &quot;재개(release)&quot; 신호를 받았을 때만 본격적으로 발현되는 방식&lt;/b&gt;으로 조절됩니다. &lt;br /&gt;즉 조절 지점이 &quot;시작하느냐&quot;뿐 아니라 &quot;이미 시작한 걸 풀어주느냐&quot;에도 있다는 것입니다. &lt;br /&gt;이 개념은 유전자 발현 조절에서 전사인자/신호전달과 연결되는 핵심 배경입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 신장(Elongation) &amp;mdash; RNA가 실제로 합성되는 구간&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재개 신호를 받은 Pol II는 이제 유전자를 따라 이동하며 RNA를 계속 합성합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 단계에서 눈여겨볼 것 하나: &lt;b&gt;스플라이싱은 전사가 다 끝난 뒤 일어나는 게 아니라, Pol II가 아직 유전자를 읽고 있는 도중에(신장 단계와 동시에) 일어나는 경우가 많습니다.&lt;/b&gt; &lt;br /&gt;이걸 &lt;b&gt;동시전사 스플라이싱(Co-transcriptional Splicing)&lt;/b&gt;이라고 부릅니다.&lt;/li&gt;
&lt;li&gt;즉 &quot;전사 &amp;rarr; (끝나고) &amp;rarr; 스플라이싱&quot;이 아니라, &quot;전사와 스플라이싱이 겹쳐서 진행&quot;되는 그림에 더 가깝다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 종결(Termination) &amp;mdash; 어떻게 멈추는가 (Torpedo 모델)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pol II가 유전자의 끝부분(polyA 신호 서열)을 지나가면 전사가 종결되는데, 이 메커니즘이 흥미롭습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Pol II가 polyA 신호를 지나가면, 그 지점에서 RNA가 절단됩니다.&lt;/li&gt;
&lt;li&gt;절단되고 남은, Pol II에 여전히 붙어있는 RNA 조각의 끝을 &lt;b&gt;Rat1-Rai1&lt;/b&gt;이라는 효소(사람에게서는 &lt;b&gt;XRN2&lt;/b&gt;)가 분해하기 시작합니다.&lt;/li&gt;
&lt;li&gt;이 효소가 RNA를 분해하면서 Pol II를 &quot;쫓아가서&quot; 결국 따라잡으면, Pol II가 DNA에서 떨어져 나가며 전사가 끝납니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모델을 &lt;b&gt;토피도(Torpedo, 어뢰) 모델&lt;/b&gt;이라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;효소가 어뢰처럼 RNA를 따라가며 분해하다가 Pol II를 &quot;명중&quot;시켜 떨어뜨린다는 비유입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 나온 &lt;b&gt;polyA 신호&lt;/b&gt;가 다음 주제 목록의 9번(mRNA 3' 말단 처리, APA)과 바로 연결됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;정리 &amp;mdash; 여기까지 이해했다면&lt;/b&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;전사가 개시-일시정지-신장-종결의 4단계로 이루어진다는 것을 설명할 수 있다&lt;/li&gt;
&lt;li&gt;왜 일반전사인자(GTF)가 필요한지, PIC가 무엇인지 설명할 수 있다&lt;/li&gt;
&lt;li&gt;Promoter-proximal Pausing이 무엇이고, 왜 이게 &quot;숨어있던 조절 지점&quot;으로 불리는지 설명할 수 있다&lt;/li&gt;
&lt;li&gt;스플라이싱이 전사와 동시에 일어날 수 있다는 것을 알고 있다&lt;/li&gt;
&lt;li&gt;Torpedo 모델이 전사 종결을 어떻게 설명하는지 대략적인 그림을 그릴 수 있다&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Bio Data Analysis/RNA-Seq</category>
      <category>bioinformatics</category>
      <category>GTF</category>
      <category>RNA Polymerase</category>
      <category>개시</category>
      <category>스플라이싱</category>
      <category>신장</category>
      <category>유전체분석</category>
      <category>일시정지</category>
      <category>전사</category>
      <category>종결</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/190</guid>
      <comments>https://is-note.tistory.com/190#entry190comment</comments>
      <pubDate>Tue, 14 Jul 2026 20:00:39 +0900</pubDate>
    </item>
    <item>
      <title>[RNA-seq 분석 개념] Central Dogma</title>
      <link>https://is-note.tistory.com/189</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Central Dogma란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Central Dogma(중심원리)&lt;/b&gt;는 1958년 Francis Crick이 제안한 개념으로, 세포 안에서 유전정보가 흐르는 방향을 설명합니다.&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;DNA  &amp;rarr;  RNA  &amp;rarr;  Protein
(저장)   (전달)   (기능 수행)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;DNA&lt;/b&gt;: 유전정보를 장기 저장하는 매체. 세포핵 안에 안전하게 보관됨.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RNA&lt;/b&gt;: DNA의 정보를 복사해서 필요한 곳(리보솜)까지 전달하는 매개체.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Protein&lt;/b&gt;: 실제로 세포의 구조를 만들고 기능(효소 작용, 신호 전달 등)을 수행하는 최종 산물.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 흐름에서 DNA&amp;rarr;RNA를 &lt;b&gt;전사(Transcription)&lt;/b&gt;, RNA&amp;rarr;Protein을 &lt;b&gt;번역(Translation)&lt;/b&gt;이라고 부릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜 &quot;중심&quot;이라는 이름이 붙었나&lt;/b&gt;: &lt;br /&gt;이게 생명체 대부분에서 공통으로 적용되는 정보 흐름의 기본 골격이기 때문입니다. 세균이든 사람이든 이 방향 자체는 동일합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. DNA의 구조 &amp;mdash; 정보가 저장되는 방식&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DNA는 &lt;b&gt;이중나선(Double Helix)&lt;/b&gt; 구조입니다. &lt;br /&gt;두 가닥이 서로 꼬여있는 형태.&lt;/li&gt;
&lt;li&gt;각 가닥은 &lt;b&gt;뉴클레오타이드(nucleotide)&lt;/b&gt;가 길게 이어진 사슬이고, 뉴클레오타이드는 당(디옥시리보스) + 인산 + 염기로 구성됩니다.&lt;/li&gt;
&lt;li&gt;염기는 4종류: &lt;b&gt;A(아데닌), T(티민), G(구아닌), C(사이토신)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;두 가닥은 &lt;b&gt;염기쌍 규칙(Base Pairing Rule)&lt;/b&gt;에 따라 서로 마주보고 결합합니다: &lt;br /&gt;&lt;b&gt;A-T, G-C&lt;/b&gt;. &lt;br /&gt;(이 규칙 덕분에 한쪽 가닥의 서열만 알아도 반대쪽 가닥의 서열을 알 수 있습니다 &amp;mdash; 이게 나중에 시퀀싱 read를 레퍼런스에 매핑할 때도 핵심 원리로 다시 등장합니다.)&lt;/li&gt;
&lt;li&gt;DNA 가닥에는 방향성이 있습니다: &lt;br /&gt;&lt;b&gt;5' 말단 &amp;rarr; 3' 말단&lt;/b&gt;. &lt;br /&gt;이 방향 표기는 앞으로 계속 나오니 익숙해지는 게 좋습니다 (예: &quot;5'UTR&quot;, &quot;3' 말단 처리&quot; 등).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uvUVj/dJMcahSBwM3/C6EDipkzKgKJGrDC9hNbCK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uvUVj/dJMcahSBwM3/C6EDipkzKgKJGrDC9hNbCK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uvUVj/dJMcahSBwM3/C6EDipkzKgKJGrDC9hNbCK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuvUVj%2FdJMcahSBwM3%2FC6EDipkzKgKJGrDC9hNbCK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;382&quot; height=&quot;277&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. RNA의 구조 &amp;mdash; DNA와 무엇이 다른가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RNA도 뉴클레오타이드로 이루어진 사슬이지만, DNA와 세 가지가 다릅니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&amp;nbsp;&lt;/td&gt;
&lt;td&gt;DNA&lt;/td&gt;
&lt;td&gt;RNA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;가닥 수&lt;/td&gt;
&lt;td&gt;이중가닥 (두 가닥이 꼬여있음)&lt;/td&gt;
&lt;td&gt;단일가닥 (한 가닥)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;당(sugar)&lt;/td&gt;
&lt;td&gt;디옥시리보스 (Deoxyribose)&lt;/td&gt;
&lt;td&gt;리보스 (Ribose)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;염기&lt;/td&gt;
&lt;td&gt;A, T, G, C&lt;/td&gt;
&lt;td&gt;A, &lt;b&gt;U(우라실)&lt;/b&gt;, G, C &amp;mdash; T 대신 U 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RNA가 단일가닥이라는 점이 중요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단일가닥이기 때문에 스스로 접혀서(fold) 다양한 입체구조를 만들 수 있고, 이게 tRNA나 rRNA가 특정 기능을 수행할 수 있는 이유이기도 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 전사(Transcription) &amp;mdash; DNA에서 RNA로&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNA의 특정 구간(유전자)을 주형(template)으로 삼아, 그와 상보적인(A-U, G-C 규칙에 따른) RNA 가닥을 합성하는 과정입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 반응을 촉매하는 효소가 &lt;b&gt;RNA 중합효소(RNA Polymerase)&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;DNA 두 가닥 중 한쪽만 주형으로 사용됩니다(어느 쪽을 쓸지는 유전자마다 정해져 있음).&lt;/li&gt;
&lt;li&gt;결과물로 만들어진 RNA를 1차 전사체(Pre-mRNA, 진핵생물의 경우)라고 부르고, 이후 스플라이싱 등의 가공을 거쳐 성숙한 mRNA가 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기본 수준에서 꼭 알아야 할 것&lt;/b&gt;: &lt;br /&gt;전사는 &quot;DNA 정보를 RNA라는 이동 가능한 형태로 복사하는 과정&quot;이라는 것.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 번역(Translation) &amp;mdash; RNA에서 단백질로&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성숙한 mRNA가 세포질의 &lt;b&gt;리보솜(Ribosome)&lt;/b&gt;으로 이동하면, 리보솜이 mRNA 서열을 읽어서 그에 맞는 아미노산을 하나씩 연결해 단백질을 만듭니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mRNA는 &lt;b&gt;3개 염기(코돈, Codon)&lt;/b&gt; 단위로 읽힙니다. 예: AUG, GCU 등&lt;/li&gt;
&lt;li&gt;각 코돈은 특정 아미노산 하나를 지정합니다. (예: AUG는 메티오닌이면서 동시에 &quot;번역 시작&quot; 신호)&lt;/li&gt;
&lt;li&gt;총 64개의 코돈 조합이 가능한데, 아미노산은 20종류뿐입니다. &lt;br /&gt;그래서 여러 코돈이 같은 아미노산을 지정하는 경우가 많습니다 &amp;mdash; 이걸 &lt;b&gt;유전암호의 축퇴성(Redundancy/Degeneracy)&lt;/b&gt;이라고 부릅니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;tRNA(transfer RNA)&lt;/b&gt;가 코돈에 맞는 아미노산을 리보솜으로 운반해오는 &quot;택배기사&quot; 역할을 합니다.&lt;/li&gt;
&lt;li&gt;특정 코돈(UAA, UAG, UGA)은 아미노산을 지정하지 않고 &quot;번역 종료&quot; 신호로 작동합니다(정지 코돈, Stop codon).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Central Dogma의 &quot;예외&quot; &amp;mdash; 완벽한 법칙은 아니다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 개념을 정확히 잡기 위해, 이 흐름이 100% 일방통행은 아니라는 것도 알아두면 좋습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;역전사(Reverse Transcription)&lt;/b&gt;: 일부 바이러스(레트로바이러스, 대표적으로 HIV)는 RNA&amp;rarr;DNA 방향으로도 정보를 옮깁니다. 역전사효소(Reverse Transcriptase)가 이 역할을 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;왜 RNA-seq에서 이게 중요한가&lt;/b&gt;: 실험실에서 RNA를 직접 시퀀싱하는 게 아니라, 역전사효소를 이용해 RNA를cDNA(complementary DNA)로 먼저 바꾼 다음 시퀀싱합니다. &lt;br /&gt;즉 RNA-seq 실험 자체가 이 &quot;예외 경로&quot;를 인위적으로 이용하는 셈입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RNA 바이러스&lt;/b&gt;: 일부 바이러스는 DNA 단계 없이 RNA만으로 증식합니다 (예: 코로나바이러스).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 예외들은 &quot;법칙이 깨졌다&quot;는 뜻이 아니라, 정보가 흐르는 경로가 상황에 따라 확장될 수 있다는 뜻으로 이해하면 됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 이 개념이 RNA-seq과 어떻게 연결되는가&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DNA는 모든 세포에서 동일하지만, &lt;b&gt;어떤 유전자를 전사해서 RNA로 만들지는 세포/조건마다 다릅니다.&lt;/b&gt; &lt;br /&gt;이 &quot;다름&quot;을 측정하는 게 RNA-seq의 목적입니다. ( DNA는 정적, RNA는 동적)&lt;/li&gt;
&lt;li&gt;RNA-seq 실험은 세포 안의 RNA를 직접 읽는 게 아니라, &lt;b&gt;역전사를 거쳐 cDNA로 바꾼 뒤&lt;/b&gt; 시퀀싱합니다. &lt;br /&gt;그래서 &quot;역전사&quot;라는 예외 경로가 사실 RNA-seq 실험 설계의 첫 단추입니다.&lt;/li&gt;
&lt;li&gt;번역 단계(코돈, 리보솜)까지는 RNA-seq에서 직접 측정하지 않습니다. &lt;br /&gt;RNA-seq은 &quot;RNA가 얼마나 만들어졌는가&quot;까지만 보고, &quot;그 RNA가 실제로 단백질로 얼마나 잘 번역됐는가&quot;는 별개의 문제입니다 (이건 Ribo-seq이라는 다른 기법의 영역입니다 &amp;mdash; 참고).&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;정리 &amp;mdash; 여기까지 이해했다면&lt;/b&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Central Dogma의 방향(DNA&amp;rarr;RNA&amp;rarr;Protein)과 각 단계의 이름(전사/번역)을 설명할 수 있다&lt;/li&gt;
&lt;li&gt;DNA와 RNA의 구조적 차이 세 가지(가닥 수, 당, 염기)를 말할 수 있다&lt;/li&gt;
&lt;li&gt;염기쌍 규칙(A-T/A-U, G-C)이 무엇이고 왜 중요한지 설명할 수 있다&lt;/li&gt;
&lt;li&gt;코돈이 무엇이고, 왜 64개 코돈이 20개 아미노산만 지정하는지 설명할 수 있다&lt;/li&gt;
&lt;li&gt;역전사가 무엇이고, 이게 왜 RNA-seq 실험의 전제조건인지 설명할 수 있다&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Bio Data Analysis/RNA-Seq</category>
      <category>Central Dogma</category>
      <category>DNA 구조</category>
      <category>RNA 구조</category>
      <category>rna-seq</category>
      <category>번역</category>
      <category>염기</category>
      <category>염기쌍 규칙</category>
      <category>유전체분석</category>
      <category>전사</category>
      <category>중심원리</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/189</guid>
      <comments>https://is-note.tistory.com/189#entry189comment</comments>
      <pubDate>Tue, 14 Jul 2026 03:00:51 +0900</pubDate>
    </item>
    <item>
      <title>[서열분석개론] 서열 분석 - 주석 및 임상 해석</title>
      <link>https://is-note.tistory.com/188</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;변이 목록(VCF)만 있어서는 그게 병원성인지 아닌지 알 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 변이에 기능적 의미, 알려진 임상적 의미, 집단 내 빈도 정보를 붙이는 과정이 주석(annotation)이고, 이걸 종합해서 병원성 여부를 판단하는 국제 기준이 ACMG 가이드라인입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;SnpEff &amp;mdash; 기능 영향 예측&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SnpEff는 각 변이가 어느 유전자&amp;middot;전사체에서 어떤 효과(effect)를 내는지, 그리고 그게 얼마나 중요한지(impact)를 예측해서 붙여주는 도구입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;effect&lt;/b&gt;: missense, nonsense, splice_region, frameshift 등 SO term으로 표기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;impact&lt;/b&gt;: HIGH / MODERATE / LOW / MODIFIER&lt;/li&gt;
&lt;li&gt;HGVS c./p. 표기도 자동으로 계산해서 붙여줍니다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 AIRE 유전자의 어떤 변이에 대해 SnpEff가 다음과 같이 주석을 붙였다고 하겠습니다.&lt;/p&gt;
&lt;pre class=&quot;coq&quot;&gt;&lt;code&gt;missense_variant &amp;amp; splice_region_variant
| MODERATE | AIRE | NM_000383.4
| c.463G&amp;gt;A | p.Gly155Ser
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 한 줄만 봐도 어떤 유전자의 몇 번째 코돈이 어떻게 바뀌었고, impact가 어느 정도인지 바로 파악할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;SnpSift &amp;mdash; 필터링과 DB 주석&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SnpSift는 VCF를 조건(IMPACT, DP, AF 등)으로 걸러내고, 외부 DB 정보를 붙이는 역할을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변이가 수천 건씩 나오는 게 보통이라, 실제로 의미 있는 후보로 좁히려면 이 필터링 단계가 필수입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;ClinVar와 gnomAD&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;ClinVar&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변이의 병원성 분류(CLNSIG)와 관련 질환명(CLNDN)을 담고 있는 DB입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;이 변이가 이미 알려진 변이인가, 알려져 있다면 병원성으로 분류돼 있는가&quot;를 확인하는 용도로 씁니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;gnomAD&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대규모 인구집단의 대립빈도(AF)를 제공하는 DB입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 핵심 논리는 이렇습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 변이가 인구집단에서 흔하게 관찰된다는 건, 그 변이를 가진 사람들이 생존과 번식에 큰 지장 없이 후대로 물려줬다는 뜻입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러니 흔한 변이일수록 병원성일 가능성은 낮아집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 집단 내에서 극히 희귀한 변이라면 병원성 후보로서의 가능성이 높아집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면 변이 해석은 세 축을 겹쳐서 좁혀나가는 과정입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기능 영향 (SnpEff) &amp;mdash; 이 변이가 단백질에 어떤 영향을 주는가&lt;/li&gt;
&lt;li&gt;알려진 병원성 (ClinVar) &amp;mdash; 이미 보고된 변이인가&lt;/li&gt;
&lt;li&gt;집단 내 희귀도 (gnomAD) &amp;mdash; 얼마나 드문 변이인가&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 세 축을 동시에 만족하는 변이(기능적으로 유의미하고, 병원성으로 보고된 적 있고, 집단에서 매우 희귀한)가 병원성 후보로 좁혀집니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;ACMG 분류 체계&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ACMG(American College of Medical Genetics and Genomics)는 여러 근거(빈도, 기능, 유전 양상 등)를 규칙으로 조합해서 변이를 5단계로 분류하는 국제 가이드라인을 제시했습니다(Richards et al., 2015).&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;분류&amp;nbsp;&lt;/td&gt;
&lt;td&gt;약자&lt;/td&gt;
&lt;td&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pathogenic&lt;/td&gt;
&lt;td&gt;P&lt;/td&gt;
&lt;td&gt;병원성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Likely Pathogenic&lt;/td&gt;
&lt;td&gt;LP&lt;/td&gt;
&lt;td&gt;병원성 가능성 높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Variant of Uncertain Significance&lt;/td&gt;
&lt;td&gt;VUS&lt;/td&gt;
&lt;td&gt;의미가 불명확한 변이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Likely Benign&lt;/td&gt;
&lt;td&gt;LB&lt;/td&gt;
&lt;td&gt;양성 가능성 높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Benign&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;양성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 분류는 PVS1(null variant, 기능 상실이 확실한 변이), PM2(gnomAD 기준 희귀도), PP3(in silico 예측 도구 결과) 같은 근거 코드들을 정량 점수로 환산해서 최종 등급을 매기는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tavtigian(2018)이 이 근거 코드들을 베이지안 프레임워크로 정량화한 논문도 참고할 만합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 여기서 다루는 수준은 개념 이해 정도입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 임상 진단은 이보다 훨씬 엄격한 기준과 검토 절차(랩 SOP, 임상팀 검토)를 거치기 때문에, 실습 수준의 분류와 실제 진단은 별개라는 점을 분명히 해둘 필요가 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;전체 흐름&lt;/b&gt;&lt;/h2&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;VCF (정규화 완료)
  &amp;rarr; SnpEff (기능 영향 예측: effect, impact, HGVS)
  &amp;rarr; SnpSift filter (품질 조건으로 1차 필터링)
  &amp;rarr; SnpSift annotate + ClinVar (병원성 분류 주석)
  &amp;rarr; SnpSift annotate + gnomAD (집단 빈도 주석)
  &amp;rarr; 필터링 (품질 + ClinVar 병원성 + gnomAD 희귀도)
  &amp;rarr; 병원성 후보 변이
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수천 건의 변이가 이 과정을 거치면서 몇 건, 심하면 단 하나로 좁혀지는 경우도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 depth와 대립빈도 기준으로 1차 필터링한 뒤, ClinVar에서 병원성으로 등록된 것만 남기고, gnomAD에서 극히 희귀한 것만 남기면 최종적으로 병원성 후보 변이 한 건이 남는 식입니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 단계가 DNA-seq 파이프라인의 마지막 단계입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FASTQ에서 시작해 매핑, 전처리, 변이 호출, 정규화를 거쳐 여기까지 도달하면 &quot;이 사람은 어떤 유전자의 어떤 변이 때문에 이런 표현형이 나타났을 가능성이 있다&quot;는 결론에 이르게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 이 결론은 어디까지나 분석 파이프라인의 산출물이고, 최종 임상적 판단은 별도의 검토 과정을 거쳐야 한다는 점을 늘 염두에 둬야 합니다.&lt;/p&gt;</description>
      <category>Bio Data Analysis/서열분석개론</category>
      <category>acmg</category>
      <category>bioinformatics</category>
      <category>ClinVar</category>
      <category>gnomAD</category>
      <category>SnpEff</category>
      <category>SnpSift</category>
      <category>변이해석</category>
      <category>병원성분류</category>
      <category>생물정보학</category>
      <category>유전체분석</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/188</guid>
      <comments>https://is-note.tistory.com/188#entry188comment</comments>
      <pubDate>Sun, 12 Jul 2026 19:00:21 +0900</pubDate>
    </item>
    <item>
      <title>[서열분석개론] 서열 분석 - 변이 호출 파이프라인</title>
      <link>https://is-note.tistory.com/187</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;정렬이 끝난 BAM이 있다고 바로 변이를 부를 수 있는 건 아닙니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전처리를 거쳐야 신뢰도 높은 변이 목록(VCF)을 얻을 수 있고, 그렇게 얻은 VCF도 표기를 통일해야 다른 DB와 비교가 가능해집니다. &lt;br /&gt;이 단계를 순서대로 정리합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;GATK Best Practices 흐름&lt;/b&gt;&lt;/h2&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;sorted BAM &amp;rarr; MarkDuplicates &amp;rarr; BQSR &amp;rarr; Variant Caller &amp;rarr; VCF
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GATK(Genome Analysis Toolkit)는 Broad Institute에서 만든 변이 검출 툴킷으로, 여기서 다루는 MarkDuplicates, BaseRecalibrator, HaplotypeCaller/Mutect2가 모두 이 안에 포함되어 있습니다. &lt;br /&gt;변이 호출 분야의 golden standard로 통합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;MarkDuplicates &amp;mdash; PCR 중복 표시&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이브러리를 만드는 과정에서 PCR 증폭을 거치는데, 이때 같은 원본 DNA 조각이 여러 개의 read로 복제됩니다. &lt;br /&gt;문제는 이 중복 read들이 독립적인 관측이 아니라는 점입니다. &lt;br /&gt;그대로 세면 특정 변이의 depth나 대립빈도(AF)가 실제보다 부풀려져서, 가짜 변이가 진짜처럼 보일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MarkDuplicates는 같은 시작 좌표를 가진 read들을 찾아서 duplicate 플래그(FLAG 0x400/1024)로 표시합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 중요한 건 &quot;제거&quot;가 아니라 &quot;표시&quot;라는 점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 변이 검출기가 이 플래그를 보고 중복 read를 한 번만 세도록 만드는 게 목적입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;BQSR &amp;mdash; 염기 품질 재보정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시퀀서가 자체적으로 매기는 Phred 품질 점수(Q)는 완벽하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BQSR(Base Quality Score Recalibration)은 실제 오류율을 다시 계산해서 이 점수를 보정하는 과정입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;read와 레퍼런스가 다른 위치를 셉니다. &lt;br /&gt;단, 알려진 SNP(mills, known_indels 등)는 오류가 아니라 진짜 변이일 수 있으니 카운트에서 제외합니다.&lt;/li&gt;
&lt;li&gt;예를 들어 &quot;Q30(1/1000 확률로 틀림)&quot;이라고 표시된 염기가 실제로는 1/500 확률로 틀렸다면, 진짜 실력은 Q27인 셈이라 점수를 낮춥니다.&lt;/li&gt;
&lt;li&gt;read 내 위치(cycle), 앞뒤 염기 배열(context) 같은 조건별로 그룹을 나눠서 각각 따로 보정합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면 BQSR은 &quot;시퀀서가 자기 실력을 과대평가한 부분을 실측 데이터로 바로잡는&quot; 과정입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Germline vs Somatic&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 변이 검출기를 쓸지는 찾으려는 변이의 성격에 따라 달라집니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;Germline (생식세포)&lt;/td&gt;
&lt;td&gt;Somatic (체세포)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;변이 특성&lt;/td&gt;
&lt;td&gt;유전됨, 모든 세포에 공통&lt;/td&gt;
&lt;td&gt;후천적으로 생김, 일부 세포에만 존재 (예: 암)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대립빈도(AF)&lt;/td&gt;
&lt;td&gt;~0.5(이형접합) / ~1.0(동형접합)&lt;/td&gt;
&lt;td&gt;다양하고 낮을 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대표 도구&lt;/td&gt;
&lt;td&gt;HaplotypeCaller&lt;/td&gt;
&lt;td&gt;Mutect2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;희귀질환처럼 유전되는 변이를 찾을 때는 germline 표준 도구인 HaplotypeCaller를 씁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정식 germline 파이프라인은 GVCF를 만들고 joint genotyping을 거치는 과정까지 포함하는 게 일반적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mutect2는 원래 종양 조직에서 정상 조직 대비 후천적으로 생긴 변이를 찾는 somatic caller입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 tumor-only 모드로 쓰면 스텝이 단순해져서(Mutect2 &amp;rarr; FilterMutectCalls 2단계), 교육이나 실습 목적으로 germline 변이를 빠르게 훑는 용도로 쓰기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 진단용 germline 분석에서는 HaplotypeCaller를 쓰는 게 표준이라는 점은 구분해서 알아둘 필요가 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;VCF 구조&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VCF(Variant Call Format)는 변이를 담는 표준 텍스트 포맷입니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;##fileformat=VCFv4.2
##INFO=&amp;lt;ID=DP,...&amp;gt;
#CHROM  POS       ID  REF  ALT  QUAL  FILTER  INFO       FORMAT       HG002
chr21   44287133  .   G    A    .     PASS    DP=73;...  GT:AF:DP     0/1:0.468:72
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;##로 시작하는 줄은 헤더로, 포맷 버전과 INFO/FORMAT 필드 정의, 레퍼런스 정보 등이 담깁니다&lt;/li&gt;
&lt;li&gt;POS는 변이 위치(1-based), REF&amp;rarr;ALT가 실제 서열 변화(G&amp;rarr;A)&lt;/li&gt;
&lt;li&gt;FILTER가 PASS면 필터를 통과했다는 뜻. INFO는 변이 수준의 주석 정보&lt;/li&gt;
&lt;li&gt;FORMAT은 샘플별로 어떤 값이 들어있는지 정의. GT(유전형, 0/1은 이형접합), AF(대립빈도), DP(depth) 순서로 값이 붙습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;왜 정규화가 필요한가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 변이도 표기 방식이 여러 가지일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표기를 통일해야 ClinVar, gnomAD 같은 DB와 정확히 매칭됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 작업을 vt라는 도구가 담당하고, 크게 두 단계로 나뉩니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;decompose&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다중대립(multiallelic) 변이를 개별 줄로 분해합니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 분해 전 (한 줄에 ALT가 2개)
chr1  100  A  G,T  GT:AD  1/2:0,15,20

# 분해 후 (각각 별도 줄)
chr1  100  A  G  GT:AD  ...
chr1  100  A  T  GT:AD  ...
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;normalize&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;indel을 left-align하고 가장 간결한 형태로 통일합니다.&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;# 정규화 전 (레퍼런스: ...G A A A T... A가 반복되는 구간)
chr1  102  AA  A

# 정규화 후 (같은 1bp 결실이지만 가장 왼쪽&amp;middot;최소 표현으로 통일)
chr1  100  GA  G
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 표기를 통일해야 같은 변이인데도 표기 방식이 달라서 DB 매칭에서 놓치는 일을 막을 수 있습니다.&lt;/p&gt;</description>
      <category>Bio Data Analysis/서열분석개론</category>
      <category>bioinformatics</category>
      <category>BQSR</category>
      <category>GATK</category>
      <category>HaplotypeCaller</category>
      <category>MarkDuplicates</category>
      <category>mutect2</category>
      <category>vcf</category>
      <category>변이호출</category>
      <category>생물정보학</category>
      <category>유전체분석</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/187</guid>
      <comments>https://is-note.tistory.com/187#entry187comment</comments>
      <pubDate>Sun, 12 Jul 2026 18:00:00 +0900</pubDate>
    </item>
    <item>
      <title>[서열분석개론] 서열 분석 - 변이의 종류와 표기법</title>
      <link>https://is-note.tistory.com/186</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;BAM까지 만들었으면 이제 레퍼런스와 비교해서 어디가 다른지 찾아야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 전에 변이가 어떤 종류로 나뉘는지, 놓치기 쉬운 함정은 뭐가 있는지, 그리고 그 변이를 어떻게 표기하는지 먼저 정리해두었습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;변이 분류: SNV/Indel vs SV/CNV&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레퍼런스 대비 서열 차이는 규모에 따라 크게 둘로 나뉩니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Sequence variants&lt;/b&gt; (작은 규모, 정렬로 검출)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SNV(Single Nucleotide Variant): 단일 염기 치환&lt;/li&gt;
&lt;li&gt;Small indel: 수 bp 단위의 삽입/결실&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Structural variants(SV)&lt;/b&gt; (큰 규모, kb~Mb)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;insertion, deletion&lt;/li&gt;
&lt;li&gt;inversion(역위)&lt;/li&gt;
&lt;li&gt;duplication(중복)&lt;/li&gt;
&lt;li&gt;translocation(전좌)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CNV(Copy Number Variant)는 SV 중에서 카피 수가 변하는 경우를 말합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;duplication이면 카피 수 증가, deletion이면 감소입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;small indel은 정렬(CIGAR)로 바로 검출되지만, CNV/SV는 read depth의 변화 패턴을 봐야 검출된다는 점에서 검출 방법 자체가 다릅니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;서열만으로 안 보이는 변이&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNA 서열(A/C/G/T) 자체는 정상인데도 유전 양상이나 발현이 달라지는 경우가 있습니다. &lt;br /&gt;표준 변이 검출 파이프라인(FASTQ&amp;rarr;VCF)으로는 이런 변이를 놓치기 때문에 따로 알아둘 필요가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UPD (Uniparental Disomy)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 쌍의 염색체를 양쪽 부모에게서 하나씩 받는 게 정상인데, 어떤 이유(예: trisomy rescue)로 한쪽 부모에게서만 두 카피를 물려받는 경우입니다. &lt;br /&gt;서열 자체는 정상으로 보이지만, Prader-Willi 증후군처럼 imprinting이 관여하는 질환에서는 유전 양상이 달라집니다. &lt;br /&gt;ROH(runs of homozygosity)나 LOH(loss of heterozygosity) 패턴으로 검출한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메틸화(Methylation)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서열 변화 없이 CpG 메틸화로 유전자 발현을 켜고 끄는 후성유전 현상입니다. &lt;br /&gt;표준 시퀀싱으로는 안 보이고, long-read 시퀀싱으로 검출하는 경우가 많습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Paralog / Pseudogene 함정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유전체에는 서로 거의 똑같은 복제본(paralog, pseudogene)이 존재하는 유전자들이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read가 원래 유전자에서 왔는지 paralog에서 왔는지 구분이 안 되면 문제가 생깁니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;read가 어느 카피에서 왔는지 모호해서 MAPQ가 낮게 나옴&lt;/li&gt;
&lt;li&gt;실제로는 없는 변이를 있는 것처럼 잘못 부르거나(false positive), 반대로 진짜 변이를 놓침(masking)&lt;/li&gt;
&lt;li&gt;gene conversion(유전자 변환)으로 카피 수 자체가 달라지기도 함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 예로 SMA(척수성 근위축증)와 관련된 &lt;b&gt;SMN1/SMN2&lt;/b&gt;, Lynch 증후군과 관련된 &lt;b&gt;PMS2/PMS2CL&lt;/b&gt;이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 영역은 short-read만으로는 한계가 있어서 long-read, paralog 특이적 분석, MLPA 같은 별도 방법을 병행하거나 MAPQ와 정렬 결과를 수동으로 검토해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 매핑 파트에서 다뤘던 &quot;반복 영역에서 MAPQ가 0으로 떨어지는 이유&quot;가 바로 이 문제와 이어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read가 여러 카피에 똑같이 붙어서 위치를 하나로 특정하지 못하는 것입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;SO term: 변이의 기능적 영향&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변이가 코돈을 바꾸면 단백질도 바뀔 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 영향을 표준화된 용어로 기술하는 게 Sequence Ontology(SO) term입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SnpEff, VEP 같은 도구들이 이 용어를 공통으로 써서 서로 다른 도구&amp;middot;DB 간에도 같은 이름으로 소통할 수 있게 합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SO term&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;Impact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;synonymous_variant&lt;/td&gt;
&lt;td&gt;코돈이 바뀌어도 같은 아미노산 (침묵)&lt;/td&gt;
&lt;td&gt;LOW&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;missense_variant&lt;/td&gt;
&lt;td&gt;아미노산 1개가 다른 아미노산으로 치환&lt;/td&gt;
&lt;td&gt;MODERATE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;stop_gained&lt;/td&gt;
&lt;td&gt;조기 종결코돈 발생, 단백질 절단&lt;/td&gt;
&lt;td&gt;HIGH&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;frameshift_variant&lt;/td&gt;
&lt;td&gt;indel로 코돈 프레임이 밀림&lt;/td&gt;
&lt;td&gt;HIGH&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;splice_region_variant&lt;/td&gt;
&lt;td&gt;엑손-인트론 경계 교란&lt;/td&gt;
&lt;td&gt;다양&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;intron_variant&lt;/td&gt;
&lt;td&gt;인트론 내부 변이&lt;/td&gt;
&lt;td&gt;대체로 낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;synonymous vs missense&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코돈은 3개 염기(triplet)가 아미노산 하나를 지정하는데, 여러 코돈이 같은 아미노산을 코딩하는 경우가 많습니다(코돈 축퇴). 3번째 염기 같은 데가 바뀌어도 아미노산이 그대로면 synonymous, 다른 아미노산으로 바뀌면 missense입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;frameshift&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3의 배수가 아닌 길이의 indel이 생기면 그 지점부터 코돈을 나누는 틀 자체가 밀립니다. &lt;br /&gt;그 결과 하류의 아미노산 서열 전체가 뒤바뀝니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대개 조기 종결로 이어져 기능 상실(LOF)이 되지만, 드물게 새로운 기능을 얻거나(GOF) 비정상적으로 안정된 단백질이 만들어지기도 합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;stop_gained&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아미노산 코돈이 종결코돈(STOP)으로 바뀌어서 단백질이 중간에서 끊기는 경우입니다. &lt;br /&gt;대개 HIGH impact로 분류되고, 잘린 mRNA가 NMD(nonsense-mediated decay)로 분해되기도 합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;splicing variant&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인트론을 잘라내고 엑손끼리 이어붙이는 경계(보통 GT...AG)에 변이가 생기면 exon skipping, intron retention, cryptic splice site 사용 같은 문제가 생깁니다. &lt;br /&gt;엑손 구성 자체가 바뀌기 때문에 기능 영향이 큰 편입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;intron variant&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대개 인트론(non-coding) 변이는 단백질 서열에 영향을 안 줘서 영향이 작습니다. &lt;br /&gt;다만 스플라이스 부위 근처나 enhancer 같은 조절요소를 건드리면 발현량이 달라질 수 있습니다. &lt;br /&gt;검출은 되지만 의미 해석이 상대적으로 어려운 부분입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;HGVS 표기법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 변이를 어느 좌표계 기준으로 표기하느냐에 따라 형태가 달라집니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;g. (genomic)&lt;/b&gt;: 염색체 상의 절대 좌표 기준. 예) chr21:44287133 G&amp;gt;A&lt;/li&gt;
&lt;li&gt;&lt;b&gt;c. (coding DNA)&lt;/b&gt;: cDNA(전사체) 기준. 예) c.463G&amp;gt;A&lt;/li&gt;
&lt;li&gt;&lt;b&gt;p. (protein)&lt;/b&gt;: 아미노산 변화. 예) p.Gly155Ser&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;genomic 좌표는 절대적이지만, coding DNA 기준 번호는 어떤 전사체를 쓰느냐에 따라 달라집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 c./p. 표기를 쓸 때는 반드시 기준 전사체 번호(NM_000383.4 같은 형태)를 함께 적어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 변이라도 기준 전사체가 다르면 번호가 달라질 수 있기 때문에, 여러 전사체 중 어떤 걸 표준으로 삼을지 정한 MANE 같은 프로젝트가 있는 이유이기도 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면, 변이 자체를 규모로 나누는 축(SNV/indel vs SV/CNV)과 그 변이가 단백질에 미치는 영향을 나누는 축(SO term)은 서로 다른 층위의 분류입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 표기 방식(HGVS)까지 합쳐지면 하나의 변이를 여러 각도에서 설명할 수 있게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 단계인 변이 호출(VCF 생성)과 주석 과정에서 이 개념들이 그대로 쓰입니다.&lt;/p&gt;</description>
      <category>Bio Data Analysis/서열분석개론</category>
      <category>bioinformatics</category>
      <category>CNV</category>
      <category>frameshift</category>
      <category>HGVS</category>
      <category>indel</category>
      <category>paralog</category>
      <category>SNV</category>
      <category>SOterm</category>
      <category>변이</category>
      <category>생물정보학</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/186</guid>
      <comments>https://is-note.tistory.com/186#entry186comment</comments>
      <pubDate>Sat, 11 Jul 2026 18:00:45 +0900</pubDate>
    </item>
    <item>
      <title>[서열분석개론] 서열 분석 - 매핑과 SAM/BAM</title>
      <link>https://is-note.tistory.com/185</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;FASTQ에는 수백만 개의 read가 들어있지만, 이 자체로는 각 read가 유전체 어디서 왔는지 알 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 위치를 찾는 과정이 매핑(mapping/alignment)이고, 그 결과를 담는 표준 포맷이 SAM/BAM입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;레퍼런스 기반 정렬&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 흐름은 이렇습니다.&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;FASTQ (위치 미상 read) + Reference(GRCh38) &amp;rarr; BWA-MEM &amp;rarr; SAM/BAM (정렬 위치 포함)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수백만 개의 read 각각을 레퍼런스 유전체 전체와 비교해서 가장 잘 맞는 위치를 찾아주는 작업입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브루트포스로 비교하면 시간이 너무 오래 걸리기 때문에, 실무에서는 레퍼런스를 미리 인덱싱해두고 빠르게 검색하는 알고리즘을 씁니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;BWA-MEM&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BWA(Burrows-Wheeler Aligner)는 short-read 매핑의 사실상 표준 도구입니다(Heng Li &amp;amp; Durbin, 2009).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레퍼런스를 BWT(Burrows-Wheeler Transform)로 압축&amp;middot;인덱싱해서, 적은 메모리로도 수억 개의 read를 빠르게 검색할 수 있게 만든 게 핵심입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동작 방식은 &quot;Seed and Extend&quot;라고 부릅니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Seed&lt;/b&gt;: read 안에서 레퍼런스와 정확히 일치하는 조각(MEM, Maximal Exact Match)을 FM-index로 초고속 탐색&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Chaining&lt;/b&gt;: 가까이 있는 seed들을 묶어서 후보 위치를 선정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Extend&lt;/b&gt;: 후보 위치 주변을 Smith-Waterman 알고리즘으로 정밀하게 정렬 (mismatch, indel 허용)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MAPQ&lt;/b&gt;: 이 위치가 얼마나 유일하고 확실한지 점수화. 반복 영역이면 여러 후보 위치가 비슷하게 나와서 MAPQ가 낮게 매겨진다&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옵션 중 -M은 짧게 갈라진 정렬(split hit)을 secondary로 표시해서 Picard/GATK와 호환되게 만들어줍니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;SAM/BAM 구조&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SAM은 텍스트 포맷이고 BAM은 이를 바이너리로 압축한 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용량이 작고 처리 속도가 빨라서 실무에서는 BAM을 표준으로 씁니다.&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;@HD  VN:1.6  SO:coordinate
@SQ  SN:chr21  LN:46709983
D00360:...:31843  163  chr21  44286640  60  250M  =  44286890  498
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@로 시작하는 줄이 헤더입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@SQ에는 레퍼런스 서열 이름과 길이가 들어있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 아래부터는 read 한 줄당 11개 필드로 구성됩니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;필드&lt;/td&gt;
&lt;td&gt;예시 값&lt;/td&gt;
&lt;td&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QNAME&lt;/td&gt;
&lt;td&gt;D00360:...:31843&lt;/td&gt;
&lt;td&gt;read 이름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLAG&lt;/td&gt;
&lt;td&gt;163&lt;/td&gt;
&lt;td&gt;read 상태 (비트 조합)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RNAME&lt;/td&gt;
&lt;td&gt;chr21&lt;/td&gt;
&lt;td&gt;매핑된 레퍼런스 서열명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POS&lt;/td&gt;
&lt;td&gt;44286640&lt;/td&gt;
&lt;td&gt;1-based 매핑 시작 좌표&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAPQ&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;매핑 신뢰도, BWA 최대치는 60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CIGAR&lt;/td&gt;
&lt;td&gt;250M&lt;/td&gt;
&lt;td&gt;정렬 관계 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RNEXT/PNEXT&lt;/td&gt;
&lt;td&gt;=, 44286890&lt;/td&gt;
&lt;td&gt;짝 read의 위치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TLEN&lt;/td&gt;
&lt;td&gt;498&lt;/td&gt;
&lt;td&gt;template 길이&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;FLAG&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read의 여러 상태를 비트로 켜고, 그 합을 하나의 10진수(0~4095)로 표기한 필드입니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;비트(hex)&lt;/td&gt;
&lt;td&gt;의미&lt;/td&gt;
&lt;td&gt;비트(hex)&lt;/td&gt;
&lt;td&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 (0x1)&lt;/td&gt;
&lt;td&gt;paired &amp;mdash; 짝 있음&lt;/td&gt;
&lt;td&gt;64 (0x40)&lt;/td&gt;
&lt;td&gt;first in pair (R1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 (0x2)&lt;/td&gt;
&lt;td&gt;proper pair &amp;mdash; 정상 짝&lt;/td&gt;
&lt;td&gt;128 (0x80)&lt;/td&gt;
&lt;td&gt;last in pair (R2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 (0x4)&lt;/td&gt;
&lt;td&gt;read unmapped&lt;/td&gt;
&lt;td&gt;256 (0x100)&lt;/td&gt;
&lt;td&gt;secondary alignment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 (0x8)&lt;/td&gt;
&lt;td&gt;mate unmapped&lt;/td&gt;
&lt;td&gt;512 (0x200)&lt;/td&gt;
&lt;td&gt;QC fail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16 (0x10)&lt;/td&gt;
&lt;td&gt;read 역방향(reverse)&lt;/td&gt;
&lt;td&gt;1024 (0x400)&lt;/td&gt;
&lt;td&gt;PCR/optical duplicate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;32 (0x20)&lt;/td&gt;
&lt;td&gt;mate 역방향(reverse)&lt;/td&gt;
&lt;td&gt;2048 (0x800)&lt;/td&gt;
&lt;td&gt;supplementary&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;FLAG 읽는 법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자를 2진수로 풀어보면 read 상태가 그대로 드러납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 짝지어진 paired-end read는 흔히 99와 147 조합으로 나타납니다.&lt;/p&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;99  = 1 + 2 + 32 + 64    &amp;rarr; paired, proper pair, mate reverse, R1
147 = 1 + 2 + 16 + 128   &amp;rarr; paired, proper pair, read reverse, R2
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 비트를 손으로 분해할 필요는 없고 samtools flags 99 명령으로 바로 해석할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실무에서 자주 쓰는 건 4번 비트(unmapped) 필터링 정도입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정렬 실패한 read를 걸러낼 때 이 값을 확인합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;CIGAR&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read와 레퍼런스의 정렬 관계를 연산자 문자열로 압축 표현한 필드다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;연산자&lt;/td&gt;
&lt;td&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M&lt;/td&gt;
&lt;td&gt;alignment match &amp;mdash; 일치/불일치 모두 포함 (정렬은 됨)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;Insertion &amp;mdash; read에만 있는 삽입 서열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Deletion &amp;mdash; 레퍼런스 대비 결실&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;skip &amp;mdash; 레퍼런스 구간 건너뜀 (RNA-seq splice)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S&lt;/td&gt;
&lt;td&gt;Soft clip &amp;mdash; 정렬 안 된 양끝, 서열은 유지됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;Hard clip &amp;mdash; 잘려나가서 서열이 아예 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 199M1D6M1I43M이라는 CIGAR는 다음과 같이 읽습니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;199M &amp;rarr; 199개 염기 정렬 (일치/불일치 포함)
1D   &amp;rarr; 1개 결실 (레퍼런스 대비)
6M   &amp;rarr; 6개 정렬
1I   &amp;rarr; 1개 삽입 (read에만 있음)
43M  &amp;rarr; 43개 정렬
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CIGAR 연산자만 봐도 어떤 변이 신호가 있는지 대략 짐작할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;M 안에서 서열이 다르면 SNV(점 돌연변이), I/D가 있으면 indel, S/H/N이 있으면 구조변이나 splice 신호일 가능성을 의심해볼 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Clipping&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read가 레퍼런스에 부분적으로만 맞을 때, 안 맞는 끝을 잘라내고 표시하는 게 clipping입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read 전체를 버리지 않고 맞는 부분만이라도 살리기 위한 처리입니다.&lt;/p&gt;
&lt;pre class=&quot;http&quot;&gt;&lt;code&gt;CIGAR: 35S215M

read  ╌╌╌35╌╌╌[====215 정렬====]
ref        [================]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;clip이 생기는 원인은 보통 어댑터가 덜 제거됐거나, read 말단 품질이 낮거나, 구조변이/splice 경계에 걸렸을 때입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Soft clip(S)&lt;/b&gt;: 잘린 부분의 서열을 그대로 보존합니다. &lt;br /&gt;나중에 재정렬하거나 구조변이 breakpoint 분석에 재활용할 수 있어서, 대표(primary) 정렬에서 주로 쓰입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hard clip(H)&lt;/b&gt;: 잘린 부분의 서열을 아예 제거합니다. 하나의 read가 여러 곳에 나뉘어 붙는 supplementary 정렬에서, 조각마다 전체 서열을 중복 저장하지 않으려고 이 방식을 씁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;samtools&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BAM 파일을 다루는 핵심 도구 모음입니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;명령&lt;/td&gt;
&lt;td&gt;기능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;view&lt;/td&gt;
&lt;td&gt;SAM&amp;harr;BAM 변환, FLAG/영역/MAPQ 조건으로 read 필터링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sort&lt;/td&gt;
&lt;td&gt;좌표순 정렬 &amp;mdash; 인덱싱과 변이 검출의 전제조건&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;index&lt;/td&gt;
&lt;td&gt;.bai 인덱스 생성 &amp;mdash; 특정 영역 즉시 접근(IGV 등에서 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;flagstat&lt;/td&gt;
&lt;td&gt;총 read 수, 매핑률, 중복률, proper pair 비율 요약&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;depth / coverage&lt;/td&gt;
&lt;td&gt;위치별&amp;middot;영역별 depth 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;markdup&lt;/td&gt;
&lt;td&gt;PCR 중복 표시 (변이 호출 전처리에서 사용)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실무 순서로 보면 bwa mem 결과를 파이프로 바로 samtools sort에 넘겨서 정렬된 BAM을 만들고, samtools index로 .bai를 생성한 뒤, samtools flagstat으로 매핑이 잘 됐는지 확인하는 흐름이 일반적입니다. &lt;br /&gt;이렇게 만든 sorted BAM(+.bai)이 이후 변이 호출 단계의 입력이 됩니다.&lt;/p&gt;</description>
      <category>Bio Data Analysis/서열분석개론</category>
      <category>BAM</category>
      <category>bioinformatics</category>
      <category>Bwa</category>
      <category>Cigar</category>
      <category>flag</category>
      <category>ngs</category>
      <category>sam</category>
      <category>samtools</category>
      <category>매핑</category>
      <category>생물정보학</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/185</guid>
      <comments>https://is-note.tistory.com/185#entry185comment</comments>
      <pubDate>Sat, 11 Jul 2026 02:00:08 +0900</pubDate>
    </item>
    <item>
      <title>[서열분석개론] 서열 분석 - 파일 포맷 (FASTA, FASTQ, BED)</title>
      <link>https://is-note.tistory.com/184</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;시퀀싱으로 얻은 데이터를 다루려면 파이프라인 각 단계에서 쓰이는 표준 텍스트 포맷을 알아야 합니다. &lt;br /&gt;FASTA, FASTQ, BED는 생김새가 비슷해 보여도 담고 있는 정보와 용도가 완전히 다르니 헷갈리지 않게 정리했습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;FASTA&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;품질 정보 없이 서열만 담는 가장 단순한 포맷입니다. &lt;br /&gt;주로 레퍼런스 유전체를 표현할 때 씁니다.&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;&lt;code&gt;&amp;gt;chr21
GATCACAGGTCTATCACCCTATTAACCAC
TCACGGGAGCTCTCCATGCATTTGGTATT
TTCGTCTGGGGGGTATGCACGCGATAGCA
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조는 두 부분입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;헤더&lt;/b&gt;: &amp;gt;로 시작하고 그 뒤에 서열 이름(염색체명, 유전자명 등)이 온다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;서열&lt;/b&gt;: A/C/G/T/N으로 구성되고, 보통 60~80자마다 줄바꿈된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레퍼런스 파일은 그대로 두고 쓰기보다 인덱스를 만들어서 쓰는 경우가 많습니다. &lt;br /&gt;samtools faidx로 만든 .fai 인덱스가 있으면 파일 전체를 훑지 않고도 원하는 영역에 바로 접근할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;FASTQ&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서열과 품질 정보를 함께 담는 NGS의 기본 단위입니다. &lt;br /&gt;read 하나가 정확히 4줄로 구성됩니다.&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;@A00984:1:1101:2356:1000 1:N:0:ATCG
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGT
+
!''*((((***+))%%%++)(%%%%).1***-+*
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;줄&lt;/td&gt;
&lt;td&gt;내용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Sequence ID &amp;mdash; instrument, lane, tile, 좌표 정보. @로 시작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sequence &amp;mdash; 실제 염기서열 (A/C/G/T/N)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Separator &amp;mdash; + (뒤에 ID를 다시 적기도 하지만 보통 생략)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Quality &amp;mdash; 2번째 줄과 같은 길이, 염기별 Phred 점수를 ASCII 문자로 인코딩&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FASTQ 파일의 read 개수는 전체 줄 수를 4로 나눈 값과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Paired-end라면 R1, R2 파일의 read 개수가 서로 일치해야 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Phred Quality Score&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FASTQ 4번째 줄의 ASCII 문자가 나타내는 값이 Phred 품질 점수입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cm9xcO/dJMcabZe2yn/sN9TfqHrVXQXkscsjx6gdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cm9xcO/dJMcabZe2yn/sN9TfqHrVXQXkscsjx6gdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cm9xcO/dJMcabZe2yn/sN9TfqHrVXQXkscsjx6gdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcm9xcO%2FdJMcabZe2yn%2FsN9TfqHrVXQXkscsjx6gdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;508&quot; height=&quot;104&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 P는 그 염기가 틀렸을 확률입니다. Q가 높을수록 신뢰도가 높습니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Phred Q&lt;/td&gt;
&lt;td&gt;오류 확률(P)&lt;/td&gt;
&lt;td&gt;정확도&lt;/td&gt;
&lt;td&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Q10&lt;/td&gt;
&lt;td&gt;1/10&lt;/td&gt;
&lt;td&gt;90%&lt;/td&gt;
&lt;td&gt;낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Q20&lt;/td&gt;
&lt;td&gt;1/100&lt;/td&gt;
&lt;td&gt;99%&lt;/td&gt;
&lt;td&gt;허용 하한선 부근&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Q30&lt;/td&gt;
&lt;td&gt;1/1000&lt;/td&gt;
&lt;td&gt;99.9%&lt;/td&gt;
&lt;td&gt;일반적인 품질 기준&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Q40&lt;/td&gt;
&lt;td&gt;1/10000&lt;/td&gt;
&lt;td&gt;99.99%&lt;/td&gt;
&lt;td&gt;매우 높음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실무에서는 Q30 이상을 신뢰할 수 있는 염기의 기준선으로 보는 경우가 많습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read의 3&amp;prime; 끝으로 갈수록 품질이 떨어지는 게 일반적인 패턴이라, 이 부분을 트리밍(trimming) 도구로 잘라내는 전처리를 거칩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;BED&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관심 영역을 좌표 구간으로 표현하는 포맷입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타깃 패널, 엑손 영역처럼 &quot;어디서부터 어디까지&quot;를 나타낼 때 씁니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;chr21   5010000   5010500
chr21   5011200   5011800   exon2
chr21   45705700 45706000   AIRE
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탭으로 구분된 3열(chrom, start, end)이 최소 형식이고, 4번째 열에 이름을 추가로 붙일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BED 좌표계에서 꼭 기억해야 할 두 가지가 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;0-based&lt;/b&gt;: 시작 좌표가 0부터 시작. VCF나 GFF는 1-based라서 서로 다르다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;half-open&lt;/b&gt;: [start, end) 구간이라 end 좌표 자체는 포함하지 않는다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 좌표계 차이 때문에 포맷 간 변환 시 off-by-one 오류가 자주 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 GFF(1-based)에서 BED(0-based)로 변환할 때는 start 값에서 1을 빼야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 잊고 그대로 옮기면 영역이 한 칸씩 밀리는 문제가 생깁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영역 계산이나 필터링에는 bedtools가 표준 도구로 쓰입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구간 교집합, 병합, 커버리지 계산 등을 여기서 처리합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 포맷을 한 줄로 정리하면:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FASTA는 서열 자체, FASTQ는 서열+품질(read 단위), BED는 좌표 구간 정보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이프라인에서 이 세 가지가 각각 어느 단계에 쓰이는지 구분해두면 이후 매핑&amp;middot;변이호출 단계를 이해하기가 훨씬 수월합니다.&lt;/p&gt;</description>
      <category>Bio Data Analysis/서열분석개론</category>
      <category>bed</category>
      <category>bioinformatics</category>
      <category>fasta</category>
      <category>FASTQ</category>
      <category>ngs</category>
      <category>Phred</category>
      <category>데이터분석</category>
      <category>생물정보학</category>
      <category>유전체분석</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/184</guid>
      <comments>https://is-note.tistory.com/184#entry184comment</comments>
      <pubDate>Sat, 11 Jul 2026 01:00:59 +0900</pubDate>
    </item>
    <item>
      <title>[서열분석개론] 서열 분석 - 시퀀싱 원리</title>
      <link>https://is-note.tistory.com/183</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;DNA-seq 파이프라인을 이해하려면 가장 먼저 raw read가 어떻게 만들어지는지부터 알아야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시퀀싱 방식에 따라 read의 길이, 정확도, 비용이 달라지고 이게 이후 분석 전략(어떤 caller를 쓸지, depth를 얼마나 잡을지)에 그대로 영향을 줍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Sanger vs NGS&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Sanger 시퀀싱&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1977년 개발된 1세대 시퀀싱 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원리는 chain termination입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNA를 합성하다가 형광 표지된 ddNTP(dideoxynucleotide)가 끼어들면 그 자리에서 합성이 멈춥니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정을 무작위로 반복하면 길이가 1bp씩 다른 조각들의 ladder가 만들어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 전기영동으로 길이순 분리하면 짧은 조각일수록 빨리 이동하고, 각 위치의 형광색을 크로마토그램으로 읽으면 서열이 순서대로 나옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽는 길이는 ~1kb 정도로 짧지만 정확도가 매우 높습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 지금도 완전히 사라지지 않고, NGS로 넓게 스크리닝한 후보 변이를 특정 부위만 다시 확인하는 confirmation 용도로 쓰입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모-자녀 segregation을 확인해서 de novo 여부를 판단할 때도 Sanger가 자주 등장합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;NGS (Next Generation Sequencing)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Illumina가 2006년에 상용화한 SBS(Sequencing by Synthesis) 방식이 사실상 표준입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 대규모 병렬 시퀀싱, 즉 수억 개의 read를 동시에 읽는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동작 순서는 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Library 준비&lt;/b&gt;: 유전체를 잘게 자르고 어댑터를 붙여 flow cell 표면에 부착&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cluster 생성&lt;/b&gt;: bridge amplification(PCR)으로 각 조각을 수천 카피로 증폭. &lt;br /&gt;단분자 신호는 너무 약해서 카메라로 못 찍기 때문에 증폭이 필요하다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;합성하며 촬영&lt;/b&gt;: 형광 표지된 염기가 하나 붙을 때마다 카메라로 촬영하고, 다시 이어서 합성하는 걸 반복. &lt;br /&gt;Sanger처럼 영구히 멈추는 게 아니라 가역적으로 종결과 재합성을 반복한다는 게 차이점이다&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사이클이 길어질수록 위상이 어긋나거나(phasing) 신호가 약해져서 정확도가 떨어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 보통 150bp 안팎에서 끊는다. 이게 short-read라고 불리는 이유입니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Sanger&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;NGS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;방식&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;모세관 전기영동, 한 번에 한 조각&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;대규모 병렬 시퀀싱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;처리량&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;~1kb/read, 저처리량&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Gb~Tb/run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;비용/염기&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;높음&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;매우 낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;정확도&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;매우 높음 (표준)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;read당 정확도는 낮은 편, depth로 보완&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;용도&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;단일 변이 확정&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;WGS/WES/패널 대규모 탐색&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Read, Paired-end, Depth, Coverage&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Read와 Paired-end&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Read는 시퀀서가 읽어낸 하나의 연속된 염기 조각입니다. (보통 150bp 전후)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Single-end(SE)&lt;/b&gt;: fragment의 한쪽 끝만 읽음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Paired-end(PE)&lt;/b&gt;: fragment의 양쪽 끝을 각각 R1, R2로 읽음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PE로 읽으면 R1과 R2 사이 거리(insert size)를 매핑 위치 검증에 쓸 수 있고, 반복 서열이나 구조변이를 해석할 때도 SE보다 유리합니다. 요즘 실무에서는 PE가 기본값이라고 봐도 됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Depth와 Coverage&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 둘을 헷갈리기 쉬운데 구분해서 알아두는 게 좋습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Depth(깊이)&lt;/b&gt;: 특정 위치를 덮는 read의 수. 예를 들어 &quot;30&amp;times;&quot;라고 하면 그 위치를 평균 30번 읽었다는 뜻&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Coverage(범위)&lt;/b&gt;: 목표 영역 중에서 일정 depth 이상으로 읽힌 비율&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;depth가 낮으면 진짜 변이인지 시퀀싱 오류인지 구분하기 어려워집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read 한두 개에서만 다르게 나온 염기는 신뢰하기 힘들지만, 30개 read 중 15개에서 일관되게 다르게 나온다면 진짜 변이일 가능성이 높아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목적에 따라 요구되는 depth 기준도 다릅니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;분석 목적&lt;/td&gt;
&lt;td&gt;일반적인 depth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WGS (전장 유전체)&lt;/td&gt;
&lt;td&gt;~30&amp;times;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WES (전장 엑솜)&lt;/td&gt;
&lt;td&gt;~100&amp;times;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;암 패널&lt;/td&gt;
&lt;td&gt;수백~수천&amp;times;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암 패널처럼 depth를 높게 잡는 이유는, 암은 종양 내 여러 클론이 섞여 있어서(tumor heterogeneity) 변이 대립빈도(AF)가 낮게 나올 수 있고, 이런 낮은 빈도의 변이를 잡아내려면 훨씬 많은 read가 필요하기 때문입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Short-read vs Long-read&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Illumina 계열이 short-read를 대표하고, PacBio SMRT(2011)와 Oxford Nanopore(2014)가 long-read를 대표합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PacBio SMRT&lt;/b&gt;는 웰 바닥에 고정된 중합효소가 형광 표지 염기를 붙일 때 나오는 빛을 실시간으로 검출해서 서열을 읽습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Oxford Nanopore&lt;/b&gt;는 막에 박힌 나노포어로 DNA 가닥을 통과시키면서, 염기마다 달라지는 이온 전류 변화를 측정해 전류 패턴을 서열로 해독합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;Short-read (Illumina)&lt;/td&gt;
&lt;td&gt;Long-read (PacBio, ONT)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read 길이&lt;/td&gt;
&lt;td&gt;~100-300bp&lt;/td&gt;
&lt;td&gt;수 kb ~ 수백 kb&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정확도&lt;/td&gt;
&lt;td&gt;매우 높음 (Q30 이상)&lt;/td&gt;
&lt;td&gt;플랫폼별로 다름, 최근 크게 개선됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;강점&lt;/td&gt;
&lt;td&gt;SNV&amp;middot;small indel 검출, 비용 대비 정확도&lt;/td&gt;
&lt;td&gt;구조변이, 반복영역, phasing, isoform&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Long-read의 강점이 특히 잘 드러나는 두 가지 상황이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Short tandem repeat(STR)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짧은 반복 서열이 여러 번 반복되는 영역은 short-read(150bp)로는 반복 횟수를 정확히 세기 어렵습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read가 반복 구간을 통째로 통과하지 못하고 어디서 끊겼는지 애매해지기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;long-read는 반복 전체를 한 번에 통과하므로 반복 횟수를 정확히 셀 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Phasing(haplotype 구분)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 사람은 부모로부터 각각 하나씩 염색체를 물려받는데, 어떤 변이들이 같은 염색체(같은 haplotype)에 있는지 구분하는 게 phasing입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;short-read는 read 길이가 짧아서 멀리 떨어진 변이들 사이의 연결 관계를 못 잡고 끊기지만(phasing break), long-read는 하나의 read가 두 변이 위치를 모두 커버할 수 있어서 haplotype을 이어서 조립할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 이유로 반복영역이나 구조변이가 중요한 케이스에서는 long-read를 보조적으로 활용하는 경우가 늘고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 비용과 처리량 면에서는 여전히 short-read가 대량 스크리닝에 유리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Bio Data Analysis/서열분석개론</category>
      <category>bioinformatics</category>
      <category>coverage</category>
      <category>Depth</category>
      <category>longread</category>
      <category>ngs</category>
      <category>Sanger</category>
      <category>shortread</category>
      <category>생물정보학</category>
      <category>시퀀싱</category>
      <category>유전체분석</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/183</guid>
      <comments>https://is-note.tistory.com/183#entry183comment</comments>
      <pubDate>Wed, 8 Jul 2026 21:00:23 +0900</pubDate>
    </item>
    <item>
      <title>[코딩테스트 연습] 수열과 구간 쿼리 2 (프로그래머스)</title>
      <link>https://is-note.tistory.com/182</link>
      <description>&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수 배열&amp;nbsp;arr와 2차원 정수 배열&amp;nbsp;queries이 주어집니다.&amp;nbsp;queries의 원소는 각각 하나의&amp;nbsp;query를 나타내며,&amp;nbsp;[s, e, k]&amp;nbsp;꼴입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각&amp;nbsp;query마다 순서대로&amp;nbsp;s&amp;nbsp;&amp;le;&amp;nbsp;i&amp;nbsp;&amp;le;&amp;nbsp;e인 모든&amp;nbsp;i에 대해&amp;nbsp;k보다 크면서 가장 작은&amp;nbsp;arr[i]를 찾습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각&lt;span&gt; &lt;/span&gt;쿼리의&lt;span&gt; &lt;/span&gt;순서에&lt;span&gt; &lt;/span&gt;맞게&lt;span&gt; &lt;/span&gt;답을&lt;span&gt; &lt;/span&gt;저장한&lt;span&gt; &lt;/span&gt;배열을&lt;span&gt; &lt;/span&gt;반환하는&lt;span&gt; solution &lt;/span&gt;함수를&lt;span&gt; &lt;/span&gt;완성해&lt;span&gt; &lt;/span&gt;주세요&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;단&lt;span&gt;, &lt;/span&gt;특정&lt;span&gt; &lt;/span&gt;쿼리의&lt;span&gt; &lt;/span&gt;답이&lt;span&gt; &lt;/span&gt;존재하지&lt;span&gt; &lt;/span&gt;않으면&lt;span&gt; -1&lt;/span&gt;을&lt;span&gt; &lt;/span&gt;저장합니다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;제한사항&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr의 길이 &amp;le; 1,000
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;0 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr의 원소 &amp;le; 1,000,000&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;queries의 길이 &amp;le; 1,000
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;0 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;e&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr의 길이&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;0 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;k&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 1,000,000&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;주어진 코드&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1783420332196&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr, queries):
    answer = []
    return answer
    
# 입출력 예
      arr       |              queries             |    result
[0, 1, 2, 4, 3] |  [[0, 4, 2],[0, 3, 2],[0, 2, 2]] |  [3, 4, -1]&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #1&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫 번째 쿼리의 범위에는 0, 1, 2, 4, 3이 있으며 이 중 2보다 크면서 가장 작은 값은 3입니다.&lt;/li&gt;
&lt;li&gt;두 번째 쿼리의 범위에는 0, 1, 2, 4가 있으며 이 중 2보다 크면서 가장 작은 값은 4입니다.&lt;/li&gt;
&lt;li&gt;세 번째 쿼리의 범위에는 0, 1, 2가 있으며 여기에는 2보다 큰 값이 없습니다.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;따라서&lt;/span&gt; [3, 4, -1]&lt;span&gt;을&lt;/span&gt; return &lt;span&gt;합니다&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;답&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; color: #333333;&quot; data-text-less=&quot;닫기&quot; data-text-more=&quot;더보기&quot; data-ke-type=&quot;moreLess&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1783420866282&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr, queries):
    answer = []
    
    for s, e, k in queries:
        con = []
        for i in arr[s:e+1]:
            if i &amp;gt; k:
                con.append(i)
        answer.append(-1 if not con else min(con))
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트 연습</category>
      <category>코딩테스트</category>
      <category>파이썬</category>
      <category>파이썬연습</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/182</guid>
      <comments>https://is-note.tistory.com/182#entry182comment</comments>
      <pubDate>Tue, 7 Jul 2026 20:40:20 +0900</pubDate>
    </item>
    <item>
      <title>[코딩테스트 연습] 수열과 구간 쿼리 3 (프로그래머스)</title>
      <link>https://is-note.tistory.com/181</link>
      <description>&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수 배열&amp;nbsp;arr와 2차원 정수 배열&amp;nbsp;queries이 주어집니다.&amp;nbsp;queries의 원소는 각각 하나의&amp;nbsp;query를 나타내며,&amp;nbsp;[i, j]&amp;nbsp;꼴입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각&amp;nbsp;query마다 순서대로&amp;nbsp;arr[i]의 값과&amp;nbsp;arr[j]의 값을 서로 바꿉니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;위&lt;/span&gt; &lt;span&gt;규칙에&lt;/span&gt; &lt;span&gt;따라&lt;/span&gt;&amp;nbsp;queries&lt;span&gt;를&lt;/span&gt; &lt;span&gt;처리한&lt;/span&gt; &lt;span&gt;이후의&lt;/span&gt;&amp;nbsp;arr&lt;span&gt;를&lt;/span&gt; return &lt;span&gt;하는&lt;/span&gt; solution &lt;span&gt;함수를&lt;/span&gt; &lt;span&gt;완성해&lt;/span&gt; &lt;span&gt;주세요&lt;/span&gt;.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;제한사항&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr의 길이 &amp;le; 1,000
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;0 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr의 원소 &amp;le; 1,000,000&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;queries의 길이 &amp;le; 1,000
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;0 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;i&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;j&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr의 길이&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;주어진 코드&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1783419321460&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr, queries):
    answer = []
    return answer
    
# 입출력 예
      arr       |        queries          |      result
[0, 1, 2, 3, 4] | [[0, 3],[1, 2],[1, 4]]  |  [3, 4, 1, 0, 2]&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #1&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 쿼리에 따라&amp;nbsp;arr가 다음과 같이 변합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 56.8605%; height: 166px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;arr&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;[0, 1, 2, 3, 4]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;[3, 1, 2, 0, 4]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;[3, 2, 1, 0, 4]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;[3, 4, 1, 0, 2]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;따라서&lt;/span&gt; [3, 4, 1, 0, 2]&lt;span&gt;를&lt;/span&gt; return &lt;span&gt;합니다&lt;/span&gt;.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;답&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; color: #333333;&quot; data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1783420093789&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr, queries):
    x, y = 0, 0
    
    for i in range(len(queries)):
        x = queries[i][0]
        y = queries[i][1]
        
        arr[x], arr[y] = arr[y], arr[x]
        
    return arr&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트 연습</category>
      <category>코딩테스트</category>
      <category>파이썬</category>
      <category>파이썬연습</category>
      <author>데이터로 읽는 생명</author>
      <guid isPermaLink="true">https://is-note.tistory.com/181</guid>
      <comments>https://is-note.tistory.com/181#entry181comment</comments>
      <pubDate>Tue, 7 Jul 2026 20:30:33 +0900</pubDate>
    </item>
  </channel>
</rss>