diff --git a/common/lib/capa/capa/chem/miller.py b/common/lib/capa/capa/chem/miller.py index 3fa49c046b..8a98732874 100644 --- a/common/lib/capa/capa/chem/miller.py +++ b/common/lib/capa/capa/chem/miller.py @@ -16,12 +16,13 @@ def section_to_fraction(distance): to fraction. Return inverted fraction """ + # import ipdb; ipdb.set_trace() if np.isnan(distance): # plane || to axis (or contains axis) print distance, 0 # return inverted fration to a == nan == 1/0 => 0 / 1 return fr.Fraction(0, 1) - elif distance == 0: # plane goes through origin - return fr.Fraction(1, 1) # ERROR, need shift of coordinates + elif math.fabs(distance) <= 0.05: # plane goes through origin, 0.02 - UI delta + return fr.Fraction(1 if distance >= 0 else -1, 1) # ERROR, need shift of coordinates else: # limit_denominator to closest nicest fraction # import ipdb; ipdb.set_trace() @@ -51,7 +52,7 @@ def sub_miller(sections): # output = '(' + ''.join(map(str, map(decimal.Decimal, miller))) + ')' # import ipdb; ipdb.set_trace() output = '(' + ','.join(map(str, map(decimal.Decimal, miller))) + ')' - print 'Miller indices:', output + # print 'Miller indices:', output return output @@ -252,9 +253,17 @@ class Test_Crystallography_Miller(unittest.TestCase): user_input = '{"lattice": "bcc", "points": [["0.00", "0.00", "0.00"], ["1.00", "0.00", "0.00"], ["1.00", "1.00", "1.00"]]}' self.assertTrue(grade(user_input, {'miller': '(0,-1,1)', 'lattice': 'bcc'})) + def test_24(self): + user_input = '{"lattice": "bcc", "points": [["0.66", "0.00", "0.00"], ["0.00", "0.66", "0.00"], ["0.00", "0.00", "0.66"]]}' + self.assertTrue(grade(user_input, {'miller': '(3,3,3)', 'lattice': 'bcc'})) + + def test_25(self): + user_input = u'{"lattice":"","points":[["0.00","0.00","0.01"],["1.00","1.00","0.01"],["0.00","1.00","1.00"]]}' + self.assertTrue(grade(user_input, {'miller': '(1,-1,1)', 'lattice': ''})) + def test_wrong_lattice(self): user_input = '{"lattice": "bcc", "points": [["0.00", "0.00", "0.00"], ["1.00", "0.00", "0.00"], ["1.00", "1.00", "1.00"]]}' - self.assertFalse(grade(user_input, {'miller': '(0,-1,1)', 'lattice': 'fcc'})) + self.assertFalse(grade(user_input, {'miller': '(3,3,3)', 'lattice': 'fcc'})) def suite():