class_docstr: A connector used to mean-std-filter observations.
  
  Incoming observations are filtered such that the output of this filter is on
  average zero and has a standard deviation of 1. This filtering is applied
  separately per element of the observation space.
class_docstr_tok: ["A","connector","used","to","mean-std-filter","observations",".","Incoming","observations","are","filtered","such","that","the","output","of","this","filter","is","on","average","zero","and","has","a","standard","deviation","of","1",".","This","filtering","is","applied","separately","per","element","of","the","observation","space","."]
code: def __init__(
      self,
      ctx: ConnectorContext,
      demean: bool = True,
      destd: bool = True,
      clip: float = 10.0,
  ):
      SyncedFilterAgentConnector.__init__(self, ctx)
      # We simply use the old MeanStdFilter until non-connector env_runner is fully
      # deprecated to avoid duplicate code
  
      filter_shape = tree.map_structure(
          lambda s: (
              None
              if isinstance(s, (Discrete, MultiDiscrete))  # noqa
              else np.array(s.shape)
          ),
          get_base_struct_from_space(ctx.observation_space),
      )
      self.filter = MeanStdFilter(
          filter_shape, demean=demean, destd=destd, clip=clip
      )
  
imports: from typing import Any, List
  from gymnasium.spaces import Discrete, MultiDiscrete
  import numpy
  import tree
  from ray.rllib.connectors.agent.synced_filter import SyncedFilterAgentConnector
  from ray.rllib.connectors.connector import AgentConnector
  from ray.rllib.connectors.connector import ConnectorContext
  from ray.rllib.connectors.registry import register_connector
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.utils.filter import Filter
  from ray.rllib.utils.filter import MeanStdFilter, ConcurrentMeanStdFilter
  from ray.rllib.utils.spaces.space_utils import get_base_struct_from_space
  from ray.rllib.utils.typing import AgentConnectorDataType
  from ray.util.annotations import PublicAPI
  from ray.rllib.utils.filter import RunningStat
label_desc: Use image node_id 1 to create a new MeanStdObservationFilterAgentConnector object from inherited base classes: SyncedFilterAgentConnector with example: obj = MeanStdObservationFilterAgentConnector(ctx, demean, destd, clip)