The CCP4 routines for MTZ and map files are written in C and thus do not use a
Fortran unformatted OPEN statement, they use C-style block read & write.
Cheers
-- Ian
On Wed, 14 Nov 2018 at 08:59, Kay Diederichs <kay.diederi...@uni-konstanz.de
<mailto:kay.diederi...@uni-konstanz.de>> wrote:
It is not necessary to do error-prone conversions manually: the ifort
Compiler understands the convert='VAXD' Option in its OPEN statement - see
https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-open-convert-specifier
Thus one could just write a tiny read-write loop.
HTH
Kay
On Wed, 14 Nov 2018 00:51:02 +0000, Zhijie Li <zhijie...@utoronto.ca
<mailto:zhijie...@utoronto.ca>> wrote:
>It's also said here, at the end of file :
>
>https://www.cs.auckland.ac.nz/~patrice/210LN/DR4.pdf
>
>"add 1 to the left, with the binary point"
>
>0.10000.....
>
>
>
>________________________________
>From: CCP4 bulletin board <CCP4BB@JISCMAIL.AC.UK <mailto:CCP4BB@JISCMAIL.AC.UK>> on
behalf of Zhijie Li <zhijie...@utoronto.ca <mailto:zhijie...@utoronto.ca>>
>Sent: Tuesday, November 13, 2018 7:43 PM
>To: CCP4BB@JISCMAIL.AC.UK <mailto:CCP4BB@JISCMAIL.AC.UK>
>Subject: Re: [ccp4bb] VERY old mtz file..
>
>
>Hi all,
>
>
>I think I know why it is a division of 4 instead of 2 is involved in
conversion from VAX to IEEE now. Short answer: a 2 is in the exponent bits (bias
of 128 instead of 127, visible), another 2 is hidden in the scientific notation.
>
>
>I found this explanation+example on VAX F-float:
>
>http://courseweb.stthomas.edu/tpsturm/private/notes/qm300/FLOATPT.html
>
>
>So for IEEE754 float32, if we want to represent a same 12.75 (1100.11) in
the above example, we would first conceptually write it in scientific notation as
1.10011 x 1000 in binary. Then the mantissa part is the part after the dot filled
with zero to 23 bits: '10011000000000000000000', the exponent part is 3+127=130
(dec)=10000010(bin). Then the binary IEEE754 float32 number is
0[10000010][10011000000000000000000]. (You can check it here:
https://www.h-schmidt.net/FloatConverter/IEEE754.html)
>
>
>Now compare this with the VAX 12.75 in the linked example, we can find
that besides the bias becoming 128, the conceptual binary scientific notation is
actually 0.110011 x 10000, instead of 1.10011 x 1000. So the exponent needed is
4 instead of 3. Then the exponent bits are 4+128=132=10000100 and the VAX float32
becomes
>
>0[10000100][10011000000000000000000] ---if we write in a IEEE-style order.
Note that the mantissa appears to be same as the ieee mantissa, and the exponent
to be applied is 132-128=4. If this number is interpreted as IEEE754, then it will
be 1.10011 x 2exp(132-127)=1.10011 x 100000, four times of what it should be.
>
>
>So, for normalised values, rearranging the VAX F-float bytes, reading as
IEEE, then dividing by 4 gives the correct value. (The C[0]-1 treatment in the
ccp4 lib is neat.)
>
>
>In this link describing VAX floats, it is unfortunate that it only states
that the bias for F-float is 128, but not that the mantissa starts from 0.01
instead of 0.1. Therefore the confusion.
>
>https://nssdc.gsfc.nasa.gov/nssdc/formats/VAXFloatingPoint.htm
>
>
>
>Thanks to all responded!
>
>
>Zhijie
>
>
>________________________________
>From: Ian Tickle <ianj...@gmail.com <mailto:ianj...@gmail.com>>
>Sent: Tuesday, November 13, 2018 4:54 PM
>To: Zhijie Li
>Cc: CCP4BB@JISCMAIL.AC.UK <mailto:CCP4BB@JISCMAIL.AC.UK>
>Subject: Re: [ccp4bb] VERY old mtz file..
>
>
>Hi Zhijie
>
>It's definitely a factor 4. The code is in subroutine QTIEEE in the
Fortran source I mentioned previously at this line:
>
>See line:
>
> A(I)=((A(I)+SIGN(2,A(I)))/4.AND..NOT.MNAN).OR.MDN2
>
>If you prefer it in C code it's in function vaxF2ieeeF in:
>
>ccp4-7.0-src/checkout/libccp4/ccp4/vmslibrary.c
>
>See line:
>
>out.c[0] = buffer[i].c[1] - (uint8)1; /* subtracts 2 from exponent */
>
>i.e. subtract 2 from exponent -> division by 4.
>
>Cheers
>
>-- Ian
>
>
>On Tue, 13 Nov 2018 at 19:52, Zhijie Li <zhijie...@utoronto.ca
<mailto:zhijie...@utoronto.ca><mailto:zhijie...@utoronto.ca
<mailto:zhijie...@utoronto.ca>>> wrote:
>If somebody is going to send these files by email, please send one to me
too. Thanks in advance. I actually prefer to get a MTZ file because the miller
indices would serve as good clues for understanding the encodings. Even the first
1024 bytes of an MTZ would do (data array starts at byte 80 in MTZ).
>
>In my life I had only seen ieee754. According to what I can find, VAX has
an exponent bias of 128 (ieee754 uses 127). Then it seems to me that when
converting from vax to ieee a division of 2 is involved. However all procedures I
have seen use a division of 4, which is quite puzzling to me. A real data file
containing meaningful numbers (eg., HKL indices) would be very helpful. Thanks in
advance.
>
>Zhijie
>
>> On Nov 13, 2018, at 2:21 PM, Johan Hattne <hat...@ucla.edu
<mailto:hat...@ucla.edu><mailto:hat...@ucla.edu <mailto:hat...@ucla.edu>>> wrote:
>>
>> Related by not exactly on topic: would anybody on the list be able to
share old map files (not MTZ:s) with Convex, Cray, Fujitsu, or VAX reals/strings?
I�d be interested to see what those files actually look(ed) like.
>>
>> // Best wishes; Johan
>>
>>> On Nov 9, 2018, at 18:38, Zhijie Li <zhijie...@utoronto.ca
<mailto:zhijie...@utoronto.ca><mailto:zhijie...@utoronto.ca
<mailto:zhijie...@utoronto.ca>>> wrote:
>>>
>>> Hi all,
>>>
>>> On linux there are a few good GUI HEX editors. Here I�d like to
recommend BLESS, which conveniently displays all possible numerical interpretations of
the four bytes under cursor. It also allows the user to switch between big endian or
little endian through a checkbox. Unfortunately all floats are assumed to be IEEE754,
therefore VAX floats won�t be interpreted correctly. ( The simplest way to convert vax
to ieee float would be to write a little program to do some bit operations. I�d be happy
to take that as my weekend project)
>>>
>>>
>>> BTW, along the line of space efficiency, I can�t help noticing that the
miller indices are saved as float32 in mtz, as all other numbers in mtz. This certainly
have made mtz format a beautiful homogeneous data format ;). In this particular case,
if we have doubts about the reliability of the machine stamp, trying to restore the
miller indices would be a good way to test hypotheses.
>>>
>>> Zhijie
>>>
>>>> On Nov 9, 2018, at 9:04 PM, James Holton <0000270165b9f4cf-dmarc-requ...@jiscmail.ac.uk
<mailto:0000270165b9f4cf-dmarc-requ...@jiscmail.ac.uk><mailto:0000270165b9f4cf-dmarc-requ...@jiscmail.ac.uk
<mailto:0000270165b9f4cf-dmarc-requ...@jiscmail.ac.uk>>> wrote:
>>>>
>>>> As a beamline scientist I must say I am glad that diffraction image
data is not usually stored as ASCII text. In fact, I am slowly warming to the idea of
storing it as not just binary, but compressed formats. Problem, I'm sure will be that it
won't be long before we forget how to decompress them, as most of the algorithms we are
using aren't all that widespread. Probably around the same time future generations will
curse us for using ASCII instead of unicode, which is a 16-bit standard. I'm sure we will
be reviled for limiting ourselves so, just to save a factor of two in disk space.
>>>> In situations like this I always use the unix "od" command. It makes everything
"human readable" by converting the bytes into strings you can read. Then it is just a matter of
figuring out what the bytes are.
>>>> Unfortunately, "od" only decodes floats on the native platform, so if
the mtz is from another platform (Windows vs Linux, for example), then you might need to do some
swapping. Thus far, I have encountered files that require one of a few swapping strategies in order
to make them work:
>>>>
>>>> 1 2 3 4 - no swapping
>>>>
>>>> 4 3 2 1 - reverse all bytes
>>>>
>>>> 3 4 1 2 - swap words and swap bytes within the words
>>>> 2 1 4 3 - reverse of previous
>>>>
>>>> 2-1 1 4 3 - same as last, but if not all zero, decrement byte #2
before swapping
>>>> 3 4 1 2+1 - same as 3412, but if not all zero increment byte #2 before
swapping
>>>> I'm sure there are other combinations, but the oldest MTZ I have is
only from 1996.
>>>>
>>>> -James Holton
>>>> MAD Scientist
>>>>
>>>>
>>>>> On 11/9/2018 4:47 AM, Eleanor Dodson wrote:
>>>>> Anyone any idea what to do about this?? Created in 1992!!
>>>>> Seems unreadable..
>>>>>
>>>>> No CTYP lines input for file: 1
>>>>> Indices output even if all data items flagged "missing"
>>>>> Warning, NOT all LABOUT data lines given
>>>>> Warning: Machine stamp corrupted? Assuming native format.
>>>>>>>>>>> CCP4 library signal library_file:End of File (Error)
>>>>>
>>>>>
>>>>> To unsubscribe from the CCP4BB list, click the following link:
>>>>> https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>>>>>
>>>>
>>>>
>>>> To unsubscribe from the CCP4BB list, click the following link:
>>>> https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>>>>
>>>
>>> To unsubscribe from the CCP4BB list, click the following link:
>>> https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>>>
>>
>> Research Specialist @ Gonen Lab
>> ____________________________________________________
>> UCLA * 615 Charles E. Young Drive South
>> BSRB #347 * Los Angeles, CA 90095
>>
>> ########################################################################
>>
>> To unsubscribe from the CCP4BB list, click the following link:
>> https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>
>########################################################################
>
>To unsubscribe from the CCP4BB list, click the following link:
>https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>
>________________________________
>
>To unsubscribe from the CCP4BB list, click the following link:
>https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>
>########################################################################
>
>To unsubscribe from the CCP4BB list, click the following link:
>https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>
########################################################################
To unsubscribe from the CCP4BB list, click the following link:
https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
To unsubscribe from the CCP4BB list, click the following link:
https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1