[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Pythonバイオ]] [[Pythonバイオ/ツール]]~
&counter(); &lastmod();~
*SnapGeneに食わす (2019-08-20) [#z3b43427]
リクエストがあったこと: 外部で得たデータをSnapGeneで表示する
SnapGeneではGenBank形式のアノテーションを含むデータを表示することができる。
表示したい情報をGenBank形式のファイルに追加することによって、SnapGeneに表示
指せることを考える。
具体的にはたとえば、変異情報(SNIP, In/Delなど)の情報を追加し、該当する場所に
表示する。
また、別の(過去の)SnapGeneデータ(=xxx.dnaファイル)に追記されているPrimer情報を移す。これはSnapGeneのPrimerのExport/Inportの機能を使えばできるのだが、
1ファイルずつ移すのは面倒なので、うまく移せないか。
** GenBankファイルへの追記 [#u3ac08d3]
GenBankファイルのフィーチャーとして、
-misc_feature
-primer_bind
がある。
misc_featureは、いわば「その他のフィーチャー」であるから、SnapGeneでは追加の
フィーチャーとして表示されるが、格段の処理は無いようだ。GenBankでの書き方は、
misc_feature 311
/label="DEL"
/note=" T->*"
のような感じで、311は配列上の位置情報、labelはラベル表示、noteは追記情報として
マウスオンで表示される。これらの情報をGenBankファイルに適宜書込めばよい。
なお、通常はGenBankファイル上のさまざまなフィーチャー情報は位置の順にソートされ
ているが、SnapGeneは必ずしもソートを要求していない。たとえばmisc_featureだけ
集めてフィーチャーの終わりに追加しても、正しく表示される。なお、位置でソートする
こともbiopythonでは容易に行える。
また、primer_bindも同様に、
primer_bind 2732..2801
/label="ups thrB70 5'-PS4"
/note="ups thrB70 5'-PS4
AATGACGTTACAGCTGCCGGTGTCTTTGCTGATCTGCTACGTACCCTCTCATGGAAGTT
AGGAGTCTGACATTCCGGGGATCCGTCGACC"
のようにフィーチャーとして書き足せばSnapGeneの配列表示の画面に表示される。
ただし、もし移した先の配列の位置が異なっていれば、primerを貼り付ける位置も変える
必要がある。(大腸菌の例では環状なので全体の向きが逆になっており、位置がことごとく
変ってしまったケースがある。)この場合は、正しい貼り付け位置を求めた上で、
上記のprimer_bindのレコードを書く必要がある。
ところで、primer_bindが書き込めるのはよいのだが、ここに1つ問題がある。
SnapGeneではGenBankデータ上のprimer_bindの記述は追加フィーチャーと同じ扱いで、
SnapGene上のprimerとしては扱われない。GenSnapの配列表示上でprimerの記号にも
ならないし、primerのシートにも載らない。
言い換えると、GenBankファイル上のprimer_bindの情報は、SnapGene上のprimer情報
としては反映されない。これは逆向きもしかりで、SnapGeneから吐き出したGenBankデータ
は、primer情報は上記の情報(位置、ラベル、ノート)しか持たない。
というわけで、GenBank上で加工しておいてSnapGeneのprimerデータに反映させることは
うまくいかなかった。
**SnapGeneの保存形式dnaファイル [#o2fe085d]
SnapGeneのデータはdnaファイルという形式で保存される。ここに何が書かれているか?
dnaファイルの形式については、ネットでは記述が見つからなかった。またテキスト
エディタで見るとバイナリ形式である。つまり、何らかの形式記述が見つからないと
解読すらできない。
参考になったのが、PythonのライブラリPyPIでの2つのライブラリ(読み出し専用)で、
- [[snapgene_reader PyPI:https://pypi.org/project/snapgene_reader/#files]] [[Description:https://pypi.org/project/snapgene_reader/#description]]
- [[SnapGeneFileReader · PyPI:https://pypi.org/project/SnapGeneFileReader/]]
である。
ソースを見ると、どちらもprimerの記述部分は解読をスキップする(それ以外にも
普通に興味の無さそうなところは皆スキップし、たとえばシーケンス部分だけを
取出すなどの操作を想定している。)
それで、primer部分をあてずっぽうに解釈してみる。他のフィールドもXML形式なので、
同じXMLパーザを介して辞書形式に落とす。
elif ord(next_byte) == 5:
# READ THE PRIMERS
block_content = fileobject.read(block_size).decode('utf-8')
primer_data = parse_dict(xmltodict.parse(block_content))
data['Primers'] = primer_data['Primers']
この加筆をした上で、
from mysnapgene_reader import snapgene_file_to_dict, snapgene_file_to_seqrecord
filepath = './mytest.dna'
dict = snapgene_file_to_dict(filepath)
print(dict['Primers'].keys())
import pprint as pp
d = dict['Primers']
dd = d['Primer']
print(dd.keys())
pp.pprint(dd)
結果を見ると、かなり多くの情報を含んでいることが分かるうえ、これらの情報を
作り出さなければならない。annealiedBasesとかmeldingTempreratureとか
hybridizedRangeとか、いろいろと求めなければならないらしい。
odict_keys(['@recentID', '@name', '@sequence', '@description', '@dateAdded', 'BindingSite'])
OrderedDict([('@recentID', '0'),
('@name', 'TestPrimerNY'),
('@sequence', 'TTATAAGCAgttcgagt'),
('@description', ''),
('@dateAdded', '2019-08-20T05:34:31Z'),
('BindingSite',
[OrderedDict([('@location', '1261985-1261996'),
('@boundStrand', '0'),
('@annealedBases', 'AGCgttcgagt'),
('@meltingTemperature', '33'),
('Component',
[OrderedDict([('@bases', 'TTATA')]),
OrderedDict([('@hybridizedRange',
'1261985-1261987'),
('@bases', 'AGC')]),
OrderedDict([('@bases', 'A')]),
OrderedDict([('@hybridizedRange',
'1261989-1261996'),
('@bases', 'gttcgagt')])])]),
OrderedDict([('@location', '1490680-1490689'),
('@boundStrand', '0'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'1490680-1490689'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '2474407-2474416'),
('@boundStrand', '0'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'2474407-2474416'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '401796-401809'),
('@boundStrand', '1'),
('@annealedBases', 'AAGCAgttcgagt'),
('@meltingTemperature', '33'),
('Component',
[OrderedDict([('@bases', 'TTAT')]),
OrderedDict([('@hybridizedRange',
'401805-401809'),
('@bases', 'AAGCA')]),
OrderedDict([('@hybridizedRange',
'401796-401803'),
('@bases', 'gttcgagt')])])]),
OrderedDict([('@location', '451228-451237'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'451228-451237'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '1414375-1414384'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'1414375-1414384'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '2529410-2529419'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '36'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'2529410-2529419'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '4065918-4065927'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '36'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'4065918-4065927'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '1261985-1261996'),
('@boundStrand', '0'),
('@annealedBases', 'AGCgttcgagt'),
('@meltingTemperature', '33'),
('Component',
[OrderedDict([('@bases', 'TTATA')]),
OrderedDict([('@hybridizedRange',
'1261985-1261987'),
('@bases', 'AGC')]),
OrderedDict([('@bases', 'A')]),
OrderedDict([('@hybridizedRange',
'1261989-1261996'),
('@bases', 'gttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '1490680-1490689'),
('@boundStrand', '0'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'1490680-1490689'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '2474407-2474416'),
('@boundStrand', '0'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'2474407-2474416'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '401796-401809'),
('@boundStrand', '1'),
('@annealedBases', 'AAGCAgttcgagt'),
('@meltingTemperature', '33'),
('Component',
[OrderedDict([('@bases', 'TTAT')]),
OrderedDict([('@hybridizedRange',
'401805-401809'),
('@bases', 'AAGCA')]),
OrderedDict([('@hybridizedRange',
'401796-401803'),
('@bases', 'gttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '451228-451237'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'451228-451237'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '1414375-1414384'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'1414375-1414384'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '2529410-2529419'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '36'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'2529410-2529419'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '4065918-4065927'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '36'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'4065918-4065927'),
('@bases', 'CAgttcgagt')])])])])])
** SnapGeneからprimer情報をexportする [#b3f3c3c8]
SnapGene(有料版)にはprimer情報をexportする機能がある。テキストファイルへの
出力を指定すると、ドキュメント(FAQのページ、https://www.snapgene.com/support/faq/)では
You will need to export the primers to a list. In Excel, list the primers with a Name column and a Sequence column, plus an optional Notes column. Export the data by using Save As with the format Tab Delimited Text. Then in SnapGene, use Primers → Import Primers from a List.
としている。実際にexport出力してみると
yjeI3 TTTTTTTTTTTTTTTTTTTT(ここ適当) Note Note Note
のように、タブ区切りで、<name> tab <sequence> tab <note> の形になっている。
ということで、この形式になっている。このことから、SnapGeneがこのテキスト形式の
primerデータをimportする場合は、結構それなりの処理(位置の特定から始まって、
その他のメタデータの算定等)を行って、内部的に保持しており、それを.dnaファイル
には書き出している(XMLで)と思われる。
終了行:
[[Pythonバイオ]] [[Pythonバイオ/ツール]]~
&counter(); &lastmod();~
*SnapGeneに食わす (2019-08-20) [#z3b43427]
リクエストがあったこと: 外部で得たデータをSnapGeneで表示する
SnapGeneではGenBank形式のアノテーションを含むデータを表示することができる。
表示したい情報をGenBank形式のファイルに追加することによって、SnapGeneに表示
指せることを考える。
具体的にはたとえば、変異情報(SNIP, In/Delなど)の情報を追加し、該当する場所に
表示する。
また、別の(過去の)SnapGeneデータ(=xxx.dnaファイル)に追記されているPrimer情報を移す。これはSnapGeneのPrimerのExport/Inportの機能を使えばできるのだが、
1ファイルずつ移すのは面倒なので、うまく移せないか。
** GenBankファイルへの追記 [#u3ac08d3]
GenBankファイルのフィーチャーとして、
-misc_feature
-primer_bind
がある。
misc_featureは、いわば「その他のフィーチャー」であるから、SnapGeneでは追加の
フィーチャーとして表示されるが、格段の処理は無いようだ。GenBankでの書き方は、
misc_feature 311
/label="DEL"
/note=" T->*"
のような感じで、311は配列上の位置情報、labelはラベル表示、noteは追記情報として
マウスオンで表示される。これらの情報をGenBankファイルに適宜書込めばよい。
なお、通常はGenBankファイル上のさまざまなフィーチャー情報は位置の順にソートされ
ているが、SnapGeneは必ずしもソートを要求していない。たとえばmisc_featureだけ
集めてフィーチャーの終わりに追加しても、正しく表示される。なお、位置でソートする
こともbiopythonでは容易に行える。
また、primer_bindも同様に、
primer_bind 2732..2801
/label="ups thrB70 5'-PS4"
/note="ups thrB70 5'-PS4
AATGACGTTACAGCTGCCGGTGTCTTTGCTGATCTGCTACGTACCCTCTCATGGAAGTT
AGGAGTCTGACATTCCGGGGATCCGTCGACC"
のようにフィーチャーとして書き足せばSnapGeneの配列表示の画面に表示される。
ただし、もし移した先の配列の位置が異なっていれば、primerを貼り付ける位置も変える
必要がある。(大腸菌の例では環状なので全体の向きが逆になっており、位置がことごとく
変ってしまったケースがある。)この場合は、正しい貼り付け位置を求めた上で、
上記のprimer_bindのレコードを書く必要がある。
ところで、primer_bindが書き込めるのはよいのだが、ここに1つ問題がある。
SnapGeneではGenBankデータ上のprimer_bindの記述は追加フィーチャーと同じ扱いで、
SnapGene上のprimerとしては扱われない。GenSnapの配列表示上でprimerの記号にも
ならないし、primerのシートにも載らない。
言い換えると、GenBankファイル上のprimer_bindの情報は、SnapGene上のprimer情報
としては反映されない。これは逆向きもしかりで、SnapGeneから吐き出したGenBankデータ
は、primer情報は上記の情報(位置、ラベル、ノート)しか持たない。
というわけで、GenBank上で加工しておいてSnapGeneのprimerデータに反映させることは
うまくいかなかった。
**SnapGeneの保存形式dnaファイル [#o2fe085d]
SnapGeneのデータはdnaファイルという形式で保存される。ここに何が書かれているか?
dnaファイルの形式については、ネットでは記述が見つからなかった。またテキスト
エディタで見るとバイナリ形式である。つまり、何らかの形式記述が見つからないと
解読すらできない。
参考になったのが、PythonのライブラリPyPIでの2つのライブラリ(読み出し専用)で、
- [[snapgene_reader PyPI:https://pypi.org/project/snapgene_reader/#files]] [[Description:https://pypi.org/project/snapgene_reader/#description]]
- [[SnapGeneFileReader · PyPI:https://pypi.org/project/SnapGeneFileReader/]]
である。
ソースを見ると、どちらもprimerの記述部分は解読をスキップする(それ以外にも
普通に興味の無さそうなところは皆スキップし、たとえばシーケンス部分だけを
取出すなどの操作を想定している。)
それで、primer部分をあてずっぽうに解釈してみる。他のフィールドもXML形式なので、
同じXMLパーザを介して辞書形式に落とす。
elif ord(next_byte) == 5:
# READ THE PRIMERS
block_content = fileobject.read(block_size).decode('utf-8')
primer_data = parse_dict(xmltodict.parse(block_content))
data['Primers'] = primer_data['Primers']
この加筆をした上で、
from mysnapgene_reader import snapgene_file_to_dict, snapgene_file_to_seqrecord
filepath = './mytest.dna'
dict = snapgene_file_to_dict(filepath)
print(dict['Primers'].keys())
import pprint as pp
d = dict['Primers']
dd = d['Primer']
print(dd.keys())
pp.pprint(dd)
結果を見ると、かなり多くの情報を含んでいることが分かるうえ、これらの情報を
作り出さなければならない。annealiedBasesとかmeldingTempreratureとか
hybridizedRangeとか、いろいろと求めなければならないらしい。
odict_keys(['@recentID', '@name', '@sequence', '@description', '@dateAdded', 'BindingSite'])
OrderedDict([('@recentID', '0'),
('@name', 'TestPrimerNY'),
('@sequence', 'TTATAAGCAgttcgagt'),
('@description', ''),
('@dateAdded', '2019-08-20T05:34:31Z'),
('BindingSite',
[OrderedDict([('@location', '1261985-1261996'),
('@boundStrand', '0'),
('@annealedBases', 'AGCgttcgagt'),
('@meltingTemperature', '33'),
('Component',
[OrderedDict([('@bases', 'TTATA')]),
OrderedDict([('@hybridizedRange',
'1261985-1261987'),
('@bases', 'AGC')]),
OrderedDict([('@bases', 'A')]),
OrderedDict([('@hybridizedRange',
'1261989-1261996'),
('@bases', 'gttcgagt')])])]),
OrderedDict([('@location', '1490680-1490689'),
('@boundStrand', '0'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'1490680-1490689'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '2474407-2474416'),
('@boundStrand', '0'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'2474407-2474416'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '401796-401809'),
('@boundStrand', '1'),
('@annealedBases', 'AAGCAgttcgagt'),
('@meltingTemperature', '33'),
('Component',
[OrderedDict([('@bases', 'TTAT')]),
OrderedDict([('@hybridizedRange',
'401805-401809'),
('@bases', 'AAGCA')]),
OrderedDict([('@hybridizedRange',
'401796-401803'),
('@bases', 'gttcgagt')])])]),
OrderedDict([('@location', '451228-451237'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'451228-451237'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '1414375-1414384'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'1414375-1414384'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '2529410-2529419'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '36'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'2529410-2529419'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@location', '4065918-4065927'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '36'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'4065918-4065927'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '1261985-1261996'),
('@boundStrand', '0'),
('@annealedBases', 'AGCgttcgagt'),
('@meltingTemperature', '33'),
('Component',
[OrderedDict([('@bases', 'TTATA')]),
OrderedDict([('@hybridizedRange',
'1261985-1261987'),
('@bases', 'AGC')]),
OrderedDict([('@bases', 'A')]),
OrderedDict([('@hybridizedRange',
'1261989-1261996'),
('@bases', 'gttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '1490680-1490689'),
('@boundStrand', '0'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'1490680-1490689'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '2474407-2474416'),
('@boundStrand', '0'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'2474407-2474416'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '401796-401809'),
('@boundStrand', '1'),
('@annealedBases', 'AAGCAgttcgagt'),
('@meltingTemperature', '33'),
('Component',
[OrderedDict([('@bases', 'TTAT')]),
OrderedDict([('@hybridizedRange',
'401805-401809'),
('@bases', 'AAGCA')]),
OrderedDict([('@hybridizedRange',
'401796-401803'),
('@bases', 'gttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '451228-451237'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'451228-451237'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '1414375-1414384'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '35'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'1414375-1414384'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '2529410-2529419'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '36'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'2529410-2529419'),
('@bases', 'CAgttcgagt')])])]),
OrderedDict([('@simplified', '1'),
('@location', '4065918-4065927'),
('@boundStrand', '1'),
('@annealedBases', 'CAgttcgagt'),
('@meltingTemperature', '36'),
('Component',
[OrderedDict([('@bases', 'TTATAAG')]),
OrderedDict([('@hybridizedRange',
'4065918-4065927'),
('@bases', 'CAgttcgagt')])])])])])
** SnapGeneからprimer情報をexportする [#b3f3c3c8]
SnapGene(有料版)にはprimer情報をexportする機能がある。テキストファイルへの
出力を指定すると、ドキュメント(FAQのページ、https://www.snapgene.com/support/faq/)では
You will need to export the primers to a list. In Excel, list the primers with a Name column and a Sequence column, plus an optional Notes column. Export the data by using Save As with the format Tab Delimited Text. Then in SnapGene, use Primers → Import Primers from a List.
としている。実際にexport出力してみると
yjeI3 TTTTTTTTTTTTTTTTTTTT(ここ適当) Note Note Note
のように、タブ区切りで、<name> tab <sequence> tab <note> の形になっている。
ということで、この形式になっている。このことから、SnapGeneがこのテキスト形式の
primerデータをimportする場合は、結構それなりの処理(位置の特定から始まって、
その他のメタデータの算定等)を行って、内部的に保持しており、それを.dnaファイル
には書き出している(XMLで)と思われる。
ページ名: