Beispiel #1
0
    def test_read_line_mmap(self):
        f, metrics, iline_idx, xline_idx = self.read_small(True)

        tr0 = metrics['trace0']
        bsz = metrics['trace_bsize']
        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,
                                            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,
                          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,
                          offsets, buf, tr0, bsz, 1, samples)
        self.assertAlmostEqual(sum(sum(buf)), 305.061146736, places=6)

        _segyio.close(f)
Beispiel #2
0
    def test_fread_trace0_for_depth(self):
        elements = list(range(25))
        indices = numpy.asarray(elements, dtype=numpy.intc)

        for index in indices:
            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, 1, indices, "depth")
Beispiel #3
0
def test_fread_trace0_for_depth():
    elements = list(range(25))
    indices = numpy.asarray(elements, dtype=numpy.intc)

    for index in indices:
        d = _segyio.fread_trace0(index, 1, 1, 1, indices, "depth")
        assert d == index

    with pytest.raises(KeyError):
        _segyio.fread_trace0(25, 1, 1, 1, indices, "depth")
Beispiel #4
0
    def test_fread_trace0(self, mmap=False):
        f = _segyio.open(self.filename, "r")
        if mmap: _segyio.mmap(f)

        binary_header = _segyio.read_binaryheader(f)
        ilb = 189
        xlb = 193

        metrics = _segyio.init_metrics(f, binary_header)
        metrics.update(
            _segyio.init_cube_metrics(f, ilb, xlb, metrics['trace_count'],
                                      metrics['trace0'],
                                      metrics['trace_bsize']))

        sorting = metrics['sorting']
        trace_count = metrics['trace_count']
        inline_count = metrics['iline_count']
        crossline_count = metrics['xline_count']
        offset_count = metrics['offset_count']

        line_metrics = _segyio.init_line_metrics(sorting, trace_count,
                                                 inline_count, crossline_count,
                                                 offset_count)

        iline_indexes = numpy.zeros(metrics['iline_count'], dtype=numpy.intc)
        xline_indexes = numpy.zeros(metrics['xline_count'], dtype=numpy.intc)
        offsets = numpy.zeros(metrics['offset_count'], dtype=numpy.intc)
        _segyio.init_indices(f, metrics, iline_indexes, xline_indexes, offsets)

        with self.assertRaises(KeyError):
            _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'], offset_count,
                                 xline_indexes, "crossline")

        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'],
                                     offset_count, iline_indexes, "inline")
        self.assertEqual(value, 5)

        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'],
                                     offset_count, xline_indexes, "crossline")
        self.assertEqual(value, 2)

        _segyio.close(f)
Beispiel #5
0
    def _index(self, lineno, offset):
        """ :rtype: int"""
        offs = self.segy.offsets

        if offset is None:
            offset = 0
        else:
            try:
                offset = next(i for i, x in enumerate(offs) if x == offset)
            except StopIteration:
                try:
                    int(offset)
                except TypeError:
                    raise TypeError("Offset must be int or slice")

                raise KeyError("Unknkown offset {}".format(offset))

        try:
            lineno = int(lineno)
        except TypeError:
            raise TypeError("Must be int or slice")

        trace0 = _segyio.fread_trace0(lineno,
                                      len(self.other_lines), self.stride,
                                      len(offs), self.lines, self.name)
        return offset + trace0
Beispiel #6
0
def test_fread_trace0(mmap=False):
    f = _segyio.segyiofd("test-data/small.sgy", "r")
    if mmap:
        f.mmap()

    ilb = 189
    xlb = 193

    metrics = f.metrics()
    metrics.update(f.cube_metrics(ilb, xlb))

    sorting = metrics['sorting']
    trace_count = metrics['tracecount']
    inline_count = metrics['iline_count']
    crossline_count = metrics['xline_count']
    offset_count = metrics['offset_count']

    line_metrics = _segyio.line_metrics(sorting, trace_count, inline_count,
                                        crossline_count, offset_count)

    iline_indexes = numpy.zeros(metrics['iline_count'], dtype=numpy.intc)
    xline_indexes = numpy.zeros(metrics['xline_count'], dtype=numpy.intc)
    offsets = numpy.zeros(metrics['offset_count'], dtype=numpy.intc)
    f.indices(metrics, iline_indexes, xline_indexes, offsets)

    with pytest.raises(KeyError):
        _segyio.fread_trace0(0, len(xline_indexes),
                             line_metrics['iline_stride'], offset_count,
                             iline_indexes, "inline")

    with pytest.raises(KeyError):
        _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'], offset_count,
                                 iline_indexes, "inline")
    assert value == 0

    value = _segyio.fread_trace0(2, len(xline_indexes),
                                 line_metrics['iline_stride'], offset_count,
                                 iline_indexes, "inline")
    assert value == 5

    value = _segyio.fread_trace0(21, len(iline_indexes),
                                 line_metrics['xline_stride'], offset_count,
                                 xline_indexes, "crossline")
    assert value == 1

    value = _segyio.fread_trace0(22, len(iline_indexes),
                                 line_metrics['xline_stride'], offset_count,
                                 xline_indexes, "crossline")
    assert value == 2

    f.close()
Beispiel #7
0
    def test_fread_trace0(self, mmap=False):
        f = _segyio.segyiofd(self.filename, "r")
        if mmap: f.mmap()

        ilb = 189
        xlb = 193

        metrics = f.metrics()
        metrics.update(f.cube_metrics(ilb, xlb))

        sorting = metrics['sorting']
        trace_count = metrics['tracecount']
        inline_count = metrics['iline_count']
        crossline_count = metrics['xline_count']
        offset_count = metrics['offset_count']

        line_metrics = _segyio.line_metrics(sorting, trace_count, inline_count,
                                            crossline_count, offset_count)

        iline_indexes = numpy.zeros(metrics['iline_count'], dtype=numpy.intc)
        xline_indexes = numpy.zeros(metrics['xline_count'], dtype=numpy.intc)
        offsets = numpy.zeros(metrics['offset_count'], dtype=numpy.intc)
        f.indices(metrics, iline_indexes, xline_indexes, offsets)

        with self.assertRaises(KeyError):
            _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'], offset_count,
                                 xline_indexes, "crossline")

        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'],
                                     offset_count, iline_indexes, "inline")
        self.assertEqual(value, 5)

        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'],
                                     offset_count, xline_indexes, "crossline")
        self.assertEqual(value, 2)

        f.close()
Beispiel #8
0
def read_line(f, metrics, iline_idx, xline_idx):
    samples = metrics['samplecount']
    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, 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)

    f.getline(xline_trace0, len(iline_idx), xline_stride, offsets, buf)
    assert sum(sum(buf)) == approx(800.061169624, abs=1e-6)

    f.getline(iline_trace0, len(xline_idx), iline_stride, offsets, buf)
    assert sum(sum(buf)) == approx(305.061146736, abs=1e-6)

    f.close()