C#,生信软件实践(02)——DNA数据库EMBL格式详解及转为FASTA格式文件的源代码

2023-05-16

>生信老白写的基础代码.fasta

MAYBENOANYUSAGE

EMBL 与 GenBank 文件一脉相承,建议先阅读 GenBank 文件详解

C#,生信软件实践(03)——DNA数据库GenBank格式详解及转为FASTA序列格式的源代码icon-default.png?t=N3I4https://blog.csdn.net/beijinghorn/article/details/130487663

1 EMBL

1.1 EMBL组织

欧洲分子生物学实验室EMBL(European Molecular Biology Laboratory)1974年由欧洲14个国家加上亚洲的以色列共同发起建立,现在由欧洲30个成员国政府支持组成,目的在于促进欧洲国家之间的合作来发展分子生物学的基础研究和改进仪器设备、教育工作等。EMBL分为7个部分:结构、分化、物理仪器、生化仪器、生物仪器、计算机和应用数学。它的宗旨是:从事结构分子生物学及分子医学方面的基础研究;为科学家、学生及访问学者提供高层次的培训;为成员国的科学家提供必需的科研服务;在生命科学领域开发新型的科研仪器及研究方法;积极参与生物技术的转化及应用。

1.2 EMBL 文件

DNA和通过多种DNA序列的程序使用的蛋白质序列文件格式;包含序列数据,与关于序列,如名称,类型和描述信息一起;可以存储多个序列。

EMBL格式将序列及其注释存储在一起。注释部分的开头用一行以单词“ID”开头。序列的开始部分用一个以单词“SQ”开头的行来标记。“//”(终止符)行也不包含数据或注释,并指定条目的结尾。

EMBL文件可能以.EMBL或.txt扩展名结尾。

格式规范
State: Experimental as of 0.5.1-dev.

前面的节 FH (Feature Header)
之前的所有章节 FH (Feature Header) 将被读入 metadata . 节的头及其内容作为键值对存储在中 metadata . 对于 RN (Reference Number) 节,其值以列表形式存储,因为在一个EMBL记录中通常有多个引用节。

FT 部分
见 Genbank FEATURES section

SQ 部分
中的序列 SQ 对于从ENA下载的EMBL文件,节始终是小写的。对于RNA分子, t (胸腺嘧啶),而不是 u (尿嘧啶)用于序列中。所有EMBL编写器在编写EMBL文件时都遵循这些约定。


EMBL文件示例:

