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

1 visualizzazione (ultimi 30 giorni)
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 Commenti
Image Analyst
Image Analyst il 4 Dic 2018
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 il 4 Dic 2018
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

Accedi per commentare.

Risposte (2)

Bio_Ing_Sapienza
Bio_Ing_Sapienza il 4 Dic 2018
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 Commento
Image Analyst
Image Analyst il 4 Dic 2018
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?

Accedi per commentare.


Bio_Ing_Sapienza
Bio_Ing_Sapienza il 4 Dic 2018
typically 15

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by