annotate numerics/conformity.py @ 186:c2f545f32025

move conformity ensurance to separate function
author Jeff Hammel <k0scist@gmail.com>
date Fri, 21 Jul 2017 12:46:55 -0700
parents
children 100697f7c195
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
186
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
1 """
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
2 ensures data is what we assert it to be
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
3 """
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
4
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
5
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
6 class NonConformantRowLengths(Exception):
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
7 """nested arrays have different lengths"""
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
8
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
9
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
10 def ensure_row_length(data):
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
11 """
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
12 ensures that all rows of array `data` are the same
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
13 If so, return that length.
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
14 If not, raise NonConformantArrayLengths
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
15 """
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
16 lengths = [len(i) for i in data]
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
17 if len(set(lengths)) != 1:
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
18 raise NonConformantRowLengths("Different lengths to array_mean: {}".format(' '.join(lengths)))
c2f545f32025 move conformity ensurance to separate function
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
19 return lengths.pop()