| That what is not evolving doesn't live. | |
| That what doesn't live dies. | 
In the past Mark-3/Mark-4 VLBI data analysis software used so-called MARK-3 DBH format (or database-format) which kept information about VLBI session. Data could be transformed from MARK-3 DBH format to a NGS-format or a SUP (or superfile) format but with substantial loss of information which might be not essential for a simplified analysis.
  MARK-3 DBH format was developed in middle 70-s. It has a substantial 
deficiencies. New format, called gvf (geo-VLBI format) suprseded the old
format. 
  
 
 
         These overheads are so tremendous what makes it impossible to use
         MARK-3 DBH handler routinely. As a result, SOLVE uses another format 
         called "superfile" for only one reason: to reduce overheads. It makes
         the process of data analysis rather more difficult and poses 
         additional heavy obstacles to further development of analysis 
         software. The first operation which non-SOLVE VLBI analysis software 
         does is to convert data from MARK-3 DBH to another usable format.
          
              Advantages of this scheme:
               
         
         
             Structure of a DATA-section:
 
	  Some new lcodes will be added:
           Why not old MARK-3 DBH format? 
  VLBI Data handler MARK-3 DBH was written in 1976. It is difficult to 
find any other program in the world which is intensively used for a 
quarter of century. However, several generations of computers changed 
since then; approaches to developing software also changed and MARK-3 DBH 
database handler is not adequate now. It has deficiencies which become 
more and more considerable obstacles to the proper use of VLBI data.
    
  I should notice that many of these setbacks stem from severe memory 
restrictions which we had in 70-s. MARK-3 DBH handler should have operated 
at the machines with 20Kb available memory and it did! A heavy price has been 
paid for it. Times changed. Now we can take 1Gb of operative memory with 
impunity and restrictions of MARK-3 DBH format can be and must be 
overcome.
    
    
    
    
    
    
    
     Alternative format 
 Geo VLBI Format
What was done as an alternative
     
     
     
     
	       
          
 What did it bring? 
   
 
   
   
   
   
 Specifications of gvf format (geo-VLBI format) 
 
 Overview of general approaches 
     
 
      
     
     
------------    -----------    -----------    -----------    -----------
| Fringe-1 |    | Calib-1 |    | Theo-1  |    | Solve-1 |    | Docs-1  |
------------    -----------    -----------    -----------    -----------
------------    -----------    -----------    -----------    
| Fringe-2 |    | Calib-2 |    | Theo-2  |    | Solve-2 |    
------------    -----------    -----------    -----------    
              Different files contain different type of information:
              
	           
	      More than one extent of the same type can be used. It is 
              proposed to split the extents of the same type onto extents with
              frequently used information and with rarely used information. 
              It is debatable which items should 
              be treated as "frequently used". At the beginning we can consider
              information to be put in superfiles now as "frequently used".
              It assumed that a list of the files related to the experiment 
              is passed to the gvf-handler.
	           
          
     
     
             europe55_b2_b03_cal1.gvf   
             neos-a784_w1_g08_sol2.agvf 
          Fields:
          
               
     
     
              
              
              
		       
                   
          
	        
            Detailed specifications of binary gvf format 
     
 
         A valid binary gvf file consists of several sections of variable 
         length: a) preamble; b) text section; c) table of contents; 
         d) binary data section in this order. Text section or "table 
         of contents" and "binary data" sections may be omitted. Each section 
         is aligned in order to start from the 256-byte page boundary. 
         Unused space is always filled by zeroes.
