@@ -547,9 +547,13 @@ def read_segy_trace_header(trace_index: int) -> bytes:
547547 segy_trace_idx = 0
548548 flat_mask = trace_mask .ravel ()
549549 flat_raw_headers = raw_headers_data .ravel () # Flatten to 1D array of 240-byte header records
550+ print (f"Flat mask shape: { flat_mask .shape } " )
551+
552+ operation = 'w'
550553
551554 for grid_idx in range (flat_mask .size ):
552555 if not flat_mask [grid_idx ]:
556+ print (f"Skipping trace { grid_idx } because it is masked" )
553557 continue
554558
555559 # Get MDIO header as bytes - convert single header record to bytes
@@ -561,5 +565,58 @@ def read_segy_trace_header(trace_index: int) -> bytes:
561565 segy_header_bytes = np .frombuffer (segy_raw_header_bytes , dtype = np .uint8 )
562566
563567 # Compare byte-by-byte
564- assert_array_equal (mdio_header_bytes , segy_header_bytes )
568+ # Write hexdumps to separate files for analysis
569+ def hexdump_to_string (data : bytes , title : str ) -> str :
570+ """Create hexdump string."""
571+ lines = [f"{ title } " , "=" * len (title ), "" ]
572+
573+ for i in range (0 , len (data ), 16 ):
574+ # Address
575+ addr = i
576+ hex_part = ""
577+ ascii_part = ""
578+
579+ # Process 16 bytes at a time
580+ for j in range (16 ):
581+ if i + j < len (data ):
582+ byte_val = data [i + j ]
583+ hex_part += f"{ byte_val :02x} "
584+ ascii_part += chr (byte_val ) if 32 <= byte_val <= 126 else "."
585+ else :
586+ hex_part += " "
587+ ascii_part += " "
588+
589+ lines .append (f"{ addr :08x} : { hex_part } |{ ascii_part } |" )
590+
591+ return "\n " .join (lines )
592+
593+ # Generate filenames for this test case
594+ segy_filename = f"segy_headers_{ grid_conf .name } .txt"
595+ mdio_filename = f"mdio_headers_{ grid_conf .name } .txt"
596+
597+ # Append SEG-Y hexdump to file
598+ with open (segy_filename , operation ) as f :
599+ if segy_trace_idx == 0 :
600+ f .write ("" ) # Start fresh for first trace
601+ else :
602+ f .write ("\n \n " ) # Add spacing between traces
603+ f .write (hexdump_to_string (segy_header_bytes ,
604+ f"SEG-Y Header - { grid_conf .name } Trace { segy_trace_idx } (240 bytes)" ))
605+
606+ # Append MDIO hexdump to file
607+ with open (mdio_filename , operation ) as f :
608+ if segy_trace_idx == 0 :
609+ f .write ("" ) # Start fresh for first trace
610+ else :
611+ f .write ("\n \n " ) # Add spacing between traces
612+ f .write (hexdump_to_string (mdio_header_bytes ,
613+ f"MDIO Raw Header - { grid_conf .name } Trace { segy_trace_idx } (240 bytes)" ))
614+ operation = 'a'
615+
616+ if segy_trace_idx == 0 :
617+ print (f"\n Header hexdumps being written for { grid_conf .name } :" )
618+ print (f" SEG-Y: { segy_filename } " )
619+ print (f" MDIO: { mdio_filename } " )
620+
621+
565622 segy_trace_idx += 1
0 commit comments