- 昨日の続き
- ライフゲームにアイディアをとって、多型性の維持のモデル化を考える
- モデルなので、こんなに簡単でいいの?というレベルを目指す
- 敢えて、2倍体とか有性生殖とかも考慮しないで行うことを考える
- 想定しているのは、HLA領域の多型性のことなど
- モデル
- 仮定
- 異なる種類の虫がいる
- 虫は円周状の1次元格子空間に存在する
- 異なる種類の虫は、同じ場所に共存できる
- 同一種類の虫は、同じ場所には1匹しか存在できない
- 1か所に存在できる虫の数は制約がある
- 少なすぎる場合と多すぎる場合とのどちらの場合も、虫は全滅する
- 虫は、常に、増えようとする
- 隣の格子に自分と同種の虫がいないとき、そこに自分の子を産む(ただし、確率的に)
- 遺伝的アナロジー(細かいことを挙げると、何が何を表しているのか、うまく説明がつかない点があることは承知の上。多様度の維持とその変遷に関するシミュレーションのみを考える)
- 異なる種類とは、座位のこと
- 虫とは、アレルのこと
- 空間とは、染色体の繁殖空間のこと
- ある場所で虫が全滅するとは、そこの染色体が生存に失敗したことを意味する
- 染色体がいない「空き空間」には、常に、新規の染色体を生じさせる力(繁殖力)がある
- 掲載図は、横軸に空間、縦軸に虫の種類で、時間経過を追って映画にしてある
Nx<-100
Nm<-100
Nt<-2000
A<-array(0,c(Nx,Nm,Nt))
Xrange<-(Nx/2-20):(Nx/2+20)
st<-sample(Xrange,Nm,replace=TRUE)
end<-sample(Xrange,Nm,replace=TRUE)
for(i in 1:Nm){
A[st[i]:end[i],i,1]<-1
}
image(A[,,1])
LoL<-0.2*Nm
UpL<-0.8*Nm
S<-apply(A[,,1],1,sum)
dead<-((S<=LoL) + ( S>=UpL))
A[which(dead==1),,1]<-0
image(A[,,1])
for(i in 2:Nt){
A[,,i]<-A[,,i-1]
for(j in 1:Nx){
pre<-j-1
post<-j+1
if(pre<1)pre<-Nx
if(post>Nx)post<-1
for(k in 1:Nm){
if(A[j,k,i]==0){
if(A[pre,k,i-1]==1 || A[post,k,i-1]==1){
A[j,k,i]<-sample(c(0,1),1)
}
}
}
}
S<-apply(A[,,i],1,sum)
dead<-((S<=LoL) + ( S>=UpL))
A[which(dead==1),,i]<-0
image(A[,,i])
}
for(i in 1:Nt){
filenum=10000+i
filename=paste("test",filenum,".jpeg",sep="")
jpeg(file=filename)
image(A[,,i])
dev.off()
}