文章

目前顯示的是 七月, 2018的文章

用科學Maker社團工具,解剖觀察果蠅卵巢睪丸與精子

圖片
在「 科學Maker 」社團裡,江老師前些時候推出了新設計的「超級物鏡」(大約等於20x物鏡),然後也鼓勵大家用 超級物鏡觀察精子 。 那時候我就想唉呦,觀察也不一定要人類的對吧,其實也可以看其他生物的啊。第一個我想到的是蕨類的,可是看看住家附近的,結果沒找到原葉體。後來看到回應裡Eredh Ereb 說據說果蠅的精子尾巴超長長長。 是有多長?在泛科學這篇《 鄉民的30公分哪夠看!二裂果蠅5.8公分等級的超大型精子 》寫到 有些果蠅(Drosophila)的精子尾巴非常長,有種學名叫作 Drosophila bifurca 的二裂果蠅,擁有記錄上最長的精子,尺寸大到要以公分計算,一隻精子從頭到尾可以長達「5.8 公分」 喔喔,一隻果蠅還不到一公分,牠精子就5.8公分,這也太厲害了吧,真是想親眼看看啊。不過我得先一件一件事解決。 我可能找不到二裂果蠅,住家附近能找到的大概是黑腹果蠅( Drosophila melanogaster ),我猜精子大概也很長。 我沒解剖過果蠅,不知道哪裡下刀。而且它睪丸長怎樣啊? 我得抓到果蠅啊 第二件事好解決一些,就上youtube找「fruit fly dissection」,可以看到解剖 腦部 、 卵巢 、 睪丸 的影片。那長怎樣呢?就查圖片 fruit fly ovary或是fruit fly testis,看一看大概就有個底了。 那果蠅哪裡來呢?當然就自己抓啊。得先準備好陷阱。其實我一開始笨笨的,想說弄個塑膠袋裝果皮果肉,然後等果蠅來,我再用蟲網撈起來。這樣的確有果蠅來,但是用蟲網卻抓不到啦,果蠅可是比蟲網的洞還小啊。 準備寶特瓶(我覺得四方型的茶飲罐不錯),把頭切開反插回去 斜立在牆邊,不是這樣就好喔,要記得放一些果皮果肉進去啊。 這四罐左至右分別是鳳梨果皮、臍橙和奇異果皮、香蕉果皮帶一小塊果肉、又是鳳梨果皮。這裡順便做個實驗,看看哪一種最容易吸引果蠅,結果啊,是香蕉呢。看到留在罐子裡的大部分都是母果蠅(還好還有一些公果蠅可以做實驗),它們千里迢迢來這邊,其實也順便找到產卵的地方,香蕉對牠們應該是很不錯的培養基吧。 接下來拿個大塑膠袋,把罐子放進去。在袋子裡把罐子打開,讓果蠅飛進袋子,我再把罐子拿到袋子外。裝了果蠅的塑膠袋,再綁起來放在冰箱冷凍庫幾十秒麻醉果蠅就可以進行實驗了。

Imagej配合Weka機器學習plugin做segmentation 偵測葉片氣孔位置 並裁切出單圖

圖片
這標題說得好複雜,希望一張圖就看懂在幹嘛。中間的圖是一張葉片下表皮經過表面精密翻模翻出來的照片(詳見 樟樹葉的表面翻模與著色 ),旁邊的小圖是把個別氣孔裁切出來存出的小圖。即使照片裡有幾百幾千個氣孔,做好這件事也不用一分鐘,這就是這篇要做的事情。 所需要的工具就是fiji這個特別的imagej。 下載位置: https://fiji.sc/ 它預載了 Trainable Weka Segmentation 這個plugin,我就是用這個plugin來偵測出氣孔位置。然後再用imagej的巨集(Macro),把偵測出的氣孔存成單張圖片。 整個流程我會用四部影片來說明: 機器學習的過程一看名字就覺得好複雜,但是透過這個plugin其實很簡單。就是你先教機器那個是保衛細胞,哪些是表皮細胞,然後訓練機器找出規則,讓它自己找出其他的保衛細胞,訓練好的分類器(Classifier),可以用在同類型的其他圖片上找氣孔。 第一部影片是針對單張圖片做分類器的訓練,第二部則是用多張圖片做成Stack,套用已經訓練的分類器直接找出氣孔。 第三部影片是利用分類器分類出來的圖片轉成ROI Manager的選取區,就可以在原圖上找到氣孔位置。這部影片會輪流示範單張圖片和多張圖片疊成的Stack要怎麼做這件事。 第四部影片是利用巨集來把單個氣孔裁切成單張圖,Macro是用來簡化重複工作的,首先利用record macro的方式找出每個滑鼠點擊的指令的文字命令是什麼,影片裡會教怎麼找,然後利用迴圈重複執行就可以。 影片中使用的Macro是這個,使用者要根據自己的狀況改一下檔名和存檔位置 for (i=0; i<roiManager("count"); ++i) {     roiManager("Select", i);     run("Duplicate...", "title=crop");     run("Make Inverse");     setForegroundColor(0, 0, 0);     run("Fill", "slice&quo

