forked from AmbaPant/mantid
-
Notifications
You must be signed in to change notification settings - Fork 1
/
pythonTSV.py
78 lines (64 loc) · 1.98 KB
/
pythonTSV.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
# NScD Oak Ridge National Laboratory, European Spallation Source,
# Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
# SPDX - License - Identifier: GPL - 3.0 +
# pylint: disable=invalid-name
"""
Some simple helpers for dealing with the TSV
"""
def saveToTSV(TSV, value):
"""
This will record the value based on its type,
will only record default TSV data types
"""
if isinstance(value, int):
TSV.storeInt(value)
elif isinstance(value, float):
TSV.storeDouble(value)
elif isinstance(value, bool):
TSV.storeBool(value)
elif isinstance(value, str):
TSV.storeString(value)
else:
raise TypeError("Value is not recognised by TSVSerialiser")
def loadFromTSV(TSV, key, value):
"""
Will return the stored data from a TSV
with from the line called key and with
a data type of value
"""
safeKey = makeLineNameSafe(key)
TSV.selectLine(safeKey)
if isinstance(value, int):
return TSV.readInt()
elif isinstance(value, float):
return TSV.readDouble()
elif isinstance(value, bool):
return TSV.readBool()
elif isinstance(value, str):
return TSV.readString()
else:
raise TypeError("Value is not recognised by TSVSerialiser")
"""
The line name cannot contain:
spaces, underscores or dashes
"""
def makeLineNameSafe(oldName):
newName = removeUnsafeCharacter(oldName, " ")
newName = removeUnsafeCharacter(newName, "_")
newName = removeUnsafeCharacter(newName, "-")
return newName
"""
write a lines and make sure it is safe
"""
def writeLine(TSV, name):
newName = makeLineNameSafe(name)
TSV.writeLine(newName)
def removeUnsafeCharacter(oldName, character):
tmp = oldName.split(character)
newName = ""
for word in tmp:
newName += word[0].upper() + word[1:]
return newName