>>>
embl_str = '''
ID   X56734; SV 1; linear; mRNA; STD; PLN; 1859 BP.
XX
AC   X56734; S46826;
XX
DT   12-SEP-1991 (Rel. 29, Created)
DT   25-NOV-2005 (Rel. 85, Last updated, Version 11)
XX
DE   Trifolium repens mRNA for non-cyanogenic beta-glucosidase
XX
KW   beta-glucosidase.
XX
OS   Trifolium repens (white clover)
OC   Eukaryota; Viridiplantae; Streptophyta; Embryophyta; Tracheophyta;
OC   Spermatophyta; Magnoliophyta; eudicotyledons; Gunneridae;
OC   Pentapetalae; rosids; fabids; Fabales; Fabaceae; Papilionoideae;
OC   Trifolieae; Trifolium.
XX
RN   [5]
RP   1-1859
RX   DOI; 10.1007/BF00039495.
RX   PUBMED; 1907511.
RA   Oxtoby E., Dunn M.A., Pancoro A., Hughes M.A.;
RT   "Nucleotide and derived amino acid sequence of the cyanogenic
RT   beta-glucosidase (linamarase) from white clover
RT   (Trifolium repens L.)";
RL   Plant Mol. Biol. 17(2):209-219(1991).
XX
RN   [6]
RP   1-1859
RA   Hughes M.A.;
RT   ;
RL   Submitted (19-NOV-1990) to the INSDC.
RL   Hughes M.A., University of Newcastle Upon Tyne, Medical School,
RL   Newcastle
RL   Upon Tyne, NE2 4HH, UK
XX
DR   MD5; 1e51ca3a5450c43524b9185c236cc5cc.
XX
FH   Key             Location/Qualifiers
FH
FT   source          1..1859
FT                   /organism="Trifolium repens"
FT                   /mol_type="mRNA"
FT                   /clone_lib="lambda gt10"
FT                   /clone="TRE361"
FT                   /tissue_type="leaves"
FT                   /db_xref="taxon:3899"
FT   mRNA            1..1859
FT                   /experiment="experimental evidence, no additional
FT                   details recorded"
FT   CDS             14..1495
FT                   /product="beta-glucosidase"
FT                   /EC_number="3.2.1.21"
FT                   /note="non-cyanogenic"
FT                   /db_xref="GOA:P26204"
FT                   /db_xref="InterPro:IPR001360"
FT                   /db_xref="InterPro:IPR013781"
FT                   /db_xref="InterPro:IPR017853"
FT                   /db_xref="InterPro:IPR033132"
FT                   /db_xref="UniProtKB/Swiss-Prot:P26204"
FT                   /protein_id="CAA40058.1"
FT                   /translation="MDFIVAIFALFVISSFTITSTNAVEASTLLDIGNLSRS
FT                   SFPRGFIFGAGSSAYQFEGAVNEGGRGPSIWDTFTHKYPEKIRDGSNADITV
FT                   DQYHRYKEDVGIMKDQNMDSYRFSISWPRILPKGKLSGGINHEGIKYYNNLI
FT                   NELLANGIQPFVTLFHWDLPQVLEDEYGGFLNSGVINDFRDYTDLCFKEFGD
FT                   RVRYWSTLNEPWVFSNSGYALGTNAPGRCSASNVAKPGDSGTGPYIVTHNQI
FT                   LAHAEAVHVYKTKYQAYQKGKIGITLVSNWLMPLDDNSIPDIKAAERSLDFQ
FT                   FGLFMEQLTTGDYSKSMRRIVKNRLPKFSKFESSLVNGSFDFIGINYYSSSY
FT                   ISNAPSHGNAKPSYSTNPMTNISFEKHGIPLGPRAASIWIYVYPYMFIQEDF
FT                   EIFCYILKINITILQFSITENGMNEFNDATLPVEEALLNTYRIDYYYRHLYY
FT                   IRSAIRAGSNVKGFYAWSFLDCNEWFAGFTVRFGLNFVD"
XX
SQ   Sequence 1859 BP; 609 A; 314 C; 355 G; 581 T; 0 other;
     aaacaaacca aatatggatt ttattgtagc catatttgct ctgtttgtta ttagctcatt
     cacaattact tccacaaatg cagttgaagc ttctactctt cttgacatag gtaacctgag
     tcggagcagt tttcctcgtg gcttcatctt tggtgctgga tcttcagcat accaatttga
     aggtgcagta aacgaaggcg gtagaggacc aagtatttgg gataccttca cccataaata
     tccagaaaaa ataagggatg gaagcaatgc agacatcacg gttgaccaat atcaccgcta
     caaggaagat gttgggatta tgaaggatca aaatatggat tcgtatagat tctcaatctc
     ttggccaaga atactcccaa agggaaagtt gagcggaggc ataaatcacg aaggaatcaa
     atattacaac aaccttatca acgaactatt ggctaacggt atacaaccat ttgtaactct
     ttttcattgg gatcttcccc aagtcttaga agatgagtat ggtggtttct taaactccgg
     tgtaataaat gattttcgag actatacgga tctttgcttc aaggaatttg gagatagagt
     gaggtattgg agtactctaa atgagccatg ggtgtttagc aattctggat atgcactagg
     aacaaatgca ccaggtcgat gttcggcctc caacgtggcc aagcctggtg attctggaac
     aggaccttat atagttacac acaatcaaat tcttgctcat gcagaagctg tacatgtgta
     taagactaaa taccaggcat atcaaaaggg aaagataggc ataacgttgg tatctaactg
     gttaatgcca cttgatgata atagcatacc agatataaag gctgccgaga gatcacttga
     cttccaattt ggattgttta tggaacaatt aacaacagga gattattcta agagcatgcg
     gcgtatagtt aaaaaccgat tacctaagtt ctcaaaattc gaatcaagcc tagtgaatgg
     ttcatttgat tttattggta taaactatta ctcttctagt tatattagca atgccccttc
     acatggcaat gccaaaccca gttactcaac aaatcctatg accaatattt catttgaaaa
     acatgggata cccttaggtc caagggctgc ttcaatttgg atatatgttt atccatatat
     gtttatccaa gaggacttcg agatcttttg ttacatatta aaaataaata taacaatcct
     gcaattttca atcactgaaa atggtatgaa tgaattcaac gatgcaacac ttccagtaga
     agaagctctt ttgaatactt acagaattga ttactattac cgtcacttat actacattcg
     ttctgcaatc agggctggct caaatgtgaa gggtttttac gcatggtcat ttttggactg
     taatgaatgg tttgcaggct ttactgttcg ttttggatta aactttgtag attagaaaga
     tggattaaaa aggtacccta agctttctgc ccaatggtac aagaactttc tcaaaagaaa
     ctagctagta ttattaaaag aactttgtag tagattacag tacatcgttt gaagttgagt
     tggtgcacct aattaaataa aagaggttac tcttaacata tttttaggcc attcgttgtg
     aagttgttag gctgttattt ctattatact atgttgtagt aataagtgca ttgttgtacc
     agaagctatg atcataacta taggttgatc cttcatgtat cagtttgatg ttgagaatac
     tttgaattaa aagtcttttt ttattttttt aaaaaaaaaa aaaaaaaaaa aaaaaaaaa
//

提取

 DNA 对象:

>>>
import io
from skbio import DNA, RNA, Sequence
embl = io.StringIO(embl_str)
dna_seq = DNA.read(embl)
dna_seq
DNA
----------------------------------------------------------------------
Metadata:
    'ACCESSION': 'X56734; S46826;'
    'CROSS_REFERENCE': <class 'list'>
    'DATE': <class 'list'>
    'DBSOURCE': 'MD5; 1e51ca3a5450c43524b9185c236cc5cc.'
    'DEFINITION': 'Trifolium repens mRNA for non-cyanogenic beta-
                   glucosidase'
    'KEYWORDS': 'beta-glucosidase.'
    'LOCUS': <class 'dict'>
    'REFERENCE': <class 'list'>
    'SOURCE': <class 'dict'>
    'VERSION': 'X56734.1'
Interval metadata:
    3 interval features
Stats:
    length: 1859
    has gaps: False
    has degenerates: False
    has definites: True
    GC-content: 35.99%
----------------------------------------------------------------------
0    AAACAAACCA AATATGGATT TTATTGTAGC CATATTTGCT CTGTTTGTTA TTAGCTCATT
60   CACAATTACT TCCACAAATG CAGTTGAAGC TTCTACTCTT CTTGACATAG GTAACCTGAG

1740 AGAAGCTATG ATCATAACTA TAGGTTGATC CTTCATGTAT CAGTTTGATG TTGAGAATAC
1800 TTTGAATTAA AAGTCTTTTT TTATTTTTTT AAAAAAAAAA AAAAAAAAAA AAAAAAAAA
既然这是一个mRNA分子,我们可能想把它解读为 RNA . 就像EMBL文件通常有 t 而不是 u 在序列中,我们可以把它理解为 RNA 通过转换 t 到 u :

>>>
embl = io.StringIO(embl_str)
rna_seq = RNA.read(embl)
rna_seq
RNA
----------------------------------------------------------------------
Metadata:
    'ACCESSION': 'X56734; S46826;'
    'CROSS_REFERENCE': <class 'list'>
    'DATE': <class 'list'>
    'DBSOURCE': 'MD5; 1e51ca3a5450c43524b9185c236cc5cc.'
    'DEFINITION': 'Trifolium repens mRNA for non-cyanogenic beta-
                   glucosidase'
    'KEYWORDS': 'beta-glucosidase.'
    'LOCUS': <class 'dict'>
    'REFERENCE': <class 'list'>
    'SOURCE': <class 'dict'>
    'VERSION': 'X56734.1'
Interval metadata:
    3 interval features
Stats:
    length: 1859
    has gaps: False
    has degenerates: False
    has definites: True
    GC-content: 35.99%
----------------------------------------------------------------------
0    AAACAAACCA AAUAUGGAUU UUAUUGUAGC CAUAUUUGCU CUGUUUGUUA UUAGCUCAUU
60   CACAAUUACU UCCACAAAUG CAGUUGAAGC UUCUACUCUU CUUGACAUAG GUAACCUGAG

1740 AGAAGCUAUG AUCAUAACUA UAGGUUGAUC CUUCAUGUAU CAGUUUGAUG UUGAGAAUAC
1800 UUUGAAUUAA AAGUCUUUUU UUAUUUUUUU AAAAAAAAAA AAAAAAAAAA AAAAAAAAA
 

2 FASTA

2.1 FASTA格式

fasta格式是一种基于文本用于表示核酸序列或多肽序列的格式。其中核酸或氨基酸均以单个字母来表示,且允许在序列前添加序列名及注释。该格式已成为生物信息学领域的一项标准。

fasta格式,又称Pearson格式,主要发明人是威廉·皮尔森(William Raymond Pearson)和戴维德.李普曼(David J. Lipman),威廉·雷蒙德·皮尔森是美国弗吉尼亚大学的生物化学与分子遗传学教授,戴维德.李普曼在1989年至2017年期间担任NCBI主任,他也是BLAST算法的发明人之一。1985年3月,双方在科学期刊Science上合作发表了相关成果。

fasta格式文件的第一行是由大于号“>”(较常用)或分号“;”打头的任意文字说明,用于序列标记。从第二行开始为序列本身,只允许使用既定的核苷酸或氨基酸编码符号(参见支持代码类型)。通常核苷酸符号大小写均可,而氨基酸常用大写字母。使用时应注意有些程序对大小写有明确要求。一般每行60~80个字母。
核苷酸序列
fasta格式首先以大于号“>”开头,接着是序列的标识符“gi|187608668|ref|NM_001043364.2|”,然后是序列的描述信息。换行后是序列信息,序列中允许空格,换行,空行,直到下一个大于号,表示该序列的结束。
所有来源于NCBI的序列都有一个gi号“gi|gi_identifier”,gi号类似与数据库中的流水号,由数字组成,一条核酸或者蛋白质改变了,将赋予一个新的gi号(这时序列的接收号可能不变),不能重复。
gi号后面是序列的标识符,下表是来源于不同数据库的标识符的说明。标识符由序列来源标识、序列标识(如接收号、名称等)等几部分组成,他们之间用“|”隔开,如果某项缺失,可以留空但是“|”不能省略。如上例中标识符为“ref|NM_001043364.2|”,表示序列来源于NCBI的参考序列库,接收号为“NM_001043364.2”。
文件中和每一行通常60到80个字符。
对于核酸序列,除了为大家所熟知的A、C、G、T、U外,R代表G或A(嘌呤);Y代表T或C(嘧啶);K代表G或T(带酮基);M代表A或C(带氨基);S代表G 或C(强);W代表A或T(弱);B代表G、T或C;D代表G、A或T;H代表A、C或T;V代表G、C或A;N代表A、G、C、T中任意一种。
氨基酸序列
>MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken ADQLTEEQIAEFKEAFSLFDKDGDGTITTKELGTVMRSLGQNPTEAELQDMINEVDADGNGTID FPEFLTMMARKMKDTDSEEEIREAFRVFDKDGNGYISAAELRHVMTNLGEKLTDEEVDEMIREA DIDGDGQVNYEEFVQMMTAK*
 

2.2 核苷酸代码 

2.3 氨基酸代码

 2.4 FASTA 实例

>NC_000006.12:c31170682-31164337 Homo sapiens chromosome 6, GRCh38.p14 Primary Assembly
GAGTAGTCCCTTCGCAAGCCCTCATTTCACCAGGCCCCCGGCTTGGGGCGCCTTCCTTCCCCATGGCGGG
ACACCTGGCTTCGGATTTCGCCTTCTCGCCCCCTCCAGGTGGTGGAGGTGATGGGCCAGGGGGGCCGGAG
CCGGGCTGGGTTGATCCTCGGACCTGGCTAAGCTTCCAAGGCCCTCCTGGAGGGCCAGGAATCGGGCCGG
GGGTTGGGCCAGGCTCTGAGGTGTGGGGGATTCCCCCATGCCCCCCGCCGTATGAGTTCTGTGGGGGGAT
GGCGTACTGTGGGCCCCAGGTTGGAGTGGGGCTAGTGCCCCAAGGCGGCTTGGAGACCTCTCAGCCTGAG
GGCGAAGCAGGAGTCGGGGTGGAGAGCAACTCCGATGGGGCCTCCCCGGAGCCCTGCACCGTCACCCCTG
GTGCCGTGAAGCTGGAGAAGGAGAAGCTGGAGCAAAACCCGGAGGAGGCAAGTGAGCTTCGACGGGGTTG
GGGTGTGGGGAGGTGGTCATGACAGGGCAGCCTGATGGGGAAGTGGTCACCTGCAGCTGCCCAGACCTGG
CACCCAGGAGAGGAGCAGGCAGGGTCAGCTGCCCTGGCCAGGGAGGGGTGTGTATCAACTGCTGGCAGCC
CTGGCAGGCAGGGGCCAGGTGGGAAGTGGAAGCTGGATTTCGAAGAGACAACTGCCGGTGAGGGCAGAGC
AGCCTGGGAGAGTCGGAAGCTGGCCCAGGCTGGCCTTTGCTCTGGCCCAGCCCTTGTCAGGGTCTCTCAC
ATCTCCTAGGCCTGCCCAGGGTCTGGTCACTCATTACTGGCCCAGCACCAGACCCAGCTTGGGGTTGGTT
TGAGCCCCTTTTCCCACCCTTAGTCCTGCTTGAAAATTTGACCCTTATCAGACCCAAGATTTTGGCCTTA
GGGTTAAGCATAGCCTGAGGGTAAAAACAGTGCTCATTCCAGGATTATTGTTCCTGAAAGTCTAGGGTGT
GACTCGTTTCTGATAGGATCTCCTGTTTGGGCTGTGTGTGTGCGCGTTGTGAGCTGGGTTTACCTCCAGT
CAAGTATAGGGCTTGTCTTCCCCGGATCTCTGCCTCAGGCCAATGACTGGCCACTGTGTTAAGGTGCACA
CCCTGGCACCCCTTGTAGAAAGCTGGATTTTGATTGACTTCAGCCTCAGTTCCAAAGTTGTAAACAAGAA
AAATGGTGAGAGATTTCTCCAGGCCATTTGCAAATATAGAGCTGCTGCGGGATTGAAGGCATCCAGCCCT
GCTGAGGACTATTAAAGATGTATCTTCCAGTCCTTCAAGGCGACAAGTGTAAGCAATTAGAGATTAAATA
CTAAGCCTTGAGACCTCACAGAAAGGTGTGACTGGTTTCTGGAGTGACCGAGAAGCCCCAACCTCTTCGC
AGGAGGTCACTGCTGAGCCTTGAATGATAATGGCTGGCAATTGTGGTCCACTTCCTAAGTGCCTGGCTGT
GTGCTCCGTTTATACATCATTATCTCATTAACCAGCACAAAATCTCCTAGGGGGAGGTATTATTATCCTA
TTTAACGGGTTTTAACTGCTAAATGATGAAGCGAGGATTTGGACCAGTGTTTATTCCAAAACCCCAAAAC
AGAATTTGGAAAATCCAAGATAGCAGAGGGCATTTATCAGTTTGAGTTATTGGCTGAGCAGAAGTTGGGG
ATGAAAACAGCCTATTTGAAATTGATATGATCAAGCACCATTGAAACACTTCCTTGAGGCTTCAGAACTA
CAAAAAGGCCTTGTTTTTTTCTCACTAGCTGTGCACCTCTGTCTGCCGGCAGCCTCATATGGCATGCCCC
AGGGCTCAGTCCTTCAACCTCTGCTCTATCTACCCTTCCTTCCTCTCACCCACCCTCAAGGCTTAAATGC
CATTTAGACACCAGATGACTACCGCGTTTTCTGTCTCTTGTGATGGCTCCCTGAACTGCTCCACCCTGAT
CACCCAGTTGCTCAAGGCCAAACCCAGTCATCCTCAGTTTCTTTCATGTCCTACATCCTATCCTTAAGAA
ACATCCTGAATCAATCACAACCTAACCCTGGCCTCAGCCACCATCATCTCTGCTGGGATTACCGCAGTAG
CTTCTCAAATTATACTGCTTCCTCCCTACTGTCTGTGGCCAACACGTCAACTAGAGTCAGTGTTTTAAAA
GGTGTGGCCAGGCACTTTGGGAGGCCGAGGCAGGCGAATCACCTGAGGTCGGGAGTTCGAGTCCAGCCTG
ACCAACATGGCGAAACCCCATCTCTACTAAAAATACAAAATTAGCTGGGCGTGGTGACGCATGCCTGTAA
TCTCAGCTACTCAGGAAGCTGAGGCAGGAGAATCGCTTGAACCTGGGAGATGGAGGTTGCGGTGAGCCGA
GATCGCGCCAGTGCACTCCAGCCTAGGCAACAAAAGCGAAACTCTCAAAAAAAAAAAAAAAAAAGGTGAG
GCTAGGTGCGGTGGTTCACACCTGTAATCCCAGCACTTTGGGAGGCCAAGGTGGACAGATCACTTGAGGT
CTCCTGACCAGCCTGGCCAACATGGTGAAACCCCATATCTACTAAAAATACAAAAATTAGCCGGGCATGG
TGGTGGGTGCCTGTAGTCCCAGCTACTCAGGCGGCTGAGGCAGAATAGCTTGAACCCAGAAGGCGGAGAT
TGCAGTGAGCCAAGATCACGCCACAGCACTCCAGCCTGGGCGATAGAACGAGATTCCGTCTTGGTGGGGA
GAAAAAGGGTGAGAGATCATTTCGCTTGGACTAAAACAAAGTCACTATGTCTGCAACAGGATCTACCTAG
CCACCAGACCAGCTTTGGGCTCTGGAAGGCCCACTTCAGGGCCTTGCCACATTAGACTCTTGTCCTTTGC
TCAAACAATCACCTTCTCTGTCTTTAAAAGTGTCACCCTCCTCCATAATCTCCTTCCCTCCTTTACCCTA
CTCCTATAGACTGCTTTATTTTTTTTTTAATTTTTGAGATGGAGTCTCACTCTGTCCCTCAGGCTGGAGT
GCAGTGGTGCGATCTTGGCTCACTGCAAACTCCACCTCCTAGGTTCAAGCAATTCTCCTGCCTCAGCCTC
CTGAGTAGCTGGGATTATAGGGGAGCGCCATGATGCCCAGCTAATTTTTGTATTTTTAGTAGAGACAGAG
TCTCACTATGTTGACCAGGCTAGTCTTGAACTCCTGACCTCAAGTGATCTACCCACCTTGGCCTCCCAAA
GTGAAGGGATTACAGGCATGACCACTGCGCCCAGACTGCTTTACTTTTTTCCATAATATATATATATATT
TTAAATAGAGGCAGCAGGGGTGGGAGAAGGGGCGGCACGGGTCTCACTATGTTACCCAGGCTGCTTTCTA
ACTCTTGGGCTCAAGCAGTCTGCCCACCTTGGCCTCCCAAAGTGCTAGGATTTACAGACATGAGCCACTG
TGCCTGGCCATTTTTTATTTTATTTACTTTTTTATTTTTCAGAGCAGGAGTGGAAGTTTATTATTAAAAA
GTTATAGGGCAGGGAAAAAAGGAAAGTGCACTTGGAAGAGATCCAAGTGGGCAACTTGAAGAACAAGTGC
CAAATAGCACTTCTGTCATGCTGGATGTCAGGGCTCTTTGTCCACTTTGTATAGCCGCTGGCTTATAGAA
GGTGCTCGATAAATCTCTTGAATTTAAAAATCAATTAGGATGCCTCTATAGTGAAAAAGATACAGTAAAG
ATGAGGGATAATCAATTTAAAAAATGAGTAAGTACACACAAAGCACTTTATCCATTCTTATGACACCTGT
TACTTTTTTGCTGTGTTTGTGTGTATGCATGCCATGTTATAGTTTGTGGGACCCTCAAAGCAAGCTGGGG
AGAGTATATACTGAATTTAGCTTCTGAGACATGATGCTCTTCCTTTTTAATTAACCCAGAACTTAGCAGC
TTATCTATTTCTCTAATCTCAAAACATCCTTAAACTGGGGGTGATACTTGAGTGAGAGAATTTTGCAGGT
ATTAAATGAACTATCTTCTTTTTTTTTTTTCTTTGAGACAGAGTCTTGCTCTGTCACCCAGGCTGGAGTG
CAGTGGCGTGATCTCAGCTCACTGCAACCTCCGCCTCCCGGGTTCAAGTGATTCTCCTGCCTCAGCCTCC
TGAGTAGCTGGGATTACAGGTGCGTGCCACCGTGCCCAGCTAATTTTTGTGTTTTTAGTAGAGACGGGGT
TTCACCATGTTGGCCATGCTGGTCTTGAACTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTG
CTGGAATTATAGGCGTGAGCCACCGCGCCCAGCAAAGAACTTCTAACCTTCATAACCTGACAGGTGTTCT
CGAGGCCAGGGTCTCTCTTTCTGTCCTTTCACGATGCTCTGCATCCCTTGGATGTGCCAGTTTCTGGGGG
AAGAGTAGTCCTTTGTTACATGCATGAGTCAGTGAACAGGGAATGGGTGAATGACATTTGTGGGTAGGTT
ATTTCTAGAAGTTAGGTGGGCAGCTTGGAAGGCAGAGGCACTTCTACAGACTATTCCTTGGGGCCACACG
TAGGTTCTTGAATCCCGAATGGAAAGGGGAGATTGATAACTGGTGTGTTTATGTTCTTACAAGTCTTCTG
CCTTTTAAAATCCAGTCCCAGGACATCAAAGCTCTGCAGAAAGAACTCGAGCAATTTGCCAAGCTCCTGA
AGCAGAAGAGGATCACCCTGGGATATACACAGGCCGATGTGGGGCTCACCCTGGGGGTTCTATTTGGTGG
GTTCCCCTCTGCAGATTCTGACCGCATCTCCCCTCTAAGGAGTATCCCTGAACCTAGTGGGGAGGGGCAG
GGGCAGACTACCCTCACCCATGAAGAGGAGTAGGGAGAGGGAGAAGATGCTTTGAGCTCCCTCTGGGAAG
AGGTGGTAAGCTTGGATCTCAGGGTCACAAGGGCCCTGCGTGCTCCCTCACTTTGCTTCTCTTTTGACTG
GCCTCCCCCAGGGAAGGTATTCAGCCAAACGACCATCTGCCGCTTTGAGGCTCTGCAGCTTAGCTTCAAG
AACATGTGTAAGCTGCGGCCCTTGCTGCAGAAGTGGGTGGAGGAAGCTGACAACAATGAAAATCTTCAGG
AGGTAAGGGTGGGAGGGGGATACCCGGGGACCTTCCCTTTCTTGGCCTAATTTCCATTGCTTCCATCACT
GGCTCGTAGCTCTCCGTCTTTGGTGCAGTGGTTCTCAGTGGGATGGAGTGAAATTCCTCAGTTCTGCTGG
GATAAGGTCCAGAGCCAACCCTTCCAGGATCCTGCCTTTTCACACCACCACCTGGCTCTGCTGACACATC
TAGTCACAGACCCCTGTGATGCTGTTACTCAGCAAGTCCAAAGCTTGCCCTTGTCACCCCCTTCCCACCT
GCACAGATATGCAAAGCAGAAACCCTCGTGCAGGCCCGAAAGAGAAAGCGAACCAGTATCGAGAACCGAG
TGAGAGGCAACCTGGAGAATTTGTTCCTGCAGTGCCCGAAACCCACACTGCAGCAGATCAGCCACATCGC
CCAGCAGCTTGGGCTCGAGAAGGATGTGAGTGCCATGTCTCTCTGCGGGCTCCATCTCTTTCCCCTGTCA
CCACCTCGCTTTCCCTAGCTCTGGCTCCTCCAACTGCTCTAGGGCTGTTGGCTTTGGACAGAATGTCCAA
GCAGTCAGGCCTGTCTCAGCTCATTCTCTAATGTCCTCCTCTAACTGCTCTAGGGCTGTTGGCTTTGGAT
AGAATGTCCAAGCAGAGTCAGGCCCGTCTCAGCTCATTGTCTAATGTCATTCTCCTTTCTGTCATTCACT
TGCAGGTGGTCCGAGTGTGGTTCTGTAACCGGCGCCAGAAGGGCAAGCGATCAAGCAGCGACTATGCACA
ACGAGAGGATTTTGAGGCTGCTGGGTCTCCTTTCTCAGGGGGACCAGTGTCCTTTCCTCTGGCCCCAGGG
CCCCATTTTGGTACCCCAGGCTATGGGAGCCCTCACTTCACTGCACTGTACTCCTCGGTCCCTTTCCCTG
AGGGGGAAGCCTTTCCCCCTGTCTCCGTCACCACTCTGGGCTCTCCCATGCATTCAAACTGAGGTGCCTG
CCCTTCTAGGAATGGGGGACAGGGGGAGGGGAGGAGCTAGGGAAAGAAAACCTGGAGTTTGTGCCAGGGT
TTTTGGGATTAAGTTCTTCATTCACTAAGGAAGGAATTGGGAACACAAAGGGTGGGGGCAGGGGAGTTTG
GGGCAACTGGTTGGAGGGAAGGTGAAGTTCAATGATGCTCTTGATTTTAATCCCACATCATGTATCACTT
TTTTCTTAAATAAAGAAGCCTGGGACACAGTAGATAGACACACTTA

3 EMBL 转 FASTA

生信学员常常用到的功能。

3.1 基本需求

(1)可以一次性翻译大量(比如1,000,000个)的文件;

(2)可以翻译很大(比如含有1,000,000条序列)的文件;

(3)可以看到翻译中的进度;

(4)速度要尽量快一点;

(5)可靠性要高一点;

3.2 核心代码

using System;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Legal.BIOG
{
    public static class EMBL
    {
        /// <summary>
        /// EMBL格式转为FASTA格式
        /// </summary>
        /// <param name="embl"></param>
        /// <returns></returns>
        public static string EMBL_To_FASTA(string embl)
        {
            string[] xlines = embl.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < xlines.Length; i++)
            {
                if (xlines[i].StartsWith("DE ") && sb.Length == 0)
                {
                    sb.AppendLine(">" + xlines[i].Substring(2).Trim());
                }
                else if (xlines[i].StartsWith("SQ "))
                {
                    int j = i + 1;
                    while (j < xlines.Length)
                    {
                        if (xlines[j].StartsWith("//")) break;
                        string[] xa = xlines[j].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                        xa[xa.Length - 1] = "";
                        sb.AppendLine(String.Join("", xa).ToUpper());
                        j++;
                    }
                    break;
                }
            }
            return sb.ToString();
        }
    }
}

3.3 运行效果

桌面软件 BIOG 的几个优点:
(1)桌面软件能一次性处理很多很多的文件,比如一个文件夹及其子目录下的所有文件;百万个也可以的;

(2)桌面软件可以处理很大的文件;比如超过2GB的文件,在线版本是无法处理的!

(3)桌面软件的速度当然比较快!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#,生信软件实践(02)——DNA数据库EMBL格式详解及转为FASTA格式文件的源代码 的相关文章

  • Android 项目中 Mopub 广告基础使用(插屏和横幅)

    1 下载 MoPub Android SDK repositories mavenCentral MoPub SDK is now available in Maven Central android compileOptions sour
  • Camera2打开相机,建立会话,并监听相机流(以拍照为例)

    Camera2打开相机 xff0c 建立会话 xff0c 并监听相机流 xff08 以拍照为例 xff09 获取 CameraManager通过 CameraManager openCamera 方法打开相机 xff0c 监听回调 xff0
  • 协程的创建

    GlobalScope launch 使用 xff08 代码会在当前线程所有内容执行完成之后再执行 xff09 新建线程 xff0c 执行 34 延时 1 秒 xff0c 打印当前线程名称 34 的代码 GlobalScope launch
  • Retrofit 使用

    Retrofit 使用 Retrofit 官网导入依赖库请求数据 xff08 以 玩Android 为例 xff0c 官方文档为 github 接口 xff1a https api github com xff09 数据请求前提getpos
  • Retrofit2 源码分析

    Retrofit2 源码分析 整体流程 xff08 以异步请求为例 xff09 源码分析总结 整体流程 xff08 以异步请求为例 xff09 通过建造者模式创建 Retrofit 对象Retrofit 对象通过 create 方法 xff
  • jar文件双击不能打开

    注册表 在Windows开始菜单的搜索框中输入 regedit xff0c 在上方搜索出的文件regedit上点击鼠标右键 xff0c 在弹出的菜单中选择 以管理员身份运行 在注册表编辑器中 xff0c 找到 HKEY CLASSES RO
  • 深入理解JS中的变量作用域

    在 JS 当中一个变量的作用域 xff08 scope xff09 是程序中定义这个变量的区域 变量分为两类 xff1a 全局 xff08 global xff09 的和局部的 其中全局变量的作用域是全局性的 xff0c 即在 JavaSc
  • SystemUI返回键手势和launcher上滑手势

    背景描述 最近修改bug和需求 xff0c 接触到系统手势这一块 xff0c 发现是一个薄弱点 xff0c 以前只是简单知道 xff0c 没有深入了解 手势这一块涉及的模块和流程比较多 xff0c 记录一下别人写的比较好的文章参考一下 初步
  • Android Studio 展开、折叠代码块快捷键

    展开 折叠代码块的方法 xff1a 折叠单个方法 xff1a 34 ctrl 34 43 34 34 展开单个方法 xff1a 34 ctrl 34 43 34 43 34 折叠全部方法 xff1a 34 ctrl 34 43 34 shi
  • Android Studio 重写父类方法的快捷键

    快速重写父类方法的快捷键 xff1a ctrl 43 o
  • 门面(外观)模式和代理模式区别

    本文只讲门面模式和代理模式的区别 今天用旅游吃饭来区分下门面模式和代理模式 门面模式是给用户提供一种服务 xff0c 就相当于我们的饭店 xff0c 可以给顾客提供美味的食物 代理模式是根据用户的需求 xff0c 提供解决该需求的方案 xf
  • 传输层TCP的流量控制和拥塞控制(图文详解)

    TCP的流量控制和拥塞控制 TCP流量控制流量控制中的死锁问题 x1f512 持续计时器 TCP的拥塞控制增加资源能解决拥塞吗 xff1f 拥塞往往会趋于恶化拥塞控制方法慢开始和拥塞避免慢开始拥塞避免 快重传和快恢复快重传快恢复 TCP流量
  • 数据链路层的子层MAC层(图文详解)

    数据链路层的子层MAC层 MAC层MAC层的硬件地址单站地址 xff0c 组地址 xff0c 广播地址全球管理与本地管理适配器检查MAC地址 MAC帧的格式 MAC层 MAC不是物理层 xff01 MAC不是物理层 xff01 MAC不是物
  • 补码一位乘法(Booth算法)和补码二位乘法详解

    文章目录 补码一位乘法补码二位乘法布斯算法的硬件实现 A D Booth提出了一种算法 xff1a 相乘二数用补码表示 xff0c 它们的符号位与数值为一起参与乘法运算的过程 xff0c 直接得出用补码表示的乘法结果 xff0c 且正数和负
  • 计算机原理中的字,位扩展,都给老子进来学,看不懂算我输!

    文章目录 涉及到的几个概念地址线与数据线 字扩展与位扩展 涉及到的几个概念 MDR xff1a 数据寄存器 xff0c 用来存入内存中读入 写出的信息 MAR xff1a 地址寄存器 xff0c 用来存放当前CPU访问的内存单元地址 地址线
  • 计算机组成原理中指令的四个工作周期

    文章目录 执行过程取指周期带有间址寻址的指令周期带有中断的指令周期 间指周期执行周期中断周期 执行过程 执行过程 xff1a 在取址周期后 xff0c 需要判断是否有间址周期 xff0c 如果没有就进入到了执行周期 xff0c 在执行周期过
  • Uncaught TypeError: $(...).modal is not a function

    项目场景 xff1a ssm框架配合bootstrap和AJAX xff0c 点击按钮弹出模态框 问题描述 xff1a Uncaught TypeError modal is not a function 原因分析 xff1a 没有引入bo
  • Lock锁及获取锁的四种方法

    为什么使用LOCK xff1f LOCK锁LOCK锁的上锁与解锁 为什么使用LOCK xff1f 传统的Synchronized锁有非常多的缺点 xff1a 锁的唤醒和阻塞代价较高 xff0c 线程的阻塞和唤醒 xff0c 操作系统需要在用
  • Chrome浏览器无法安装插件的解决办法

    国内不翻墙情况下 xff0c 无法正常登录谷歌账户 无法访问谷歌应用商店 xff0c 无法同步个人数据和安装使用各类插件 本文解决方法 xff1a 开发模式安装 步骤 xff1a 1 将xxx crx插件的扩展名改成 zip或者 rar并解
  • java8的ConcurrentHashMap为何放弃分段锁,为什么要使用CAS+Synchronized取代Segment+ReentrantLock

    原文地址 xff1a https cloud tencent com developer article 1509556 今天突然被一个同事问到java8为何放弃分段锁 xff0c 于是花了点时间针对这个问题进行了小小的总结 jdk1 7分

随机推荐

  • 8-17小记

    Comparator比较器的使用 435 无重叠区间 力扣 xff08 LeetCode xff09 leetcode cn com 给定一个区间的集合 xff0c 找到需要移除区间的最小数量 xff0c 使剩余区间互不重叠 注意 可以认为
  • Java关键字小记

    Static静态内部类静态变量和方法导包静态代码块 final用来修饰数据用来修饰方法参数修饰方法修饰类 abstractabstract类abstract方法 extendsthrow和throwsvolatile 本篇是Java关键字的
  • Java 通过反射获取方法与变量

    0 反射技术 反射技术是Java生态中的重要内容 xff0c 在Spring以及其他框架中得到了广泛的应用 有了反射技术 xff0c 我们可以在程序运行的过程中 xff1a 构建任意一个类的对象 xff0c 了解任意一个对象所属的类 xff
  • 分享一个免费版本库可以建私库

    别的不多说 目前这个行业小团队比较多 xff0c 想要版本库的话 看下面 反正我个人一直在用 所以就推荐给你们 我不介绍github xff0c 和gitorious 因为github在私人库的时候是收费的 而最早的gitorious是没办
  • ibm服务器故障诊断面板报警信息解释|亮黄灯了

    诊断面板如下图 xff1a ps 指示灯 xff1a 当此指示灯发亮时 xff0c 表明电源 出现故障 xff0c 需要及时更换电源 temp 指示灯 xff1a 当此指示灯发亮时 xff0c 表明系统温度超出阈值级别 xff0c 检查风扇
  • 联想x3650m5服务器安装windows2008R2系统

    服务器型号 xff1a 联想x3650 M5 2U服务器 硬盘 xff1a 一块300G硬盘 阵列 xff1a raid0 系统 xff1a windowsserver2008R2系统 安装开始时间 xff1a 20180930晚上9点 客
  • 关于IDEA模块复制问题的解决方案分享

    在IDEA开发过程中有的时候可能一些准备工作比较繁琐 xff0c 这个时候有些小伙伴们就想到了复制一个module出来导入 xff0c 但是发现各种报错不能运行 xff0c 在这里给小伙伴们分享一种IDEAmodule复制的方案 xff0c
  • Excel VBA 函数返回值

    Excel VBA 函数返回值 Sub 定义一个过程 VB的函数定义格式与C有很大区别 xff1a 格式 xff1a span class token keyword Sub span 过程名 span class token punctu
  • C#,桌面编程入门(01)——按钮Button属性与事件、动态创建、快捷键、控件数组及自定义Button

    本文是 桌面编程入门 系列文章的开山之篇 桌面编程入门 系列文章主要介绍桌面编程的各种组件 xff0c Button xff0c ComboBox xff0c Panel xff0c WebBrowser 类似的文章非常多 xff0c 深度
  • 巧用F12调试工具js修改页面加载数目

    背景 xff1a 有147页 每页显示8条记录的总数据量 xff0c 在这些数据中查找是否存在指定的一条数据 查找 xff1a 页面使用CTR 43 F功能可以快速查找确定是否存在目标数据 xff0c 或者在F12reponse里查找 xf
  • 为什么官网上下载的JDK15为什么找不到sun.misc.Launcher类?

    正常jdk8以后官网上下载到的JDK包里面是没有开放sun misc Launcher等类的 xff0c 可能是因为官方不希望用户使用这些内部的类 xff0c 因此在后面的版本里就不再开放了 xff0c 但不代表不存在 xff0c 而是以系
  • Linux自学之旅-基础命令(shutdown关机重启命令)

    Linux自学之旅 基础命令 xff08 shutdown xff09 文章目录 前言一 shutdown能做什么 xff1f 二 shutdown使用1 关机2 重启 总结 前言 1 上一节我们讲述了tar命令用来打包并压缩的用法 xff
  • Vue结合后台详解导入导出Excel问题

    Vue完整前后台项目介绍 最近Vue项目中用到了导入导出功能 xff0c 在网上搜索了一番之后 xff0c 决定采用Blob方式 xff0c 这也是大家推荐的一种的方式 xff0c 特此做下记录 导出Excel功能 这里不谈别人怎么实现的
  • Windows10 和 archlinux双系统安装及配置

    原文地址 https www viseator com 2017 05 17 arch install 第一次装archLinux时 xff0c 感觉不是很明白各个命令的大致意思 xff0c 不久前Windows的系统出问题了 xff0c
  • 银河麒麟 Qt打包

    环境 xff1a 银河麒麟4 0 2 Qt 5 12 10 将编译好的Qt程序test打包 xff0c 并部署到另一台没有开发环境的Linux下 xff0c 将过程记录如下 xff1a 将编译好的可执行程序test放到一个新建文件夹内 例如
  • SmartSoftHelp 自定义开源C#代码生成器

    蓦然回首终结者SmartSoftHelp开发辅助工具MiniLite2 0迷你版 V3 5 自定义生成 dbhelper Model BLL DAL sqltxt UI 方便快捷 xff0c 支持自编码 xff0c 自编译 xff0c 自己
  • 游戏开发人员需要看的书籍

    编码习惯及设计基础 程序员修炼之道 http product dangdang com 9053091 html 这本书讲解的一些设计原理很实用 对设计感兴趣的同学可以一看 推荐指数 5星 图形渲染 客户端 3D绘图程序设计 http pr
  • 【c++】生产者与消费者问题

    单个生产者和单个消费者 include lt iostream gt include lt mutex gt include lt condition variable gt include lt Windows h gt using na
  • 基于springboot人事管理系统java项目介绍

    人事管理系统是基于java编程语言 xff0c springboot框架 xff0c mysql数据库开发 xff0c 本系统分为员工和管理员两个角色 xff0c 员工的主要功能有登陆系统 xff0c 个人信息更新 xff0c 查看工资 x
  • C#,生信软件实践(02)——DNA数据库EMBL格式详解及转为FASTA格式文件的源代码

    gt 生信老白写的基础代码 fasta MAYBENOANYUSAGE EMBL 与 GenBank 文件一脉相承 xff0c 建议先阅读 GenBank 文件详解 C xff0c 生信软件实践 xff08 03 xff09 DNA数据库G