nodes: 0, module; 1, function_definition; 2, function_name:from_gff3; 3, parameters; 4, block; 5, identifier:path; 6, default_parameter; 7, default_parameter; 8, default_parameter; 9, default_parameter; 10, default_parameter; 11, default_parameter; 12, expression_statement; 13, expression_statement; 14, if_statement; 15, identifier:attributes; 16, None; 17, identifier:region; 18, None; 19, identifier:score_fill; 20, unary_operator; 21, identifier:phase_fill; 22, unary_operator; 23, identifier:attributes_fill; 24, string; 25, identifier:dtype; 26, None; 27, comment:"""Read a feature table from a GFF3 format file.
  
          Parameters
          ----------
          path : string
              File path.
          attributes : list of strings, optional
              List of columns to extract from the "attributes" field.
          region : string, optional
              Genome region to extract. If given, file must be position
              sorted, bgzipped and tabix indexed. Tabix must also be installed
              and on the system path.
          score_fill : int, optional
              Value to use where score field has a missing value.
          phase_fill : int, optional
              Value to use where phase field has a missing value.
          attributes_fill : object or list of objects, optional
              Value(s) to use where attribute field(s) have a missing value.
          dtype : numpy dtype, optional
              Manually specify a dtype.
  
          Returns
          -------
          ft : FeatureTable
  
          """; 28, assignment; 29, comparison_operator:a is None; 30, block; 31, else_clause; 32, integer:1; 33, integer:1; 34, string_content:.; 35, identifier:a; 36, call; 37, identifier:a; 38, None; 39, return_statement; 40, block; 41, identifier:gff3_to_recarray; 42, argument_list; 43, None; 44, return_statement; 45, identifier:path; 46, keyword_argument; 47, keyword_argument; 48, keyword_argument; 49, keyword_argument; 50, keyword_argument; 51, keyword_argument; 52, call; 53, identifier:attributes; 54, identifier:attributes; 55, identifier:region; 56, identifier:region; 57, identifier:score_fill; 58, identifier:score_fill; 59, identifier:phase_fill; 60, identifier:phase_fill; 61, identifier:attributes_fill; 62, identifier:attributes_fill; 63, identifier:dtype; 64, identifier:dtype; 65, identifier:FeatureTable; 66, argument_list; 67, identifier:a; 68, keyword_argument; 69, identifier:copy; 70, False
code: def from_gff3(path, attributes=None, region=None, score_fill=-1, phase_fill=-1,
                    attributes_fill='.', dtype=None):
          """Read a feature table from a GFF3 format file.
  
          Parameters
          ----------
          path : string
              File path.
          attributes : list of strings, optional
              List of columns to extract from the "attributes" field.
          region : string, optional
              Genome region to extract. If given, file must be position
              sorted, bgzipped and tabix indexed. Tabix must also be installed
              and on the system path.
          score_fill : int, optional
              Value to use where score field has a missing value.
          phase_fill : int, optional
              Value to use where phase field has a missing value.
          attributes_fill : object or list of objects, optional
              Value(s) to use where attribute field(s) have a missing value.
          dtype : numpy dtype, optional
              Manually specify a dtype.
  
          Returns
          -------
          ft : FeatureTable
  
          """
  
          a = gff3_to_recarray(path, attributes=attributes, region=region,
                               score_fill=score_fill, phase_fill=phase_fill,
                               attributes_fill=attributes_fill, dtype=dtype)
          if a is None:
              return None
          else:
              return FeatureTable(a, copy=False)