Mentions légales du service

Skip to content
Snippets Groups Projects
features_soma.py 1.74 KiB
Newer Older
DEBREUVE Eric's avatar
DEBREUVE Eric committed
import numpy as np_
import skimage.measure as ms_
import sklearn.decomposition as dc_


def Soma_parameters(image, final_soma_label):
    #
    (w, n, m) = image.shape
    soma_label = final_soma_label
    soma_p1 = []
    soma_p2 = []
    soma_p3 = []
    soma_p4 = []
    soma_p5 = []
    area = ms_.regionprops(soma_label)

    # area paramter
    for region in area:
        soma_p1.append(region.centroid)
        soma_p2.append(region.area)
        soma_p3.append(region.coords)
        soma_p4.append(region.moments)

    # compute eccentricity using PCA
    pca = dc_.PCA()
    for l in np_.unique(soma_label):
        if l != 0:
            region = np_.zeros([w, n, m])
            loc = np_.where(soma_label == l)
            region[loc] = image[loc]
            loc = np_.asarray(loc)
            # Estimation, calcul des composantes principales for each soma
            C = pca.fit(loc).transform(loc)
            egv1 = (C[0][:]).max()
            egv2 = (C[1][:]).max()
            egv3 = (C[2][:]).max()
            egv_vect = np_.array([egv1, egv2, egv3])
            egv_max = egv_vect.max()
            ration1 = egv1 / egv_max
            ration2 = egv2 / egv_max
            ration3 = egv3 / egv_max

            loc = np_.where(egv_vect == egv_max)
            vect_ration = np_.array([ration1, ration2, ration3])
            ration = np_.delete(vect_ration, loc)
            soma_p5.append(ration)
    soma_p1 = np_.asarray(soma_p1)
    soma_p2 = np_.asarray(soma_p2)
    soma_p3 = np_.asarray(soma_p3)
    soma_p4 = np_.asarray(soma_p4)
    soma_p5 = np_.asarray(soma_p5)

    parameters_soma = np_.array(
        [soma_p1, soma_p2, soma_p3, soma_p4, soma_p5[:, 0], soma_p5[:, 1]]
    )
    parameters_soma = parameters_soma.T

    return parameters_soma