@@ -138,15 +138,19 @@ def trace_worker( # noqa: PLR0913
138138 do_reverse_transforms = True
139139 worker_variables .append (raw_header_key )
140140
141- raw_headers , transformed_headers , traces = get_header_raw_and_transformed (
142- segy_file , live_trace_indexes , do_reverse_transforms = do_reverse_transforms
143- )
141+ # raw_headers, transformed_headers, traces = get_header_raw_and_transformed(
142+ # segy_file, live_trace_indexes, do_reverse_transforms=do_reverse_transforms
143+ # )
144+ from copy import deepcopy # TODO: Move to head if we need to copy
145+ header_pipeline = deepcopy (segy_file .accessors .header_decode_pipeline )
146+ traces = segy_file .trace [live_trace_indexes ]
144147 ds_to_write = dataset [worker_variables ]
145148
146149 if header_key in worker_variables :
147150 # Create temporary array for headers with the correct shape
148151 tmp_headers = np .zeros_like (dataset [header_key ])
149- tmp_headers [not_null ] = transformed_headers
152+ # tmp_headers[not_null] = transformed_headers
153+ tmp_headers [not_null ] = header_pipeline .apply (traces .header .copy ())
150154 # Create a new Variable object to avoid copying the temporary array
151155 # The ideal solution is to use `ds_to_write[header_key][:] = tmp_headers`
152156 # but Xarray appears to be copying memory instead of doing direct assignment.
@@ -157,10 +161,11 @@ def trace_worker( # noqa: PLR0913
157161 attrs = ds_to_write [header_key ].attrs ,
158162 encoding = ds_to_write [header_key ].encoding , # Not strictly necessary, but safer than not doing it.
159163 )
160- del transformed_headers # Manage memory
164+ # del transformed_headers # Manage memory
161165 if raw_header_key in worker_variables :
162166 tmp_raw_headers = np .zeros_like (dataset [raw_header_key ])
163- tmp_raw_headers [not_null ] = raw_headers .view ("|V240" )
167+ # tmp_raw_headers[not_null] = raw_headers.view("|V240")
168+ tmp_raw_headers [not_null ] = traces .header .view ("|V240" )
164169
165170 ds_to_write [raw_header_key ] = Variable (
166171 ds_to_write [raw_header_key ].dims ,
@@ -169,7 +174,7 @@ def trace_worker( # noqa: PLR0913
169174 encoding = ds_to_write [raw_header_key ].encoding , # Not strictly necessary, but safer than not doing it.
170175 )
171176
172- del raw_headers # Manage memory
177+ # del raw_headers # Manage memory
173178 data_variable = ds_to_write [data_variable_name ]
174179 fill_value = _get_fill_value (ScalarType (data_variable .dtype .name ))
175180 tmp_samples = np .full_like (data_variable , fill_value = fill_value )
0 commit comments