主要内容

使用Illumina公司®/ Solexa下一代测序数据

这个例子展示了如何读和执行基本操作与数据产生的Illumina公司/ Solexa基因组分析仪®。

介绍

与基因组分析管道软件分析运行期间,一些中间文件。在这个例子中,您将学习如何读取和操作序列中包含的信息文件(_sequence.txt)。

阅读_sequence。txt (FASTQ)文件

_sequence.txt包含序列的文件是FASTQ-formatted文件读取和其质量分数,后整理和过滤质量。您可以使用fastqinfo函数显示的内容的摘要_sequence.txt文件,fastqread函数来读取文件的内容。输出,读取包含的单元阵列结构,序列质量字段。

文件名=“ilmnsolexa_sequence.txt”;信息= fastqinfo(文件名)读取= fastqread(文件名)
信息=结构体字段:文件名:“ilmnsolexa_sequence。txt的FilePath: / tmp / Bdoc21b_1757077_55875 / tp38fee33a ex25447385 FileModDate: 06年——2009年5月——16:02:48文件大小:30124 NumberOfEntries: 260 = 1读取x260结构体数组字段:头序列的质量

因为有一个顺序文件每瓦并不少见总共有超过1000个文件的集合。你可以阅读整个集合的文件与一个给定的分析由连接_sequence。txt文件到一个文件。然而,由于这个操作通常会产生一个大文件,需要充足的内存来存储和处理,建议阅读内容块使用blockread选择的fastqread函数。例如,您可以阅读第一M序列,或过去的M序列,或任何文件中的M序列。

M = 150;N = info.NumberOfEntries;readsFirst = fastqread(文件名,“blockread”[1 M]) readsLast = fastqread(文件名,“blockread”,(N - m + 1, N))
readsFirst = 1 x150结构体数组字段:标题序列质量readsLast = 1 x150结构体数组字段:头序列的质量

测量的长度分布序列读取

一旦你序列信息加载到您的工作空间,您可以确定的数量和长度的序列读取和情节分布如下:

seq = {reads.Sequence};readsLen = cellfun (@length, seq);图();嘘(readsLen);包含(基地的数量);ylabel (的序列读取次数);标题(顺序读取的长度分布)

正如预期的那样,在这个例子中所有序列读取36个基点。

测量序列的碱基组成

你也可以检查的核苷酸组成测量出现的次数每个序列中的每个基类型阅读,如下所示:

元= {“一个”,“C”,‘G’,“T”};pos =细胞(4 N);i = 1:4 pos(我:)= strfind (seq, nt{我});结束数= 0 (4 N);我= 1:4数(我:)= cellfun (@length, pos(我,:));结束% = = =阴谋核苷酸分布图();次要情节(2 2 1);:嘘(计数(1));标题(“一个”);ylabel (的序列读取次数);次要情节(2,2,2);:嘘(count (2));标题(“C”);次要情节(2、2、3);嘘(count (3,:));标题(‘G’);包含(“出现”);ylabel (的序列读取次数);次要情节(2、2、4);嘘(count (4:));标题(“T”);包含(“出现”);图();嘘(数);包含(“出现”);ylabel (的序列读取次数);传奇(“一个”,“C”,‘G’,“T”);标题(“基本由核苷酸分布类型”);

测量的质量分数分布

每个序列读的_sequence.txt文件与一个分数。比分被定义为平方= -10 * log10 (p / (1 - p)), p是一个基本的错误概率。您可以检查质量分数与基地的呼声将ASCII格式转换成数字表示法,然后策划他们的分布,如下所示:

平方= {reads.Quality};% ASCII格式的平方= cellfun (@ (x)双(x) -64年,{reads.Quality},“UniformOutput”、假);%在整数格式% = = =平均中值和标准偏差avgSQ = cellfun (@mean,平方);medSQ = cellfun (@median,平方);stdSQ = cellfun (@std,平方);% = = =阴谋值和平均质量的分布图();次要情节(1、2、1);嘘(medSQ);包含(分数中值平方的);ylabel (的序列读取次数);次要情节(1、2、2);箱线图(avgSQ);ylabel (的平均分数平方);

将质量分数之间的标准

中的质量分数/ Solexa Illumina公司文件渐近,但不完全相同,桑格标准中使用的质量分数(Phred-like分数,Q)。问被定义为-10 * log10 (p), p是一个基本的错误概率。例如,如果一个基地的质量分数是Q = 20,那么p = 10 ^ (-20/10) = . 01。这意味着有一个错误的基础分数of20调用每100基地调用。

phr质量分数是正整数,而Solexa / Illumina公司质量分数可以是负的。我们可以Solexa质量分数转换成phr质量分数使用下面的代码:

