自由研究(新型コロナの遺伝子配列、PCR、ワクチンの遺伝子配列)
目次
- 1. 概要
- 2. 関連文書
- 3. 新型コロナ(一番最初の中国論文の)の遺伝子配列を文字列化して変数に保存
- 4. PCR検査マニュアルにある遺伝子配列を確認その1(感染研・地衛研専用のマニュアル)
- 5. PCR検査マニュアルにある遺伝子配列を確認その2
- 6. ファイザーワクチンのmRNAの遺伝子配列を文字列化して変数に格納
- 7. ファイザーワクチンのmRNAの遺伝子配列にPCR検査している遺伝子配列が含まれているか確認
- 8. PCR検査で調べている遺伝子配列が 新型コロナの MN908947.3(最新バージョン),MN908947.1(昔のバージョン)に存在するか確認
- 9. ファイザーワクチンのmRNAの遺伝子配列にPCR検査している遺伝子配列に似てる遺伝子配列が含まれているか確認1
- 10. 今後
- 11. この文書のチェンジログ
1 概要
- もともとは、PCR検査でワクチンの遺伝子は陽性になるのかを調べてみたくなって、やりはじめました
- 最初PCRで調べてる遺伝子の場所を知らなかったので、それを確認するために以下を行いました。(PCR検査では新型コロナの1/300程度しか調べてません)
- 最初中国の論文で新型コロナの遺伝子配列が調べられました。これを文字列化
- ちなみに、1ヶ月かそれ以上前に変異種1万種類以上確認されてます。報道は少ない種類のように報道してますが2週間に1度くらいのペースで変異しまくり。
- PCR検査のマニュアルが感染研にあるので、それに記載されている遺伝子配列が、中国で初めて確認された新型コロナの遺伝子配列のどこなのかを調べた
- ファイザーワクチンの遺伝子配列が厚労省の文書に書かれていたので、それを文字列化(画像だったので、OCRで処理。正しく変換できてるかは面倒なので、未確認)
- PCR検査の検査部位の遺伝子配列が、ファイザーワクチンの遺伝子配列に含まれているか確認した(結果含まれてないようです。)
- 多少ちがってても増殖できることもあるらしいので、PCR検査で陽性になるかどうかを調べれたわけではありませんが、PCR検査で検査してる部分の遺伝子配列に完全に一致する遺伝子配列は存在してないと思われます。
- 最初中国の論文で新型コロナの遺伝子配列が調べられました。これを文字列化
- 最初PCRで調べてる遺伝子の場所を知らなかったので、それを確認するために以下を行いました。(PCR検査では新型コロナの1/300程度しか調べてません)
2 関連文書
- 中国論文 https://www.nature.com/articles/s41586-020-2008-3.pdf
- 遺伝子配列(中国論文) MN908947.3 https://www.ncbi.nlm.nih.gov/nuccore/MN908947
- 遺伝子配列(中国論文) MN908947.1(昔のバージョン?) https://www.ncbi.nlm.nih.gov/nuccore/1791269088 https://www.ncbi.nlm.nih.gov/nuccore/MN908947.1
- 感染研のマニュアル
- 病原体検出マニュアル 2019-nCoV Ver.2.9.1 https://www.niid.go.jp/niid/ja/laboratory-test/reference/9559-2020-04-14-10-09-54.html https://www.niid.go.jp/niid/images/lab-manual/2019-nCoV20200319.pdf
- 「感染研・地衛研専用」 SARS-CoV-2 遺伝子検出・ウイルス分離マニュアル Ver.1.1 https://www.niid.go.jp/niid/ja/labo-manual.htmlのhttps://www.niid.go.jp/niid/images/lab-manual/SARS-CoV-2_gene_detect_and_isolation_manual_Ver1_1.pdf
- 審議結果報告書(ファイザーの遺伝子配列情報が記載されてる) https://www.mhlw.go.jp/content/10601000/000739089.pdf
- 利用した主なツール
- Ubuntu (OS、Linuxの1種)
- Chrome (有名なブラウザ)
- Python (プログラム言語の一種)
- BeautifulSoup
- IPython (Pythonを対話的に利用しやすくするツール)
- pdftoppm (PDFファイルの遺伝子配列の記載ページを画像に変換(ppmフォーマット))
- GIMP (画像処理ソフト、切り取り処理とPNGへの変換に利用)
- tesseract (OCRソフト)
3 新型コロナ(一番最初の中国論文の)の遺伝子配列を文字列化して変数に保存
- 遺伝子配列(中国論文) https://www.ncbi.nlm.nih.gov/nuccore/MN908947 にある遺伝子配列をPytonの変数に文字列として保存する処理
3.1 説明動画
3.2 新型コロナ(一番最初の中国論文の)の遺伝子配列を文字列化して変数に保存をおこなう手順
3.2.1 まず遺伝子配列が記載されているページをChomeで開き、外部ファイルに保存します。
- 遺伝子配列(中国論文) https://www.ncbi.nlm.nih.gov/nuccore/MN908947
3.2.2 BeautifulSoupが必要なので入ってなかったら入れる
- Pipでインストールするなら多分以下
pip install beautifulsoup4
- あるいはUbuntuでパッケージでインストールするなら以下のコマンド
sudo apt install python3-bs4
3.2.3 IPythonの起動
ipython3
or
ipython
3.2.4 データ処理
- BeautifulSoupと正規表現用のreパッケージ読み込み
from bs4 import BeautifulSoup import re
- 先程保存したHTMLファイルを読み込む
soup = BeautifulSoup(open('Severe acute respiratory syndrome coronavirus 2 isolate Wuhan-Hu-1, co - Nucleotide - NCBI.html'), 'html.parser')
- 遺伝子配列のある部分をクラス指定で取り出す
- このクラス名で取り出せる事は元のHTMLをChromeで開き、デベロッパーツールで調べておいた
soup.find_all(text=True,class_="ff_line")
- 上手く取り出せているので、1つめを文字列化してみる
soup.find_all(text=True,class_="ff_line")[0].text
- 色々不必要な文字列が含まれてるので、小文字のアルファベット以外を除いてみる
re.sub(r"[^a-z]","",soup.find_all(text=True,class_="ff_line")[0].text)
- mapを利用して、全部の要素に今の処理を実行
list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup.find_all(text=True,class_="ff_line")))
- 全部の要素に今の処理を行い結合したものを変数xxに保存
xx=''.join(list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup.find_all(text=True,class_="ff_line"))))
- 作成した遺伝子配列を表示してみる
print(xx)
- 作成した遺伝子配列の長さを表示してみる
print("len(xx)") print(len(xx))
3.3 この章のまとめ
- 新型コロナウィルスの遺伝子配列(一番最初の中国論文)を文字列にして、変数に入れる処理を行なった
4 PCR検査マニュアルにある遺伝子配列を確認その1(感染研・地衛研専用のマニュアル)
- 「感染研・地衛研専用」 SARS-CoV-2 遺伝子検出・ウイルス分離マニュアル Ver.1.1 https://www.niid.go.jp/niid/ja/labo-manual.htmlのhttps://www.niid.go.jp/niid/images/lab-manual/SARS-CoV-2_gene_detect_and_isolation_manual_Ver1_1.pdf
4.1 説明動画
4.2 PCR検査マニュアルにある遺伝子配列を確認1 手順
4.2.1 IPythonを起動
ipython3
4.2.2 以下のコマンドを実行し、新型コロナウィルスの中国論文の遺伝子配列を変数に代入
from bs4 import BeautifulSoup import re soup = BeautifulSoup(open('Severe acute respiratory syndrome coronavirus 2 isolate Wuhan-Hu-1, co - Nucleotide - NCBI.html'), 'html.parser') xx=''.join(list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup.find_all(text=True,class_="ff_line")))) print(len(xx))
4.2.3 逆順にする関数myrevと、ペアの遺伝子配列にする関数myconvを定義
def myrev(s): return ''.join(list(reversed(s))) def myconv(s): return s.upper().replace("C","g").replace("G","c").replace("A","t").replace("T","a")
4.2.4 PCRの検査マニュアルに記載されている位置の遺伝子配列の確認(リアルタイムPCRの検査部分を確認) その1
- 「感染研・地衛研専用」 SARS-CoV-2 遺伝子検出・ウイルス分離マニュアル Ver.1.1 https://www.niid.go.jp/niid/ja/labo-manual.htmlのhttps://www.niid.go.jp/niid/images/lab-manual/SARS-CoV-2_gene_detect_and_isolation_manual_Ver1_1.pdf
- これの10ページ目のリアルタイムRT-PCR用のセットを確認
- FAM-….BHQ1 は発光か蛍光用のもの
- それぞれのセットの1番目と2番目の配列がある部分の間に、3番目の配列があることを確認している
- NIID-N2 セット 29125-29144 の範囲表示
print(xx[29125-1:29144])
- NIID-N2 セット 29282-29263 の範囲表示
print(xx[29263-1:29282])
- これを逆順にしてペアの配列を表示
print(myrev(myconv(xx[29263-1:29282])))
- NIID-N2 セット 29222-29241 の範囲表示
print(xx[29222-1:29241])
- NIID-S ver.2 (S2)セット 24722-24742 の範囲表示
print(xx[24722-1:24742])
- NIID-S ver.2 (S2)セット 24870-24851 の範囲表示
print(xx[24851-1:24870])
- これを逆順にしてペアの配列を表示
print(myrev(myconv(xx[24851-1:24870])))
- NIID-S ver.2 (S2)セット 24793-24816 の範囲表示
print(xx[24793-1:24816])
4.2.5 PCRの検査マニュアルに記載されている位置の遺伝子配列の確認(リアルタイムPCRの検査部分を確認) その2
- re.finditerを使って探索
- NIID-N2 セット
print(list(re.finditer("AAATTTTGGGGACCAGGAAC".lower(),xx))) print(list(re.finditer(myconv(myrev("TGGCACCTGTGTAGGTCAAC")).lower(),xx))) print(list(re.finditer("ATGTCGCGCATTGGCATGGA".lower(),xx)))
- NIID-S ver.2 (S2)セット
print(list(re.finditer("CAGTCAGCACCTCATGGTGTA".lower(),xx))) print(list(re.finditer(myconv(myrev("AACCAGTGTGTGCCATTTGA")).lower(),xx))) print(list(re.finditer("TGCTCCTGCCATTTGTCATGATGG".lower(),xx)))
4.2.6 PCRの検査でチェックしている遺伝子配列の長さ
- それぞれの長さの表示
print(list(map(lambda x:len(x),["AAATTTTGGGGACCAGGAAC","TGGCACCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA"]))) print(sum(list(map(lambda x:len(x),["AAATTTTGGGGACCAGGAAC","TGGCACCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA"])))) print(list(map(lambda x:len(x),["CAGTCAGCACCTCATGGTGTA","AACCAGTGTGTGCCATTTGA","TGCTCCTGCCATTTGTCATGATGG"]))) print(sum(list(map(lambda x:len(x),["CAGTCAGCACCTCATGGTGTA","AACCAGTGTGTGCCATTTGA","TGCTCCTGCCATTTGTCATGATGG"]))))
4.3 この章のまとめ
- 前の章の遺伝子配列で、PCR検査で検査している遺伝子配列を調べてみた(製品によって異る部分を調べているものがあります。)
- 全長3万弱の遺伝子のほんのちょっとの部分しか調べていないことを確認
5 PCR検査マニュアルにある遺伝子配列を確認その2
5.1 説明動画
5.2 PCR検査マニュアルにある遺伝子配列を確認2 手順
5.2.1 ベースとなる新型コロナの遺伝子配列が旧バージョンなのでそれをダウンロード
- 以下の2箇所に情報があった。両者同じ遺伝子配列であった。
5.2.2 IPythonを起動
ipython3
5.2.3 以下のコマンドを実行し、新型コロナウィルスの中国論文の遺伝子配列を変数に代入
- xxにMN908947.3(最新版)
- xx2にMN908947.1(旧バージョン)
from bs4 import BeautifulSoup import re def myrev(s): return ''.join(list(reversed(s))) def myconv(s): return s.upper().replace("C","g").replace("G","c").replace("A","t").replace("T","a") soup = BeautifulSoup(open('Severe acute respiratory syndrome coronavirus 2 isolate Wuhan-Hu-1, co - Nucleotide - NCBI.html'), 'html.parser') xx=''.join(list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup.find_all(text=True,class_="ff_line")))) print(len(xx)) soup2 = BeautifulSoup(open('Wuhan seafood market pneumonia virus isolate Wuhan-Hu-1, complete geno - Nucleotide - NCBI.html'), 'html.parser') xx2=''.join(list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup2.find_all(text=True,class_="ff_line")))) print(xx2) print("len(xx2)") print(len(xx2))
5.2.4 探索部分を関数に定義
def mycheck(xx,x1="CACATTGGCACCCGCAATC",x2="GAGGAACGAGAAGAGGCTTG",x3="ACTTCCTCAAGGAACAACATTGCCA"): s=xx.upper() return(list(re.finditer(x1.upper(),s)),list(re.finditer(myconv(myrev(x2.upper())).upper(),s)) ,list(re.finditer(x3.upper(),s))) def mycheck2(xx): return mycheck(xx,"AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA")
5.2.5 それぞれの長さの表示
- Nセット
print(list(map(lambda x:len(x),["CACATTGGCACCCGCAATC","GAGGAACGAGAAGAGGCTTG","ACTTCCTCAAGGAACAACATTGCCA"]))) print(sum(list(map(lambda x:len(x),["CACATTGGCACCCGCAATC","GAGGAACGAGAAGAGGCTTG","ACTTCCTCAAGGAACAACATTGCCA"]))))
- N2セット
print(list(map(lambda x:len(x),["AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA"]))) print(sum(list(map(lambda x:len(x),["AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA"]))))
5.2.6 それぞれの長さの全体にしめる割合を確認
- Nセット
# Nセット print(len(xx2)/sum(list(map(lambda x:len(x),["CACATTGGCACCCGCAATC","GAGGAACGAGAAGAGGCTTG","ACTTCCTCAAGGAACAACATTGCCA"]))))
- N2セット
# N2セット print(len(xx2)/sum(list(map(lambda x:len(x),["AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA"]))))
- NセットとN2セット
# NセットとN2セット print(len(xx2)/(sum(list(map(lambda x:len(x),["AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA"])))+sum(list(map(lambda x:len(x),["AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA"])))))
5.2.7 PCRの検査マニュアルに記載されている位置の遺伝子配列の確認(リアルタイムPCRの検査部分を確認) その1
- N1セットのチェック
- なぜか、1つ場所がズレてる。原因は不明。遺伝子配列は存在してる
# 28723-28741 # 28850-28831 # 28770-28794 mycheck(xx2)
- N2セットのチェック
- なぜか、1つ場所がズレてる。原因は不明。遺伝子配列は存在してる
# 29142-29161 # 29299-29280 # 29239-29258 mycheck2(xx2)
5.3 この章のまとめ
- 通常のPCR検査のマニュアルにあるチェック部分の遺伝子配列を調べた
6 ファイザーワクチンのmRNAの遺伝子配列を文字列化して変数に格納
- 審議結果報告書(ファイザーの遺伝子配列情報が記載されてる) https://www.mhlw.go.jp/content/10601000/000739089.pdf
- 正しくOCRで変換できてるかは、面倒だったので未確認
6.1 説明動画
6.2 ファイザーワクチンのmRNAの遺伝子配列を文字列化して変数に格納 手順
6.2.1 ファイザーの遺伝子配列情報が記載されてる書類をダウンロード
- 審議結果報告書(ファイザーの遺伝子配列情報が記載されてる) https://www.mhlw.go.jp/content/10601000/000739089.pdf
- Yが特殊で”一メチルシュウドウウリジン”というのがいれられていて、通常のmRNAではない。長寿命になるように工夫されている。(報道のように普通のmRNAじゃなく、長寿命化)
6.2.2 PDFファイルから、遺伝子情報のあるページを抜き出し
- 000739089-04.ppm 000739089-05.ppm 000739089-06.ppm のファイルが生成される。画像フォーマットはppm
pdftoppm -l 6 -f 4 000739089.pdf 000739089
6.2.3 画像ファイルから余計な部分を除去
- 私はGIMPを用いて切り抜きしました。他の画像処理ツールでもOK
6.2.4 OCRソフト( tesseract )で文字列化
- psmオプションつけないと、列毎の文字列になってしまい、後処理が面倒になる
- 000739089-04.txt 000739089-05.txt 000739089-06.txt という3つのテキストファイルが生成される。
tesseract -l eng --psm 4 000739089-04.png 000739089-04 tesseract -l eng --psm 4 000739089-05.png 000739089-05 tesseract -l eng --psm 4 000739089-06.png 000739089-06
6.2.5 Python起動
ipython3
or
ipython
6.2.6 OCRソフト( tesseract )で文字列化
import re yy="" with open("000739089-04.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read()) with open("000739089-05.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read()) with open("000739089-06.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read())
6.3 この章のまとめ
- ファイザーワクチンのmRNAの遺伝子配列を文字列化
7 ファイザーワクチンのmRNAの遺伝子配列にPCR検査している遺伝子配列が含まれているか確認
- 審議結果報告書(ファイザーの遺伝子配列情報が記載されてる) https://www.mhlw.go.jp/content/10601000/000739089.pdf
7.1 説明動画
7.2 ファイザーワクチンのmRNAの遺伝子配列にPCR検査している遺伝子配列が含まれているか確認 手順
7.2.1 Pythonの対話環境起動
ipython3
or
ipython
7.2.2 新型コロナの遺伝子配列の読み込み,今まで使った関数の定義
from bs4 import BeautifulSoup import re soup = BeautifulSoup(open('Severe acute respiratory syndrome coronavirus 2 isolate Wuhan-Hu-1, co - Nucleotide - NCBI.html'), 'html.parser') xx=''.join(list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup.find_all(text=True,class_="ff_line")))) print(len(xx)) soup2 = BeautifulSoup(open('Wuhan seafood market pneumonia virus isolate Wuhan-Hu-1, complete geno - Nucleotide - NCBI.html'), 'html.parser') xx2=''.join(list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup2.find_all(text=True,class_="ff_line")))) yy="" with open("000739089-04.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read()) with open("000739089-05.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read()) with open("000739089-06.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read()) def myrev(s): return ''.join(list(reversed(s))) def myconv(s): return s.upper().replace("C","g").replace("G","c").replace("A","t").replace("T","a") def mycheck(xx,x1="CACATTGGCACCCGCAATC",x2="GAGGAACGAGAAGAGGCTTG",x3="ACTTCCTCAAGGAACAACATTGCCA"): s=xx.upper() return(list(re.finditer(x1.upper(),s)),list(re.finditer(myconv(myrev(x2.upper())).upper(),s)) ,list(re.finditer(x3.upper(),s))) def mycheck1(xx): return mycheck(xx,x1="CACATTGGCACCCGCAATC",x2="GAGGAACGAGAAGAGGCTTG",x3="ACTTCCTCAAGGAACAACATTGCCA") def mycheck2(xx): return mycheck(xx,"AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA") def mycheck01(xx): return mycheck(xx,"AAATTTTGGGGACCAGGAAC","TGGCACCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA") def mycheck02(xx): return mycheck(xx,"CAGTCAGCACCTCATGGTGTA","AACCAGTGTGTGCCATTTGA","TGCTCCTGCCATTTGTCATGATGG")
- check1(通常のPCR検査)とcheck02(研究所用)は同じ遺伝子配列を調べているようです。
7.2.3 チェック関数の動作確認
print(mycheck01(xx)) print(mycheck02(xx)) print(mycheck1(xx)) print(mycheck2(xx))
7.2.4 ワクチンの遺伝子配列のYの文字をTに変換
- Yが特殊で”一メチルシュウドウウリジン”なので、Tに変更して別変数に入れる
yyy=yy.replace("Y","T")
7.2.5 ワクチンの遺伝子配列にPCR検査で調べている遺伝子配列があるかチェック
print(mycheck01(yyy)) print(mycheck02(yyy)) print(mycheck1(yyy)) print(mycheck2(yyy))
- 逆順にして確認
print(mycheck01(myrev(yyy))) print(mycheck02(myrev(yyy))) print(mycheck1(myrev(yyy))) print(mycheck2(myrev(yyy)))
7.3 チェック結果
- ファイザーワクチンのmRNAの遺伝子配列内にPCR検査で調べている遺伝子配列は見つからなかった
- 多少ずれてても増幅すると聞いているので、このチェックがPCR検査で陽性にならないかどかのチェックにはなってないと思います。
- 新型コロナの遺伝子の一部が含まれてると聞いていたのに、なぜ含まれないのか、理由は不明。
- PCR検査で陽性にならないように、同義の遺伝子配列にする等の工夫がなされてるのかも?そこ調べてません。
- 同義置換して一致するか確認してみるのも面白そう
- ワクチンの遺伝子配列が正しくOCRで変換できてるかは、面倒だったので未確認なので、そこらあるかも
7.4 この章のまとめ
- ファイザーワクチンのmRNAの遺伝子配列内にPCR検査で調べている遺伝子配列そのものは見つからなかった
8 PCR検査で調べている遺伝子配列が 新型コロナの MN908947.3(最新バージョン),MN908947.1(昔のバージョン)に存在するか確認
- 後で調べ直したら、研究所のマニュアルと、通常のマニュアルで、ベースとしてる新型コロナの遺伝子配列のバージョンが異るため、研究所用、通常用のプライマーの1つが、 MN908947.3(最新バージョン),MN908947.1(昔のバージョン)の片方にしか存在してないことに気づいたので、この章を追加しました。
- 遺伝子配列(中国論文) MN908947.3 https://www.ncbi.nlm.nih.gov/nuccore/MN908947
- 遺伝子配列(中国論文) MN908947.1(昔のバージョン?) https://www.ncbi.nlm.nih.gov/nuccore/1791269088 https://www.ncbi.nlm.nih.gov/nuccore/MN908947.1
- 審議結果報告書(ファイザーの遺伝子配列情報が記載されてる) https://www.mhlw.go.jp/content/10601000/000739089.pdf
- 感染研のマニュアル
- 病原体検出マニュアル 2019-nCoV Ver.2.9.1 https://www.niid.go.jp/niid/ja/laboratory-test/reference/9559-2020-04-14-10-09-54.html https://www.niid.go.jp/niid/images/lab-manual/2019-nCoV20200319.pdf
- 「感染研・地衛研専用」 SARS-CoV-2 遺伝子検出・ウイルス分離マニュアル Ver.1.1 https://www.niid.go.jp/niid/ja/labo-manual.htmlのhttps://www.niid.go.jp/niid/images/lab-manual/SARS-CoV-2_gene_detect_and_isolation_manual_Ver1_1.pdf
8.1 説明動画
8.2 PCR検査で調べている遺伝子配列が 新型コロナの MN908947.3(最新バージョン),MN908947.1(昔のバージョン)に存在するか確認 の手順
- 前の章のプログラムを動かして準備完了
8.2.1 チェック関数の動作確認
- xxにMN908947.3(最新版)も前の章やったが、再度やっておく
- 前の動画では気づいていなかったが、check2(通常のPCR検査用)の2番目のTGGCAGCTGTGTAGGTCAACがMN908947.3(最新版)の遺伝子とマッチしていない
- マニュアルを確認したら「***:Ver3 配列(TGGCACCTGTGTAGGTCAAC)とミスマッチがあるが、ウイルス RNA の 検出感度に影響がないことを確認済み。Ver3 配列も使用可能。 https://www.jstage.jst.go.jp/article/yoken/advpub/0/advpub_JJID.2020.061/_pdf」https://www.niid.go.jp/niid/images/lab-manual/2019-nCoV20200319.pdf p.10と記載があった。
print(mycheck01(xx)) print(mycheck02(xx)) print(mycheck1(xx)) print(mycheck2(xx))
- 前の動画では気づいていなかったが、check2(通常のPCR検査用)の2番目のTGGCAGCTGTGTAGGTCAACがMN908947.3(最新版)の遺伝子とマッチしていない
- xx2にMN908947.1(旧バージョン)
- check01の2番目のTGGCACCTGTGTAGGTCAACがマッチしてない。MN908947.1(旧バージョン)にはこの遺伝子配列そのものは無いようだ。
print(mycheck01(xx2)) print(mycheck02(xx2)) print(mycheck1(xx2)) print(mycheck2(xx2))
8.3 この章のまとめ
- 研究所でのPCR検査で用いる遺伝子配列群1の終了用の遺伝子配列が、新型コロナの遺伝子配列 MN908947.1(旧バージョン)に含まれていない事を確認した。
- 研究所用のマニュアルの遺伝子配列をこれに選択した理由があるはずだが、理由は不明。
- 通常検査用のプライマー配列そのものは、新型コロナの遺伝子配列 MN908947.3(最新バージョン)には含まれていない。しかし、マニュアルには検出感度に問題無いとの記載あり。
- 遺伝子配列が多少異なっても増幅するとは聞いていたが、こちらも最新バージョンの遺伝子配列をベースにせずに、旧バージョンの遺伝子配列からプライマーを決めた理由は良くわからない。
9 ファイザーワクチンのmRNAの遺伝子配列にPCR検査している遺伝子配列に似てる遺伝子配列が含まれているか確認1
- 審議結果報告書(ファイザーの遺伝子配列情報が記載されてる) https://www.mhlw.go.jp/content/10601000/000739089.pdf
- PCR検査で調べている遺伝子配列と1文字違いの遺伝子配列がファイザーの遺伝子配列に含まれているか調べてみる
9.1 説明動画
9.2 ファイザーワクチンのmRNAの遺伝子配列にPCR検査している遺伝子配列に似てる遺伝子配列が含まれているか確認1 の手順
- Pythonの対話環境を起動して以下を実行
from bs4 import BeautifulSoup import re # 新型コロナの遺伝子配列読み込み 変数xx MN908947.3 最新バージョン soup = BeautifulSoup(open('Severe acute respiratory syndrome coronavirus 2 isolate Wuhan-Hu-1, co - Nucleotide - NCBI.html'), 'html.parser') xx=''.join(list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup.find_all(text=True,class_="ff_line")))) print(len(xx)) # 新型コロナの遺伝子配列読み込み 変数xx2 MN908947.1 旧タイプ soup2 = BeautifulSoup(open('Wuhan seafood market pneumonia virus isolate Wuhan-Hu-1, complete geno - Nucleotide - NCBI.html'), 'html.parser') xx2=''.join(list(map(lambda x: re.sub(r"[^a-z]","",x.text),soup2.find_all(text=True,class_="ff_line")))) # ファイザーワクチンの遺伝子配列を 変数yyに yy="" with open("000739089-04.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read()) with open("000739089-05.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read()) with open("000739089-06.txt") as f: yy+=re.sub(r"[^a-zA-Z]","",f.read()) # ファイザーワクチンの遺伝子配列を 変数yyyに("一メチルシュウドウウリジン" YをTに変換) yyy=yy.replace("Y","T") # 関数群 # 文字列を逆順に変換 def myrev(s): return ''.join(list(reversed(s))) # CとG、AとTを入替え def myconv(s): return s.upper().replace("C","g").replace("G","c").replace("A","t").replace("T","a") # チェック関数 def mycheck(xx,x1="CACATTGGCACCCGCAATC",x2="GAGGAACGAGAAGAGGCTTG",x3="ACTTCCTCAAGGAACAACATTGCCA"): s=xx.upper() return(list(re.finditer(x1.upper(),s)),list(re.finditer(myconv(myrev(x2.upper())).upper(),s)) ,list(re.finditer(x3.upper(),s))) # チェック関数1 通常のPCR検査で調べる遺伝子配列群1 def mycheck1(xx): return mycheck(xx,x1="CACATTGGCACCCGCAATC",x2="GAGGAACGAGAAGAGGCTTG",x3="ACTTCCTCAAGGAACAACATTGCCA") # チェック関数2 通常のPCR検査で調べる遺伝子配列群2 def mycheck2(xx): return mycheck(xx,"AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA") # チェック関数01 研究所でのPCR検査で用いる遺伝子配列群1 def mycheck01(xx): return mycheck(xx,"AAATTTTGGGGACCAGGAAC","TGGCACCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA") # チェック関数02 研究所でのPCR検査で用いる遺伝子配列群2 def mycheck02(xx): return mycheck(xx,"CAGTCAGCACCTCATGGTGTA","AACCAGTGTGTGCCATTTGA","TGCTCCTGCCATTTGTCATGATGG") # 元の文字列 s の index 番目の文字列を newstringに置き換える関数 def myreplace(s,index,newstring): return s[:index] + newstring + s[index + 1:] # 元の文字列 s の1文字を"."に置き換えて出来る文字列を生成する関数 def mymake1replace(s): ans=[] for i in range(len(s)): ans.append(myreplace(s,i,".")) return ans # mycheckv2で利用する関数 def bmycheckv2(tt,ss): return (tt,list(re.finditer(tt,ss))) # mycheckv2で利用する関数 def brmycheckv2(tt,ss): ttt=myrev(myconv(tt).upper()) return (ttt,list(re.finditer(ttt,ss))) # 遺伝子配列sに tという遺伝子配列、tの1文字違いの文字列が含まれているか検索する関数 def mycheckv2(s,t): ss=s.upper() tt=t.upper() ans1=[] ans2=[] for i in mymake1replace(tt): t1,t2 = bmycheckv2(i,ss) if len(t2)!=0: ans1.append((t1,t2)) tt1,tt2 = brmycheckv2(i,ss) if len(tt2)!=0: ans1.append((tt1,tt2)) return (ans1,ans2) #ヒットしない文字列を filter cs1=("CACATTGGCACCCGCAATC","GAGGAACGAGAAGAGGCTTG","ACTTCCTCAAGGAACAACATTGCCA") cs2=("AAATTTTGGGGACCAGGAAC","TGGCAGCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA") cs3=("AAATTTTGGGGACCAGGAAC","TGGCACCTGTGTAGGTCAAC","ATGTCGCGCATTGGCATGGA") cs4=("CAGTCAGCACCTCATGGTGTA","AACCAGTGTGTGCCATTTGA","TGCTCCTGCCATTTGTCATGATGG") ### 動作確認 # 研究所用の検査マニュアル 新型コロナの遺伝子配列読み込み 変数xx MN908947.3 最新バージョン for i in cs3: print("########## "+i) print(mycheckv2(xx,i)) print() print() for i in cs4: print("########## "+i) print(mycheckv2(xx,i)) print() print() # 通常の検査マニュアル 新型コロナの遺伝子配列読み込み 変数xx2 MN908947.1 旧バージョン for i in cs1: print("########## "+i) print(mycheckv2(xx2,i)) print() print() for i in cs2: print("########## "+i) print(mycheckv2(xx2,i)) print() print() # 2番目のプライマーが発見出来ない組み合わせ # cs2 通常の検査用マニュアル for i in cs2: print("########## "+i) print(mycheckv2(xx,i)) print() # # 2番目のプライマーが発見出来ない組み合わせ # cs3 研究所用のマニュアル for i in cs3: print("########## "+i) print(mycheckv2(xx2,i)) print() for i in cs1: print("########## "+i) print(mycheckv2(yyy,i)) print() print() for i in cs2: print("########## "+i) print(mycheckv2(yyy,i)) print() print() for i in cs3: print("########## "+i) print(mycheckv2(yyy,i)) print() print() for i in cs4: print("########## "+i) print(mycheckv2(yyy,i)) print() print()
9.3 この章のまとめ
- PCR検査で調べている遺伝子配列と1文字違いの遺伝子配列もファイザーの遺伝子配列から見つけることは出来なかった。
- 元のOCRでの変換が正しいとして
10 今後
- 今後文書追加するかも、しないかも
11 この文書のチェンジログ
- 2021/08/16 初版
- 2021/08/17 PCR検査マニュアルにある遺伝子配列を確認その1(感染研・地衛研専用のマニュアル) の章,PCR検査マニュアルにある遺伝子配列を確認その2 の章を追加
- 2021/08/18 PCR検査マニュアルにある遺伝子配列を確認その2 の章を修正
- 2021/08/18 ファイザーワクチンのmRNAの遺伝子配列を文字列化して変数に格納 の章追加
- 2021/08/18 ファイザーワクチンのmRNAの遺伝子配列にPCR検査している遺伝子配列が含まれているか確認 の章追加
- 2021/09/03 PCR検査で調べている遺伝子配列が 新型コロナの MN908947.1(昔のバージョン)に存在するか確認 の章, ファイザーワクチンのmRNAの遺伝子配列にPCR検査している遺伝子配列に似てる遺伝子配列が含まれているか確認1 の章追加
Created: 2021-09-05 日 09:21