Skip to content

Commit 95a788c

Browse files
committed
fixes #569
1 parent 339db38 commit 95a788c

File tree

9 files changed

+56
-16
lines changed

9 files changed

+56
-16
lines changed

isatools/isatab/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
write_study_table_files,
55
write_assay_table_files,
66
write_value_columns,
7+
flatten,
8+
79
dump_tables_to_dataframes
810
)
911
from isatools.isatab.load import (
@@ -18,3 +20,4 @@
1820
from isatools.isatab.defaults import default_config_dir
1921
from isatools.isatab.utils import IsaTabDataFrame, TransposedTabParser
2022
from isatools.isatab.validate import validate, batch_validate
23+

isatools/isatab/dump/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
from isatools.isatab.dump.core import dump, dumps, dump_tables_to_dataframes
2-
from isatools.isatab.dump.write import write_study_table_files, write_assay_table_files, write_value_columns
2+
from isatools.isatab.dump.write import write_study_table_files, write_assay_table_files, write_value_columns, flatten

isatools/isatab/dump/write.py

+20-8
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,26 @@
2626
)
2727

2828

29+
def flatten(current_list) -> list:
30+
"""
31+
:rtype: object
32+
:param current_list: List
33+
:return: flattened_listL: List
34+
"""
35+
flattened_list = []
36+
if current_list is not None:
37+
38+
for sublist in current_list:
39+
if sublist is not None:
40+
for item in sublist:
41+
flattened_list.append(item)
42+
else:
43+
raise ValueError
44+
else:
45+
raise ValueError
46+
return flattened_list
47+
48+
2949
def write_study_table_files(inv_obj, output_dir):
3050
"""Writes out study table files according to pattern defined by
3151
@@ -49,10 +69,6 @@ def write_study_table_files(inv_obj, output_dir):
4969
break
5070
protrefcount = 0
5171
protnames = dict()
52-
53-
def flatten(current_list):
54-
return [item for sublist in current_list for item in sublist]
55-
5672
columns = []
5773

5874
# start_nodes, end_nodes = _get_start_end_nodes(s_graph)
@@ -255,10 +271,6 @@ def write_assay_table_files(inv_obj, output_dir, write_factor_values=False):
255271
break
256272
protrefcount = 0
257273
protnames = dict()
258-
259-
def flatten(current_list):
260-
return [item for sublist in current_list for item in sublist]
261-
262274
columns = []
263275

264276
paths, indexes = _build_paths_and_indexes(assay_obj.process_sequence)

isatools/isatab/utils.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -388,10 +388,15 @@ def get_pv_columns(label, pv):
388388
"""
389389
columns = None
390390
try:
391-
columns = ["{0}.Parameter Value[{1}]".format(label, pv.category.parameter_name.term)]
391+
if pv.category is not None:
392+
columns = ["{0}.Parameter Value[{1}]".format(label, pv.category.parameter_name.term)]
393+
print(columns)
394+
else:
395+
raise ValueError
392396
except AttributeError:
393397
log.fatal(label, pv)
394-
columns.extend(get_value_columns(columns[0], pv))
398+
if columns is not None:
399+
columns.extend(get_value_columns(columns[0], pv))
395400
return columns
396401

397402

isatools/model/parameter_value.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def __init__(self, category=None, value=None, unit=None, comments=None):
2727

2828
# Shouldn't this be in the setter to avoid manually setting a non-numerical value when a unit is supplied ?
2929
if not isinstance(value, Number) and unit:
30-
raise ValueError("ParameterValue value mus be quantitative (i.e. numeric) if a unit is supplied")
30+
raise ValueError("ParameterValue value must be quantitative (i.e. numeric) if a unit is supplied")
3131
self.value = value
3232
self.unit = unit
3333

isatools/net/mw2isa/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def getblock(container, start_marker, end_marker):
6060

6161

6262
def get_archived_file(mw_study_id):
63-
"""A method of download Metabolomics Workbench archived data from their anonymous FTP site input: a valid Metabolomics
63+
""" A method of download Metabolomics Workbench archived data from their anonymous FTP site input: a valid Metabolomics
6464
Workbench study accession number that should follow this pattern ^ST\d+[6]
6565
:param mw_study_id -> str
6666
:return: success -> boolean

isatools/resources/schemas/isa_model_version_1_0_schemas/core/comment_schema.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{
1+
{
22
"id": "https://raw.githubusercontent.com/ISA-tools/isa-api/master/isatools/resources/schemas/isa_model_version_1_0_schemas/core/comment_schema.json",
33
"$schema": "https://json-schema.org/draft/2020-12/schema",
44
"title": "ISA Comment schema - it corresponds to ISA Comment[] construct",

tests/isatab/test_isatab.py

+21-1
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@
1818
)
1919
from isatools.tests.utils import assert_tab_content_equal
2020
from isatools.tests import utils
21-
from isatools.isatab import IsaTabDataFrame
21+
from isatools.isatab import IsaTabDataFrame, flatten
2222

23+
from isatools.isatab.utils import (
24+
get_comment_column,
25+
get_pv_columns
26+
)
2327

2428
def setUpModule():
2529
if not os.path.exists(utils.DATA_DIR):
@@ -94,6 +98,22 @@ def setUp(self):
9498
def tearDown(self):
9599
shutil.rmtree(self._tmp_dir)
96100

101+
def test_isatab_flatten(self):
102+
test_list = None
103+
with self.assertRaises(ValueError):
104+
flatten(test_list)
105+
106+
def test_isatab_get_pv_columns(self):
107+
columns = []
108+
pp = ProtocolParameter(parameter_name="test_parameter_name")
109+
with self.assertRaises(AttributeError):
110+
pv = ParameterValue(category="test_parameter_name", value=3)
111+
get_pv_columns("Protocol REF", pv)
112+
113+
with self.assertRaises(AttributeError):
114+
pv = ParameterValue(category=pp.parameter_name, value=3)
115+
get_pv_columns("Protocol REF", pv)
116+
97117
def test_isatab_bad_i_file_name(self):
98118
with self.assertRaises(NameError):
99119
isatab.dump(Investigation(), self._tmp_dir, i_file_name='investigation.txt')

tests/model/test_parameter_value.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def test_init(self):
1818
with self.assertRaises(ValueError) as context:
1919
ParameterValue(unit=OntologyAnnotation())
2020
self.assertEqual(str(context.exception),
21-
"ParameterValue value mus be quantitative (i.e. numeric) if a unit is supplied")
21+
"ParameterValue value must be quantitative (i.e. numeric) if a unit is supplied")
2222

2323
def test_category(self):
2424
self.assertIsNone(self.parameter.category)

0 commit comments

Comments
 (0)