# Path: cclib/method/orbitals.py
# class Orbitals(Method):
#     def __init__(self, data, progress=None, \
#                  loglevel=logging.INFO, logname="Log"):
#     def __str__(self):
#     def __repr__(self):
#     def closed_shell(self):


import logging
import numpy
from collections import namedtuple
from cclib.method import Electrons
from cclib.method import orbitals
        from cclib.io import ccwrite

            - For PES or IRCs, return all geometries for which optstatus matches OPT_UNKNOWN
            - The input geometry for simple optimisations or single points
        """
        if hasattr(self, 'optstatus'):
            unknown_indexes = [x for x, y in enumerate(self.optstatus) if y == self.OPT_UNKNOWN]
            return self.atomcoords[unknown_indexes]
        else:
            return self.atomcoords

    @property
    def unconverged_geometries(self):
        """
        Return all unconverged geometries.

        An array containing only the starting geometries, e.g.:
            - For PES or IRCs, return all geometries for which optstatus matches OPT_UNCONVERGED
            - The input geometry for simple optimisations or single points
        """
        if hasattr(self, 'optstatus'):
            unconverged_indexes = [x for x, y in enumerate(self.optstatus) if y & self.OPT_UNCONVERGED > 0]
            return self.atomcoords[unconverged_indexes]
        else:
            return self.atomcoords

    @property
    def nelectrons(self):
        return Electrons(self).count()

    @property
    def closed_shell(self):

# Path: cclib/method/orbitals.py
# class Orbitals(Method):
#     def __init__(self, data, progress=None, \
#                  loglevel=logging.INFO, logname="Log"):
#     def __str__(self):
#     def __repr__(self):
#     def closed_shell(self):


# Path: cclib/parser/data.py
import logging
import numpy
from collections import namedtuple
from cclib.method import Electrons
from cclib.method import orbitals
        from cclib.io import ccwrite

            - For PES or IRCs, return all geometries for which optstatus matches OPT_UNKNOWN
            - The input geometry for simple optimisations or single points
        """
        if hasattr(self, 'optstatus'):
            unknown_indexes = [x for x, y in enumerate(self.optstatus) if y == self.OPT_UNKNOWN]
            return self.atomcoords[unknown_indexes]
        else:
            return self.atomcoords

    @property
    def unconverged_geometries(self):
        """
        Return all unconverged geometries.

        An array containing only the starting geometries, e.g.:
            - For PES or IRCs, return all geometries for which optstatus matches OPT_UNCONVERGED
            - The input geometry for simple optimisations or single points
        """
        if hasattr(self, 'optstatus'):
            unconverged_indexes = [x for x, y in enumerate(self.optstatus) if y & self.OPT_UNCONVERGED > 0]
            return self.atomcoords[unconverged_indexes]
        else:
            return self.atomcoords

    @property
    def nelectrons(self):
        return Electrons(self).count()

    @property
    def closed_shell(self):

        return orbitals.Orbitals(self).closed_shell()
