美文网首页生物信息分析:从入门到精通生信基础知识
答生信从业人员的N个问题(更新非常慢)

答生信从业人员的N个问题(更新非常慢)

作者: GPZ_Lab | 来源:发表于2017-10-23 21:45 被阅读101次

    问题链接:
    http://www.jianshu.com/p/88611ef94bd7

    Ubuntu 相关

    1. 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中查看。
    1. 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文件夹中

    1. 环境变量的用途?怎么添加?

    使用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

    1. ~/.bashrc是什么文件

    ...以上基本回答了这个问题。即home目录中的一个隐藏文件,~/.bashrc包含你的bash信息,当登录时以及每次打开新的终端时,该文件被读取。

    1. 命令行下的~ . / \ |分别有什么含义,是什么的缩写

    ~ : home目录
    . : 当前目录
    / : 作为逐级目录的分隔符
    \ : \n 即表示下一行内容与上一行内容相衔接
    | : pipe“管子”,即将其左边的命令output作为右边命令的input

    1. ubuntu的文件系统的有深到浅,简单讲一下。一般执行程序在哪,用户在哪。
    1. 命令行下的文档编辑软件和文档阅读软件有哪些?简单讲一下怎么用?

    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:

    1. 乱入一个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'的一行,下一行的内容
      可以参考这个链接,很多别的用法还是要多用几次才能记住。

    2. ..再乱入一个unzip后中文出现乱码怎么办
      $ unzip -v 'XXXX.zip'
      先不解压,查看一下会不会出现乱码
      unzip -O cp936 'XXXX.zip' -d tmp/
      出现乱码的话在Ubuntu中可以这样解决

    详见这里
    以及unzip的详细用法

    16s微生物组

    1. 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提供一个代表序列,基于它进行后续物种注释及分析,更加简便和清晰。

    1. rarefaction curve是什么

    在每个样本中不断抽样,每次都随机抽取一定数量的序列,以抽取到的序列构建OTU。其核心在于resampling。随着抽取的序列数目不断增加,其构建的OTU个数从迅速增加到趋于平坦,则说明抽样的数目合理,更多的序列不会再增加更多信OTU个数。即测序深度达到了要求。以及可以通过看每个样本的稀释性曲线高低,初步判断其物种多样性的高低。稀释性曲线较高(OTU个数较其他的样本多),则可能物种多样性高。
    alpha diversity分析方法

    1. subsampling 是啥
    1. chimera 是啥
    2. 对OTU table筛选的意义是啥,例如otu size < 2
    3. 如果分析需要做物种分布,你手头上只有个otu table和代表序列,应该怎么做
    4. biom跟otu table的区别
    5. zotu或者说ESV是什么
    6. 该领域研究中的常规分析包含哪些。

    一般来说接到一个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软件结果图等展示结果。
    • 根据科学问题定制分析思路也是很有必要的,比方说时间序列、自身对照等各种形式的数据,需要根据具体科学问题定制分析方法。
    1. OTU picking有三种策略,有de novo,close-reference, open-reference,分别是什么含义。

    R

    1. 直接从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),或使用lapply

    for (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.

    相关文章

      网友评论

        本文标题:答生信从业人员的N个问题(更新非常慢)

        本文链接:https://www.haomeiwen.com/subject/ltawuxtx.html