[segyio] 111/376: Read/Write line functions are offset aware
Jørgen Kvalsvik
jokva-guest at moszumanska.debian.org
Wed Sep 20 08:04:16 UTC 2017
This is an automated email from the git hooks/post-receive script.
jokva-guest pushed a commit to branch debian
in repository segyio.
commit 9067193a8038096a12a9e83fa5a0f146ed1c025c
Author: Jørgen Kvalsvik <jokva at statoil.com>
Date: Thu Nov 10 14:57:36 2016 +0100
Read/Write line functions are offset aware
Enable support for reading lines in prestack files by letting them know
how much they need to skip (i.e. offset cardinality).
---
mex/Segy.m | 16 ++++++++--------
mex/segy_read_write_line_mex.c | 14 ++++++++------
python/segyio/_line.py | 8 ++++----
python/segyio/_segyio.c | 16 +++++++++++-----
python/segyio/segy.py | 3 ++-
src/segyio/segy.c | 22 +++++++++++++++-------
src/segyio/segy.h | 21 +++++++++++++--------
tests/test_segy.c | 14 +++++++-------
tests/test_segyio_c.py | 34 ++++++++++++++++++----------------
9 files changed, 86 insertions(+), 62 deletions(-)
diff --git a/mex/Segy.m b/mex/Segy.m
index a23e871..fe8f951 100644
--- a/mex/Segy.m
+++ b/mex/Segy.m
@@ -7,29 +7,29 @@ classdef Segy
methods(Static)
function obj = readInLine(spec, index)
- obj = segy_read_write_line_mex(spec, index, max(size(spec.crossline_indexes)), spec.inline_indexes, spec.il_stride);
+ obj = segy_read_write_line_mex(spec, index, max(size(spec.crossline_indexes)), spec.inline_indexes, spec.il_stride, spec.offset_count);
end
function obj = readCrossLine(spec, index)
- obj = segy_read_write_line_mex(spec, index, max(size(spec.inline_indexes)), spec.crossline_indexes, spec.xl_stride);
+ obj = segy_read_write_line_mex(spec, index, max(size(spec.inline_indexes)), spec.crossline_indexes, spec.xl_stride, spec.offset_count);
end
function obj = writeCrossLine(spec, data, index)
- segy_read_write_line_mex(spec, index, max(size(spec.inline_indexes)), spec.crossline_indexes, spec.xl_stride, data);
+ segy_read_write_line_mex(spec, index, max(size(spec.inline_indexes)), spec.crossline_indexes, spec.xl_stride, spec.offset_count, data);
obj = data;
end
function obj = writeInLine(spec, data, index)
- segy_read_write_line_mex(spec, index, max(size(spec.crossline_indexes)), spec.inline_indexes, spec.il_stride, data);
+ segy_read_write_line_mex(spec, index, max(size(spec.crossline_indexes)), spec.inline_indexes, spec.il_stride, spec.offset_count, data);
obj = data;
end
function data = get_line(cube, dir, n)
if strcmpi(dir, 'iline')
- data = segy_read_write_line_mex(cube, n, max(size(cube.crossline_indexes)), cube.inline_indexes, cube.il_stride);
+ data = segy_read_write_line_mex(cube, n, max(size(cube.crossline_indexes)), cube.inline_indexes, cube.il_stride, cube.offset_count);
elseif strcmpi(dir, 'xline')
- data = segy_read_write_line_mex(cube, n, max(size(cube.inline_indexes)), cube.crossline_indexes, cube.xl_stride);
+ data = segy_read_write_line_mex(cube, n, max(size(cube.inline_indexes)), cube.crossline_indexes, cube.xl_stride, cube.offset_count);
else
error('Only iline and xline are valid directions.');
@@ -38,10 +38,10 @@ classdef Segy
function data = put_line(cube, data, dir, n)
if strcmpi(dir, 'iline')
- segy_read_write_line_mex(cube, n, max(size(cube.crossline_indexes)), cube.inline_indexes, cube.il_stride, data);
+ segy_read_write_line_mex(cube, n, max(size(cube.crossline_indexes)), cube.inline_indexes, cube.il_stride, cube.offset_count, data);
elseif strcmpi(dir, 'xline')
- segy_read_write_line_mex(cube, n, max(size(cube.inline_indexes)), cube.crossline_indexes, cube.xl_stride, data );
+ segy_read_write_line_mex(cube, n, max(size(cube.inline_indexes)), cube.crossline_indexes, cube.xl_stride, cube.offset_count, data );
else
error('Only iline and xline are valid directions.');
diff --git a/mex/segy_read_write_line_mex.c b/mex/segy_read_write_line_mex.c
index 08c0a16..38129fe 100644
--- a/mex/segy_read_write_line_mex.c
+++ b/mex/segy_read_write_line_mex.c
@@ -12,10 +12,10 @@ void mexFunction(int nlhs, mxArray *plhs[],
bool read;
- if (nrhs == 5) {
+ if (nrhs == 6) {
read = true;
}
- else if (nrhs == 6) {
+ else if (nrhs == 7) {
read = false;
}
else {
@@ -27,6 +27,7 @@ void mexFunction(int nlhs, mxArray *plhs[],
const mxArray* mx_line_length = prhs[2];
const mxArray* mx_line_indexes = prhs[3];
const mxArray* mx_stride = prhs[4];
+ const mxArray* mx_offsets = prhs[5];
SegySpec spec;
recreateSpec(&spec,mx_spec);
@@ -41,12 +42,13 @@ void mexFunction(int nlhs, mxArray *plhs[],
uint32_t line_count = (n>m)? n:m;
uint32_t stride = (uint32_t)mxGetScalar(mx_stride);
+ int32_t offsets = (int32_t)mxGetScalar(mx_offsets);
segy_file* fp;
unsigned int line_trace0;
- int errc = segy_line_trace0( index, line_length, stride, line_indexes, line_count, &line_trace0 );
+ int errc = segy_line_trace0( index, line_length, stride, offsets, line_indexes, line_count, &line_trace0 );
if (errc != 0) {
goto CLEANUP;
}
@@ -60,7 +62,7 @@ void mexFunction(int nlhs, mxArray *plhs[],
plhs[0] = mxCreateNumericMatrix(spec.sample_count, line_length, mxSINGLE_CLASS, mxREAL);
float *data_ptr = (float *) mxGetData(plhs[0]);
- errc = segy_read_line( fp, line_trace0, line_length, stride, data_ptr, spec.first_trace_pos, spec.trace_bsize );
+ errc = segy_read_line( fp, line_trace0, line_length, stride, offsets, data_ptr, spec.first_trace_pos, spec.trace_bsize );
if (errc != 0) {
goto CLEANUP;
}
@@ -76,7 +78,7 @@ void mexFunction(int nlhs, mxArray *plhs[],
goto CLEANUP;
}
- const mxArray* mx_data = prhs[5];
+ const mxArray* mx_data = prhs[6];
float *data_ptr = (float *) mxGetData(mx_data);
@@ -85,7 +87,7 @@ void mexFunction(int nlhs, mxArray *plhs[],
goto CLEANUP;
}
- errc = segy_write_line( fp, line_trace0, line_length, stride, data_ptr, spec.first_trace_pos, spec.trace_bsize );
+ errc = segy_write_line( fp, line_trace0, line_length, stride, offsets, data_ptr, spec.first_trace_pos, spec.trace_bsize );
if (errc != 0) {
goto CLEANUP;
}
diff --git a/python/segyio/_line.py b/python/segyio/_line.py
index 8d1cc87..c5341ed 100644
--- a/python/segyio/_line.py
+++ b/python/segyio/_line.py
@@ -62,11 +62,11 @@ class Line:
except TypeError:
raise TypeError("Must be int or slice")
else:
- t0 = self.trace0fn(lineno)
+ t0 = self.trace0fn(lineno, self.segy.offsets)
return self.readfn(t0, self.len, self.stride, buf)
- def trace0fn(self, lineno):
- return segyio._segyio.fread_trace0(lineno, len(self.other_lines), self.stride, self.lines, self.name)
+ def trace0fn(self, lineno, offsets):
+ return segyio._segyio.fread_trace0(lineno, len(self.other_lines), self.stride, offsets, self.lines, self.name)
def __setitem__(self, lineno, val):
if isinstance(lineno, slice):
@@ -81,7 +81,7 @@ class Line:
return
- t0 = self.trace0fn(lineno)
+ t0 = self.trace0fn(lineno, self.segy.offsets)
self.writefn(t0, self.len, self.stride, val)
def __len__(self):
diff --git a/python/segyio/_segyio.c b/python/segyio/_segyio.c
index fccd947..3854087 100644
--- a/python/segyio/_segyio.c
+++ b/python/segyio/_segyio.c
@@ -696,10 +696,11 @@ static PyObject *py_fread_trace0(PyObject *self, PyObject *args) {
unsigned int lineno;
unsigned int other_line_length;
unsigned int stride;
+ int offsets;
PyObject *indices_object;
char *type_name;
- PyArg_ParseTuple(args, "IIIOs", &lineno, &other_line_length, &stride, &indices_object, &type_name);
+ PyArg_ParseTuple(args, "IIIiOs", &lineno, &other_line_length, &stride, &offsets, &indices_object, &type_name);
Py_buffer buffer;
if (!PyObject_CheckBuffer(indices_object)) {
@@ -710,7 +711,7 @@ static PyObject *py_fread_trace0(PyObject *self, PyObject *args) {
unsigned int trace_no;
unsigned int linenos_sz = (unsigned int) PyObject_Length(indices_object);
- int error = segy_line_trace0(lineno, other_line_length, stride, buffer.buf, linenos_sz, &trace_no);
+ int error = segy_line_trace0(lineno, other_line_length, stride, offsets, buffer.buf, linenos_sz, &trace_no);
PyBuffer_Release( &buffer );
if (error != 0) {
@@ -848,14 +849,19 @@ static PyObject *py_read_line(PyObject *self, PyObject *args) {
unsigned int line_trace0;
unsigned int line_length;
unsigned int stride;
+ int offsets;
PyObject *buffer_in;
long trace0;
unsigned int trace_bsize;
int format;
unsigned int samples;
- PyArg_ParseTuple(args, "OIIIOlIiI", &file_capsule, &line_trace0, &line_length, &stride, &buffer_in, &trace0,
- &trace_bsize, &format, &samples);
+ PyArg_ParseTuple(args, "OIIIiOlIiI", &file_capsule,
+ &line_trace0,
+ &line_length, &stride, &offsets,
+ &buffer_in,
+ &trace0, &trace_bsize,
+ &format, &samples);
segy_file *p_FILE = get_FILE_pointer_from_capsule(file_capsule);
@@ -868,7 +874,7 @@ static PyObject *py_read_line(PyObject *self, PyObject *args) {
Py_buffer buffer;
PyObject_GetBuffer(buffer_in, &buffer, PyBUF_FORMAT | PyBUF_C_CONTIGUOUS | PyBUF_WRITEABLE);
- int error = segy_read_line(p_FILE, line_trace0, line_length, stride, buffer.buf, trace0, trace_bsize);
+ int error = segy_read_line(p_FILE, line_trace0, line_length, stride, offsets, buffer.buf, trace0, trace_bsize);
if (error != 0) {
PyBuffer_Release( &buffer );
diff --git a/python/segyio/segy.py b/python/segyio/segy.py
index dde2c68..adbed7f 100644
--- a/python/segyio/segy.py
+++ b/python/segyio/segy.py
@@ -373,7 +373,8 @@ class SegyFile(object):
return self._shape_buffer(shape, buf)
def _fread_line(self, trace0, length, stride, buf):
- return _segyio.read_line(self.xfd, trace0, length, stride, buf, self._tr0, self._bsz, self._fmt, self.samples)
+ offsets = self.offsets
+ return _segyio.read_line(self.xfd, trace0, length, stride, offsets, buf, self._tr0, self._bsz, self._fmt, self.samples)
@property
def ilines(self):
diff --git a/src/segyio/segy.c b/src/segyio/segy.c
index fa630fd..52be92b 100644
--- a/src/segyio/segy.c
+++ b/src/segyio/segy.c
@@ -1086,10 +1086,11 @@ static long index_of( unsigned int x,
/*
* Read the inline or crossline `lineno`. If it's an inline or crossline
* depends on the parameters. The line has a length of `line_length` traces,
- * and `buf` must be of (minimum) `line_length*samples_per_trace` size. Reads
- * every `stride` trace, starting at the trace specified by the *position* of
- * the value `lineno` in `linenos`. If `lineno` isn't present in `linenos`,
- * SEGY_MISSING_LINE_INDEX will be returned.
+ * `offsets` are the number of offsets in this file, and `buf` must be of
+ * (minimum) `line_length*samples_per_trace` size. Reads every `stride` trace,
+ * starting at the trace specified by the *position* of the value `lineno` in
+ * `linenos`. If `lineno` isn't present in `linenos`, SEGY_MISSING_LINE_INDEX
+ * will be returned.
*
* If reading a trace fails, this function will return whatever error
* segy_readtrace returns.
@@ -1098,12 +1099,15 @@ int segy_read_line( segy_file* fp,
unsigned int line_trace0,
unsigned int line_length,
unsigned int stride,
+ int offsets,
float* buf,
long trace0,
unsigned int trace_bsize ) {
const size_t trace_data_size = trace_bsize / 4;
+ stride *= offsets;
+
for( ; line_length--; line_trace0 += stride, buf += trace_data_size ) {
int err = segy_readtrace( fp, line_trace0, buf, trace0, trace_bsize );
if( err != 0 ) return err;
@@ -1127,12 +1131,16 @@ int segy_write_line( segy_file* fp,
unsigned int line_trace0,
unsigned int line_length,
unsigned int stride,
- float* buf,
+ int offsets,
+ const float* buf,
long trace0,
unsigned int trace_bsize ) {
const size_t trace_data_size = trace_bsize / 4;
+ line_trace0 *= offsets;
+ stride *= offsets;
+
for( ; line_length--; line_trace0 += stride, buf += trace_data_size ) {
int err = segy_writetrace( fp, line_trace0, buf, trace0, trace_bsize );
if( err != 0 ) return err;
@@ -1141,10 +1149,10 @@ int segy_write_line( segy_file* fp,
return SEGY_OK;
}
-
int segy_line_trace0( unsigned int lineno,
unsigned int line_length,
unsigned int stride,
+ int offsets,
const unsigned int* linenos,
const unsigned int linenos_sz,
unsigned int* traceno ) {
@@ -1155,7 +1163,7 @@ int segy_line_trace0( unsigned int lineno,
if( stride == 1 ) index *= line_length;
- *traceno = index;
+ *traceno = index * offsets;
return SEGY_OK;
}
diff --git a/src/segyio/segy.h b/src/segyio/segy.h
index 14b0e82..8ea1b85 100644
--- a/src/segyio/segy.h
+++ b/src/segyio/segy.h
@@ -133,17 +133,19 @@ int segy_read_line( segy_file* fp,
unsigned int line_trace0,
unsigned int line_length,
unsigned int stride,
+ int offsets,
float* buf,
long trace0,
unsigned int trace_bsize );
int segy_write_line( segy_file* fp,
- unsigned int line_trace0,
- unsigned int line_length,
- unsigned int stride,
- float* buf,
- long trace0,
- unsigned int trace_bsize );
+ unsigned int line_trace0,
+ unsigned int line_length,
+ unsigned int stride,
+ int offsets,
+ const float* buf,
+ long trace0,
+ unsigned int trace_bsize );
/*
* Count inlines and crosslines. Use this function to determine how large buffer
@@ -203,8 +205,10 @@ int segy_crossline_indices( segy_file*,
* Find the first `traceno` of the line `lineno`. `linenos` should be the line
* indices returned by `segy_inline_indices` or `segy_crossline_indices`. The
* stride depends on the sorting and is given by `segy_inline_stride` or
- * `segy_crossline_stride`. `line_length` is the length, i.e. traces per line,
- * given by `segy_inline_length` or `segy_crossline_length`.
+ * `segy_crossline_stride`. `offsets` is given by `segy_offsets` function, and
+ * is the number of offsets in this file (1 for post stack data). `line_length`
+ * is the length, i.e. traces per line, given by `segy_inline_length` or
+ * `segy_crossline_length`.
*
* To read/write an inline, read `line_length` starting at `traceno`,
* incrementing `traceno` with `stride` `line_length` times.
@@ -212,6 +216,7 @@ int segy_crossline_indices( segy_file*,
int segy_line_trace0( unsigned int lineno,
unsigned int line_length,
unsigned int stride,
+ int offsets,
const unsigned int* linenos,
const unsigned int linenos_sz,
unsigned int* traceno );
diff --git a/tests/test_segy.c b/tests/test_segy.c
index 538407f..530da3f 100644
--- a/tests/test_segy.c
+++ b/tests/test_segy.c
@@ -73,7 +73,7 @@ static void test_interpret_file() {
assertTrue( err == 0, "Failure while reading stride." );
assertTrue( stride == 1, "Expected inline stride = 1." );
- err = segy_line_trace0( 4, crosslines_sz, stride, inline_indices, inlines_sz, &line_trace0 );
+ err = segy_line_trace0( 4, crosslines_sz, stride, offsets, inline_indices, inlines_sz, &line_trace0 );
assertTrue( err == 0, "Could not determine 2484's trace0." );
assertTrue( line_trace0 == 15, "Line 4 should start at traceno 15." );
@@ -92,7 +92,7 @@ static void test_interpret_file() {
assertTrue( err == 0, "Failure while reading stride." );
assertTrue( stride == 5, "Expected crossline stride = 5." );
- err = segy_line_trace0( 22, crosslines_sz, stride, crossline_indices, inlines_sz, &line_trace0 );
+ err = segy_line_trace0( 22, crosslines_sz, stride, offsets, crossline_indices, inlines_sz, &line_trace0 );
assertTrue( err == 0, "Could not determine 22's trace0." );
assertTrue( line_trace0 == 2, "Line 22 should start at traceno 2." );
@@ -230,11 +230,11 @@ static void testReadInLine_4(){
&& !segy_count_lines( fp, xl, offsets, &inlines_sz, &crosslines_sz, trace0, trace_bsize )
&& !segy_inline_indices( fp, il, sorting, inlines_sz, crosslines_sz, offsets, inline_indices, trace0, trace_bsize )
&& !segy_inline_stride( sorting, inlines_sz, &stride )
- && !segy_line_trace0( 4, crosslines_sz, stride, inline_indices, inlines_sz, &line_trace0 );
+ && !segy_line_trace0( 4, crosslines_sz, stride, offsets, inline_indices, inlines_sz, &line_trace0 );
line_length = segy_inline_length(crosslines_sz);
- ok = ok && !segy_read_line( fp, line_trace0, line_length, stride, data, trace0, trace_bsize )
+ ok = ok && !segy_read_line( fp, line_trace0, line_length, stride, offsets, data, trace0, trace_bsize )
&& !segy_to_native( format, inline_length * samples, data );
assertTrue( ok, "Error in setup. "
@@ -305,11 +305,11 @@ static void testReadCrossLine_22(){
&& !segy_count_lines( fp, xl, offsets, &inlines_sz, &crosslines_sz, trace0, trace_bsize )
&& !segy_crossline_indices( fp, xl, sorting, inlines_sz, crosslines_sz, offsets, crossline_indices, trace0, trace_bsize )
&& !segy_crossline_stride( sorting, crosslines_sz, &stride )
- && !segy_line_trace0( 22, crosslines_sz, stride, crossline_indices, inlines_sz, &line_trace0 );
+ && !segy_line_trace0( 22, crosslines_sz, stride, offsets, crossline_indices, inlines_sz, &line_trace0 );
line_length = segy_crossline_length(inlines_sz);
- ok = ok && !segy_read_line( fp, line_trace0, line_length, stride, data, trace0, trace_bsize )
+ ok = ok && !segy_read_line( fp, line_trace0, line_length, stride, offsets, data, trace0, trace_bsize )
&& !segy_to_native( format, crossline_length * samples, data );
assertTrue( ok, "Error in setup. "
@@ -552,7 +552,7 @@ static void test_error_codes_sans_file() {
int err;
unsigned int linenos[] = { 0, 1, 2 };
- err = segy_line_trace0( 10, 3, 1, linenos, 3, NULL );
+ err = segy_line_trace0( 10, 3, 1, 1, linenos, 3, NULL );
assertTrue( err == SEGY_MISSING_LINE_INDEX,
"Found line number that shouldn't exist." );
diff --git a/tests/test_segyio_c.py b/tests/test_segyio_c.py
index a3439b7..35b500e 100644
--- a/tests/test_segyio_c.py
+++ b/tests/test_segyio_c.py
@@ -285,21 +285,21 @@ class _segyioTests(TestCase):
_segyio.init_line_indices(f, metrics, iline_indexes, xline_indexes)
with self.assertRaises(KeyError):
- _segyio.fread_trace0(0, len(xline_indexes), line_metrics['iline_stride'], iline_indexes, "inline")
+ _segyio.fread_trace0(0, len(xline_indexes), line_metrics['iline_stride'], offset_count, iline_indexes, "inline")
with self.assertRaises(KeyError):
- _segyio.fread_trace0(2, len(iline_indexes), line_metrics['xline_stride'], xline_indexes, "crossline")
+ _segyio.fread_trace0(2, len(iline_indexes), line_metrics['xline_stride'], offset_count, xline_indexes, "crossline")
- value = _segyio.fread_trace0(1, len(xline_indexes), line_metrics['iline_stride'], iline_indexes, "inline")
+ value = _segyio.fread_trace0(1, len(xline_indexes), line_metrics['iline_stride'], offset_count, iline_indexes, "inline")
self.assertEqual(value, 0)
- value = _segyio.fread_trace0(2, len(xline_indexes), line_metrics['iline_stride'], iline_indexes, "inline")
+ value = _segyio.fread_trace0(2, len(xline_indexes), line_metrics['iline_stride'], offset_count, iline_indexes, "inline")
self.assertEqual(value, 5)
- value = _segyio.fread_trace0(21, len(iline_indexes), line_metrics['xline_stride'], xline_indexes, "crossline")
+ value = _segyio.fread_trace0(21, len(iline_indexes), line_metrics['xline_stride'], offset_count, xline_indexes, "crossline")
self.assertEqual(value, 1)
- value = _segyio.fread_trace0(22, len(iline_indexes), line_metrics['xline_stride'], xline_indexes, "crossline")
+ value = _segyio.fread_trace0(22, len(iline_indexes), line_metrics['xline_stride'], offset_count, xline_indexes, "crossline")
self.assertEqual(value, 2)
_segyio.close(f)
@@ -425,16 +425,17 @@ class _segyioTests(TestCase):
samples = metrics['sample_count']
xline_stride = metrics['xline_stride']
iline_stride = metrics['iline_stride']
+ offsets = metrics['offset_count']
- xline_trace0 = _segyio.fread_trace0(20, len(iline_idx), xline_stride, xline_idx, "crossline")
- iline_trace0 = _segyio.fread_trace0(1, len(xline_idx), iline_stride, iline_idx, "inline")
+ xline_trace0 = _segyio.fread_trace0(20, len(iline_idx), xline_stride, offsets, xline_idx, "crossline")
+ iline_trace0 = _segyio.fread_trace0(1, len(xline_idx), iline_stride, offsets, iline_idx, "inline")
buf = numpy.zeros((len(iline_idx), samples), dtype=numpy.single)
- _segyio.read_line(f, xline_trace0, len(iline_idx), xline_stride, buf, tr0, bsz, 1, samples)
+ _segyio.read_line(f, xline_trace0, len(iline_idx), xline_stride, offsets, buf, tr0, bsz, 1, samples)
self.assertAlmostEqual(sum(sum(buf)), 800.061169624, places=6)
- _segyio.read_line(f, iline_trace0, len(xline_idx), iline_stride, buf, tr0, bsz, 1, samples)
+ _segyio.read_line(f, iline_trace0, len(xline_idx), iline_stride, offsets, buf, tr0, bsz, 1, samples)
self.assertAlmostEqual(sum(sum(buf)), 305.061146736, places=6)
_segyio.close(f)
@@ -447,16 +448,17 @@ class _segyioTests(TestCase):
samples = metrics['sample_count']
xline_stride = metrics['xline_stride']
iline_stride = metrics['iline_stride']
+ offsets = metrics['offset_count']
- xline_trace0 = _segyio.fread_trace0(20, len(iline_idx), xline_stride, xline_idx, "crossline")
- iline_trace0 = _segyio.fread_trace0(1, len(xline_idx), iline_stride, iline_idx, "inline")
+ xline_trace0 = _segyio.fread_trace0(20, len(iline_idx), xline_stride, offsets, xline_idx, "crossline")
+ iline_trace0 = _segyio.fread_trace0(1, len(xline_idx), iline_stride, offsets, iline_idx, "inline")
buf = numpy.zeros((len(iline_idx), samples), dtype=numpy.single)
- _segyio.read_line(f, xline_trace0, len(iline_idx), xline_stride, buf, tr0, bsz, 1, samples)
+ _segyio.read_line(f, xline_trace0, len(iline_idx), xline_stride, offsets, buf, tr0, bsz, 1, samples)
self.assertAlmostEqual(sum(sum(buf)), 800.061169624, places=6)
- _segyio.read_line(f, iline_trace0, len(xline_idx), iline_stride, buf, tr0, bsz, 1, samples)
+ _segyio.read_line(f, iline_trace0, len(xline_idx), iline_stride, offsets, buf, tr0, bsz, 1, samples)
self.assertAlmostEqual(sum(sum(buf)), 305.061146736, places=6)
_segyio.close(f)
@@ -466,9 +468,9 @@ class _segyioTests(TestCase):
indices = numpy.asarray(elements, dtype=numpy.uintc)
for index in indices:
- d = _segyio.fread_trace0(index, 1, 1, indices, "depth")
+ d = _segyio.fread_trace0(index, 1, 1, 1, indices, "depth")
self.assertEqual(d, index)
with self.assertRaises(KeyError):
- d = _segyio.fread_trace0(25, 1, 1, indices, "depth")
+ d = _segyio.fread_trace0(25, 1, 1, 1, indices, "depth")
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/segyio.git
More information about the debian-science-commits
mailing list