用imagej加上Macro巨集畫輔助線測量蛋徑

圖片
這個文章要從這篇《 用openscad畫個蛋 》說起。 因為要用OpenScad畫出蛋,那麼勢必需要測量一顆蛋在不同高度的徑長。一種方式大概就是直接在蛋上劃線,再用游標尺夾蛋測量。不過如果要畫的蛋只有照片的話,那麼怎樣做比較方便呢? 我提議就用imagej來畫輔助線測量吧,但是需要用到Macro來劃線。我在Imagej的Macro資料庫裡找到 Grid_Overlay這個Macro ,看一看我只要修改一些就可以符合需求。 如果是直接從Blog的文章複製代碼過去的話,作法是在Imagej的功能表選擇Plugins/Macro/Record...,把代碼貼到視窗後,再按下Create。接著在新出現的視窗上找到Run按下去就可以執行了。 執行後的畫面,可以在畫面中劃上規律格線,有了參考格線就比較方便劃線測量了。    requires("1.43j");    color = "red";    nLines = 6;    if (nImages==0) run("Boats (356K)");    run("Remove Overlay");    width = getWidth;    height = getHeight;    tileHeight = height/(nLines+1);    tileWidth = tileHeight;    xoff=tileWidth;    while (true && xoff<width) { // draw vertical lines       makeLine(xoff, 0, xoff, height);       run("Add Selection...", "stroke="+color);       xoff += tileWidth;    }    yoff=tileHeight;    while (true && yoff<height) { // draw horizonal lines       makeLine(0, yoff, width, yoff

用openscad畫個蛋

圖片
同事之前帶個專題研究,要用3D印表機印出蛋模型來做一些研究。不過要怎麼做個蛋模型呢?於是我出了主意,不如用OpenScad來畫蛋吧。只要修改一些參數,就可以做出不同的蛋模型。 以下這個程式碼,基本上只要修改r0到r10的參數就可以了。 整個程式的意義是畫出11個圓形,每個圓形間隔100(由參數space設定),每個圓形的半徑就分別是r0到r10。11個圓形疊在一起後,再用hull把那些圓形包起來,就會像一個卵形。下圖的粉紅色區塊就是還沒有被hull包起來的樣子。接下來再用一些程式把2D平面的卵形變成立體的卵。 r0 = 0; r1 = 413/2; r2 = 534/2; r3 = 567/2; r4 = 557/2; r5 = 498/2; r6 = 372/2; r7 = 0; r8 = 0; r9 = 0; r10 = 0; space =100; trans = max (r0,r1, r2,r3,r4,r5,r6,r7,r8,r9,r10); bigSqure = 4000; rotate_extrude(covexity= 10){     intersection(){     square(bigSqure);     rotate([0,0,90])     translate([trans,0,0])         hull(){         translate ([space*0,0,0])  circle(r0,center = true,$fn = 100);         translate ([space*1,0,0])  circle(r1,center = true,$fn = 100);         translate ([space*2,0,0])  circle(r2,center = true,$fn = 100);         translate ([space*3,0,0])  circle(r3,center = true,$fn = 100);         translate ([space*4,0,0])  circle(r4,center =