Perl 命令行实战2 - fastq文件的相关操作
fastq文件的介绍
详细介绍:fastq格式
fastq是一种除了fasta文件之外,做生信另外一个最为常见的文件类型。
fastq文件主要是用来存储测序的序列信息的。它以4行为一个单位,是严格按照行限定的格式,不像之前的fasta文件那样比较灵活的形式。
虽然网上有很多关于fastq文件的介绍,这里我还是想啰嗦几句,因为这样到后面写perl程序的时候可以前后对应着看会稍微方便一点
示例
12345678@SRR2177462.1 FCC600JACXX:2:1101:1489:2045/1NGGCAAAAGGAAGCACATATTCGCATATAGAACCAGGATTTATAAGGTACAACAANTAGACTTATCCTCCACTCTCATGTTCATGAATCA+#1=ABDD?FH?HFG>DGHBHIFFHGCGGCHGCGHGII)?FG@DBAEH9???FGAB#-5@(@=EEHECAAH@EE;BCEEFA@ADDCCA;AC@SRR2177462.2 FCC600JACXX:2:1101:1661:2085/1NAATGAAATTAAAGATAGCTGAT ...
Perl 命令行实战1 - fasta文件的相关操作
之前的5篇简书小文已经说明了常用的参数的使用方法,学习了当然要致用啊!这里我们就来操作一下fasta文件。
⛱fasta格式是生信中最为常见也是很容易理解的一种格式。那么使用Perl来对它又可以有哪些操作呢?下面是我在平常会用到的一些操作,现在记录下来,希望对大家有帮助。这一篇你应该就能开始慢慢体会到perl单行的威力了!
fasta文件的介绍
123456789101112>gene1ATGAGCTGGCGATGCTGACTGTGATCTGATGCTGTGACTGACTGACGTATGCGAGCTCAGCTGACGTGTTAA>gene2ATGGCAGGCTGCAGCGATGTAGAGTCGACTTACGACTGTGATCTGATGCTTAGAGTCGACTTAAAAAGTGTGGGTTGA>gene3ATGGCAGGCTGTGATGCTTATGTAGAGTCGAATGACTTTAGAGTCGACTGATGCTTAGAGTCGACTAGTGTGGGTTGGTGTTGA
fasta文件含有两类信息
第一类是以>符号开头的,是标题头信息,记录了基因名称,有时候下 ...
Perl One-Liners之特殊变量
上集回顾
上次我们看了一下-M与-I这两个搭档 这次我们来看看这两个特殊的”变量“$/和$\,不是参数。
解释
12$/ : 输入记录分隔符$\ : 输出记录分隔符
说实话,这两个符号的确是有些诡异!可以这么来记,“太阳出来我爬山坡,爬上山坡我好唱歌”,爬坡的是/(入),下坡的是\(出)。
这两个变量是特殊变量,什么意思呢?就是它们是从娘胎里来的,本来就有,不需要你去声明,它们就在那里。为什么要说这两个变量呢?这两个变量是什么意思呢?下面先说明一下这两个奇特的怪物究竟是个什么玩意,这里举个例子。
比如在工厂车间的流水线,生产罐头的那种:
12345678910111213141516171819202122232425262728293031323334353637 [] [] [] [] [] [] [] [] [] [] [] []->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->| O O O O O O O O ...
Perl One-Liners之参数-M和-I
【上集回顾】
上次我们看了一下-a与-F这两个搭档,男女搭配干活不累~~
这次我们来看一下另外一对搭档~~,参数-M和-I。
【参数解释】
12-M : 导入模块或者编译指示(Pragmas)到Perl单行程序中-I : 指定一个用来查找模块位置的路径
用法
12345perl -Mmodulenameperl -Idirectory# 或者perl -M'modulename'perl -I'directory'
注意模块名称或者引号要贴着-M,中间不能有空格 注意路径或者引号要贴着-I,中间不能有空格,如果路径中有空格,务必用引号将其引起来
实例
-M
目的:比如我要查看当前路径或者文件名的基名
12345678910# 首先查看一下当前路径pwd# 输出/c/Users/tian/Desktop# 比如我想获得该路径的基名,也就是Desktop# 使用File::Basename中的basename函数pwd | perl -MFile::Basename -n -e 'print File::Basename::basename($_)'# 输出Desktop
再来一个例子 如 ...
Perl One-Liners之参数-a和-F
【上集回顾】
上次说到了-p与-n参数,其实再加上之前学的-e参数已经可以做很多事情了,但是为了方便,Perl还有这样一对搭档组合的参数,就是-a和-F
【参数解释】
-a : 将读入的$_进行分割,保存到@F列表之中,类似于split /分隔符/ , $_; 而这个分隔符是由-F参数指定的,其实这个功能与awk工具相似
-F : 在添加-a参数时候,指定分隔符(可以是正则表达式),如果不加好像是由空格作为分隔符,一般对其进行设置
实例说明
为了更加清晰的说明,还是举例子吧,打开终端或者git for windows
输入
123456789101112# 例如我需要把来自管道的数据按照空格分隔成一个一个单元,存到列表里面echo "qwe asd zxc" | perl -n -a -F"\s+"-e ' $" = "\n"; foreach my $item (@F){ print "$item\n"; }'--------------------------------------# 输出qweasdzxc
这次的例子要比之前的例子复杂一点,我来一一说明
...
Perl One-Liners之参数-p和-n
【上集回顾】: 上一次提到了-e参数,一般在使用perl的单行程序时都会加上-e参数。-e参数就是将后面引号内的内容当作perl代码执行。
这一次来说一说另外两个常见的-p和-n参数,这两个参数与输入输出相关
简介
-p:将参数当作文件读取进来,并且每次读取一行遍历文件,并把执行-e参数之后的perl代码部分得到默认变量$_打印到标准输出中(可以是屏幕也可以进入管道)。
-n:将参数当作文件读取进来,并且每次读取一行遍历文件。
两个看起来共性有点大,那有什么区别呢?
在之前先来看一个例子吧!
例子
首先新建一个文件 123.txt
里面的内容为:
123the string is hellothe number is 12345the float is 1.2345
我怎么知道是不是逐行读取的呢?
在123.txt所在位置右键,打开git bash here或者打开终端cd到当前目录
输入:
1234567perl -n -e '++$n;print "$n $_"' 123.txt# 输出为1 the string is hello2 the number is 12345 ...
Perl One-Liners之参数-e
开始单行程序!
建议:后面的代码最好你自己也输入一下感受一下
我是用的Windows进行演示的,在Mac和Linux上也是一样的(终端) 首先写几个示例代码
例子
示例1
1234perl -e 'print "Hello World!"'# 输出Hello World!
示例2
1234perl -e 'my $str = 'asdfghasd';$str =~ s/a/%/g;print "$str"'# 输出%sdfgh%sd
示例3
1234perl -e 'for(1..10){print "$_ "}'# 输出1 2 3 4 5 6 7 8 9 10
发现规律没, perl -e '' 是他们的共同结构,其中关键的是-e参数,它意思就是
在其后面的引号里面的东西当作perl代码来执行。
这个岂不是不需要写pl脚本就可以做很多事情了。是的,就是这样,不过有些东西有些差别,以后再说。 你现在可以在-e后面的的引号(建议用单引号,不然可能报错,然后还会牵扯到其他问题)里面输入perl代码试一试。
用法
1perl -e '代码'
问题
换行
我想换行继续输入, ...
Perl One-Liners之前期准备
简书现在已经广告满天飞(“是兄弟就来砍我”),原本是因为简书的界面的简洁、对于Markdown的渲染比较美观,更因为由很多人在上面把简书当成博客,现在点进去看一些之前产量很高的用户他们最后的一篇文章时间停留在2019年…。简书的这个操作说实话不能理解。(我的简书账号是白菜代码小推车)
Perl单行程序
注:本内容需要点的perl编程基础,最好是读过《perl语言入门》。
本系列是自己平常学习工作中的总结,每一个实例均为我为了讲解而设置的,自己试过的,如有错误,望能见谅。
本系列由
github:eternal-bug
简书:白菜代码小推车
编写。
前言
之前在知乎上看到别人提问
“你见过哪些令你瞠目结舌的Perl代码技巧?” —— 有的人说是perl可以写诗,有的人就说是perl One-Liners。
perl的单行程序在很多时候非常方便,而且可以实现比较复杂的功能,接下来看看它是怎么方便和强大的。
Perl One-Liners简介
我一般就叫 Perl单行程序 ,那与平常写perl脚本有什么区别呢?
平常写perl脚本
12345678#!usr/bin/perl ...
ButterFly主题的调教
参考
官网教程
网友教程-Butterfly主题美化教程
导航栏
刚开始新建博客的时候我发现主页太简洁了,原来是配置文件把导航栏都给注释起来了,把./themes/butterfly/_config.yml文件中的:
12345678910menu: # Home: / || fas fa-home # Archives: /archives/ || fas fa-archive # Tags: /tags/ || fas fa-tags # Categories: /categories/ || fas fa-folder-open # List||fas fa-list: # Music: /music/ || fas fa-music # Movie: /movies/ || fas fa-video # Link: /link/ || fas fa-link # About: /about/ || fas fa-heart
更改为:
1234567891011menu: 主页: / || fas fa-home 归档: /archive ...
使用github和Hexo搭建个人博客
这个文件会不断更新
这两天外面下雨闲着没事准备做一个博客,看网上说要什么搞个域名、买个服务器啊、然后部署啊之类的,觉得有点麻烦,我怕这种麻烦会让我还没开始就结束了写博客之旅,所以就准备用github来托管一下博客,这个比较方便。唯一不好的就是国内上github不稳定,网速还慢,但是相较于在CSDN这个(CSDN Steals Documents on Network)上写博客对于身心健康来说是大有脾益的;相较于gitee的代码审核,github可以即时展示。
本文主要参考的GitHub+Hexo 搭建个人网站详细教程进行,为了简洁,关于工具的详细介绍这里不赘述,只写关键的代码部分。
注意:下面的操作均是在windows系统上进行。
介绍
有关于Hexo是什么和github这里不多说,只说说比较的关键的和写博客密切相关的东西。我个人理解的github + Hexo的博客的流程图:
12345678910111213141516 编写markdown格式的博文 | v 使用Hexo把markdown ...