This file is indexed.

/usr/share/pyshared/libtiff/tiff_array.py is in python-libtiff 0.3.0~svn78-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
""" Implements an array of TIFF sample images.
"""
# Author: Pearu Peterson
# Created: Nov 2010

from __future__ import division
import sys
import numpy

__all__ = ['TiffArray']

class TiffArray:
    """ Holds a sequence of homogeneous TiffPlane's.

    TiffPlane's are homogeneous if they contain sample images of same
    shape and type. Otherwise TiffPlane's may contain images from
    different TIFF files with different pixel content.
    """
    def __init__ (self, planes):
        self.planes = []
        self.shape = ()
        self.dtype = None
        map(self.append, planes)

    def __len__(self):
        return self.shape[0]

    def __getitem__ (self, index):
        try:
            if isinstance(index, (int, long)):
                if self.sample_index is None:
                    print self.shape
                return self.planes[index][()]
            elif isinstance (index, slice):
                indices = range (*index.indices(self.shape[0]))
                r = numpy.empty((len(indices),)+self.shape[1:], dtype=self.dtype)
                for i,j in enumerate(indices):
                    r[i] = self.planes[j][()]
                return r
            elif isinstance(index, tuple):
                if len (index)==0:
                    return self[:]
                if len (index)==1:
                    return self[index[0]]
                index0 = index[0]
                if isinstance(index0, (int, long)):
                    return self.planes[index0][index[1:]]
                elif isinstance (index0, slice):
                    indices = range (*index0.indices(self.shape[0]))
                    for i,j in enumerate(indices):
                        s = self.planes[j][index[1:]]
                        if i==0:
                            r = numpy.empty((len(indices),)+s.shape, dtype=self.dtype)
                        r[i] = s
                    return r
        except IOError, msg:
            sys.stderr.write('%s.__getitem__:\n%s\n' % (self.__class__.__name__, msg))
            sys.stderr.flush ()
            return None
        raise NotImplementedError (`index`)

    def append(self, plane):
        """ Append tiff plane to tiff array.
        """
        if self.planes:
            if not self.planes[0].check_same_shape_and_type (plane):
                raise TypeError('planes are not homogeneous (same shape and sample type), expected %s but got %s' % ((self.planes[0].shape, self.dtype), (plane.shape, plane.dtype)))
            self.shape = (self.shape[0]+1,) + self.shape[1:]
        else:
            self.dtype = plane.dtype
            self.shape = (1,) + plane.shape
            self.sample_index = plane.sample_index
        self.planes.append(plane)

    def extend(self, other):
        """ Extend tiff array with the content of another.
        """
        map(self.append, other.planes)
              
    def get_voxel_sizes(self):
        """ Return ZYX voxel sizes in microns.
        """
        return self.planes[0].ifd.get_voxel_sizes()

    def get_pixel_sizes(self):
        """ Return YX pixel sizes in microns.
        """
        return self.planes[0].ifd.get_pixel_sizes()

    def get_time(self, index = 0):
        """ Return time parameter of a plane.
        """
        return self.planes[index].time

    @property
    def nbytes(self):
        return self.shape[0] * self.shape[1] * self.shape[2] * self.dtype.itemsize