簡體   English   中英

跳過59GB fastq文件的前半部分以處理后半部分:逐行讀取還是fgetpos?

[英]skipping first half of a 59GB fastq file to process last half: read line-by-line, or fgetpos?

我有2個〜.59GB“ .fastq”格式的文本文件。 fastq文件是基因組學從定序器讀取的文件。 每4行是一個新的讀取,但這些行的大小可變。

文件大小大約為59GB,大約有211M讀取-這意味着要付出或付出大約211M * 4 = 844M行。 我正在使用的程序Bowtie當前具有執行以下選項的能力:

“-跳過105M --qupto 105M”

這實際上意味着“跳過前105M讀取,僅處理到下一個105M讀取”。 這樣,您可以拆分文件處理。 問題是,它跳過的方式非常慢。 它只會像平常一樣讀取前105M的讀取,但不會對其進行處理。 然后,一旦達到給定的讀取值,便開始比較。

我想知道是否可以使用C / C ++的fsetpos之類的東西將位置設置為文件的中間位置(或任何地方),我意識到這可能會將我放置在一行的中間,然后從那里找到開始位置第一個完整讀取開始處理,而不是等待它讀取大約422M行,直到到達需要的位置為止。 是否有人有在如此大的文件上執行fsetpos的經驗,並且知道性能是否好於當前的性能?

謝謝-尼克

是的,您可以使用C ++定位到文件的中間。

對於大文件,性能通常比讀取數據更好。

通常,在文件內定位的過程:

  1. 要求讀取該文件的目錄條目。
  2. 搜索目錄以查找文件位置的軌道和扇區。
  3. 注意:某些文件系統可能具有大文件的目錄擴展名,因此需要讀取更多數據。
  4. 下次讀取時,將告知硬盤驅動器轉到給定的磁道和扇區,然后讀入數據。

您將節省所有先前數據通過通信端口並進入內存(或忽略)的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM