class SensorsData(MappedType): """ Base Sensors class. All sensors have locations. Some will have orientations, e.g. MEG. """ _ui_name = "Unknown sensors" sensors_type = basic.String __mapper_args__ = {'polymorphic_on': 'sensors_type'} default = readers.File( folder_path="sensors", file_name='EEG_unit_vectors_BrainProducts_62.txt.bz2') labels = arrays.StringArray(label="Sensor labels", console_default=default.read_data( usecols=(0, ), dtype="string", field="labels")) locations = arrays.PositionArray(label="Sensor locations", console_default=default.read_data( usecols=(1, 2, 3), field="locations")) has_orientation = basic.Bool(default=False) orientations = arrays.OrientationArray(required=False) number_of_sensors = basic.Integer( label="Number of sensors", doc="""The number of sensors described by these Sensors.""")
def test_cortexdata(self): dt = surfaces.Cortex() ## Initialize Local Connectivity, to avoid long computation time. reader = readers.File(folder_path="surfaces/cortex_reg13") dt.local_connectivity = surfaces.LocalConnectivity() dt.local_connectivity.matrix = reader.read_data("nearest_neighbour.mat", "LocalCoupling") dt.configure() summary_info = dt.summary_info self.assertTrue(abs(summary_info['Region area, maximum (mm:math:`^2`)'] - 9119.4540365252615) < 0.00000001) self.assertTrue(abs(summary_info['Region area, mean (mm:math:`^2`)'] - 3366.2542250541251) < 0.00000001) self.assertTrue(abs(summary_info['Region area, minimum (mm:math:`^2`)'] - 366.48271886512993) < 0.00000001) self.assertEqual(dt.get_data_shape('vertices'), (16384, 3)) self.assertEqual(dt.get_data_shape('vertex_normals'), (16384, 3)) self.assertEqual(dt.get_data_shape('triangles'), (32760, 3))
class RegionMappingData(arrays.MappedArray): """ An array representing a measure of a Connectivity dataType. """ default = readers.File(folder_path="surfaces/cortex_reg13") array_data = arrays.IndexArray( console_default=default.read_data(file_name="o52r00_irp2008.txt.bz2", dtype=numpy.int32, field="array_data")) connectivity = Connectivity surface = SurfaceData __generate_table__ = True
class ConnectivityData(MappedType): """ This class primarily exists to bundle the long range structural connectivity data into a single object. """ default = readers.File(folder_path="connectivity/o52r00_irp2008") parcellation_mask = volumes.ParcellationMask( label="Parcellation mask (volume)", required=False, doc= """A 3D volume mask defining the parcellation of the brain into distinct regions.""" ) region_labels = arrays.StringArray( label="Region labels", console_default=default.read_data(file_name="centres.txt.bz2", usecols=(0, ), dtype="string", field="region_labels"), doc= """Short strings, 'labels', for the regions represented by the connectivity matrix.""" ) weights = arrays.FloatArray( label="Connection strengths", console_default=default.read_data(file_name="weights.txt.bz2", field="weights"), doc= """Matrix of values representing the strength of connections between regions, arbitrary units.""" ) unidirectional = basic.Integer( default=0, required=False, doc= "1, when the weights matrix is square and symmetric over the main diagonal, 0 when bi-directional matrix." ) tract_lengths = arrays.FloatArray( label="Tract lengths", console_default=default.read_data(file_name="tract_lengths.txt.bz2", field="tract_lengths"), doc="""The length of myelinated fibre tracts between regions. If not provided Euclidean distance between region centres is used.""") speed = arrays.FloatArray( label="Conduction speed", default=numpy.array([3.0]), file_storage=core.FILE_STORAGE_NONE, doc= """A single number or matrix of conduction speeds for the myelinated fibre tracts between regions.""" ) centres = arrays.PositionArray( label="Region centres", console_default=default.read_data(file_name="centres.txt.bz2", usecols=(1, 2, 3), field="centres"), doc="An array specifying the location of the centre of each region.") cortical = arrays.BoolArray( label="Cortical", console_default=default.read_data(file_name="cortical.txt.bz2", dtype=numpy.bool, field="cortical"), required=False, doc= """A boolean vector specifying whether or not a region is part of the cortex.""" ) hemispheres = arrays.BoolArray( label="Hemispheres (True for Right and False for Left Hemisphere", required=False, doc= """A boolean vector specifying whether or not a region is part of the right hemisphere""" ) orientations = arrays.OrientationArray( label="Average region orientation", console_default=default.read_data( file_name="average_orientations.txt.bz2", field="orientations"), required=False, doc= """Unit vectors of the average orientation of the regions represented in the connectivity matrix. NOTE: Unknown data should be zeros.""") areas = arrays.FloatArray( label="Area of regions", console_default=default.read_data(file_name="areas.txt.bz2", field="areas"), required=False, doc= """Estimated area represented by the regions in the connectivity matrix. NOTE: Unknown data should be zeros.""") idelays = arrays.IndexArray( label="Conduction delay indices", required=False, file_storage=core.FILE_STORAGE_NONE, doc="An array of time delays between regions in integration steps.") delays = arrays.FloatArray( label="Conduction delay", file_storage=core.FILE_STORAGE_NONE, required=False, doc= """Matrix of time delays between regions in physical units, setting conduction speed automatically combines with tract lengths to update this matrix, i.e. don't try and change it manually.""" ) number_of_regions = basic.Integer( label="Number of regions", doc="""The number of regions represented in this Connectivity """) # ------------- FRAMEWORK ATTRIBUTES ----------------------------- # Rotation if positions are not normalized. nose_correction = basic.JSONType(required=False) # Original Connectivity, from which current connectivity was edited. parent_connectivity = basic.String(required=False) # In case of edited Connectivity, this are the nodes left in interest area, # the rest were part of a lesion, so they were removed. saved_selection = basic.JSONType(required=False)
class SurfaceData(MappedType): """ This class primarily exists to bundle the structural Surface data into a single object. """ default = readers.File(folder_path="surfaces/cortex_reg13") vertices = arrays.PositionArray( label="Vertex positions", order=-1, console_default=default.read_data(file_name="vertices.txt.bz2", field="vertices"), doc="""An array specifying coordinates for the surface vertices.""") triangles = arrays.IndexArray( label="Triangles", order=-1, target=vertices, console_default=default.read_data(file_name="triangles.txt.bz2", dtype=numpy.int32, field="triangles"), doc= """Array of indices into the vertices, specifying the triangles which define the surface.""" ) vertex_normals = arrays.OrientationArray( label="Vertex normal vectors", order=-1, console_default=default.read_data(file_name="vertex_normals.txt.bz2", field="vertex_normals"), doc="""An array of unit normal vectors for the surfaces vertices.""") triangle_normals = arrays.OrientationArray( label="Triangle normal vectors", order=-1, doc="""An array of unit normal vectors for the surfaces triangles.""") geodesic_distance_matrix = SparseMatrix( label="Geodesic distance matrix", order=-1, required=False, file_storage=FILE_STORAGE_NONE, doc="""A sparse matrix of truncated geodesic distances""") # 'CS' number_of_vertices = basic.Integer( label="Number of vertices", order=-1, doc="""The number of vertices making up this surface.""") number_of_triangles = basic.Integer( label="Number of triangles", order=-1, doc="""The number of triangles making up this surface.""") ##--------------------- FRAMEWORK ATTRIBUTES -----------------------------## hemisphere_mask = arrays.BoolArray( label="An array specifying if a vertex belongs to the right hemisphere", file_storage=FILE_STORAGE_NONE, required=False, order=-1) zero_based_triangles = basic.Bool(order=-1) split_triangles = arrays.IndexArray(order=-1, required=False) number_of_split_slices = basic.Integer(order=-1) split_slices = basic.Dict(order=-1) bi_hemispheric = basic.Bool(order=-1) surface_type = basic.String __mapper_args__ = {'polymorphic_on': 'surface_type'}