Adding further Tables

The tables that are currently supported are listed in FitBenchmarking Output. In order to add a new table, you will need to:

  1. Give the table a name <table_name>. This will be used by users when selecting this output from FitBenchmarking.

  2. Create fitbenchmarking/results_processing/<table_name>_table.py which contains a new subclass of Table. The main functions to change are:

    • abstract Table.get_value(result)

      Gets the main value to be reported in the tables for a given result

      If more than one value is returned please note that the first value will be used in the default colour handling.

      Parameters

      result (FittingResult) – The result to generate the values for.

      Returns

      The value to convert to a string for the tables

      Return type

      tuple(float)

    • Table.display_str(value)

      Converts a value generated by get_value() into a string respresentation to be used in the tables. Base class implementation takes the relative and absolute values and uses self.output_string_type as a template for the string format. This can be overridden to adequately display the results.

      Parameters

      value (tuple) – Relative and absolute values

      Returns

      string representation of the value for display in the table.

      Return type

      str

    Additional functions that may need to be overridden are:

    • static Table.get_error_str(result, error_template='[{}]')

      Get the error string for a result based on error_template This can be overridden if tables require different error formatting.

      Parameters

      result (FittingResult) – The result to get the error string for

      Returns

      A string representation of the error

      Return type

      str

    • Table.get_link_str(result)

      Get the link as a string for the result. This can be overridden if tables require different links.

      Parameters

      result (FittingResult) – The result to get the link for

      Returns

      The link to go to when the cell is selected

      Return type

      string

    • static Table.vals_to_colour(vals, cmap, cmap_range, log_ulim)

      Converts an array of values to a list of hexadecimal colour strings using logarithmic sampling from a matplotlib colourmap according to relative value.

      Parameters
      • vals (list[float]) – values in the range [0, 1] to convert to colour strings

      • cmap (matplotlib colourmap object) – matplotlib colourmap

      • cmap_range (list[float], 2 elements) – values in range [0, 1] for colourmap cropping

      • log_ulim (float) – log10 of worst shading cutoff value

      Returns

      colours as hex strings for each input value

      Return type

      list[str]

  3. Extend the table_type option in PLOTTING following the instructions in Adding new Options.

  4. Document the new table class is by setting the docstring to be the description of the table, and add to FitBenchmarking Output.

  5. Create tests for the table in fitbenchmarking/results_processing/tests/test_tables.py. This is done by generating, ahead of time using the results problems constructed in fitbenchmarking/results_processing/tests/test_tables.generate_mock_results, both a HTML and text table output as the expected result and adding the new table name to the global variable SORTED_TABLE_NAMES. This will automatically run the comparison tests for the tables.