def __init__(self,inherent_features=[],**params):
p=ParamOverrides(self,params,allow_extra_keywords=True)<EOL>super(PatternCoordinator, self).__init__(**p.param_keywords())<EOL>self._feature_params = p.extra_keywords()<EOL>self._inherent_features = inherent_features<EOL>if(len(set(self._inherent_features) - set(self.features_to_vary))):<EOL><INDENT>self.warning('<STR_LIT>')<EOL><DEDENT>self._feature_coordinators_to_apply = []<EOL>for feature, feature_coordinator in self.feature_coordinators.items():<EOL><INDENT>if feature in self.features_to_vary and feature not in self._inherent_features:<EOL><INDENT>if isinstance(feature_coordinator,list):<EOL><INDENT>for individual_feature_coordinator in feature_coordinator:<EOL><INDENT>self._feature_coordinators_to_apply.append(individual_feature_coordinator)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self._feature_coordinators_to_apply.append(feature_coordinator)<EOL><DEDENT><DEDENT><DEDENT>
If a dataset already and inherently includes certain features,
a list with the inherent feature names should be supplied.

Any extra parameter values supplied here will be passed down
to the feature_coordinators requested in features_to_vary.