% = = =从Solexa桑格标准转换Q = cellfun (@ (x)地板(。499 + 10 * log10 (1 + 10。^ (x / 10))),平方,“UniformOutput”、假);%在整数格式q = cellfun (@ (x) char (x + 33), q,“UniformOutput”、假);% ascii格式的桑格=问(1:3)' solexa =平方(1:3)'
桑格= 3 x1单元阵列{”> > > > > > > > > > > >::> > > > > > > > > > > > > 7 & * 7.1 - % 4 '}{”> > > > > > > > > > > >:> > > > > > > > >:17 > 5 > < 1;1 + & &’}{' > > > >:> > > > > 7 > 5 > > > > > > > > > > 7 > 5。+“69”(- %’}= 3 x1 solexa单元阵列{']]]]]]]]]]]]]Y]]]]]]]]]]]] VCHVMPLAS’} {']]]]]]]]]]]] Y]]]]]]]]] YPV] T] [PZPICCK '} {Y ']]]]]]]]] V] T]]]]]]]]]] V] TMJEUXEFLA '}

过滤和屏蔽根据质量分数

信号纯度过滤已经应用到的序列_sequence.txt文件。您可以执行额外的过滤,例如通过只考虑那些基地的顺序读取所有质量分数高于特定阈值:

% = = =找到序列读取的基地都有质量高于阈值len = 36;qt = 10;%的最低质量标准一个= cellfun (@ x (x) > qt,平方,“UniformOutput”、假);b = cellfun (@sum);c1 =找到(b = = len);n1 =元素个数(c1);%的序列读取通过过滤器disp ([num2str (n1)顺序读取所有基地高于阈值的num2str (qt)]);
高于阈值10 30顺序读取所有基地

或者,您可以只考虑那些小于一个给定的序列读取的基地数量与质量分数低于阈值:

% = = =找到序列读取不到M基地质量低于阈值M = 5;%最大的基地数量与质量较差= cellfun (@ x (x) < = qt,平方,“UniformOutput”、假);b = cellfun (@sum);c2 =找到(b < = M);n2 =元素个数(c2);%的序列读取通过过滤器disp ([num2str (n2)“序列读取不到”num2str (M)“基地低于阈值”num2str (qt)]);
235序列读取不到5基地低于阈值10

最后,您可以使用小写面具的基地质量分数低于阈值:

seq =阅读(1)。序列mseq = seq; qt2 = 20;%质量标准掩码=平方{1}< qt;mseq(面具)=低(seq(面具))
seq = ' GGACTTTGTAGGATACCCTCGCTTTCCTTCTCCTGT ' mseq = ' GGACTTTGTAGGATACCCTCGCTTTCCTTCTCCTGT '

总结阅读出现

总结阅读事件,您可以确定独特的阅读序列的数量及其分布在整个数据集。您还可以识别这些序列读取发生多次,经常因为他们对应适配器或引物测序过程中使用。

% = = =确定阅读频率[uReads ~ n] =独特({reads.Sequence});numUnique =元素个数(uReads) readFreq = accumarray (n (:), 1);图();嘘(readFreq,独特的(readFreq));包含(“出现”);ylabel (的序列读取次数);标题(“读事件”);% = = =确定multiply-occurring顺序读取d = readFreq > 1;dupReads = uReads (d) ' dupFreq = readFreq (d)”
numUnique x1 = 250 dupReads = 9单元阵列{‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA} {‘GATTTTATTGGTATCAGGGTTAATCGTGCCAAGAAA} {‘GCATGGGTGATGCTGGTATTAAATCTGCCATTCAAG} {‘GGGATGAACATAATAAGCAATGACGGCAGCAATAAA} {‘GGGGGAGCACATTGTAGCATTGTGCCAATTCATCCA} {‘GGTTATTAAAGAGATTATTTGTCTCCAGCCACTTAA} {‘GTTCTCACTTCTGTTACTCCAGCTTCTTCGGCACCT} {‘GTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGC} {‘GTTGGTTTCTATGTGGCTAAATACGTTAACAAAAAG} dupFreq = 2 2 2 2 2 2 3 2 2

工件识别均聚物

Illumina公司/ Solexa测序可能产生虚假的边缘聚(瓷砖。识别这些工件,您需要识别均聚物,也就是说,一种核苷酸组成的序列读取。数据集在考虑,有两种均聚物,这两个是聚。

% = = =找到均聚物电脑=(计数。/ len) * 100;[homopolType, homopolIndex] =找到(电脑= = 100);homopolIndex homopol ={读取(homopolIndex) . sequence} '
homopolIndex homopol 257 = 251 = 2 x1单元阵列{‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA} {' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA '}

类似地,您可以识别序列读取接近均聚物,即序列读取几乎完全由一个核苷酸组成类型。

% = = =找到near-homopolymers[nearhomopolType, nearhomopolIndex] =找到(pc < 100 & pc > 85);% 85%以上相同的基础nearhomopolIndex nearHomopol ={读取(nearhomopolIndex) . sequence} '
nearhomopolIndex = 4 243 nearHomopol = 2 x1单元阵列{‘AAAAACATAAAAAAAAAAATAAAAAAACAAAAAAAA} {' AAAAAAATAAAAAAAAAAATAAAAAAAAATTAAAAA '}

写数据FASTQ格式

一旦你处理和分析数据,这可能是方便的一个子集序列保存在一个单独的FASTQ文件为未来考虑。为此,您可以使用fastqwrite函数。