Counting the number of occurrence of a particolar letter in a string iteratively with a moving window like process

1 次查看(过去 30 天)
HI! I have this kind of problem:
STR='AAAQQQPPPTTTCCCPPAAANNNDDDAAATTPPPPNNNAAA'
%Random Amino acidic sequence
Having this kind of sequence I want to count the number of occurrences that I would find using a sliding window process.
Like I give you my window's length and slinding this i get for each iteration a new pattern of aa where i count a new number of a particular residue. In my particular problem I have a cellarray containing 5000 and more sequences so I would prefer to avoid a double for loop. Anyone knows some kind of function or itaration that can be usefull?
Thanks very much!
  2 个评论
Image Analyst
Image Analyst 2018-12-4
Don't worry about a few thousand iterations - it will be very very fast.
So you want some kind of histogram (count) of the letters at each window location as the window slides along? So you'd have thousands of histograms?
Have you tried reshape() to shape it into a 2-D matrix and then sum across the matrix?
Bio_Ing_Sapienza
Bio_Ing_Sapienza 2018-12-4
I don't think reshape() would be so usefull to me. I'm thinking about entering in source code of movmean and starting from there creating a new function doing the same kind of sliding that it does but doing the same thing that couunt() does. Do you know how to get the source code for an inbuilt MATLAB function?Because when I do
open movmean
I get only a description of this funtion and not the code itself

请先登录,再进行评论。

回答(2 个)

Bio_Ing_Sapienza
Bio_Ing_Sapienza 2018-12-4
Here some kind of script I'm looking for
str={'AQQATPLAALTPAALLTTPPAALLTTPPALQQQQCCC' 'AAAPPPTLLLQQQCCCAAAPPPAAATTTCCC'};
w=15;
sum=0
for i=1:2
for j=1:numel(str{1,i})
sum=sum+1
A=count(str{1,i}(1,j:1:w+sum),'A')
Q=count(str{1,i}(1,j:1:w+sum),'Q')
T=count(str{1,i}(1,j:1:w+sum),'T')
L=count(str{1,i}(1,j:1:w+sum),'L')
end
end
Now the problem it's that MATLAB justly says: index exceeds array bound so I want to have a similar mechanism to what I get in movaverage or movsum that make finish the sliding as soon as the window arrives at the end of the string.
  1 个评论
Image Analyst
Image Analyst 2018-12-4
movmean() slides over by one element. reshape() will let you, in effect, move in "jumps" of the window size. How much do you want the window to slide over each time?

请先登录,再进行评论。


Bio_Ing_Sapienza
Bio_Ing_Sapienza 2018-12-4
typically 15

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by