# FXE0008:fx-node-to-onnx
This diagnostic tracks the transformation process from an FX Node to ONNX [Operators](https://onnx.ai/onnx/operators/).

The process of converting FX Node to ONNX Node involves dealing with six distinct node types:
  1. `placeholder`: Represents a module input, maps to an ONNX graph input.
  2. `call_module`: Symbolizes a call to a submodule, maps to an ONNX
  3. `call_method`: Symbolizes a method call. Not yet implemented.
  4. `call_function`: Symbolizes a function call. [Core ATen](https://pytorch.org/docs/stable/ir.html#core-aten-ir) is expected
    as the function call target. The mapping from ATen to ONNX is implemented by [ONNXScript torchlib](https://github.com/microsoft/onnxscript/tree/main/onnxscript/function_libs/torch_lib/ops).
    This [guide](https://pytorch.org/docs/stable/onnx.html#onnx-script-functions) shows how to write and register a custom symbolic function for call_function FX node.
  5. `get_attr`: Indicates an attribute access within the current module. Maps to an ONNX graph initializer.
  6. `output`: Represents the module's output. Maps to an ONNX graph output.

For a granular understanding of how each node type is transformed, refer to the implementation details in `FxOnnxInterpreter`.