生物筆記——暑期學習筆記(四)
文章目錄
- 前言
- 一、R篇
- 1. unname()
- 2. duplicated()
- 3. 數據提取
- 4. 分組
- 二、生信篇
- 1. 文本處理常用命令
- 2. 命令輸出
- 1. 重定向
- 2. 多命令執行
- 3. 文本工具
- 4. 本地hmm鑒定
- 1. hmmer軟件安裝
- 2. 文件準備
- 3. 基于hmm的鑒定
- 總結
前言
這一系列文章主要是對于在暑期,老師每周教導的生信方面的課程的課后學習筆記的總結,希望用此方法來鞏固我的所學。
一、R篇
1. unname()
x <- c(1,4,6.25)
> x
[1] 1.00 4.00 6.25
x[] <- 7
> x
[1] 7 7 7
x <- c('星'=55,"石"=88,"苑"=99)
> x
星 石 苑
55 88 99
#去掉列名
y<- unname(x)
> y
[1] 55 88 99age <- c(8:88)
name <- paste("wht",seq(8,88))age[c(3,5,7)]
age[age>15]
df <- cbind(age,name)
x <- df[,]df <- read.table("D:/class.csv",header = TRUE,sep =",")
head(df)
name <- df[,"name"]
age <- df[,"age"]
head(age)
age1 <- age[c(3,5,7)]
age2 <- age[age>=15]
df1 <- df[df$name%in%c("Mary","James"),]
age3 <- df1[,c("name","age")]
df2<- df[!df$name%in%c("Mary","James"),]
age34 <- df2$agecut(1:9,breaks = c(0,3,6,9)) #分割
cut(1:88,breaks=3)table(df$sex)
str(df)
df$sex <- factor(df$sex,levels = c("F", "M"), labels = c("Female", "Male"))
str(df)
tapply(df$age,df$sex,max)
2. duplicated()
duplicated,翻譯過來是重復的意思,所以它的用處是判斷是否是重復元素,并返回布爾值(方便記憶)
intersect(c(5,7),c(1,5,2,5))
union(c(5,7),c(1,5,2,5))
setdiff(c(5,7),c(1,5,2,5)) #求差集,前一向量中不屬于后面向量元素組成的集合x <- c(6,9,8,6)
> duplicated(x)
[1] FALSE FALSE FALSE TRUE
> x[!duplicated(x)]
[1] 6 9 8
#或者直接使用unique()
> unique(x)
[1] 6 9 8
3. 數據提取
df <- read.table("D:/class.csv",header = TRUE,sep =",")
> head(df)name sex age height weight
1 Alice F 13 56.5 84.0
2 Becka F 13 65.3 98.0
3 Gail F 14 64.3 90.0
4 Karen F 12 56.3 77.0
5 Kathy F 12 59.8 84.5
6 Mary F 15 66.5 112.0
name <- df[,"name"]
age <- df[,"age"]
#head(age)age1 <- age[c(3,5,7)]
age2 <- age[age>=15]#取出“Mary"和"James"對應的age
df1 <- df[df$name%in%c("Mary","James"),]
age3 <- df1[,c("name","age")]
> age3name age
6 Mary 15
13 James 12#取出其他人的
df2<- df[!df$name%in%c("Mary","James"),]
age4 <- df2[,c("name","age")]
4. 分組
#分割,通過對breaks參數的設置,來分割連續性變量
> cut(1:9,breaks = c(0,3,6,9))
[1] (0,3] (0,3] (0,3] (3,6] (3,6] (3,6] (6,9] (6,9] (6,9]
Levels: (0,3] (3,6] (6,9]
cut(1:88,breaks=3)> table(df$sex)F M 9 10 > str(df)
'data.frame': 19 obs. of 5 variables:$ name : chr "Alice" "Becka" "Gail" "Karen" ...$ sex : chr "F" "F" "F" "F" ...$ age : int 13 13 14 12 12 15 11 15 14 14 ...$ height: num 56.5 65.3 64.3 56.3 59.8 66.5 51.3 62.5 62.8 69 ...$ weight: num 84 98 90 77 84.5 ...#將sex變量轉換為因子類型,方便分組
df$sex <- factor(df$sex,levels = c("F", "M"), labels = c("Female", "Male"))
#通過對labels參數的設置,改變因子的名稱> str(df)
'data.frame': 19 obs. of 5 variables:$ name : chr "Alice" "Becka" "Gail" "Karen" ...$ sex : Factor w/ 2 levels "Female","Male": 1 1 1 1 1 1 1 1 1 2 ...$ age : int 13 13 14 12 12 15 11 15 14 14 ...$ height: num 56.5 65.3 64.3 56.3 59.8 66.5 51.3 62.5 62.8 69 ...$ weight: num 84 98 90 77 84.5 ...#根據sex分組并對于age求最大值
> tapply(df$age,df$sex,max)
Female Male 15 16
二、生信篇
1. 文本處理常用命令
less命令
打開并查看文件內容, less -SN (按行查看),按 q 退出 ; 支持直接查看壓縮文件
示例: less -SN example.axt
wc 命令
簡單統計文件內容
-c 只顯示 字節數
-l 只顯示行數
-w 只顯示字數
$ wc example.axt
4 3 1755 example.axt$ wc -c example.axt
1755 example.axt$ wc -l example.axt
4 example.axt$ wc -w example.axt
example.axt
可以得知該文件中的字節數為1755,行數為4,字數(是一個文本中的單詞數量。在計算字數時,通常以空格或其他標點符號作為單詞之間的分隔符)為3.
diff 命令
比較兩個文件的不同
-a :只逐行比較文本文件
-b :忽略空格
-B :忽略空行
-c :顯示全部內容,并標出不同之處
比如,我比較了一下sort.txt 和 file 兩個文件。第一行的"9,13c9,14" 表示的是前一個文件的9到13行與后面文件的9到14行是不同的。
sort 命令
-r :降序輸出
-n :以數值來排序
-o :輸出到新文件
uniq 命令
比較相鄰的行,顯示不重復的行
-i :忽略大小寫
-c :計數
命令 練習
2. 命令輸出
1. 重定向
> 代表以覆蓋的方式,將輸出內容寫入到指定文件
>> 代表以追加方式輸出
命令 >> 文件 A 2>> 文件 B :正確的輸出到 A 文件中,錯誤的輸出到 B 文件中
2. 多命令執行
命令 1 ;命令 2 (兩個命令互不干擾)
命令 1 && 命令 2 (只有前者執行,后者才能執行)
命令 1|| 命令 2 (只要前者能執行,后者就不執行;前者不執行,后者就頂上)
3. 文本工具
grep 、 sed 、awk
有關更多信息,請看
Linux中文本工具應用(Linux入門六)
4. 本地hmm鑒定
1. hmmer軟件安裝
mamba 是一個基于 Python 的 CLI 工具,被認為是 conda 的直接替代品,自帶多線程下載,可以提高下載速度。
首先安裝mamba
安裝過程推薦:https://zhuanlan.zhihu.com/p/489499097?utm_id=0
# 創建一個新環境”wht_env1"并安裝 iqtree軟件
mamba create -n wht_env1 iqtree
安裝完成:
#安裝hmmer軟件
mamba create -n wht_env2 hmmer
通過mamba安裝的軟件通常會安裝到Conda環境的envs目錄下( 安裝時設置了環境)
2. 文件準備
hmm 模型文件 : 如 PF03936.hmm
fasta格式的AA序列文件 : 如 Lindera_aggregata.gene.pep
3. 基于hmm的鑒定
hmmsearch /home/PF03936.hmm /home/Lindera_aggregata.gene.pep >/home/Lagg.PF03936.out
總結
本文的R篇主要講了unname()、duplicated()、因子分組等。生信篇則介紹了一些在Linux中的簡單操作命令。同時也學會了根據mamba管理器來下載所需軟件,如用于hmm鑒定的hmmer軟件等。
兩情若是久長時,又豈在朝朝暮暮。
–2023-8-16