2023年9月11日 星期一

將下三角矩陣轉成完整矩陣--R

下三角矩陣轉成完整矩陣,對角線為0

只有上三角矩陣,比照辦理將upper.tri() 改成lower.tri()

原始數據 fst.csv ,是由 Arlequin或是MEGA等程式產生 Fst之類的距離矩陣,是下三角矩陣。先整理成只保留 column name,row name要先自己刪除,最後就像一般的數據框一樣

例如:

DMd,DMs,GK,HR,MD

0,,,,

0.04223,0,,,

0.00382,0.05202,0,,

0.03624,0.0194,0.02805,0,

0.30585,0.26611,0.28621,0.36128,0


>read.csv("fst.csv", header=T)->fst   #下三角矩陣

> head(fst)  #看一下

      DMd     DMs      GK      HR MD

1 0.00000      NA      NA      NA NA

2 0.04223 0.00000      NA      NA NA

3 0.00382 0.05202 0.00000      NA NA

4 0.03624 0.01940 0.02805 0.00000 NA

5 0.30585 0.26611 0.28621 0.36128  0


※如果原始數據沒有 column 或是row name,可以

colnames(fst) <-c("DMd","DMs","GK","HR","MD")


> makeSymm <- function(fst) {fst[upper.tri(fst)]<-t(fst)[upper.tri(fst)] 

+ return(fst) } 

#函數makeSymm。 將轉置矩陣中 定義為TRUE的數據取出 (t(fst)[upper.tri(fst)]),然後賦值給原始矩陣中定義為TRUE的位置

>upper.tri(fst)  #看一看這些指令在做什麼。還有一個參數 diag=T,可以考慮

      [,1]  [,2]  [,3]  [,4]  [,5]

[1,] FALSE  TRUE  TRUE  TRUE  TRUE

[2,] FALSE FALSE  TRUE  TRUE  TRUE

[3,] FALSE FALSE FALSE  TRUE  TRUE

[4,] FALSE FALSE FALSE FALSE  TRUE

[5,] FALSE FALSE FALSE FALSE FALSE 

> t(fst)[upper.tri(fst)]   

 [1] 0.04223 0.00382 0.05202 0.03624 0.01940 0.02805 0.30585 0.26611 0.28621

[10] 0.36128



> makeSymm(fst) ->fstM  #對fst執行函數

> fstM   #檢查一下對不對

      DMd     DMs      GK      HR      MD

1 0.00000 0.04223 0.00382 0.03624 0.30585

2 0.04223 0.00000 0.05202 0.01940 0.26611

3 0.00382 0.05202 0.00000 0.02805 0.28621

4 0.03624 0.01940 0.02805 0.00000 0.36128

5 0.30585 0.26611 0.28621 0.36128 0.00000

或是輸出數據與原始數據在Excel相減,下三角 = 0,確定無誤。

>write.csv(fstM,"fst_matrix.csv")



※後續分析,例如 PCoA

>library(ape)

>pcoa(fstM)->pcoaF

>pcoaF

...局部結果

$vectors

          Axis.1        Axis.2        Axis.3

[1,] -0.06028953  1.647973e-02  0.0087032005

[2,] -0.02505095 -2.823545e-02  0.0006659622

[3,] -0.04271856  2.245764e-02 -0.0067301870

[4,] -0.11741318 -1.067173e-02 -0.0024847685

[5,]  0.24547221 -3.019853e-05 -0.0001542072


>biplot(pcoaF)

或是

> plot(pcoaF$vectors[,1],pcoaF$vectors[,2])  #自己挑選要作圖的軸

> plot(pcoaF$vectors[,1],pcoaF$vectors[,2], xlab="PCoA 1", ylab="PCoA 2", pch=16,col="red")  #修一下

> text(pcoaF$vectors[,1],pcoaF$vectors[,2],labels=c("DMd","DMs","GK","HR","MD"),family="Helvetica")  #點太密時,直接把標籤壓在點上,比較不會搞錯,再輸出到Inkscape手工微調。


2023年7月15日 星期六

Canon G2010 印表機噴墨嘴堵塞處理

 Canon G2010 印表機噴墨嘴堵塞處理

