class_docstr: Objective for Structural Analysis.
  This objective has to evaluate pipeline in __call__ method and have 'metrics' field to identify
  which metrics are optimized.
class_docstr_tok: ["Objective","for","Structural","Analysis",".","This","objective","has","to","evaluate","pipeline","in","__call__","method","and","have","'metrics","'","field","to","identify","which","metrics","are","optimized","."]
code: def __init__(
      self,
      objective: Callable,
      quality_metrics: Dict[QualityMetricsEnum, QualityMetricCallable],
      complexity_metrics: Optional[
          Dict[ComplexityMetricsEnum, ComplexityMetricCallable]
      ] = None,
      is_multi_objective: bool = False,
  ):
      self.objective = objective
      super().__init__(
          quality_metrics=quality_metrics,
          complexity_metrics=complexity_metrics,
          is_multi_objective=is_multi_objective,
      )
  
imports: import os
  from copy import deepcopy
  from functools import partial
  from typing import Callable, Dict, List, Optional, Tuple
  from golem.core.dag.graph_verifier import GraphVerifier
  from golem.core.dag.verification_rules import has_no_cycle, has_no_isolated_components, has_no_isolated_nodes, has_no_self_cycled_nodes, has_one_root
  from golem.core.optimisers.graph import OptGraph
  from golem.core.optimisers.objective import Objective
  from golem.structural_analysis.graph_sa.graph_structural_analysis import GraphStructuralAnalysis
  from golem.structural_analysis.graph_sa.sa_requirements import StructuralAnalysisRequirements
  from examples.advanced.structural_analysis.dataset_access import get_scoring_data
  from examples.advanced.structural_analysis.pipelines_access import get_three_depth_manual_class_pipeline
  from fedot.core.data.data import InputData
  from fedot.core.optimisers.objective import PipelineObjectiveEvaluate
  from fedot.core.optimisers.objective.data_source_splitter import DataSourceSplitter
  from fedot.core.pipelines.adapters import PipelineAdapter
  from fedot.core.pipelines.pipeline_advisor import PipelineChangeAdvisor
  from fedot.core.pipelines.pipeline_composer_requirements import PipelineComposerRequirements
  from fedot.core.pipelines.pipeline_node_factory import PipelineOptNodeFactory
  from fedot.core.repository.metrics_repository import ClassificationMetricsEnum, ComplexityMetricCallable, ComplexityMetricsEnum, MetricsRepository, QualityMetricCallable, QualityMetricsEnum
  from fedot.core.repository.tasks import Task, TaskTypesEnum
  from fedot.utilities.project_import_export import DEFAULT_PATH
label_desc: Use image node_id 1 to create a new SAObjective object from inherited base classes: Objective with example: obj = SAObjective(objective, quality_metrics, complexity_metrics, is_multi_objective)