Hi Weren't the CCP4 base-level routines re-written from FORTRAN to C sometime in the late 1990's? Very occasionally I used to find bugs that had been introduced in this process (or possibly not corrected...) so it's possible that Eleanor's file might be readable with a really old code base.
BTW, I have recently had cause to search out a VMS system and have found someone with a whole farm of running VAXes (or VAXen if you're geeky). Harry On 14 Nov 2018, at 09:46, Ian Tickle wrote: > 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> > 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> 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> on behalf of Zhijie Li > ><zhijie...@utoronto.ca> > >Sent: Tuesday, November 13, 2018 7:43 PM > >To: 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> > >Sent: Tuesday, November 13, 2018 4:54 PM > >To: Zhijie Li > >Cc: 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>> 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>> 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>> 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>> > >>>> 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 > ######################################################################## To unsubscribe from the CCP4BB list, click the following link: https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1