docs: def reg_project(self, field_list=None, all_but=None, new_field_dict=None):
          """
          *Wrapper of* ``PROJECT``
  
          Project the region data based on a list of field names
  
          :param field_list: list of the fields to select
          :param all_but: keep only the region fields different from the ones
                 specified
          :param new_field_dict: an optional dictionary of the form {'new_field_1':
                 function1, 'new_field_2': function2, ...} in which every function
                 computes the new field based on the values of the others
          :return: a new GMQLDataset
  
          An example of usage::
  
              new_dataset = dataset.reg_project(['pValue', 'name'],
                                              {'new_field': dataset.pValue / 2})
  
              new_dataset = dataset.reg_project(field_list=['peak', 'pvalue'],
                                                new_field_dict={'new_field': dataset.pvalue * dataset['cell_age', 'float']})
  
          Notice that you can use metadata attributes for building new region fields.
          The only thing to remember when doing so is to define also the type of the output region field
          in the metadata attribute definition (for example, :code:`dataset['cell_age', 'float']` is
          required for defining the new attribute :code:`new_field` as float).
          In particular, the following type names are accepted: 'string', 'char', 'long', 'integer',
          'boolean', 'float', 'double'.
  
          """
          return self.project(projected_regs=field_list, all_but_regs=all_but, new_field_dict=new_field_dict)