I want to calculate the frequency of occurrence of each letter in all columns: for example I have this three sequences :
seq1=AATC
seq2=GCCT
seq3=ATCA
<
As with my answer to your last question, you should wrap your functionality in a function:
def lettercount(pos):
return {c: pos.count(c) for c in pos}
Then you can easily apply it to the tuples from zip
:
counts = [lettercount(t) for t in zip(seq1, seq2, seq3)]
Or combine it into the existing loop:
...
counts = []
for position in zip(seq1, seq2, seq3): # sets at same position
counts.append(lettercount(position))
for pair in combinations(position, 2): # pairs within set
...
Here:
sequences = ['AATC',
'GCCT',
'ATCA']
f = zip(*sequences)
counts = [{letter: column.count(letter) for letter in column} for column in f]
print(counts)
Output (reformatted):
[{'A': 2, 'G': 1},
{'A': 1, 'C': 1, 'T': 1},
{'C': 2, 'T': 1},
{'A': 1, 'C': 1, 'T': 1}]
Salient features:
seq1
, seq2
, etc., we put them into a list.*
operator.