生命科學學生的WSL與Python學習之旅 (第一集)

生命科學學生的WSL與Python學習之旅 (第一集)

更新於 發佈於 閱讀時間約 5 分鐘

這是一位生命科學學生如何從零開始安裝 WSL,學習 Python 與 Linux 的第一集。

一個誤打誤撞而開始的故事

在勉強利用 ChatGPT,以及自己對程式碼的一點直覺完成了大學生的專題實驗後,我在未來碩士班老師的引薦之下,利用長達八個星期的寒假,撥出六個星期到竹北的新竹生物醫學園區進行實習;就在我一如往常,準備開啟我的 Windows 筆電工作時,卻在公司的徵才網站上看到對正式員工的基本要求:「精熟 Linux 相關系統、Docker 容器、Python 程式碼」,並且「能獨立解決問題,並與開發團隊合作」。

我看到這段的當下,驚覺自己與業界的距離之遠。當時我其他分頁都還是問 ChatGPT 一些 Class 類別設計、讀取 json 檔案的方法等最基礎的問題,更別說是能獨立解決複雜的程式碼效能問題;對於 Windows 的系統環境也只是外行人的程度,更別說是精通其他系統架構;連自己的 Python 程式碼架構都無法完全講好,更別說是與開發團隊進一步合作。意識到這些的我,在實習結束之後,即刻就去書店買了一本跟 Python 有關的書籍,並就碩士班老師的研究領域,回頭查詢我可能會需要哪些 Python 套件。

本來以為還能繼續待在 Windows 舒適圈的我,在意識到 pysam(一個處理DNA序列資料的 Python 套件)根本沒有支援 Windows 的穩定版本,但以後分析實驗室裡的序列資料都必定需要它的當下,整個人慌得像熱鍋上的螞蟻,因為根據我的經濟情況,根本不可能只是為了這個套件,再買一臺 MacBook 或者原生 Linux 相關系統的電腦。於是一如既往,我就去問問 ChatGPT 該怎麼解決;這時它的回答,跳出了一個我從來不認識的詞:Windows 下的 Linux 子系統(Windows subsystem for Linux, WSL)。

「這是類似在 Windows 底下再安裝一個系統嗎?」、「在那個子系統裡面安裝 pysam時,它真的會判讀為 Linux-64,然後繼續安裝嗎?」我充滿好奇,深夜兩三點仍不眠不休,一步步照著指示完成安裝,成功在 Linux 子系統中建構 Python 虛擬環境,下載並執行了 pysam。當時我還不知道,這個操作只是我日後學習之路的序章而已。

學習過程中的挑戰與險境

在安裝好這個子系統,並使用 pysam 成功下載第一個定序檔案之後,我本來以為事情就這麼告一段落了,卻不知道接下來我會遇到的難題,有如唐僧遇到的九九八十一難。

首先是儲存空間爆掉。我的系統硬碟原本就只有 512GB,下載幾個定序資料後竟直接消耗掉數十 GB。只好自掏腰包買了 1TB 外接硬碟,學習將 WSL 移轉到外部空間。

接著,因為 WSL 裡面有我另外安裝的 MySQL 資料庫,以前我並沒有意識到要將其完全關閉,再登出 WSL ,於是每次都是寫好程式碼後,直接從 Windows 端把 WSL 登出並關機。時間一久,不只資料庫裡面的資料,連系統檔案都因為這樣不停毀損,甚至之前匯出的 WSL 備份檔案也包含毀損的系統套件,在冬天的寒冷中奮戰了一整個晚上後,最後那個 WSL 系統還是只能整個刪除重灌,連帶著我之前的虛擬環境、定序資料,全部都刪掉了。為了把那些資料重新弄回來,我又花了三天的時間。

最後這個最讓我印象深刻;當時我為了解決它時不時就自動轉進唯讀模式的問題(那時我還沒意識到其實外接硬碟本身已經怪怪的了),於是試著寫了一個腳本來偵測它是否即將進入唯讀模式;為了模擬它可能進唯讀模式的情境,並確認腳本有無正確運作,我就直接在 WSL 還沒登出時,拔掉外接硬碟,還重複好幾次。最後,當我要繼續工作時, Windows 忽然跟我報告 I / O 讀寫錯誤,怎麼嘗試都沒有辦法讀取外接硬碟的檔案,整顆硬碟因此壽終正寢。

最後,我別無選擇,只能又花了一些費用買新的硬碟;以及幾天的睡眠時間,從頭到尾地完成 Python、 MySQL、 pysam 安裝,把我之前的東西全部恢復成原樣。到這場險境結束時,我已經足足花了半個月的時間,一個人憑著自己的幹勁,默默地在 ChatGPT 的協助下處理這些事;但是透過這次排除萬難的過程,卻也讓我學到很多。

這段學習帶給我的影響

從這些災難中浴火重生的我,因此學會更好的外接硬碟使用習慣、如何備份與還原 WSL、怎麼撰寫簡單的 Linux 腳本、面對系統錯誤時該從哪裡開始排查等知識與技能。除此之外,也讓我更確信,學寫程式與使用 Linux 對一位生物科學學生來說,不只是輔助工具,而是一條全新的視野與解決問題的路。

如果喜歡這個系列,請喜歡這篇文章;每一個喜歡,都是我繼續分享這些故事的動力。

下集預告:當我第一次用 t-SNE 畫出基因圖:一場與記憶體打架的資料之旅 - 學會用 Python 做生物資訊視覺化,我經歷了什麼?

avatar-img
生資知識的道場
5會員
10內容數
歡迎來到【生資道場】! 這裡是一個結合生物資訊與生活思維的小宇宙。 我們聊癌症、談程式碼,也偶爾思考世界的複雜與美感。 不一定要懂程式、不一定要是科研人, 只要你對知識、生活與實驗感興趣,就能自在入座。 歡迎留言交流,理性討論,偶爾隨著道場主一起激盪新想法。
留言
avatar-img
留言分享你的想法!
本篇參與的主題活動
提升手作銷售額的關鍵在於審美,本文提供一套「懶人秒速判斷法」,從色彩掌握力、材質敏銳度、留白與呼吸感、整體故事感及比例掌握五個面向,全面檢視作品的美感戰力,幫助手作賣家提升作品質感及品牌價值,衝破訂價天花板。
提升手作銷售額的關鍵在於審美,本文提供一套「懶人秒速判斷法」,從色彩掌握力、材質敏銳度、留白與呼吸感、整體故事感及比例掌握五個面向,全面檢視作品的美感戰力,幫助手作賣家提升作品質感及品牌價值,衝破訂價天花板。