Skip to content

Commit

Permalink
Merge pull request #507 from GavinHuttley/develop
Browse files Browse the repository at this point in the history
BUG: MotifCounts.to_freq_array() now handles a 1D array
  • Loading branch information
GavinHuttley committed Jan 29, 2020
2 parents 2bd3f68 + 4f0a662 commit a5c1296
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
14 changes: 9 additions & 5 deletions src/cogent3/core/profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,12 @@ def _to_freqs(self, pseudocount=0):
data = self.array
if pseudocount:
data = data + pseudocount
row_sum = data.sum(axis=1)
freqs = data / numpy.vstack(row_sum)
axis = None if self.array.ndim == 1 else 1
row_sum = data.sum(axis=axis)
if axis is not None:
freqs = data / numpy.vstack(row_sum)
else:
freqs = data / row_sum
return freqs

def to_freq_array(self, pseudocount=0):
Expand All @@ -231,9 +235,9 @@ def to_freq_array(self, pseudocount=0):
a MotifFreqsArray
"""
freqs = self._to_freqs(pseudocount=pseudocount)
return MotifFreqsArray(
freqs, self.template.names[1], row_indices=self.template.names[0]
)
motifs = self.template.names[-1]
row_indices = None if self.array.ndim == 1 else self.template.names[0]
return MotifFreqsArray(freqs, motifs, row_indices=row_indices)

def to_pssm(self, background=None, pseudocount=0):
"""returns a PSSM array
Expand Down
8 changes: 8 additions & 0 deletions tests/test_core/test_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,14 @@ def test_to_freqs_pseudocount(self):
expect = adj / vstack(adj.sum(axis=1))
assert_allclose(got.array, expect)

def test_to_freqs_1d(self):
"""produce a freqs array from 1D counts"""
data = [43, 48, 114, 95]
total = sum(data)
a = MotifCountsArray([43, 48, 114, 95], motifs=("T", "C", "A", "G"))
f = a.to_freq_array()
assert_allclose(f.array, array([v / total for v in data], dtype=float))

def test_to_pssm(self):
"""produces a PSSM array"""
data = array(
Expand Down

0 comments on commit a5c1296

Please sign in to comment.