色づけ則から変換へ

KABIRA2011-05-15

  • こちらの続き
  • 曖昧なので前提が間違っているかもしれないがとりあえずメモ
  • 2塩基に対する色づけ
  • 色づけ規則を一つ目の塩基から次の塩基へ変換する操作とみなす
    • はじめの塩基がAだとすると
      • r : A \rightarrow T
      • g: T \rightarrow G
    • なので
      • g \circ r:A \rightarrow G
    • であり、g\circ r = y となっている
  • 操作の全体が可換群となっている
    • X = \{ b, r, g, y  \}
  • あるいは四元数は可換ではないが
    • A=\{-1,1 \},T = \{-i,i \}, C = \{-j, j \}, G=\{-k, k  \}とし
    • \begin{cases}  b \equiv  1 \\ r \equiv  i\\ g \equiv j\\ y \equiv k  \end{cases}
    • と考えることで通常の積として表せる
  • 2面体群、クラインの4群
b<-function(x){
	if(x == "A"){y <- "A"}
	if(x == "T"){y <- "T"}
	if(x == "C"){y <- "C"}
	if(x == "G"){y <- "G"}
	return(y)
	}

r<-function(x){
	if(x == "A"){y <- "T"}
	if(x == "T"){y <- "A"}
	if(x == "C"){y <- "G"}
	if(x == "G"){y <- "C"}
	return(y)
	}

g<-function(x){
	if(x == "A"){y <- "C"}
	if(x == "T"){y <- "G"}
	if(x == "C"){y <- "A"}
	if(x == "G"){y <- "T"}
	return(y)
	}

y<-function(x){
	if(x == "A"){y <- "G"}
	if(x == "T"){y <- "C"}
	if(x == "C"){y <- "T"}
	if(x == "G"){y <- "A"}
	return(y)
	}

v<-c("A","T","C","G")

B<-R<-G<-Y<-BB<-BR<-BG<-BY<-RB<-RR<-RG<-RY<-GB<-GR<-GG<-GY<-YB<-YR<-YG<-YY<-c()

for(i in 1:4){
	B[i]<-b(v[i])
	R[i]<-r(v[i])
	G[i]<-g(v[i])
	Y[i]<-y(v[i])
	BB[i]<-b(b(v[i]))
	BR[i]<-b(r(v[i]))
	BG[i]<-b(g(v[i]))
	BY[i]<-b(y(v[i]))
	RB[i]<-r(b(v[i]))
	RR[i]<-r(r(v[i]))
	RG[i]<-r(g(v[i]))
	RY[i]<-r(y(v[i]))
	GB[i]<-g(b(v[i]))
	GR[i]<-g(r(v[i]))
	GG[i]<-g(g(v[i]))
	GY[i]<-g(y(v[i]))
	YB[i]<-y(b(v[i]))
	YR[i]<-y(r(v[i]))
	YG[i]<-y(g(v[i]))
	YY[i]<-y(y(v[i]))
	}


BB == B;BB == R;BB == G;BB == Y;
BR == B;BR == R;BR == G;BR == Y;
BG == B;BG == R;BG == G;BG == Y;
BY == B;BY == R;BY == G;BY == Y;
RB == B;RB == R;RB == G;RB == Y;
RR == B;RR == R;RR == G;RR == Y;
RG == B;RG == R;RG == G;RG == Y;
RY == B;RY == R;RY == G;RY == Y;
GB == B;GB == R;GB == G;GB == Y;
GR == B;GR == R;GR == G;GR == Y;
GG == B;GG == R;GG == G;GG == Y;
GY == B;GY == R;GY == G;GY == Y;
YB == B;YB == R;YB == G;YB == Y;
YR == B;YR == R;YR == G;YR == Y;
YG == B;YG == R;YG == G;YG == Y;
YY == B;YY == R;YY == G;YY == Y;
#変換群のグラフ
xlim<-ylim<-c(0,5.5)
x<-c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4)
y<-c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4)
u<-c(0,0,0,0,1,2,3,4)
v<-c(1,2,3,4,5,5,5,5)

v1<-c(7,3,2,4,3,7,4,2,2,4,7,3,4,2,3,7)
w<-c(7,3,2,4,4,2,3,7)
w2<-c("y","g","r","b","b","r","g","y")
plot(x,y,pch=16,col=v1,cex=9,xlim=xlim,ylim=ylim,main="",frame=FALSE,xaxt="n",yaxt="n",xlab="",ylab="")
par(new=TRUE)
plot(u,v,pch=w2,col=w,cex=5,xlim=xlim,ylim=ylim,main="",frame=FALSE,xaxt="n",yaxt="n",xlab="",ylab="1st")