При чтении данных с помощью uproot
из дерева, сжатого с помощью zlib, обнаруживаются некоторые ошибки сжатия из zlib, например: Error -3 while decompressing data: incorrect data check
или Error -5 while decompressing data: incomplete or truncated stream.
Когда я открываю файл в ROOT, я получаю Аналогичная ошибка из zlib:
R__unzip: error -3 in inflate (zlib)
Error in <TBasket::ReadBasketBuffers>: fNbytes = 20102, fKeylen = 199, fObjlen = 28540, noutot = 0, nout=0, nin=19903, nbuf=28540
Error in <TBranchElement::GetBasket>: File: Stage_1_files/AnalysisResults.31.root at byte:51212830, branch:data.fJetConstituents.fPt, entry:133851, badread=1, nerrors=1, basketnumber=189
...
Однако ROOT пропускает проблемную запись * (1012 *) (или записи) и продолжает пытаться прочитать файл. В up root исключение zlib пропускается. Я ловлю это, но я не могу продолжить обработку файла. Существуют явные проблемы с файлом (кажется, из-за проблем со слиянием ROOT, которые находятся вне моего контроля), но есть ли способ root идентифицировать и пропустить проблемные записи c и продолжить с остальные данные? Я мог бы представить, что можно ограничить записи при чтении, но как бы я идентифицировал их с root без проб и ошибок? Я мог определить проблемную ветвь c, только прочитав каждую ветвь по одной в root, и это все еще не определяет, какие записи являются проблемой (или проверяя с помощью ROOT).
Спасибо!