Source code for sknano.generators._fullerene_generator

# -*- coding: utf-8 -*-
"""
===============================================================================
Fullerene generators (:mod:`sknano.generators._fullerene_generators`)
===============================================================================

.. currentmodule:: sknano.generators._fullerene_generators

"""
from __future__ import absolute_import, division, print_function
__docformat__ = 'restructuredtext en'

from pkg_resources import resource_filename
import os
#import numpy as np

from sknano.io import XYZReader
from sknano.structures import Fullerene
#from sknano.utils.geometric_shapes import Cuboid
from ._base import GeneratorBase

__all__ = ['FullereneGenerator']


[docs]class FullereneGenerator(Fullerene, GeneratorBase): """Fullerene structure generator class. Parameters ---------- Raises ------ Examples -------- First, load the :class:`~sknano.generators.FullereneGenerator` class. >>> from sknano.generators import FullereneGenerator >>> fg = FullereneGenerator(N=60) >>> fg.save_data(fname='C60.data') """ def __init__(self, autogen=True, **kwargs): super(FullereneGenerator, self).__init__(**kwargs) if autogen: self.generate_structure_data()
[docs] def generate_structure_data(self): """Generate structure data.""" CNdir = 'C' + str(self.N) CNfile = 'C' + str(self.N) if self.PG is not None: CNfile += '-' + self.PG if self.Ni is not None: CNfile += '-{}'.format(self.Ni) CNfile += '.xyz' datadir = os.path.join(resource_filename('sknano', 'data/fullerenes'), CNdir) files = os.listdir(datadir) if len(files) > 0: if CNfile not in files: #TODO: try to *intelligently* pick the best match CNfile = files[0] self.atoms = XYZReader(os.path.join(datadir, CNfile)).atoms
[docs] def save_data(self, fname=None, structure_format=None, rotation_angle=None, rot_axis=None, deg2rad=True, center_CM=True, **kwargs): """Save structure data. See :py:meth:`~sknano.generators.GeneratorBase.save_data` method for documentation. """ if fname is None: fname = 'C{}'.format(self.N) super(FullereneGenerator, self).save_data( fname=fname, structure_format=structure_format, rotation_angle=rotation_angle, rot_axis=rot_axis, deg2rad=deg2rad, center_CM=center_CM, **kwargs)