illegal characters in axis names
WrightTools allows me to create an axis with name `'w2=w1'` but this is not a python recognizable object attribute due to the character `=`. 

This is annoying because the way one generally gets the points of an axis is to write `d.w2.points` but in this case, `d.w2=w1.points` is not allowed by python. So one must resort to `d.axes[0].points`.
diff --git a/WrightTools/data.py b/WrightTools/data.py
index 1d9fa3b..b28f94f 100644
--- a/WrightTools/data.py
+++ b/WrightTools/data.py
@@ -54,7 +54,7 @@ class Axis:
     def __init__(self, points, units, symbol_type=None,
                  tolerance=None, file_idx=None,
                  name='', label_seed=[''], **kwargs):
-        self.name = name
+        self.name = wt_kit.string2identifier(name)
         self.tolerance = tolerance
         self.points = np.asarray(points)
         self.units = units
@@ -157,7 +157,7 @@ class Channel:
     def __init__(self, values, units=None, file_idx=None, null=None, signed=None, name='channel',
                  label=None, label_seed=None):
         # import
-        self.name = name
+        self.name = wt_kit.string2identifier(name)
         self.label = label
         self.label_seed = label_seed
         self.units = units
diff --git a/WrightTools/kit.py b/WrightTools/kit.py
index 49e2924..18ee8dd 100644
--- a/WrightTools/kit.py
+++ b/WrightTools/kit.py
@@ -16,6 +16,7 @@ import copy
 import time
 import pytz
 import h5py
+import string
 import warnings
 import dateutil
 import datetime
@@ -1239,6 +1240,32 @@ def string2array(string, sep='\\t'):
     return arr
 
 
+def string2identifier(s):
+    """Turns a string into a valid python identifier.
+
+    Parameters
+    ----------
+    s : string
+        string to convert
+
+    Returns
+    -------
+    str
+        valid python identifier.
+    """
+    # https://docs.python.org/3/reference/lexical_analysis.html#identifiers
+    if s[0] not in string.ascii_letters:
+        s = '_' + s
+    valids = string.ascii_letters + string.digits + '_'
+    out = ''
+    for i, char in enumerate(s):
+        if char in valids:
+            out += char
+        else:
+            out += '_'
+    return out
+
+
 def string2item(string, sep='\\t'):
     # TODO: document
     if string[0] == '\\'' and string[-1] == '\\'':
['WrightTools/data.py', 'WrightTools/kit.py']