class_docstr: Represents data from mars tensor
code: def _call_input_tensor(
      self,
      input_tensor: Tensor,
      index: Union[TileableType, pd.Index],
      columns: pd.Index,
      dtypes: pd.Series,
  ):
      if input_tensor.ndim not in {1, 2}:
          raise ValueError("Must pass 1-d or 2-d input")
      inputs = [input_tensor]
  
      if index is not None:
          if input_tensor.shape[0] != len(index):
              raise ValueError(
                  f"index {index} should have the same shape with tensor: {input_tensor.shape[0]}"
              )
          index_value = self._process_index(index, inputs)
      elif isinstance(input_tensor, SERIES_TYPE):
          index_value = input_tensor.index_value
      else:
          stop = input_tensor.shape[0]
          stop = -1 if np.isnan(stop) else stop
          index = self.index = pd.RangeIndex(start=0, stop=stop)
          index_value = parse_index(index)
  
      if columns is not None:
          if not (
              input_tensor.ndim == 1
              and len(columns) == 1
              or input_tensor.shape[1] == len(columns)
          ):
              raise ValueError(
                  f"columns {columns} should have the same shape with tensor: {input_tensor.shape[1]}"
              )
          if not isinstance(columns, pd.Index):
              if isinstance(columns, ENTITY_TYPE):
                  raise NotImplementedError(
                      "The columns value cannot be a tileable"
                  )
              columns = pd.Index(columns)
          columns_value = parse_index(columns, store_data=True)
      else:
          if input_tensor.ndim == 1:
              # convert to 1-d DataFrame
              columns_value = parse_index(
                  pd.RangeIndex(start=0, stop=1), store_data=True
              )
          else:
              columns_value = parse_index(
                  pd.RangeIndex(start=0, stop=input_tensor.shape[1]),
                  store_data=True,
              )
  
      if input_tensor.ndim == 1:
          shape = (input_tensor.shape[0], 1)
      else:
          shape = input_tensor.shape
  
      return self.new_dataframe(
          inputs,
          shape,
          dtypes=dtypes,
          index_value=index_value,
          columns_value=columns_value,
      )
  
imports: from collections import OrderedDict
  from typing import Any, Dict, List, Union
  import numpy
  import pandas
  from ...None import opcodes
  from ...core import ENTITY_TYPE, OutputType, recursive_tile
  from ...core.context import Context
  from ...serialization.serializables import KeyField, AnyField
  from ...tensor.core import Tensor
  from ...tensor.datasource import tensor
  from ...tensor.utils import unify_chunks
  from ...typing import EntityType, TileableType
  from ...utils import has_unknown_shape
  from ..core import INDEX_TYPE, SERIES_TYPE
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import parse_index
label_desc: Use image node_id 6 for calling the DataFrameFromTensor obj's underlying member method code with example usage: obj._call_input_tensor(input_tensor, index, columns, dtypes) and returns: self