2021年2月13日 星期六

Python|常用基本語言

之前有提到說 Python 和 R 很像,這篇就拿 R 的基本語言那篇改寫成 Python 的用法。

Python 的 libraries 有幾個,常用的有 pandas (data structures & tools), NumPy (arrays, matrices), SciPy (integrals, optimization) 和 Matplotlib (plots, graphs)。

以下 Python 的指令都是在 Jupyter Notebook 裡執行,關於怎麼用 jupyter notebook,請參考這篇:Python | 我想玩,但要怎麼開始?

此篇的指令教學在這:Python 04
之前的入門可參考:Python 01, Python 02, Python data

在 R 裡要讀檔要先跑 library readr,叫出讀檔的功能,然後再用指令 read.csv() 讀檔。例如要用 R 讀電腦裡的 mtcar,指令如下:

library(readr)
mtcars <- read_csv("~/Desktop/R program/ECOSCOPE/mtcars.csv")
View(mtcars)


在 Python 裡則是用 library pandas,指令會變成:

import pandas as pd
mtcars = pd.read_csv("~/Desktop/R program/ECOSCOPE/mtcars.csv")
mtcars



Figure 1. Pandas - import csv file

如果想把更新後的 dataframe 輸出成 csv 檔案的話,可以用 df.to_csv()

這邊我們把 mtcars.csv 輸出到 Python 的檔案夾。


Figure 2. Export csv file

跟 R 相同,dataframe 同樣是 df。pd.read_csv() 會預設第一行為 header,也就是 variables 的名稱,例如圖一的部分,mtcars 這個資料檔案裡是有 variable name,在第 0 行上面那行便是。但是在 autos 這個資料檔裡是沒有的,所以第一筆資料變成了 variable name (圖三)。


Figure 3. Data without headers

這筆資料太長了,我們可以選擇只看前幾列或最後幾列,這時可用 df.head(n),看最後幾行則是用 tail.head(n) (如下圖)。在 R 裡的話,是用 head(df, n)


Figure 4. Read head only

上圖裡還多加了一個指令,因為每次都要把路徑打出來的話太麻煩了,我們可以把路徑設成 path,之後就可以用 path 代替。

如果第一行沒有 variables 的名稱,可以在裡面加 header = None,第一行就會變成用數字代替,如圖五。


Figure 5. Data frame without headers, use header = None.

