fastq格式如下:
@HWI-ST1276:71:C1162ACXX:1:1101:1208:2458 1:N:0:CGATGT
NAAGAACACGTTCGGTCACCTCAGCACACTTGTGAATGTCATGGGATCCAT
'+'
@#55???BBBBB?BA@DEEFFCFFHHFFCFFHHHHHHHFAE0ECFFD/AEH
第一行是序列標(biāo)識(shí)(read ID)以及相關(guān)的描述信息,以“@” 開(kāi)頭饼暑;
第二行即為堿基序列辅甥,長(zhǎng)度由測(cè)序策略決定;如SE50
第三行以“+”開(kāi)頭祟绊,后面是序列標(biāo)示符楼入、描述信息,或者什么也不加牧抽;
第四行是測(cè)序質(zhì)量值(phred)嘉熊,與第二行一一對(duì)應(yīng),phred值以ASCII碼標(biāo)記扬舒,對(duì)應(yīng)的 ASCII 值減去33阐肤,即為第二行對(duì)應(yīng)堿基的測(cè)序質(zhì)量值。
Illumina測(cè)序標(biāo)識(shí)詳細(xì)信息如下:
HWI-ST1276 | Instrument – unique identifier of the sequencer | 測(cè)序儀識(shí)別號(hào) |
---|---|---|
71 | run number – Run number on instrument | 機(jī)器運(yùn)行編號(hào) |
C1162ACXX | FlowCell ID – ID of flowcell | flowcell編號(hào) |
1 | LaneNumber – positive integer | Lane編號(hào)讲坎;1個(gè)flowcell有8條lane |
1101 | TileNumber – positive integer | Tile編號(hào)孕惜;1條lane有兩列,每列有32個(gè)tile |
1208 | X – x coordinate of the spot. Integer which can be negative | 點(diǎn)的x坐標(biāo) |
2458 | Y – y coordinate of the spot. Integer which can be negative | 點(diǎn)的y坐標(biāo) |
1 | ReadNumber - 1 for single reads; 1 or 2 for paired ends | 單端或雙端 |
N | whether it is filtered - NB:Y if the read is filtered out, not in the delivered fastq file, N otherwise | 是否過(guò)濾衣赶,Y表示被過(guò)濾诊赊,否則為N |
0 | control number - 0 when none of the control bits are on, otherwise it is an even number | 0表示十進(jìn)制?否則是一個(gè)偶數(shù) |
CGATGT | Illumina index sequences | 一個(gè)flowcell中不同樣品,需要index區(qū)分 |
一個(gè)樣品的雙末端測(cè)序結(jié)果中府瞄,同一條insert sequence 的兩條reads的ID只有ReadNumber是不一樣的碧磅,要么為1碘箍,要么為2;所有reads只有X – x coordinate of the spot是不斷變化的鲸郊。
fasta格式如下:
>XM_011525358.1 PREDICTED: Homo sapiens forkhead box N1 (FOXN1), transcript variant X2, mRNA
AGCTTCTTAGTCACCTTTCTCTTCTCCCCGTTTTGGCGCAGCCCCTCCGGGCAAGGGGAAGCTGATATCATAATTATTGGCTCACCTGGCAGCTGCCTCCCCTCACCTGATGTCAGCACAGACACAGGACGGCCGAGCTG
第一行是一個(gè)大于號(hào)開(kāi)頭丰榴,后面緊接注釋信息,比如序列的名字秆撮,編號(hào)等四濒。
第二行開(kāi)始就是純序列部分。
代碼如下:
import time
start = time.time()
import glob
import gzip
for i in glob.glob('*.fastq.gz'):
with gzip.open(i,'rt') as fp:
output_fasta = open("%s.fa"%i[:-9],'w')
i = 0
for line in fp:
i += 1
if i % 4 == 1:
line_new = line[1:]
output_fasta.write('>'+line_new)
elif i % 4 == 2:
output_fasta.write(line)
output_fasta.close()
end = time.time()
print("used %s s" % str(end - start))