Perform a full structural analysis of a molecule.

        This invokes other methods:

            1. :attr:`molecular_weight()`

            2. :attr:`calculate_centre_of_mass()`

            3. :attr:`calculate_maximum_diameter()`

            4. :attr:`calculate_average_diameter()`

            5. :attr:`calculate_pore_diameter()`

            6. :attr:`calculate_pore_volume()`

            7. :attr:`calculate_pore_diameter_opt()`

            8. :attr:`calculate_pore_volume_opt()`

            9. :attr:`calculate_pore_diameter_opt()`

            10. :attr:`calculate_windows()`

        Parameters
        ----------
        ncpus : :class:`int`
            Number of CPUs used for the parallelised parts of
            :func:`pywindow.utilities.find_windows()`. (default=1=serial)

        Returns
        -------
        :attr:`Molecule.properties`
            The updated :attr:`Molecule.properties` with returns of all
            used methods.

def full_analysis(self, ncpus=1, **kwargs):
        """
        Perform a full structural analysis of a molecule.

        This invokes other methods:

            1. :attr:`molecular_weight()`

            2. :attr:`calculate_centre_of_mass()`

            3. :attr:`calculate_maximum_diameter()`

            4. :attr:`calculate_average_diameter()`

            5. :attr:`calculate_pore_diameter()`

            6. :attr:`calculate_pore_volume()`

            7. :attr:`calculate_pore_diameter_opt()`

            8. :attr:`calculate_pore_volume_opt()`

            9. :attr:`calculate_pore_diameter_opt()`

            10. :attr:`calculate_windows()`

        Parameters
        ----------
        ncpus : :class:`int`
            Number of CPUs used for the parallelised parts of
            :func:`pywindow.utilities.find_windows()`. (default=1=serial)

        Returns
        -------
        :attr:`Molecule.properties`
            The updated :attr:`Molecule.properties` with returns of all
            used methods.

        """
        self.molecular_weight()
        self.calculate_centre_of_mass()
        self.calculate_maximum_diameter()
        self.calculate_average_diameter()
        self.calculate_pore_diameter()
        self.calculate_pore_volume()
        self.calculate_pore_diameter_opt(**kwargs)
        self.calculate_pore_volume_opt(**kwargs)
        self.calculate_windows(ncpus=ncpus, **kwargs)
        # self._circumcircle(**kwargs)
        return self.properties