Opened 6 years ago
Closed 6 years ago
#2747 closed defect (fixed)
Fetched map truncated
Reported by: | Owned by: | Tom Goddard | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Input/Output | Version: | |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
The following bug report has been submitted: Platform: Windows-10-10.0.18362 ChimeraX Version: 0.92 (2020-01-14) Description (Describe the actions that caused this problem to occur here) Log: UCSF ChimeraX version: 0.92 (2020-01-14) © 2016-2019 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX > open "C:/Users/Joana Paulino/Downloads/emd_20026.map.gz" Cannot read compressed CCP4 density map files > open emdb:20026 Traceback (most recent call last): File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\data\fileformats.py", line 155, in open_file data = open_func(apath, **kw) File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\data\ccp4\\__init__.py", line 18, in open return [CCP4Grid(path)] File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\data\ccp4\ccp4_grid.py", line 21, in __init__ MRCGrid.__init__(self, path, file_type = 'ccp4') File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\data\mrc\mrc_grid.py", line 24, in __init__ d = mrc_format.MRC_Data(path, file_type) File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\data\mrc\mrc_format.py", line 39, in __init__ nc = self.read_values(file, int32, 1) File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\data\mrc\mrc_format.py", line 256, in read_values % (count, etype.__name__))) File "<string>", line None SyntaxError: MRC file is truncated. Failed reading 1 values, type int32 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\cmd_line\tool.py", line 258, in execute cmd.run(cmd_text) File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\commands\cli.py", line 2837, in run result = ci.function(session, **kw_args) File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\commands\open.py", line 44, in open db_models, status = _fetch_from_database(session, db_id, db_name, db_format, name, ignore_cache, **kw) File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\commands\open.py", line 153, in _fetch_from_database ignore_cache=ignore_cache, **kw) File "C:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\core\fetch.py", line 434, in fetch_from_database models, status = df.fetch(session, id, format=format, ignore_cache=ignore_cache, **kw) File "C:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\core\fetch.py", line 497, in fetch return fetch(session, database_id, ignore_cache=ignore_cache, **kw) File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\emdb_fetch.py", line 48, in fetch_emdb models, status = io.open_data(session, filename, format = 'ccp4', name = emdb_id, **kw) File "C:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\core\io.py", line 456, in open_data models, status = open_func(*args, **kw) File "C:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\map\volume.py", line 3661, in open_map_format return open_map(session, path, name=name, format=format, **kw) File "C:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\map\volume.py", line 3248, in open_map verbose = kw.get('verbose')) File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\data\fileformats.py", line 161, in open_file raise FileFormatError(value) chimerax.map.data.fileformats.FileFormatError: MRC file is truncated. Failed reading 1 values, type int32 chimerax.map.data.fileformats.FileFormatError: MRC file is truncated. Failed reading 1 values, type int32 File "C:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\map\data\fileformats.py", line 161, in open_file raise FileFormatError(value) See log for complete Python traceback. OpenGL version: 3.3.0 - Build 23.20.16.4973 OpenGL renderer: Intel(R) UHD Graphics 620 OpenGL vendor: Intel
Change History (3)
comment:1 by , 6 years ago
Component: | Unassigned → Input/Output |
---|---|
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Fetched map truncated |
comment:2 by , 6 years ago
The failure reading a fetched MRC file was in reading the first 4 bytes, so it probably was an empty file.
Two people at the Stanford workshop mentioned this problem. And they said they could not fetch the file without getting the same error repeatedly, probably because this empty file was cached.
comment:3 by , 6 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
The fetch worked fine for me on a Windows machine.
I see from the fetching code that it directly writes the fetched file to the cache directory. Also if the urlopen() response return value read() call returns 0 bytes then there will be no errors and the saved file will have 0 bytes. The reading code assumes that returning 0 bytes means the end of file was reached. Maybe that is wrong. The documentation does not make this 100% clear.
Possibly the server can simply give 0 bytes and some error status code without Python raising an exception. It is not clear. Since I don't have a reproducible test case it is all just guess-work.
I have put in a check that the length of the fetched data matches the http header content length if that value is provided (it is for EMDB and EDS databases). If the size is wrong an error will be raised and the file will not be cached.
The map is large (~ 130 MB) but worked for me in the daily build.