예제 #1
0
파일: char.py 프로젝트: nesnidal/DendroPy
    def __init__(self, *args, **kwargs):
        """__init__ calls TaxonSetLinked.__init__ for handling of `oid`, `label` and `taxon_set` keyword arguments.

        Can be initialized with:

            - source keyword arguments (see Readable.process_source_kwargs), or
            - a single unnamed CharacterMatrix instance (which will be deep-copied).

        """
        TaxonSetLinked.__init__(
            self, taxon_set=kwargs.get("taxon_set", None), label=kwargs.get("label", None), oid=kwargs.get("oid", None)
        )
        self.taxon_seq_map = CharacterDataMap()
        self.character_types = []
        self.character_subsets = containers.OrderedCaselessDict()
        self.markup_as_sequences = True
        if len(args) > 1:
            raise error.TooManyArgumentsError(func_name=self.__class__.__name__, max_args=1, args=args)
        if len(args) == 1:
            if ("stream" in kwargs and kwargs["stream"] is not None) or (
                "schema" in kwargs and kwargs["schema"] is not None
            ):
                raise error.MultipleInitializationSourceError(class_name=self.__class__.__name__, arg=args[0])
            if isinstance(args[0], self.__class__):
                self.clone_from(args[0])
            else:
                raise error.InvalidArgumentValueError(func_name=self.__class__.__name__, arg=args[0])
        else:
            self.process_source_kwargs(**kwargs)
        if "oid" in kwargs:
            self.oid = kwargs["oid"]
        if "label" in kwargs:
            self.label = kwargs["label"]