Compute the surface area of a label. Parameters ---------- %(subject_label)s %(subjects_dir)s %(surface)s %(verbose)s Returns ------- area : float The area (in m²) of the label. Notes -----
(
self, subject=None, subjects_dir=None, surface="white", *, verbose=None
)
| 931 | |
| 932 | @verbose |
| 933 | def compute_area( |
| 934 | self, subject=None, subjects_dir=None, surface="white", *, verbose=None |
| 935 | ): |
| 936 | """Compute the surface area of a label. |
| 937 | |
| 938 | Parameters |
| 939 | ---------- |
| 940 | %(subject_label)s |
| 941 | %(subjects_dir)s |
| 942 | %(surface)s |
| 943 | %(verbose)s |
| 944 | |
| 945 | Returns |
| 946 | ------- |
| 947 | area : float |
| 948 | The area (in m²) of the label. |
| 949 | |
| 950 | Notes |
| 951 | ----- |
| 952 | .. versionadded:: 0.24 |
| 953 | """ |
| 954 | _, _, surf = self._load_surface( |
| 955 | subject, subjects_dir, surface, return_dict=True |
| 956 | ) |
| 957 | complete_surface_info( |
| 958 | surf, do_neighbor_vert=False, do_neighbor_tri=False, copy=False |
| 959 | ) |
| 960 | in_ = np.isin(surf["tris"], self.vertices).reshape(surf["tris"].shape) |
| 961 | tidx = np.where(in_.all(-1))[0] |
| 962 | if len(tidx) == 0: |
| 963 | warn("No complete triangles found, perhaps label is not filled?") |
| 964 | return surf["tri_area"][tidx].sum() * 1e-6 # mm² -> m² |
| 965 | |
| 966 | def _load_surface(self, subject, subjects_dir, surface, **kwargs): |
| 967 | subject = _check_subject(self.subject, subject) |