问题链接:
http://www.jianshu.com/p/88611ef94bd7
Ubuntu 相关
- chmod的用途,场景
chmod
即change mode, 是用于改变文件夹和文件的访问权限,如读取写入和执行。使用ll
(或者ls -l
)显示文件或文件夹的详细信息,可在输出的左侧第一列了解其访问权限。
e.g.
-rw-r--r--
一共10个字符
第一个字符显示其为文件还是文件夹,文件则为-
,文件夹则为d
剩下9个字符则3个一组,每组依次表示owner, group, others的权限情况。r表示可读,w表示可写,x表示可执行。
例子中为owner可读可写不可执行,group成员和others都为只读。
知道了文件/文件夹的访问权限现状,我们可以用chmod来修改。有字母和数字两种方式来指定修改谁的权限,改成什么样的权限。字母修改权限:
- 指定修改谁的权限?
a: all ; u: owner; g: group o: others- 修改成什么样?
r: 可读; w: 可写; x: 可执行- e.g.
$ chmod u=rwx file.txt
将owner对file.txt的权限设置为可读可写可执行
$ chmod g-x file.txt
将group成员对file.txt的权限去掉可执行的权限
$ chmod a+w file.txt
对所有成员对file.txt的权限添加可写的权限数字修改权限:
- e.g.
$ chmod 755 file.txt
三个数字分别代表owner, group, others的权限,4为可读, 2为可写, 1为可执行,对其进行加和所得不同数字,为其权限情况。如例子中owner权限为7=4+2+1,即可读可写可执行;group和others权限为5=4+1,即可读可执行.
除上述用途,chmod有各种option,可在其man page中查看。
- scp的作用
scp
即secure copy,类似cp,但用于远程拷贝文件,比方说把本地文件拷到服务器上,或从服务器拷文件到本地。
e.g.
$ scp my_username@my_ip: /home/remote_dic/file.txt /home/my_local_directory
首先要在服务器上有自己的账号,且具有拷贝等相关权限,账号名为my_username,ip为my_ip
将服务器上自己账号中的/home/remote_dic/file.txt文件拷贝到本地文件夹/home/my_local_directory中
$ scp -r /home/dir1 my_username@my_ip: /home/remote_dic/XXX
将本地文件夹dir1中所有的东西(-r
表示递归,将dir1中的各级文件夹逐级操作)拷贝到服务器账号my_username中/home/remote_dir/XXX文件夹中
- 环境变量的用途?怎么添加?
使用linux登陆后,系统会默认分配给你一个shell, 通过shell来指挥内部的硬件,与系统沟通,从而达到目的。
/bin/bash
是Linux默认的shell, 可以通过$ gedit ~/.bash_history
找到自己上一次登陆之前运行过的所有命令。bash十分强大,强大到它的man page三天三夜看不完。变量是bash用于规划好“指令”的工具,好比拿着将军令给工兵分配任务一样,变量就是便捷的将军令,它间接的指代具体任务,而不用费劲把任务内容全部描述出来才执行。
环境变量控制着字符颜色的显示,文件搜索路径,home目录在哪里,使用者是谁,语系等等。
使用$ env
查看所有的环境变量。包括$HOME
(cd ~的回家之路),$PATH
(运行文件搜索的路径,各个路径之间用:
分开)。
使用$ echo $大写的变量名称
查看各个变量具体情况。在你打开一个终端发呆的时候,便启动了一个系统分配给你的bash, 它已经执行了.bashrc文件的内容,规划好了环境配置。
你可以通过$ gedit ~/.bashrc
进行一些使用者的个人配置。比方说在里面写入alias ll='ls -alF'
,这样每次在终端敲ll
,都执行ls -alF
。
你还可以不敲出绝对路径,就运行安装好的软件和程序,只要在.bashrc中配置好环境变量:
在gedit中打开它,然后在最尾一行加上export PATH=$PATH:/home/.../你要运行的软件绝对路径
。最后记得要执行$ source ~/.bashrc
- ~/.bashrc是什么文件
...以上基本回答了这个问题。即home目录中的一个隐藏文件,~/.bashrc包含你的bash信息,当登录时以及每次打开新的终端时,该文件被读取。
- 命令行下的
~ . / \ |
分别有什么含义,是什么的缩写
~
: home目录
.
: 当前目录
/
: 作为逐级目录的分隔符
\
:\n
即表示下一行内容与上一行内容相衔接
|
: pipe“管子”,即将其左边的命令output作为右边命令的input
- ubuntu的文件系统的有深到浅,简单讲一下。一般执行程序在哪,用户在哪。
- 命令行下的文档编辑软件和文档阅读软件有哪些?简单讲一下怎么用?
Vim, gedit等
Vim:
安装vim后,在命令行输入$ vim
即可打开vim。使用vim打开文件则$ vim text.txt
在vim中移动光标使用h
(left),k
(up),l
(right),j
(down).在ubantu中似乎使用方向键同样可以操作。
可以通过press b,e,w操纵光标的位置,在一个字段头部、尾部、下一个字段头部。
i
用于启动insert功能,使你可以编辑文档。按Esc
退出insert模式
:w
用于保存,:q
用于退出vim,:q!
不保存强制退出。vim中的命令都需要以:
开头。
还有在vim中不用退出运行命令行等操作,http://www.openvim.com/这是一个适合小白快速了解vim的学习教程
gedit:
乱入一个grep怎么用
$ grep 'anything' XXXX.fasta
基本用法,在XXXX.fast文件中找anything,会把包含有anything这一行的内容都显示出来。也可以附上多个文件,Output中会表明找出的anything是在哪个文件中的
$ grep -n 'anything' XXXX.fasta
可以显示出anything在文件中的第几行,并且把这些行都print出来
$ grep -c 'anything' XXXX.fasta
在文件中出现了anything的行共有多少行,只有数字
$ grep -A1 '>OTU1' XXXX.fasta
找出XXXX.fasta文件中,出现了'OTU1'的一行,下一行的内容
可以参考这个链接,很多别的用法还是要多用几次才能记住。-
..再乱入一个unzip后中文出现乱码怎么办
$ unzip -v 'XXXX.zip'
先不解压,查看一下会不会出现乱码
unzip -O cp936 'XXXX.zip' -d tmp/
出现乱码的话在Ubuntu中可以这样解决
详见这里
以及unzip的详细用法
16s微生物组
- OTU是什么,为什么要分OTU
OTU(Operational taxonomic unit),操作分类单元
在二代测序中,每个sample都会测到许多许多序列:
sample1: seq1, seq2, seq3, seq4, seq5...
sample2: seq1, seq2, seq3, seq4, seq5...
sample3: seq1, seq2, seq3, seq4, seq5...
...
每个序列都会有一小段barcode标记,以示它是来自哪个sample。经过一些预先处理,包括去除嵌合体,挑选不重复序列等。使用算法将相似度(similarity)为97%以上的序列放在一起,组成一个OTU。所以一个OTU内所有的序列均为相似度97%以上的,相似度不足97%的则分到其他的OTU中去。于是我们可以得到OTU_table:
即每个sample对应每个OTU中的序列reads数目。如sample1在OTU1中有2个序列reads数目。如下所示的OTU_table即丰度。相对丰度则以每个sample(每行)为100%,计算各OTU的reads数目占一个sample中所有的reads数目的百分比。
sample: OTU1, OTU2, OTU3, OTU4, OTU5...
sample1: 2, 5, 10, 13, 4
sample2: 2, 13, 10, 13, 4
sample3: 2, 53, 0, 1, 43
...
基于序列进行物种注释及后续分析是不现实的,重复且工作海量。OTU是对相似性序列进行聚类,将海量测序序列聚类成数量较少的分类单元,并且每个OTU提供一个代表序列,基于它进行后续物种注释及分析,更加简便和清晰。
- rarefaction curve是什么
在每个样本中不断抽样,每次都随机抽取一定数量的序列,以抽取到的序列构建OTU。其核心在于resampling。随着抽取的序列数目不断增加,其构建的OTU个数从迅速增加到趋于平坦,则说明抽样的数目合理,更多的序列不会再增加更多信OTU个数。即测序深度达到了要求。以及可以通过看每个样本的稀释性曲线高低,初步判断其物种多样性的高低。稀释性曲线较高(OTU个数较其他的样本多),则可能物种多样性高。
见alpha diversity分析方法
- subsampling 是啥
- chimera 是啥
chimera(嵌合体序列)。 chimera是因为在扩增中出现了问题,导致两个来自不同DNA模板的序列被扩增为同一条序列。可以在chimera reference数据库中找到相关序列的chimera并去除。
对OTU table筛选的意义是啥,例如otu size < 2
如果分析需要做物种分布,你手头上只有个otu table和代表序列,应该怎么做
biom跟otu table的区别
zotu或者说ESV是什么
ESV: Exact sequence variant. Also known as an amplicon sequence variant (ASV), zero‐radius OTU (ZOTU) or simply an OTU defined by 100% sequence similarity.
- 该领域研究中的常规分析包含哪些。
一般来说接到一个16s常规分析的工作,从以下思路开始着手分析:注意这只是一个非常大概的思路,没有包含整理和分析的细节。
数据整理:
input_data: fastq格式的测序文件,
output_data: OTU table, tree file, 各种距离矩阵(weighted及unweighted,unifrac或者BC距离矩阵等),各OTU代表序列.fasta文件等数据分析:
input_data: 以上整理好的各种文件,
output_data: 包括α-diversity分析结果,β-diversity分析结果,物种分布情况,测序深度及marker的挑选。最后对数据进行归纳及解读。
- α-diversity: rarefaction curve, 对各物种多样性指数的分组比较
- β-diversity: 根据距离矩阵(weighted或unweighted)绘制PcoA,用PERMANOVA做组间的显著性检验
- biomarker: 根据物种注释信息整理不同物种层面(如genus, family, phylum等)相对丰度,找出在不同分组中相对丰度差异显著的物种。这类物种可以区别不同的分组,即为biomarker. 可以通过箱线图,热图,lefse软件结果图等展示结果。
- 根据科学问题定制分析思路也是很有必要的,比方说时间序列、自身对照等各种形式的数据,需要根据具体科学问题定制分析方法。
- OTU picking有三种策略,有de novo,close-reference, open-reference,分别是什么含义。
de novo
序列互相之间比对,按照97%(比方说)相似程度clustering,没有涉及与现有数据库的比对。其优点在于所有的reads都得到了利用,其缺点在于目前没有做到并行化,所以相当慢。qiime1的官方文档中提到,超过10 million reads的较大数据会跑的很慢。
适用情况:研究的为不常用的marker gene, 没有可以用来cluster的参考数据库;在合并分析时,如果扩增区域不重合(比方说测了V2和V4)不可以使用。
close reference
序列通过与现有参考数据库比对聚类,比对到同一参考序列则为同一个OTU。没有比对上的reads则丢弃。其优点在于会有明确的物种注释,因为参考库里的序列都有明确的物种注释。其OTU可信度比较高。其缺点在于如果没有合适的参考数据库,大部分序列比对不上参考数据库,则并不适用close reference。
适用情况:扩增区域不重合的情况下,如果要合并分析,只能使用close-reference聚类。以及因为可以并行化处理,速度比较快,适用于规模比较大的数据。
open reference
在close reference的基础上,将没有比对上的reads用denove。同样也不适用于不同16s序列的合并分析。
关于不同16S序列的合并分析:
比方说来自不同研究的两个16S数据,一个测了V3,一个测了V4。照上面的说法似乎只能使用open-reference来合并分析。上述提到的合并分析,都是指将两个研究的序列放在一起pick OTU。但是在缺乏合适参考数据库的情况下, 可能50%以上的序列都比对不上。可以考虑对两个研究的数据分别使用denove的方法pick OTU,分别做好物种注释,然后在genus层面合并分析。
参考:
https://peerj.com/articles/545/
qiime1 otu_picking: 各策略的优劣都有解释
R
- 直接从read.csv读入一个文件后,如何以某一列为遍历用的list,来进行循环。(提示:直接写循环是会报错的,需要类型转换,那么如何转换?转换成什么?)
R 只支持直接对向量集合的循环。
x <- c(3,4,5,7,9,10) for (i in x) print (i +1)
得到:
[1] 4
[1] 5
[1] 6
[1] 8
[1] 10
[1] 11
对非向量集合的循环,转化成for i in 1: len(x), 或for i in 1:nrow(x),或使用lapplyfor (i in 1:nrow(x)){ x1 <- as.numeric(unlist(x[i,APP])) x2 <- as.numeric(unlist(x[i,WT])) MWU_test <- wilcox.test(x1,x2,conf.int = TRUE)
以上x为一个dataframe, 行为物种注释信息,列为sample_ID. APP和WT为根据sample_ID得到的,分为APP和WT两组的sample_ID.
即对每一行(每个物种)的APP和WT两组做统计检验,这里 i 起到一个指针的作用。
lapply的适用对象为Lists, 介于dataframe$coln
为list, 所以可以先写好一个Fun()然后每一行进行操作。
详见 R使用笔记 17.