|
| 1 | +import openml.config |
| 2 | + |
1 | 3 |
|
2 | 4 | class OpenMLSetup(object): |
3 | 5 | """Setup object (a.k.a. Configuration). |
@@ -25,6 +27,25 @@ def __init__(self, setup_id, flow_id, parameters): |
25 | 27 | self.flow_id = flow_id |
26 | 28 | self.parameters = parameters |
27 | 29 |
|
| 30 | + def __str__(self): |
| 31 | + header = "OpenML Setup" |
| 32 | + header = '{}\n{}\n'.format(header, '=' * len(header)) |
| 33 | + |
| 34 | + base_url = "{}".format(openml.config.server[:-len('api/v1/xml')]) |
| 35 | + fields = {"Setup ID": self.setup_id, |
| 36 | + "Flow ID": self.flow_id, |
| 37 | + "Flow URL": "{}f/{}".format(base_url, self.flow_id), |
| 38 | + "# of Parameters": len(self.parameters)} |
| 39 | + |
| 40 | + # determines the order in which the information will be printed |
| 41 | + order = ["Setup ID", "Flow ID", "Flow URL", "# of Parameters"] |
| 42 | + fields = [(key, fields[key]) for key in order if key in fields] |
| 43 | + |
| 44 | + longest_field_name_length = max(len(name) for name, value in fields) |
| 45 | + field_line_format = "{{:.<{}}}: {{}}".format(longest_field_name_length) |
| 46 | + body = '\n'.join(field_line_format.format(name, value) for name, value in fields) |
| 47 | + return header + body |
| 48 | + |
28 | 49 |
|
29 | 50 | class OpenMLParameter(object): |
30 | 51 | """Parameter object (used in setup). |
@@ -60,3 +81,34 @@ def __init__(self, input_id, flow_id, flow_name, full_name, parameter_name, |
60 | 81 | self.data_type = data_type |
61 | 82 | self.default_value = default_value |
62 | 83 | self.value = value |
| 84 | + |
| 85 | + def __str__(self): |
| 86 | + header = "OpenML Parameter" |
| 87 | + header = '{}\n{}\n'.format(header, '=' * len(header)) |
| 88 | + |
| 89 | + base_url = "{}".format(openml.config.server[:-len('api/v1/xml')]) |
| 90 | + fields = {"ID": self.id, |
| 91 | + "Flow ID": self.flow_id, |
| 92 | + # "Flow Name": self.flow_name, |
| 93 | + "Flow Name": self.full_name, |
| 94 | + "Flow URL": "{}f/{}".format(base_url, self.flow_id), |
| 95 | + "Parameter Name": self.parameter_name} |
| 96 | + # indented prints for parameter attributes |
| 97 | + # indention = 2 spaces + 1 | + 2 underscores |
| 98 | + indent = "{}|{}".format(" " * 2, "_" * 2) |
| 99 | + parameter_data_type = "{}Data Type".format(indent) |
| 100 | + fields[parameter_data_type] = self.data_type |
| 101 | + parameter_default = "{}Default".format(indent) |
| 102 | + fields[parameter_default] = self.default_value |
| 103 | + parameter_value = "{}Value".format(indent) |
| 104 | + fields[parameter_value] = self.value |
| 105 | + |
| 106 | + # determines the order in which the information will be printed |
| 107 | + order = ["ID", "Flow ID", "Flow Name", "Flow URL", "Parameter Name", |
| 108 | + parameter_data_type, parameter_default, parameter_value] |
| 109 | + fields = [(key, fields[key]) for key in order if key in fields] |
| 110 | + |
| 111 | + longest_field_name_length = max(len(name) for name, value in fields) |
| 112 | + field_line_format = "{{:.<{}}}: {{}}".format(longest_field_name_length) |
| 113 | + body = '\n'.join(field_line_format.format(name, value) for name, value in fields) |
| 114 | + return header + body |
0 commit comments