Ошибка BiocParallel: не удается открыть соединение, как исправить?

avatar
Martina
8 августа 2021 в 17:11
198
1
0

Я пытаюсь использовать пакет bambu для количественного определения числа генов из файлов bam. Я использую HPC своего университета, поэтому я написал сценарий R и пакетный файл отправки для его запуска.

Когда сценарий доходит до точки запуска функции bambu, он выдает следующую ошибку:

Start generating read class files
  |                                                                      |   0%[W::hts_idx_load2] The index file is older than the data file: ./results/minimap2/KD_R1.sorted.bam.bai
[W::hts_idx_load2] The index file is older than the data file: ./results/minimap2/KD_R3.sorted.bam.bai
[W::hts_idx_load2] The index file is older than the data file: ./results/minimap2/WT_R1.sorted.bam.bai
[W::hts_idx_load2] The index file is older than the data file: ./results/minimap2/WT_R2.sorted.bam.bai
  |==================                                                    |  25%
Error: BiocParallel errors
  element index: 1, 2, 3
  first error: cannot open the connection
In addition: Warning message:
stop worker failed:
  attempt to select less than one element in OneIndex 
Execution halted

Похоже, что BiocParallel не работает и не может открыть определенное соединение, но я не знаю, как это исправить?

Это мой R-скрипт:

#Bambu R script

#load libraries
library(Rsamtools)
library(bambu)

#Creating files
bamFiles<- Rsamtools::BamFileList(c("./results/minimap2/KD_R1.sorted.bam","./results/minimap2/KD_R2.sorted.bam","./results/minimap2/KD_R3.sorted.bam","./results/minimap2/WT_R1.sorted.bam","./results/minimap2/WT_R2.sorted.bam","./results/minimap2/WT_R3.sorted.bam"))
annotation<-prepareAnnotations("./ref_data/Homo_sapiens.GRCh38.104.chr.gtf")
fa.file<-"./ref_data/Homo_sapiens.GRCh38.dna.primary_assembly.fa"

#Running bambu
se<- bambu(reads=bamFiles, annotations=annotation, genome=fa.file,ncore=4)
se
seGene<- transcriptToGeneExpression(se)

#Saving files
save.file<-tempfile(fileext=".gtf")
writeToGTF(rowRanges(se),file=save.file)
save.dir <- tempdir()
writeBambuOutput(se,path=save.fir,prefix="Nanopore_")
writeBambuOutput(seGene,path=save.fir,prefix="Nanopore_") 

Если у вас есть идеи, почему это происходит, это будет очень полезно! Спасибо

Источник
Chris
8 августа 2021 в 19:04
1

Хотя это не указано как ошибка, что вы думаете об уведомлении The index file is older than the data file (без указания предупреждения или ошибки), которое, вероятно, появляется до того, как ваш R-скрипт будет рассмотрен... Спрашивая, ничего не зная о настройке вашего HPC, или, честно говоря, HPC в целом, но сталкивались ли вы с таким состоянием раньше (это нормально?).

Martina
8 августа 2021 в 19:19
0

Привет Крис, спасибо за ответ. Я погуглил об этом, и мне кажется, что это просто предупреждение, это не должно быть проблемой, если я знаю, что индексный файл обновлен... Но я впервые запускаю этот анализ так что не знаю нормально ли это.

Ответы (1)

avatar
Maximilian Press
9 августа 2021 в 23:40
0

Я думаю, что @Chris прав. На основании этих предупреждений кажется вероятным, что под капотом bambu работает htslib. Хотя они действительно могут быть только предупреждениями, я хотел бы знать, как будут выглядеть результаты, если вы запустите это в интерактивном режиме.

Сейчас на этот вопрос сложно ответить, так как отсутствует некоторая информация (как выглядят файлы, минимальный воспроизводимый пример и т. д.). А пока вот несколько, возможно, полезных вопросов для выяснения этого:

  1. как выглядит bamFiles? Есть ли у него правильное количество прочитанных записей? Все ли эти файлы имеют ненулевые записи чтения? Есть подозрительно маленькие?
  2. Какие метки времени у файлов bai и bam (например, ls -lh /results/minimap2/)? Они о том, что вы ожидаете, или это шатко? Кто-нибудь из них (скажем, ./results/minimap2/WT_R2.sorted.bam.bai) слишком мал?
  3. Что происходит, когда вы запускаете его в интерактивном режиме? Где это терпит неудачу? Вы говорите, что по телефону bambu(), но откуда вы это знаете?
  4. Что происходит, когда вы запускаете bambu() с ncores=1?

Вполне вероятно, что это связано с проблемой с файлами, и только на шаге biocParallel ошибка всплывает вверх. У многих утилит есть раздражающая привычка принимать пустой файл только для того, чтобы сбить с толку без информативных сообщений об ошибках, когда их просят сделать что-то с пустым файлом.

Вы также можете поднять вопрос с разработчиками.

(почему предупреждение может быть только проблемой: индексный файл иногда имеет метку времени, подобную той, что используется для очень маленьких файлов выравнивания, которые генерируются и индексируются программно, где шаг индексации почти мгновенный.)