Hello, I am trying to I get certain amino acids from my sequence, however, my output only gives that there are 3 of the amino acids I am looking for but I want it to tell me the amino acid name and create a new string.
I would also want my code to run other larger sequences if need be.
I am not sure if a swich case was the best approach to do this task. Can someone please help me, thank you!
aminoacids = 'MetArgGlyLeuAspTrpAspGlyAsn'
for d = 1:3:(length(aminoacids)-2)
rgroup = aminoacids(d:(d+2));
switch (rgroup)
case {'Arg', 'Asp', 'Cys', 'Glu','Lys','Tyr'}
disp(aminoacids)
end
end

 採用された回答

Stephen23
Stephen23 2022 年 11 月 25 日

0 投票

C = {'Arg', 'Asp', 'Cys', 'Glu','Lys','Tyr'};
T = 'MetArgGlyLeuAspTrpAspGlyAsn';
R = join(string(C),'|');
A = regexp(T,R,'match')
A = 1×3 cell array
{'Arg'} {'Asp'} {'Asp'}

4 件のコメント

Miriam Contreras Castillo
Miriam Contreras Castillo 2022 年 11 月 26 日
Thank you Stephen23! Is there also a way to get the first and last amino acid with regexp? I looked at the matlab documentation for regexp but I am not sure how to write it?
Walter Roberson
Walter Roberson 2022 年 11 月 26 日
The match is in order, so A{1} and A{end} are the first and last matches.
Miriam Contreras Castillo
Miriam Contreras Castillo 2022 年 11 月 26 日
編集済み: Miriam Contreras Castillo 2022 年 11 月 26 日
Thank you! But this only works for cell type data? What if it is just a string?
Stephen23
Stephen23 2022 年 11 月 26 日
編集済み: Stephen23 2022 年 11 月 26 日
"But this only works for cell type data? What if it is just a string?"
It works for string arrays too:
S = ["Arg", "Asp", "Cys", "Glu", "Lys", "Tyr"];
T = "MetArgGlyLeuAspTrpAspGlyAsn";
R = join(S,'|');
A = regexp(T,R,'match')
A = 1×3 string array
"Arg" "Asp" "Asp"

サインインしてコメントする。

その他の回答 (1 件)

Paul
Paul 2022 年 11 月 26 日
編集済み: Paul 2022 年 11 月 26 日

0 投票

Hi Miriam
I'm not quite sure what you're looking for. However, transforming everything to strings might offer a path forward via standard Matlab functions and indexing. For example
aminoacids = 'MetArgGlyLeuAspTrpAspGlyAsn';
C = string({'Arg', 'Asp', 'Cys', 'Glu','Lys','Tyr'})
S = string(reshape(aminoacids,3,[]).')
Find all the acids in S that are present in C
S(ismember(S,C))
ans = 3×1 string array
"Arg" "Asp" "Asp"

カテゴリ

ヘルプ センター および File ExchangeProtein and Amino Acid Sequence Analysis についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by