如果想要加 variable name 的話,可以用 headers =["", '' ", ...]。"" 裡面為你想取的 variable name,如下圖。


Figure 6. Data frame with new headers

接下來,我們可以把加了 variable name 的新檔案輸出去為新的 csv file。

path = "~/Desktop/Python/data/autos.csv"
autos.to_csv(path)


打開 csv 檢查一下。



真的加進去了呢!

接下來,可以查檔案的 types,用的指令是 df.dtypes


Figure 7. Check types of data frame

可以看到有的應該是數字的,卻顯示為 object,這些之後要自己改才可以執行一些運算,之前介紹 R 的時候也有提過。

我們也可以查檔案資料的 statistic summary,用的指令是 df.describe()


Figure 8. Statistical summary of data frame

df.describe() 這個功能不會顯示非數字的 variables,如果要顯示所有的總結報告,可以在裡面加 include = "all"


Figure 9. Statistical summary including non-numeric data. NaN = not a number.




以上,這篇就先這樣吧。













2021年2月6日 星期六

又一篇新冠病毒的小抗體研究

這集的標題雖然是駱馬的小抗體(nanobodies),但前半個小時是討論中國的 CoronaVac,同時他們也收到很多 email 詢問為什麼美國不也做 inactivated virus vaccine。



第一個用病毒做的疫苗是 Edward Jenner 的天花疫苗(smallpox, 1798),為 inactivated Vaccinia virus。第二個 Pasteur 的狂犬病疫苗(rabies, 1885),再來是黃熱症疫苗(yellow fever, 1935)和流感疫苗(influenza, 1936) [1],流感疫苗剛開始是給軍方用,因為在第一次世界大戰時美軍人力因流感而有所損失 [2]。

至於為什麼美國不用病毒做新冠病毒的疫苗呢?他們解釋是美國已經研發其他種類的疫苗很久了,包括 mRNA 疫苗和 subunit 疫苗,所以可以直接拿來用,加上大藥廠已經砸很多錢在研發新型疫苗,因此拿來研發新冠病毒疫苗相對來講反而是比較簡單的。另一個可能原因是用病毒做疫苗需要用到 BSL3 的實驗室,不方便大量生產。

關於中國的 CoronaVac,他們提到 inactivated virus vaccine 通常是用 UV 或福馬林(formalin)去 inactivate viruses,但中國的這支疫苗是用 β-propiolactone (C3H4O2),雖然它也被用來 inactivate viruses,不過它會和蛋白質反應,可能會改變蛋白結構,而且最近有幾篇研究顯示 β-propiolactone 會使 Spike 的 S1 脫離 [3, 4],而可讓免疫系統產生中和抗體的 RBD 就在 S1,如果新冠病毒疫苗少惹 S1,那疫苗效用還剩多少?另外,如果要做 inactivated viruses,也會先評估用來 inactivate 的物質會不會改變病毒結構,是否每個 batch 的品質都穩定一致。之前的疫苗之所以用 inactivated viruses,是因為當時那個年代的技術就只能用 inactivated viruses,並不是因為它比較安全,如今的科技使疫苗不再局限於用 inactivated viruses。

相關文章:近期和新冠病毒抗體相關的研究

裡面還有一段對話滿好笑的(30:25),CoronaVac 的臨床實驗是 Phase I/II 合在一起,通常是 Phase I 安全測試過了以後,換一批測試者做 Phase II。SinoVac 是一二期一起做,第一期只有七天,七天後如果沒出現問題就進入 Phase II [5]。然後其中一位就說,因為是用 inactivated viruses,如果真的有問題的話,七天後試驗者可能就掰掰了,既然七天後沒人死,就表示疫苗算是安全的。XD

(33:50) "... that the Chinese government enlisted army personnel for at least one of the phases for their trial and I thought we were critical of that for a while, but I think that's no longer a criticism."

".... yeah, we got a lot of pushback from people in China who said this is often done and it is often done, but they said it was licensed and it was actually a Phase II trial, so they should have just said it's a Phase III trial, right? instead of saying it was licensed for you."

"I think the issue there was is it okay to do that in troops, ..... I think I pointed out the U.S. can't exactly get on a moral high horse about what's been done."

還有一段莫名戳中我的笑點,是討論到 Phase III 是在中國、巴西和土耳其做的,最近還加了印尼。

(44:10) "I don't think they had enough cases in China to do the Phase III, right?"

"I think because at that point the pandemic was really under control such through lockdowns in China, they were actually having a hard time getting cases for their clinical trials, but uhh unfortunately, plenty of other countries had plenty of cases."

之後駱馬小抗體的部分是討論德國研究團隊於上個月發表在 Science 的研究。之前有提過駱馬除了正常的 IgG,還有一種只有 heavy chain 的抗體 HCAb,以及釣出小抗體的噬菌體展示(phage display)。

相關文章:Phage display 和小抗體製造

在這篇之前,德州大學(U Texas)也在去年發表過他們抗 SARS 的小抗體,他們是把 SARS Spike 打入駱馬體內,然後釣出小抗體,經過 cyro-EM 分析發現效果最好的小抗體 VHH-72 是把 Spike RBD 固定在某個 conformation,使它無法動。他們把這個小抗體測試在假新冠病毒上(pseudovirus),發現它也可以抑制新冠病毒。

相關文章:從駱馬體內得到的新冠病毒小抗體

德國的這個研究則是把新冠病毒的 Spike RBD 和用福馬林去活性過的新冠病毒打入駱馬後釣出小抗體,然後測試這些小抗體的中和效用(neutralizing activity),發現其中一株中和效果最強的小抗體 VHH E 的 IC50 可到 60 nM [6]。VHH E 和其他小抗體不太一樣,它的 CDR3 特別長,雖然和 ACE2 結合的點和之前發現的小抗體 CC12.3 和 H11-D4 相同,但方向不一樣。之前研究發現,Spike RBD trimer 通常處在一個 up & down conformation 平衡的一個狀態,較常發生的狀態是沒有或三個中只有一個 RBD 處於 up conformation。雖然三個 RBD 都為 up conformation 的狀態很少見,但只有 up conformation 才可以和 ACE2 結合,只是不知道需要幾個 RBD 為 up conformation。

他們用 cryo-EM 分析 VHH E 和 ACE2 結合的狀態,發現和 VHH E 結合的大多是三個 RBD 都為 up conformation,並且各和一個 VHH E 結合,顯示 VHH E 會把 RBD 固定在 3-up conformation,而且一旦結合,RBD 就無法變回 down conformation。不免俗的,也要試試把兩、三個 VHH 連在一起看看效果會不會更好,當然也是用常用的 (GGGS)3 linker,結果發現 IC50 可以降到 pM range (930 pM for VHH EE, 520 pM for VHH EEE)。這篇研究和其他不同的地方是他們還有測試哪些突變會逃過 VHH 的中和作用,有趣的是如果某個突變可以逃過某個 VHH,大多的情況是它會對其他 VHH 更敏感,所以如果把兩個不同的 VHH 結合在一起,便沒有突變可以逃過 VHH。相反的,雖然 VHH EEE 有很強的中和作用,single mutantion 就可以讓病毒逃掉。



References:

1. S Plotkin, History of vaccination. PNAS (2014)

2. US CDC / Influenza Historic Timeline

3. Y Cai et al, Distinct conformational states of SARS-CoV-2 spike protein. Science (2020)

4. AV Letarov et al, Free SARS-CoV-2 Spike Protein S1 Particles May Play a Role in the Pathogenesis of COVID-19 Infection. Biochemistry (2020)

5. Z Wu et al, Safety, tolerability, and immunogenicity of an inactivated SARS-CoV-2 vaccine (CoronaVac) in healthy adults aged 60 years and older: a randomised, double-blind, placebo-controlled, phase 1/2 clinical trial. The Lancet (2021)

6. P Koenig et al, Structure-guided multivalent nanobodies block SARS-CoV-2 infection and suppress mutational escape. Science (2021)