linux_生信相关知识笔记

统计文本单词总数和行数

wc file.txt
输出:
13  15 413 file.txt
行数  被空格或换行符分成了几部分  字节数  文件名

wc -c file.txt  # 计算字节数,字节是计算机存储的基本单位
wc -m file.txt  # 计算字符数(字母+汉字的数量),不包括空格和换行符

1个英文字母占用1个字节
在UTF-8编码中,1个汉字占用3个字节或更多


标准输入输出重定向和管道

  1. 默认的标准输入输出为屏幕,对其重定向可指定输入输出的位置
    < 重定向到文件中去读取,<< 表示结束输入的字符,Ctrl-D 也可以结束输入
    > 覆盖重定向到指定文件
    >> 追加重定向到指定文件
cat > test.txt << "jeishu"  # cat将屏幕输入内容连接起来重定向到test.txt中,当输入jeishu时就结束输入
> 12
> 43
> 4
> 45
> jieshu
> jeishu  # 结束字符 
(base) liu@LiuWei:/mnt/d/Desktop$ cat test.txt
12
43
4
45
jieshu
  1. 管道 | 可将命令通过 | 重定向到下一个命令,不过其只能重定向stdout即成功执行的命令
file_name=`echo $file | awk -F ".fasta" '{print $1 "_"}'`  # 打印文件名,通过 | 将文件名输出重定向到下一命令继续使用。

合并文件

cat将文件竖着合并到一起,paste将文件横着合并到一起。
catpaste 默认的标准输出为屏幕。

cat file1.txt file2.txt > all.txt  # 若all.txt非空,会覆盖all.txt原有内容;将两个文件重定向到了all.txt,不会在屏幕输出内容
cat file1.txt file2.txt >> all.txt  # 不会覆盖原有文件内容,可对all.txt追加内容
cat *.txt > all.txt
paste file1.txt file2.txt > all.txt

将多个文件夹的内容都合并到一个新的文件夹中

for i in *
do
rsync -avz $i/ 新建文件夹/
done

复制文件或目录

# 复制文件
cp source_file destination_file_folder/

# 复制整个目录
cp -r source_directory destination_directory  # -r 参数告诉 cp 命令递归地复制目录及其所有子目录和文件

注意:
cp 命令执行复制操作后不会删除原文件;
mv 命令执行复制操作后会删除原文件,通常用于对文件重命名。


文件重命名

# 给文件夹内的文件改名字,在文件名前加上train
for file in *.fna
do
file_name=`echo $file | awk '{print "train_" $0 }'`
mv $file $file_name  # 重命名文件
done

# 直接改文件名字后缀
rename 's/\.old$/\.new/' *
rename 's/\.fna$/\.faa/' *

注意:定义变量时,等号两侧不能有空格。


在文件行首加入文件名

for file in *.faa
do
file_name=`echo $file | awk -F ".faa" '{print $1 "_"}'`
sed -i "s/^/$file_name/g" $file
done

给序列加标签

sed -i 's/>/>CC_bin.9/g' nucl_CC_bin.9.fa #CC_bin.9为标签,nucl_CC_bin.9.fa为序列文件

通配符

