|
| 1 | +import openml.config |
| 2 | +import pandas as pd |
| 3 | + |
1 | 4 |
|
2 | 5 | class OpenMLSetup(object): |
3 | 6 | """Setup object (a.k.a. Configuration). |
@@ -26,17 +29,21 @@ def __init__(self, setup_id, flow_id, parameters): |
26 | 29 | self.parameters = parameters |
27 | 30 |
|
28 | 31 | def __str__(self): |
29 | | - object_dict = self.__dict__ |
30 | | - output_str = '' |
31 | | - header = 'OpenML Setup' |
| 32 | + header = "OpenML Setup" |
32 | 33 | header = '{}\n{}\n'.format(header, '=' * len(header)) |
33 | | - setup = '{:.<15}: {}\n'.format("Setup ID", object_dict['setup_id']) |
34 | | - flow = '{:.<15}: {}\n'.format("Flow ID", object_dict['flow_id']) |
35 | | - url = 'https://www.openml.org/f/' + str(object_dict['flow_id']) |
36 | | - flow = flow + '{:.<15}: {}\n'.format("Flow URL", url) |
37 | | - params = '{:.<15}: {}\n'.format("# of Parameters", len(object_dict['parameters'])) |
38 | | - output_str = '\n' + header + setup + flow + params + '\n' |
39 | | - return(output_str) |
| 34 | + |
| 35 | + base_url = "{}".format(openml.config.server[:-len('api/v1/xml')]) |
| 36 | + fields = pd.Series({"Setup ID": self.setup_id, |
| 37 | + "Flow ID": self.flow_id, |
| 38 | + "Flow URL": "{}f/{}".format(base_url, self.flow_id), |
| 39 | + "# of Parameters": len(self.parameters)}) |
| 40 | + order = ["Setup ID", "Flow ID", "Flow URL", "# of Parameters"] |
| 41 | + fields = list(fields.reindex(order).dropna().iteritems()) |
| 42 | + |
| 43 | + longest_field_name_length = max(len(name) for name, value in fields) |
| 44 | + field_line_format = "{{:.<{}}}: {{}}".format(longest_field_name_length) |
| 45 | + body = '\n'.join(field_line_format.format(name, value) for name, value in fields) |
| 46 | + return header + body |
40 | 47 |
|
41 | 48 |
|
42 | 49 | class OpenMLParameter(object): |
@@ -75,20 +82,31 @@ def __init__(self, input_id, flow_id, flow_name, full_name, parameter_name, |
75 | 82 | self.value = value |
76 | 83 |
|
77 | 84 | def __str__(self): |
78 | | - object_dict = self.__dict__ |
79 | | - output_str = '' |
80 | | - header = 'OpenML Parameter' |
| 85 | + header = "OpenML Parameter" |
81 | 86 | header = '{}\n{}\n'.format(header, '=' * len(header)) |
82 | | - id = '{:.<18}: {}\n'.format("ID", object_dict['id']) |
83 | | - flow = '{:.<18}: {}\n'.format("Flow ID", object_dict['flow_id']) |
84 | | - flow = flow + '{:.<18}: {}\n'.format("Flow Name", object_dict['flow_name']) |
85 | | - flow = flow + '{:.<18}: {}\n'.format("Flow Full Name", object_dict['full_name']) |
86 | | - url = 'https://www.openml.org/f/' + str(object_dict['flow_id']) |
87 | | - flow = flow + '{:.<18}: {}\n'.format("Flow URL", url) |
88 | | - filler = " |" + "_" * 2 |
89 | | - params = '{:.<18}: {}\n'.format("Parameter Name", object_dict['parameter_name']) |
90 | | - params = params + filler + '{:.<14}: {}\n'.format("Data_Type", object_dict['data_type']) |
91 | | - params = params + filler + '{:.<14}: {}\n'.format("Default", object_dict['default_value']) |
92 | | - params = params + filler + '{:.<14}: {}\n'.format("Value", object_dict['value']) |
93 | | - output_str = '\n' + header + id + flow + params + '\n' |
94 | | - return(output_str) |
| 87 | + |
| 88 | + base_url = "{}".format(openml.config.server[:-len('api/v1/xml')]) |
| 89 | + fields = pd.Series({"ID": self.id, |
| 90 | + "Flow ID": self.flow_id, |
| 91 | + # "Flow Name": self.flow_name, |
| 92 | + "Flow Name": self.full_name, |
| 93 | + "Flow URL": "{}f/{}".format(base_url, self.flow_id), |
| 94 | + "Parameter Name": self.parameter_name}) |
| 95 | + # indented prints for parameter attributes |
| 96 | + # indention = 2 spaces + 1 | + 2 underscores |
| 97 | + indent = "{}|{}".format(" " * 2, "_" * 2) |
| 98 | + parameter_data_type = "{}Data Type".format(indent) |
| 99 | + parameter_default = "{}Default".format(indent) |
| 100 | + parameter_value = "{}Value".format(indent) |
| 101 | + fields = fields.append(pd.Series({parameter_data_type: self.data_type, |
| 102 | + parameter_default: self.default_value, |
| 103 | + parameter_value: self.value})) |
| 104 | + |
| 105 | + order = ["ID", "Flow ID", "Flow Name", "Flow URL", "Parameter Name", |
| 106 | + parameter_data_type, parameter_default, parameter_value] |
| 107 | + fields = list(fields.reindex(order).dropna().iteritems()) |
| 108 | + |
| 109 | + longest_field_name_length = max(len(name) for name, value in fields) |
| 110 | + field_line_format = "{{:.<{}}}: {{}}".format(longest_field_name_length) |
| 111 | + body = '\n'.join(field_line_format.format(name, value) for name, value in fields) |
| 112 | + return header + body |
0 commit comments