這一台太久沒印文件所以堵住了,用設定的噴頭清潔無效,深度清潔無效,於是
1. 先參考這一篇學會如何正確拆下噴頭 https://www.youtube.com/watch?v=uBuGyI8PpOU
補充:
a. 第一次噴頭組沒有辦法直接拉出,要先將面對噴頭組左後方2根橫桿之間後方有一個方形白色塑膠扳上去才能拉出噴頭組。
最後完成之後也要手動扳回來,不過不扳回來也是可以用。
b. 先觀察管路中,哪些顏料有充滿到噴頭位置。

2. 再參考這一篇 搜尋字眼:"噴墨噴頭阻塞 酒精"

3. 將拆下來的噴頭放在有一點點95%酒精的淺碟子中(我用實驗室的培養皿恰恰好)
重點:
a. 95%酒精就是藥房買的藥用酒精,95%確定有用,更常見的75%沒試過不知道,不要添加任何香精...
b. 要浸泡的是成長條狀金屬色澤的噴頭,不是一點一點金屬色澤的電路接點。
c. 重要: 酒精高度以噴頭靜置時,恰好可以沾到酒精就好,不要太多而沾到另一側的電路接點。
d. 中途適度更換酒精…因為會溶出噴頭以及周圍的顏料
e. 中途適度擦拭噴頭周圍。而長條狀金屬色澤的噴頭最好不要擦拭(我是以不產生紙碎屑的拭淨紙輕輕擦,可以使用面紙代替,主要以輕壓方式吸收顏料)
f. 上述文件說2-4小時,我操作約20分鐘之後,發現以拭淨紙輕壓會有一條顏料出現,顯然噴孔是打開了,使得噴頭裡面管道中的顏料也溶出或是滲出,至於多少個噴孔打開就不知道了。在顯微鏡下我可以看到壓乾的噴頭,有液體逐漸滲到表面直到整條噴頭都溼潤了。於是就收工裝上去了。
g. 如果一開始管路中顏料有充滿到噴頭位置,則f.步驟中會擦出該顏色。 像我的只剩下黑色和青色,於是彩色噴頭最後以拭淨紙輕壓只有一條青色。
h. 我中途試著將噴頭朝上,將酒精滴上去,但是酒精會溢出往另一側的電路接點過去,於是放棄這種方法。

4. 裝上去之後,恢復管路墨水的確會花蠻長時間,耐心等待。同時墨水會注入管路中,使墨水匣水位會明顯下降。

5. 這種方法會對噴頭有多少傷害我不知道,至少能印了。

一台G2010約3300元,而1組2個噴頭要約2000元,墨水4色一組約2000元。

2023年6月4日 星期日

pdf轉jpg

不必安裝,直接在terminal執行: 

$ pdftoppm -jpeg -r 300 input.pdf output

輸出檔的附檔名會自動加上。

多頁pdf會轉出成為多個檔案,以output-1.jpg開始編號,空白頁也會轉出。

常用指令有:

-r: 解析度

圖檔格式常用的有: -jpeg, -png, -tiff

色彩格式有: -gray灰階

其他指令例如jpg壓縮比自行man pdftoppm


2023年5月26日 星期五

決定完全移除Win10

因為

1. 灌了1年沒怎麼用到的Win10竟然速度也是越來越慢,太神奇了。

2. 再一次因為Windows更新失敗/中斷/當機,造成我的2顆為了與Windows相容而格式化成NTFS的硬碟,在Ubuntu中無法讀寫,只剩唯讀,但是這一次一直無法完成Windows的更新。

3. 現在只剩下教學需求會用到SPSS (1年用半學期8次),testgen(普生出題題庫,1年用3次)

4.加上這一年微軟又來一次偷偷下載Win11,硬推Win11。上一次偷偷推Win10把我從Windows host/Ubuntu virtual 推成了雙作業系統,仍然保留Windows。

這次該徹底做個了斷了,不能繼續藕斷絲連,我決定徹底移除瘟到死。

1. 以Ubuntu的公用程式/磁碟 格式化 Windows所在的分割區,以及另一個小的Windows Reserve分割區

開機GRUB還是會出現 Windows選項,所以

2. 查詢Boot編號:

$ sudo efibootmgr


BootCurrent: 0000

Timeout: 1 seconds

BootOrder: 0004,0005,0000,0006,0001

Boot0000* ubuntu