.--------.--------.------.--------.-------------.
| Length | Prefix | Body | Filler | Control sum |
.--------.--------.------.--------.-------------.
        where
           
        Length   INTEGER*4  
               Length in bytes of the entire section, including body, 
                   length, prefix, control sum and filler. Prefix   CHARACTER*4  
               Section identifier. One of PREA, TEXT, CONT, DATA  Body   Undefined  
               Section content. Treated as a byte stream. Filler   Undefined  
               Unused space. May have zero length. Always binary zeroes.
                    Control sum   INTEGER*4  
               Control sum.  
        
      
             The preamble section consists of an ordered sequence of logical 
             records of variable length. The sequence is terminated by 
             a section terminator: CNTRL/Z (decimal code 26). Firstly, 
             mandatory records follow, then optional records may follow.
	     
	     Format of a logical record in preamble section:
             
             
                
        Identifier  
                     Sequence of letters (without delimiters!).
                         Identifier should be unique.  Id_delimiter  
                    two bytes: semi-column, blank (decimal codes: 58, 32)
                     Body  
                    Sequence of ascii symbols in the range 32-127 decimal
                     Record terminator  
                       CNTRL/J (decimal code: 10)  
        All mandatory records are written by handler automatically. 
	
        The list of mandatory records:
        
        
            
	    
                File_format:
                             
                Identifier of the format and its version.
                             
                Generator:
                             
                Name of the program to have generated the file and its version.
                             
                Creation_UTC_date:
                             
                Creation date.
                             
                Binary_format:
                             
                Identifier of binary numbers format. It is assumed that
                normally IEEE standard will be used, but why not to reserve
                the capacity to use alternative format?
                             
                File_name: 
                             
                File name
                             
                File_version: 
                             
                Version number of the file. Versions are numbered starting
                with 1 up to 99.
                             
                Previous_filename_{ver}: 
                             
                File name of the version {ver}, where {ver} is a version number
                which is less than the current version number. If the current
                version number of greater than 2 then several
                Previous_filename_{ver}: records should present.
                For example, if the current
                version is 4 then records Previous_filename_03:, 
                Previous_filename_02:, Previous_filename_01: should present.
                             
                Experiment_id:
                             
                Experiment identifier in lower register letters.
                             
                Experiment_start_date:
                             
                Start date in the format: YYYY.MM.DD , for example, 1999.08.06
                The first observation which has been correlated considered
                as a start observation.
                             
                Experiment_start_doy:
                             
                Day of year of the first observation of the experiment.
                             
                Experiment_start_UTC_time:
                             
                Start time in the format HH:MM:SS.FFF, f.e. 08:00:52.028
                             
                Duration:
                             
                duration of the experiment in seconds.
                             
                Correlation_center_code:
                             
                One-symbol code of the correlation center.
                             
                Correlation_center_name:
                             
                Full name of the correlation center. 
                             
                Analysis_center_code:
                             
                One-symbol code of the center where the file has been
                created.
                             
                Analysis_center_name:
                             
                Full analysis center name.
                             
                analyst_name:
                             
		Analyst name as it registered in the operating system.
                             
                Analyst_e-mail_address:
                             
                E-mail address of the person who created a database and to whom
                to send questions as a last resort. The name is generated 
                by operating system.
                             
                Hardware_name:     
                             
                Name and type of the computer used for creation of the file.
                             
                OS_name: 
                             
                Name and version number of the operating system.
                             
	    
            Records with arbitrary identifiers can be added after mandatory
            records.
	    
        
	     The TEXT section consists of an ordered sequence of subsections.
             Each subsection is terminated by CNTRL/Z (decimal code: 26).
             Each subsection consists of a prefix, title, title delimiter, 
             body and subsection terminator:
             
        
            
        
                Prefix:
                             
                Sequence of 7 symbols: "Title: " 
                             
                Title:
                             
                Ascii text with any symbols, except CNTRL/J and CNTRL/Z
                (decimal codes 10 and 26).
                             
                Title delimiter:
                             
                CNTRL/J (decimal codes 10).
                             
                Body:
                             
                Any symbols, except CNTRL/Z (decimal 26).
                             
                Subsection terminator:
                             
                CNTRL/Z (decimal 26)
                             
	Text section is for history records and for any textual information.
	
        
	     The CONT section consists of a sequence of records of fixed length.
	     It describes contents of binary data section:
            
        
            
        
                Lcode
                             
                CHARACTER*8
                             
                Identifier of the item in the database.
                             
                OFFSET
                             
                INTEGER*4
                             
                Offset in bytes of the first byte of the first occurrence of 
                this lcode with respect to the beginning of DATA section.
                             
                DIM1
                             
                INTEGER*2
                             
                First dimension of the array of values for the lcode.
                Lcode is considered as a three-dimensional array.
                             
                DIM2
                             
                INTEGER*2
                             
                Second dimension of the array of values for the lcode.
                Lcode is considered as a three-dimensional array.
                             
                DIM3
                             
                INTEGER*2
                             
                Third dimension of the array of values for the lcode.
                Lcode is considered as a three-dimensional array.
                             
                Type
                             
                Byte*1
                             
                Data type code. Supported data types: CHARACTER,
                BYTE*1, INTEGER*2, INTEGER*4, REAL*4, REAL*8.
                             
                Class
                             
                Byte*1
                             
                Code of the data class. Supported data classes: Session,
                Scan, Station, Baseline.
                             
                Usage code
                             
                Byte*1
                             
                Lcode usage code. Supported usage codes are: Primitive,
                Synonym, Derived. Usage code describes which additional 
                actions are needed besides reading/writing.
                             
        
	     The DATA section consists of an ordered sequence of logical 
             records of variable length. Each logical record corresponds to a
             LCODE and contains an ordered sequence of frames. Each frame
             contains an array of values of the lcode which corresponds to one 
             observation. All frames have fixed length within one logical 
             record.
