1. 程式人生 > >模擬生命_吸煙致癌?

模擬生命_吸煙致癌?

sha bsp 註意 分享 lob 集合 會有 環境汙染 height

上篇文章(致癌離我們遠嗎?)我們了解癌癥基本常識,下面我們討論一下癌細胞產生原因。

醫生常說抽煙致癌,不要抽煙,但實際生活中抽煙長壽的人不少,我的姨婆九十多歲了,每日抽煙喝酒,身體也不錯。決定癌癥的因素很多,例如遺傳,飲食,起居時間,居住環境,化工汙染等等。下圖轉自一份醫學研究,說明沒有任何食物百分之百致癌或抑制癌癥。

技術分享


什麽人容易患癌癥?當諸多不利因素累積,超過一定量後,患癌癥概率大。我們假設一個數據挖掘的分類器cancer,分類器由六個因素組成,當六個因素得分總和超過3時為癌癥,得分總和小於3時為非癌癥。

1表示是,0表示否。 抽煙=1分,非均衡飲食=1分,喝酒=1分,睡眠不足7小時=1分,環境汙染=1分,情緒抑郁=1分;反之亦然不抽煙=0分,不喝酒=0分,睡眠充足=0分,環境無汙染=0分,情緒良好=0分。張三抽煙,非均衡飲食,抽煙,喝酒,睡眠不足,環境汙染,情緒良好,總分為1+1+1+1+1+0=5分,總得分大於3,分類器判斷張三患癌癥概率高。李四不抽煙,不喝酒,睡眠充足,環境無汙染,情緒不好,總分為0+0+0+0+0+1=1分,總得分小於3,分類器判斷李四患癌癥概率低(例子只是假設,方便大家理解分類器原理)。

根據分類器原理,我們用python來可視化細胞生死,模擬生命。從一個隨機初始化的二維方形網格開始,網格中的每一個細胞狀態可能是生或死,由其相鄰8個細胞決定。在這個規則下可以使用卷積進行計算,我們需要scipy工具完成卷積計算。

Anaconda下展示,生成閃爍的動態細胞圖,細胞生死會不停變化,直到停止。

做過蒙特卡洛試驗的朋友會有感悟:決定一個系統走勢是多因素構成,而非單一因素決定。

技術分享

程序調用了python的pygame,numpy,scipy三個模塊。Pygame用於寫遊戲;numpy用於矩陣運算;scipy是numpy的高級版本,用於更高級的自然科學應用,例如信號處理,傅裏葉分析。

此函數用於 繪制十字架。

def draw_cross(pixar):

(posx,posy)=pygame.mouse.get_pos()

pixar[posx,:]=1

pixar[:,posy]=1

此函數用於隨機初始化網格

def random_init(n):

return np.random.random_integers(0,1,(n,n))

所有代碼最終匯集於文章末尾。

(放大可視化的細胞集合圖,每一個細胞狀態可能是生或死,由其相鄰8個細胞決定)

技術分享

經過計算機模擬生命,我們得到最終答案。癌癥是由多因素共同決定的,而非單因素決定。當你的飲食,起居,辦公環境,情緒,輻射,免疫力都很糟時,你要註意了,積極調整,更換環境,否則死神就可能來敲門了。

代碼來自Ivan Idris物理博士的分享,經本人測試,可以完美運行,[email protected]

模擬生命_吸煙致癌?