code: def convert_and_separate_circuit(circuit: circuits.Circuit,
                                   leave_cliffords: bool = True,
                                   atol: float = 1e-8,
                                   ) -> Tuple[circuits.Circuit, circuits.Circuit]:
      
      circuit = converted_gate_set(circuit,
                                   no_clifford_gates=not leave_cliffords,
                                   atol=atol)
      return pauli_string_half(circuit), regular_half(circuit)
docs: Converts any circuit into two circuits where (circuit_left+circuit_right)
      is equivalent to the given circuit.
  
      Args:
          circuit: Any Circuit that cirq.google.optimized_for_xmon() supports.
              All gates should either provide a decomposition or have a known one
              or two qubit unitary matrix.
  
      Returns:
          (circuit_left, circuit_right)
  
          circuit_left contains only PauliStringPhasor operations.
  
          circuit_right is a Clifford circuit which contains only
          SingleQubitCliffordGate and PauliInteractionGate gates.
          It also contains MeasurementGates if the
          given circuit contains measurements.