DATA-section:
                  ~~~~~~~~~~~~~
     Record k     | LCODE-k   |
                  ~~~~~~~~~~~~~
                  ~~~~~~~~~~~~~
     Record k+1   | LCODE-k+1 |
                  ~~~~~~~~~~~~~
  
                  ~~~~~~~~~~~~~
     Record k+2   | LCODE-k+2  |
                  ~~~~~~~~~~~~~
     ...
             Structure of a data record:
record-k:
         ~~~~~~~~~~~~~~~
         |  Frame j    |
         ~~~~~~~~~~~~~~~
         ~~~~~~~~~~~~~~~
         |  Frame j+1  |
         ~~~~~~~~~~~~~~~
         ~~~~~~~~~~~~~~~
         |  Frame j+2  |
         ~~~~~~~~~~~~~~~
     ...
     The number of records is the same as the number of lcodes.
     The number of frames depends on the class of the lcode: 
      
       
          
  
       
       
       
     
     
          All lcodes are split onto three groups: 
          
              
              
              
          
	       
             
	       
	       
	       
          1    8    0
          2    9   15
          0   10   16
          0   11   17
          3   12   18
          4    0   19
          5    0   20
          6    0   21
          7   13   22
          0   14   23
                    Here station 1 and 3 participated in the 
                    scan #8, while station 2 -- not. Information for 
                    station-type lcodes related to the station 1 and scan #8 
                    is in the frame with index 6; information for 
                    station-type lcodes related to the station 3 and scan #8 
                    is in the frame with index 21. Station-dependent lcodes 
                    are written 23 times in this example; they would be written 
                    60 times if the MARK-3 DBH format would be in use.
                    
	       
          1
          1
          1
          2
          3
          3
          3
          3
          3
          3
	  4
          5
          5
           How gvf handler should work 
 Reading 
     
      Now handler is ready to fulfill a request to the data. Request to preamble
is carried out by searching preamble identifiers codes. Request to the text 
data is carried out by searching the title. Request to the binary data is 
fulfilled by the following way:
   
     
	      
          
	      
	      
	      
	      
	      
          
     
	      
          
	      
	      
	      
	      
	      
          
     
     
        
That is all.
 
         
                 
             
                 
                 
                 
             
        
    Ascii gvf format 
  Ascii gvf format should satisfy two criteria:
  
         
  It consists of records of variable length terminated by CNTRL/J (decimal 
code: 10) symbol. Alphabetic symbols with codes 32-127 decimal are allowed.
         
  
   Format of a record in the ascii gvf format:
        
