アミノ酸配列表記の変換
C言語ケーススタディ

Study C Ver2販売開始のお知らせ

 C言語の勉強や教育用に最適です。
 2004/8/23よりStudy C Ver2の販売を開始しました。
 Study C Ver2の新しい機能については
 こちらをご参照ください。
C言語でゲームプログラマーを目指す方へ
 ■C言語ゲームプログラミング講座
 C言語でのゲームプログラミングを解説する講座
 始めました。

 アミノ酸塩基配列は、1文字の英文字で表現されます(たとえば、AならばAlanine、RならばArginine)。 今回は、この1文字表記をAla、Argなどの3文字表記に変換して表示します。

アミノ酸配列の対応は以下のようになっています。
                                                                               
Ala	A	Alanine
Arg	R	Arginine
Asn	N	Asparagine
Asp	D	Aspartic acid (Aspartate)
Cys	C	Cysteine
Gln	Q	Glutamine
Glu	E	Glutamic acid (Glutamate)
Gly	G	Glycine
His	H	Histidine
Ile	I	Isoleucine
Leu	L	Leucine
Lys	K	Lysine
Met	M	Methionine
Phe	F	Phenylalanine
Pro	P	Proline
Ser	S	Serine
Thr	T	Threonine
Trp	W	Tryptophan
Tyr	Y	Tyrosine
Val	V	Valine
Asx	B	Aspartic acid or Asparagine
Glx	Z	Glutamine or Glutamic acid.
Xaa	X	Any amino acid.

変数aa_strに"Ala"、"Arg"なども文字列をセットします。 セットする順番は、aa_idx配列にセットした順番とします。 また、変換対象の文字列はseq変数に設定しておきます。 seq変数にセットされた文字を先頭から一文字ずつ、aa_idxの内容と比較し一致する場合はaa_strから相当する文字列を取得し表示します。 小文字の場合もあるのでseq内の文字は大文字に変換します。

                                                                               
#include <stdio.h>

char	*aa_str[] = {
		"Ala", "Arg", "Asn", "Asp", "Cys", "Gln", "Glu", "Gly", "His",
		"Ile", "Leu", "Lys", "Met", "Phe", "Pro", "Ser", "Thr", "Trp",
		"Tyr", "Val", "Asx", "Glx", "Xaa"
	};

char	*aa_idx = "ARNDCQEGHILKMFPSTWYVBZX";

main()
{
	char	*seq = "MWQLLLPTALLLLVSAGMRTEDLPKAVVFLEPQWY";
	int	i1;
	char	ch;

	for(;;){
		if(*seq == '\0')
			break;
		for(i1 = 0; ; i1++){
			if(aa_idx[i1] == '\0'){
				printf("***");
				break;
			}
			ch = *seq;
			if(ch >= 'a' && ch <= 'z'){
				ch = ch - 'a' + 'A';
			}
			if(ch == aa_idx[i1]){
				printf("%s", aa_str[i1]);
				break;
			}
		}
		seq++;
		if(*seq != '\0'){
			putchar('-');
		}
	}
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...

 このプログラムは、一文字を調べるためにループを使っています。 実用で使う場合には、aa_idxテーブルをもう少し工夫してループがないように変更したほうがよいでしょう(内側のfor文はなくすことができます)。

お問い合わせ先 C言語のトップページに戻る Copyright(C) 2003 潟Iーキッド