Boot0001  Windows Boot Manager

Boot0004* Hard Drive

Boot0005* CD/DVD Drive


3. 刪除 編號為Boot0001  的 Windows Boot Manager

$ sudo efibootmgr -b 1 -B

BootCurrent: 0000

Timeout: 1 seconds

BootOrder: 0004,0005,0000,0006

Boot0000* ubuntu

Boot0004* Hard Drive

Boot0005* CD/DVD Drive

確認一下

$ sudo ls /boot/efi/EFI

Boot  ubuntu


4. 移除EFI分割區裡面殘餘的Windows資料夾,以免GRUB自己又抓到Windows,自動加回來

$ sudo rm -r /boot/efi/EFI/Windows


5. 修改GRUB

$ sudo gedit /etc/default/grub

GRUB等待時間設為0秒,因為只剩UBUNTU,沒必要浪費時間:

GRUB_TIMEOUT=0

其實不管設定幾秒,我的Ubuntu 20.04會自動跳過GRUB。


6. 更新GRUB

$ sudo update-grub


完成。

-----------------

終於將丹田中殘餘的火寒毒全數逼出到剩下最後一絲,以後不再上火心寒了。

最後一絲??

看著丹田中空蕩蕩的原來Windows所在的分割區90多G,暫時還不想把他們煉化到Ubuntu的root,怕系統崩潰或是要重灌,再找機會吧,還有很多正事要做。


資料硬碟又突然變成唯讀

這是第二次因為windows更新失敗/中斷/當機,造成我的2顆為了與Windows相容而格式化成NTFS的硬碟,在Ubuntu中無法讀寫,只剩唯讀。


例如:~$ mount -v

會顯示某些分割區是唯讀(ro: read-only) ,例如

/dev/sdc1   ..... (ro, ....)


使用如下指令重新掛載

~$ sudo mount -o remount,rw /dev/sdc1

也只是顯示讀寫(rw: read-write)  .....(rw, .....),但是檔案編輯仍然是唯讀。


推測是因為格式化成NTFS的關係。

上一次2018年依照網路建議,回頭把Windows更新完畢,就好了。

[ Ubuntu系統和檔案都突然變成唯讀]


這一次一直無法更新,加上這一年微軟又來一次偷偷下載Win11,硬推Win11,我決定徹底移除瘟到死。現在只剩下教學需求會用到SPSS (1年用半學期8次),testgen(普生出題題庫,1年用3次),該徹底做個了斷了。


NTFS解決方法


確認已經安裝ntfs-3g

1. 嘗試使用ntfs-3g或mount指令掛載硬碟:


~$ sudo ntfs-3g /dev/sdc1  /media/DATA-1T

顯示如下:

The disk contains an unclean file system (0, 0).

Metadata kept in Windows cache, refused to mount.

Falling back to read-only mount because the NTFS partition is in an

unsafe state. Please resume and shutdown Windows fully (no hibernation

or fast restarting.)

Could not mount read-write, trying read-only

ntfs-3g-mount: failed to access mountpoint /media/linghu/DATA-1T: 沒有此一檔案或目錄


明顯就是windows更新中斷在做怪


2. 記得先unmount 該分割區或是磁碟


$ umount /dev/sdc1


3. 使用ntfs-3g修復


~$ sudo ntfsfix /dev/sdc1


結果忘了儲存,大致意思就是 發現有 (還記得的關鍵字)"unclean file system", "attempt to fix....",接下來都是 "...OK"  "....successfullly",就可以了


4. 重新掛載硬碟

~$ sudo ntfs-3g /dev/sdc1  /media/DATA-1T


5.不過開機自動掛載硬碟似乎不知道在某一次嘗試中刪除了,所以要加回來:

先檢查磁碟分割槽的UUID

~$ sudo blkid


~$ sudo gedit  /etc/fstab

果然不見了。在最下方加入

UUID=[特定分割區的UUID]  /media/DATA-1T ntfs defaults 0 1

簡單說依序是: UUID碼 , 掛載點 , 格式, 掛載引數(一般為defaults ), 磁碟檢查(預設為0),  磁碟檢查(預設為0,不需要檢查)


---完成---


參考: 

https://blog.xuite.net/m740138.m740138/blog/32052683

https://www.796t.com/article.php?id=88776