| Prefix | CHARACTER*2 | One of "$$", " $", " ": "$$" is a section prefix; " $" is a keyword prefix, " " is continuation prefix. | 
| Keyword_delimiter_start | CHARACTER*1 | Double quotation sign " (decimal code 34). It is ignored if a continuation prefix was used. | 
| Keyword | CHARACTER | Keyword. It is ignored if a continuation prefix was used. | 
| Keyword_delimiter_end | CHARACTER*2 | Double quotation sign " and blank (decimal codes 34, 32). It is ignored if a continuation prefix was used. | 
| Value | CHARACTER | Value of the keyword. | 
The records with session prefix have the name of the section and empty value. They are the first record of the section and are inserted into the agvf-file as section delimiters. Format of a keyword and a value depends on section.
| Prefix | CHARACTER*2 | " $" (decimal codes: 32, 36) | 
| Delimiter | CHARACTER*1 | Double quotation sign " (decimal code 34). | 
| Lcode | CHARACTER*8 | Lcode. | 
| Delimiter | CHARACTER*2 | Delimiter (decimal codes: 34, 32). | 
| Offset | CHARACTER*9 | Offset in bytes of the first byte of a logical record in the DATA section with respect to beginning of the DATA section. | 
| Delimiter | CHARACTER*1 | Delimiter (decimal code: 32). | 
| Dim1 | CHARACTER*5 | First dimension of the array of values of LCODE. | 
| Delimiter | CHARACTER*1 | Delimiter (decimal code: 32). | 
| Dim2 | CHARACTER*5 | Second dimension of the array of values of LCODE. | 
| Delimiter | CHARACTER*1 | Delimiter (decimal code: 32). | 
| Dim3 | CHARACTER*5 | Third dimension of the array of values of LCODE. | 
| Delimiter | CHARACTER*1 | Delimiter (decimal code: 32). | 
| Date type | CHARACTER*2 | One of CH, B1, I2, I4, R4, R8 | 
| Delimiter | CHARACTER*1 | Delimiter (decimal code: 32). | 
| Date class | CHARACTER*4 | One of SESS, SCAN, STAN, BASE | 
| Delimiter | CHARACTER*1 | Delimiter (decimal code: 32). | 
| Usage code | CHARACTER*4 | One of PRIM, DERV, SYNM | 
| Prefix | CHARACTER*2 | " $" (decimal codes: 32, 36) | 
| Delimiter | CHARACTER*1 | Delimiter: double quotation sign " (decimal code 34). | 
| Lcode | CHARACTER*8 | Lcode. | 
| Delimiter | CHARACTER*1 | Delimiter: (decimal code: 32) | 
| Object name | CHARACTER | Experiment-code for session-class lcodes; source name for scan-class lcodes; station name for station-class lcodes and baseline name for baseline-class lcodes. | 
| Delimiter | CHARACTER*1 | Delimiter: (decimal code 32) | 
| Date | CHARACTER*10 | Date in the format yyyy.mm.dd | 
| Delimiter | CHARACTER*1 | Delimiter (decimal code 95) | 
| Time | CHARACTER*8 | UTC time tag in the format HH:MM:SS | 
| Delimiter | CHARACTER*1 | Delimiter: (decimal code 32) | 
| Index element | CHARACTER | Index of the element in the lcode array in the format (IN1, IN2, IN3) | 
| Delimiter | CHARACTER*2 | Delimiter: double quotation sign " and blank (decimal codes 34, 32) | 
| Value | CHARACTER | Value of the keyword. | 
Example:
$$"PREA" $"File_format:" gvf v 0.1 1999.08.08 ... $$"TEXT" $"HISTORY version 1 1999.08.04 08:34:35" Created by Dbedit HP-UX version 3.1 Dbedit control file history entry: IRIS-S138, fort-gilc-hart-west-wett, -LP Directory /diskA5/is138/1513 ... $$"CONT" $"JUL DATE" 880256 1 1 1 R8 SCAN PRIM $"CALBYFRQ" 1280264 3 2 14 I2 STAN PRIM ... $$"DATA" $"JUL DATE 0552+398 1999.05.03 22:12:33 (1,1,1)" .2451301500000000D+07 ... $"CALBYFRQ HARTRAO 1999.05.03_22:12:33 (1,1,1)" 459 $"CALBYFRQ HARTRAO 1999.05.03_22:12:33 (2,1,1)" -1752 $"CALBYFRQ HARTRAO 1999.05.03_22:12:33 (3,1,1)" 10 $"GRDEL GILCREEK/HARTRAO 1999.05.03_22:12:33 (1,1,1)" -.1162569743908074D-02 $"GRDEL GILCREEK/HARTRAO 1999.05.03_22:12:33 (2,1,1)" -.1162561782032324D-02 ...Format of other keywords is seen from the example above.
   This page was prepared by 
    (
) 
   Last update: 05-SEP-99 19:53:44