文章

目前顯示的是 七月, 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,看一看大概就有個底了。
那果蠅哪裡來呢?當然就自己抓啊。得先準備好陷阱。其實我一開始笨笨的,想說弄個塑膠袋裝果皮果肉,然後等果蠅來,我再用蟲網撈起來。這樣的確有果蠅來,但是用蟲網卻抓不到啦,果蠅可是比蟲網的洞還小啊。

準備寶特瓶(我覺得四方型的茶飲罐不錯),把頭切開反插回去



斜立在牆邊,不是這樣就好喔,要記得放一些果皮果肉進去啊。



這四罐左至右分別是鳳梨果皮、臍橙和奇異果皮、香蕉果皮帶一小塊果肉、又是鳳梨果皮。這裡順便做個實驗,看看哪一種最容易吸引果蠅,結果啊,是香蕉呢。看到留在罐子裡的大部分都是母果蠅(還好還有一些公果蠅可以做實驗),它們千里迢迢來這邊,其實也順便找到產卵的地方,香蕉對牠們應該是很不錯的培養基吧。


接下來拿個大塑膠袋,把罐子放進去。在袋子裡把罐子打開,讓果蠅飛進袋子,我再把罐子拿到袋子外。裝了果蠅的塑膠袋,再綁起來放在冰箱冷凍庫幾十秒麻醉果蠅就可以進行實驗了。



整個解剖與觀察的過程,我剪輯在這部影片裡



這個觀察活動,我打算全程都使用「科學Maker…

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");
    saveAs("Tiff", "rticle_"+(i…

用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);
      run("Add Selection.…

用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 = true,$fn = 100);         translate ([space*5,0,0])  circle(r5,center = tru…