| Conditions | 3 |
| Total Lines | 72 |
| Code Lines | 47 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | import pytest |
||
| 4 | @pytest.mark.parametrize('train_args', [ |
||
| 5 | ([6, 8, 'toroid', 'hexagonal']), |
||
| 6 | # ([12, 12, 'toroid', 'rectangular']) |
||
| 7 | ]) |
||
| 8 | def test_somagic_scenario(train_args, somagic, sample_collaped_json): |
||
| 9 | somagic.load_data(sample_collaped_json, id='test_data') |
||
| 10 | ATTRS = ['hybrid', 'indica', 'sativa'] |
||
| 11 | ATTRS2 = ['type_hybrid', 'type_indica', 'type_sativa'] |
||
| 12 | from functools import reduce |
||
| 13 | UNIQUE_FLAVORS = reduce(lambda i, j: set(i).union(set(j)), |
||
| 14 | [_ for _ in somagic._data_manager.datapoints.observations['flavors'] if _ is not None]) |
||
| 15 | |||
| 16 | if not getattr(somagic.dataset, 'feature_vectors', None): |
||
| 17 | cmd = somagic._data_manager.command.select_variables |
||
| 18 | cmd.args = [[{'variable': 'type', 'columns': ATTRS2}, {'variable': 'flavors', 'columns': list(UNIQUE_FLAVORS)}]] |
||
| 19 | cmd.execute() |
||
| 20 | |||
| 21 | assert set([x['variable'] for x in somagic._data_manager.feature_manager.feature_configuration.variables]) == {'type', 'flavors'} |
||
| 22 | |||
| 23 | assert all(type(x) == str for x in somagic._data_manager.datapoints.observations['type']) |
||
| 24 | assert set(ATTRS) == set([_ for _ in somagic._data_manager.datapoints.observations['type']]) |
||
| 25 | |||
| 26 | import pandas as pd |
||
| 27 | assert set(ATTRS) == set(pd.unique(somagic._data_manager.datapoints.observations['type'])) |
||
| 28 | |||
| 29 | cmd = somagic._data_manager.command.one_hot_encoding |
||
| 30 | cmd.args = [somagic._data_manager.datapoints, 'type'] |
||
| 31 | cmd.execute() |
||
| 32 | |||
| 33 | assert all(x in somagic._data_manager.datapoints.observations.columns for x in ATTRS2) |
||
| 34 | assert all(sum([datarow[_] for _ in ATTRS2]) == 1 and len([datarow[_] for _ in ATTRS2 if datarow[_] == 1]) == 1 for index, datarow in somagic._data_manager.datapoints.observations[ATTRS2].iterrows()) |
||
| 35 | |||
| 36 | # cmd2 |
||
| 37 | assert set([type(x) for x in somagic._data_manager.datapoints.observations['flavors']]) == {list, type(None)} |
||
| 38 | |||
| 39 | # assert all([type(x) == list for x in somagic._data_manager.datapoints.observations['flavors']]) |
||
| 40 | |||
| 41 | # set([]) pd.unique(somagic._data_manager.datapoints.observations['flavors']) |
||
| 42 | MAX_FLAVORS_PER_DAATPOINT = max([len(x) for x in [_ for _ in somagic._data_manager.datapoints.observations['flavors'] if type(_) is list]]) |
||
| 43 | MIN = 0 |
||
| 44 | assert len(UNIQUE_FLAVORS) > 5 |
||
| 45 | nb_columns_before = len(somagic._data_manager.datapoints.observations.columns) |
||
| 46 | |||
| 47 | cmd = somagic._data_manager.command.one_hot_encoding_list |
||
| 48 | cmd.args = [somagic._data_manager.datapoints, 'flavors'] |
||
| 49 | cmd.execute() |
||
| 50 | |||
| 51 | assert nb_columns_before + len(UNIQUE_FLAVORS) == len(somagic._data_manager.datapoints.observations.columns) |
||
| 52 | |||
| 53 | assert all(x in somagic._data_manager.datapoints.observations.columns for x in UNIQUE_FLAVORS) |
||
| 54 | assert all(0 <= sum([datarow[_] for _ in UNIQUE_FLAVORS]) <= MAX_FLAVORS_PER_DAATPOINT for index, datarow in somagic._data_manager.datapoints.observations[list(UNIQUE_FLAVORS)].iterrows()) |
||
| 55 | |||
| 56 | import numpy as np |
||
| 57 | setattr(somagic.dataset, 'feature_vectors', np.array(somagic._data_manager.datapoints.observations[ATTRS2 + list(UNIQUE_FLAVORS)])) |
||
| 58 | # somagic.dataset.feature_vectors = np.array(somagic._data_manager.datapoints.observations[ATTRS2 + list(UNIQUE_FLAVORS)]) |
||
| 59 | |||
| 60 | assert hasattr(somagic.dataset, 'feature_vectors') |
||
| 61 | |||
| 62 | print("ID", id(somagic.dataset)) |
||
| 63 | som = somagic.map.train(*train_args[:2], maptype=train_args[2], gridtype=train_args[3]) |
||
| 64 | |||
| 65 | attrs = ('height', 'width', 'type', 'grid_type') |
||
| 66 | assert hasattr(som, 'dataset_name') |
||
| 67 | |||
| 68 | assert som.dataset_name == sample_collaped_json |
||
| 69 | |||
| 70 | assert all(hasattr(som, x) for x in attrs) |
||
| 71 | |||
| 72 | assert som.width == train_args[0] |
||
| 73 | assert som.height == train_args[1] |
||
| 74 | assert som.type == train_args[2] |
||
| 75 | assert som.grid_type == train_args[3] |
||
| 76 | |||
| 116 |