*代表一个或多个字符,?代表1个字符
ls /usr/bin/*.sh  # 查看所有以.sh结尾的文件
ls /usr/bin/*.?  # 显示扩展名只有1个字符的文件

在Linux中查看文本文件

  1. 使用cat命令显示整个文本文件的内容:
cat file.txt
  1. 使用less命令逐页查看文本文件(比more更好用):
less file.txt
space: 向前翻页
b: 后退
g: 跳转至开头
G: 跳转至结尾
q: 退出
  1. 使用more命令也可以逐页查看文本文件:
more file.txt
ctrl + f  向前翻一页
ctrl + b  向后翻一页
  1. 使用head命令显示文本文件的前几行:
head file.txt
  1. 使用tail命令显示文本文件的末尾几行:
tail file.txt

chmod 改变文件或目录权限

4-读(r), 2-写(w), 1-执行(x)
三类用户:所有者,组用户,其他用户
chmod 755 bin/*  # 将子目录 bin 下所有文件设置为本用户可读可写可执行,组用户和其它用户可读可执行
chmod 777 bin/*  # 将子目录 bin 下所有文件对所有用户设置为可读可写可执行

chmod –w ppf1.fas  # 取消所有用户对 ppf1.fas 的写权限
chmod +w seq1  # 将当前目录下 seq1 设置为本用户可写,其他用户权限不变
chmod -w keep/  # 取消子目录 keep 写权限,不能在该目录下创建和删除文件或子目录

man 显示命令的用法手册

man ls  # 显示命令 ls 用法和所有参数
man –k password  # 显示与关键词 password 相关的所有命令

当conda remove xxx不起作用时

# 1.删除libreOffice套件

# 2.删除所有与LibreOffice相关的软件包
sudo apt-get remove libreoffice*

# 3.删除与LibreOffice相关的配置文件
sudo apt-get purge libreoffice*

# 4.删除完成后,输入以下命令来清理不再需要的依赖项
sudo apt-get autoremove

提取文件夹下文件的名称

find -name "*.fna.gz" > filename.txt

不同安装方法的区别

  • conda install fastqc 安装在conda管理的子环境中
  • sudo apt-get install fastqc 安装在系统底层/系统全局环境的,而不是某个特定的用户环境或者虚拟环境,安装的文件将位于系统的标准路径下,比如 /usr/bin、/usr/local/bin 或者 /usr/lib 等。
  • wget -c 网址 下载到当前的工作路径
  • 推荐:创建子环境,用conda安装包,将包安装到子环境中。
  • 删除包时也要用代码删除,不能直接删除。
  • 系统稳定最重要,不要乱删东西。

rRNA基因预测:

for i in *.fna
do
barrnap $i -o 16s_$i
done

blastn / blastp

cat a_1.fasta, a_2.fasta > a_all.fasta
makeblastdb -in a_all.fasta -dbtype nucl -out a_db #nucl/prot
blastn -query b.fasta -db a_db -out c_result #输出比对格式
blastn -query c.txt -db a_db -outfmt 6 -evalue 1e-5 -out c_result #输出简洁的表格格式

c_result:

  • Query id, Subject id, %identity, alignment length, mismatches, gap openings, q. start, q. end, s. start, s. end, e-value, bit score 12项名称。

-outfmt ‘7 qseqid sseqid pident length qcovs qcovhsp qcovus mismatch gapopen qstart qend sstart send evalue bitscore’

  • query id, subject id, identity, alignment length, query coverage per subject, query coverage per hsp, query coverage per uniq subject, mismatches, gap opens, query start, query end, subject start, subject end, evalue.

  • HSP是high scoring pair的首字母缩写,BLAST结果中的每一行就是一个HSP。

  • qcovs, 即 query coverage per subject,qcovs的计算公式是用这对query/subject所有的HSP的query length之和除以query序列的总长度。

  • qcovhsp, 即 query coverage per hsp,qcovhsp是将每一个HSP都分别计算,用该HSP的query length除以query序列的总长度。

  • qcovus, 即 query coverage per uniq subject,qcovus计算所采用的也是一对query/subject所有HSP query length之和除以query序列的总长度,但其query length之和的计算方法,不再是简单地将所有HSP的query length相加,而是要去除掉不同HSP的query length之间的重叠部分。


linux语法细节

  • linux中,输入文件名的时候要把隐含的文件格式也带上才行,c(错),c.txt(对)。
  • 路径不能有空格,所以文件(夹)名字不能有空格,否则cd时提示:-bash: cd: too many arguments
  • Linux识别到单个引号时,会认为输入未完成,回车会在下一行显示>,>代表继续输入。所以,路径不能有单引号。
  • 文件(夹)名字最好不要有-
  • *代表一个或多个字符,?代表1个字符
  • linux和python的计数都是从0开始

NCBI下载基因组

  1. datasets:网速好时;文件命名不完整;可下载多种文件
    https://www.ncbi.nlm.nih.gov/datasets/docs/v2/how-tos/genomes/download-genome/
datasets download genome accession GCF_012044895.1 --filename 1.zip

datasets download genome accession \
--inputfile Thermoproteota.txt \
--filename Thermoproteota_protein.zip \
--include protein \
--assembly-version latest\
--assembly-level chromosome,complete \
--exclude-atypical \
--assembly-source RefSeq \ #'RefSeq' or 'GenBank'(default "all")
--reference \
--preview 

datasets download genome accession \
--inputfile Halobacteriota.txt \
--filename Halobacteriota_genome.zip \
--include genome #genome gff3 protein
  1. ncbi-genome-download:网速不好时;文件命名完整;只能下载基因组;下载基因组数量多时推荐这个
ncbi-genome-download --assembly-accessions 新建文本文档.txt archaea --section refseq --formats fasta --progress-bar --retries 5 #refseq,genbank(default: refseq)

For循环按行读取文件内的内容

for line in $(cat phylum.txt)
do 
echo $line
done

echo相当于print

自动hmmsearch多个文件,产生的结果放到一个文件夹中

conda activate environment1
for i in *.faa
do
hmmsearch MCR_N.hmm $i > N_out/$i #需要提前创建N_out文件夹
done

检索txt文本中有无某段话

grep -l "No hits detected that satisfy reporting thresholds" *.faa
grep -L "No hits detected that satisfy reporting thresholds" *.faa

-c:统计匹配到的文本行数量
-n:显示行号
-l:列出文件内容符合指定的样式的文件名称
-L:列出文件内容不符合指定的样式的文件名称


比较文本文件的差异

diff file1.txt file2.txt

计算fsatq文件reads总数

grep -c "^@" hexane_2.fastq

定向删除文件夹中多个指定的文件

①把要删除的文件名列在 新建文本文档.txt 中
②linux for循环生成批处理文件文本
for line in $(cat 新建文本文档.txt)
do 
echo del D:\\Desktop\\otherarchaea_GCF_genome_original\\$line  #windows路径用\,linux可以识别\\和/,把\\识别输出为\,把/识别输出为/,因为后面要回到windows批处理,所以这里用\\,而不用/
done
③创建sc.txt,将批处理文件文本放到模子中,另存为.bat 所有文件  ANSI
@echo off
批处理文件文本
例如,del C:\path\to\your\folder\file1.txt
echo Files deleted.
pause
④点击批处理文件,定向删除文件夹中多个指定的文件

将windows文件转换为linux文件

dos2unix tqID.txt  # base环境就可以

使用perl根据ID从总的fasta文件中提取序列

perl /home/bioma/script/extract_seq_from_ID.pl all.txt tqID.txt tq.txt #这里的tqID.txt文本要先经过dos2unix转换,all.txt不用转换

SRA下载数据转化为fastq方法(base环境)

fastq-dump SRR8544281 #单端测序(single-end)
fastq-dump --split-3 SRR8138828.1 #双端测序(pair-end),产生两个新的文件,*.1.fastq, *.2.fastq

把一段核苷酸序列转变为氨基酸序列

transeq -sequence input_sequence.fasta -outseq output_sequence.fasta -frame 6

-frame选项的参数可以是以下之一:
1:第一个阅读框(从核苷酸序列第一个核苷酸开始翻译)
2:第二个阅读框
3:第三个阅读框
F:正向的三个阅读框(1、2、3)
-1:第一个反向阅读框
-2:第二个反向阅读框
-3:第三个反向阅读框
R:所有六个阅读框(包括正向和反向)
6: (All six frames))


OrthoFinder

cd /home/bioma/files/liuwei/OrthoFinder
/home/bioma/software/OrthoFinder/OrthoFinder_source/orthofinder.py -t 40 -I 2 -S blast -f protein

帮助文档:/home/bioma/software/OrthoFinder/OrthoFinder_source/orthofinder.py -h


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值