线性回归:模型之母

线性回归模型看上去很简单,简单到让不少人觉得它并没有什么研究和使用的价值。其实并不是这样,线性回归可以说是最重要的数学模型之一,其他很多模型都建立在它的基础之上。为了更好地理解这一点,让我们先来看一个有关数学家的笑话。

一天,数学家觉得自己受够了数学,于是他跑到消防队去宣布他想当消防员。

消防队长说:“您看上去不错,可是我得先给您一个测试。”消防队长带数学家到消防队后院小巷,巷子里有一个货栈、一只消防栓和一卷软管。

消防队长问:“假设货栈起火,您怎么办?”

数学家回答:“我把消防栓接到软管上,打开水龙头,把火浇灭。”消防队长说:“完全正确!最后一个问题,假设您走进小巷,而货栈没有起火,您怎么办?”

数学家疑惑思索了半天,终于答道:“我就把货栈点着。”消防队长大叫起来:“什么?太可怕了!您为什么要把货栈点着?”

数学家回答:“这样我就把问题化简为一个我已经解决过的问题了。”

搭建模型的思路和笑话中数学家的思路一样。当遇到一个新问题时,总是考虑通过某种数学上的变换,将未知的问题转化为已知模型能解决的问题。所以任何一个复杂模型,一层层拨开来,里面可能藏着好多个线性回归模型。因此,线性回归模型很有研究的必要。深入了解它的模型细节能帮助我们理解其他模型,进而指引我们根据实际场景搭建有效的模型。

摘自:唐亘.精通数据科学:从线性回归到深度学习

Matplotlib的样式

今天粗略看了下scikit-learn文档,发现首先第一步需要弄清楚的是python的画图,也就是首先得面对matplot,打算先从matplot学起。在网上搜了下matplot画图的事例,发现比较散乱,不够系统,决定还是先跟着matplot的文档过一遍,然而,首先就面对了一个问题,因为原来用ggplot画图,对ggplot这个样式比较感兴趣,试了下ggplot样式,果然出现了想要的图形,但问题来了,当我测试文档中例子时,怎么都做不出文档中输出的图形,颜色不对,想改成默认的样式,但却不知道怎么改。搜索了很多之后,终于找到了解决的办法,用plt.rcdefaults()。

1
2
import matplotlib.pyplot as plt
plt.rcdefaults()

可以用下面符号改变图中标记的样式:

线的样式 描述
'-' 实线
'--' 杠线
'-.' 点杠线
':' 点线
颜色的样式 描述
'b' 蓝色
'g' 绿色
'r' 红色
'c' 青色
'm' 品红
'y' 黄色
'k' 黑色
'w' 白色
标记点的样式 描述
'.'
','
'o'
'v' 下三角
'^' 上三角
'<' 左三角
'>' 油三角
'1' 下三角
'2' 上三角
'3' 左三角
'4' 油三角
's' 方形
'p' 五边形
'*' 星形
'h' 六边形1
'H' 六边形2
'+' 加号
'x' 叉号
'D' 钻石
'd' 细钻石
'\|' 短竖线
'_' 短横线

matplotlib的颜色种类:

Bioperl的简单快速安装

Bioperl 由于涉及到的包太多,需要超过12000的单独的检测,安装起来比较麻烦,而且很多检测都通不过,对于新手过于繁杂,现在bioperl官网介绍了一种简单快速安装的方法————用第三方工具进行安装,经亲自测试,效果非常好,现简要介绍而下。
1 安装perlbrew(https://perlbrew.pl/)
在终端输入

curl -L https://install.perlbrew.pl | bash

如果系统没有curl命令
对于linux系统

wget -O - https://install.perlbrew.pl | bash

FreeBSD系统

fetch -o- https://install.perlbrew.pl | sh

也可以用cpan安装,在终端输入(注意不需要先打开cpan)

1
2
sudo cpan App::perlbrew
perlbrew init

如果是用cpan安装,perlbrew程序安装在/usr/bin/perlbrew 或者 /usr/local/bin/perlbrew,默认的perlbrew的根目录是~/perl5/perlbrew 。

2 安装cpanm

perlbrew install-cpanm

3 安装Bio::perl

cpanm Bio::Perl

如果找不到cpanm,就输入cpanm的绝对路径

/root/perl5/perlbrew/bin/cpanm Bio::Perl

如果其中报错缺少哪个模块或者哪个模块版本太老,就先安装报错的模块,我的显示是 Test::More 模块版本太老,我就用cpan “install Test::More”就好了。如果正确安装会显示

–> Working on Bio::Perl
Fetching http://www.cpan.org/authors/id/C/CJ/CJFIELDS/BioPerl-1.007001.tar.gz … OK
Configuring BioPerl-1.007001 … OK
Building and testing BioPerl-1.007001 … OK
Successfully installed BioPerl-1.007001
1 distribution installed

一般在第一步“Working on Bio::Perl”会等一段时间,因为是要下载安装包,只要没有报错,等着就可以了。

Aspera从NCBI下载数据

如果要从NCBI下载大数据,单纯用FTP下载工具根本不够用了,还在NCBI提供了一款下载神器Aspera,试着用了一下,效果非常好,我6M的宽带速度可以达到5M/s,现简要介绍一下使用方法和遇到的问题。
1、下载
下载地址为:http://downloads.asperasoft.com/en/downloads/8?list
先点击操作系统的图标,在下拉框中就出现了相应的操作系统,再点下拉框右边那个小三角形,选择要下载的版本,然后点左边的”Download”图标就可以下载了。这个设计的真心有问题,反正我点了操作系统后,怎么也没找到下载的图标,后面还是不经意间点了那个下拉框后才出现。
2、安装
Windowns下直接双击下载的文件,linux下运行“ sh aspera-connect-xx-linux-64.sh ”,安装完成后在当前目录会找不到安装文件,其实是安装在当前用户的根目录下了,linux安装文件为隐藏文件“/home/用户/.aspera/”。windows中会出现在开始菜单里,具体的配置可以参考“ http://boyun.sh.cn/bio/?p=1933 ”的介绍。
3、使用
如果是批量下载,将要下载的文件链接存入一个文件,例如我要下载所有植物参考蛋白数据,先在NCBI FTP中找到所在目录,将要下载的文件路径存入文件plant_protein_seq_file_list.txt,格式如下/refseq/release/plant/plant.1.protein.faa.gz,每个文件一行,然后运行

/home/用户/.aspera/connect/bin/ascp -k 1 -QT -l 100M  -i /home/用户/.aspera/connect/etc/asperaweb_id_dsa.openssh --mode recv --host ftp-private.ncbi.nlm.nih.gov --user anonftp   --file-list plant_protein_seq_file_list.txt   ./

具体各参数的意思可以运行/home/用户/.aspera/connect/bin/ascp –help查看软件自带的说明。
备注:
(1)将“用户”换成当前使用的用户名。
(2)如果使用asperaweb_id_dsa.putty会出现要输入密码的情况,建议换成asperaweb_id_dsa.openssh,反正我找了半天都没有找到密码。
(3)“./”表示的是下载的输出目录为当前目录,也可以换成其它的目录。
如果是单独下载一个文件,运行

/home/用户/.aspera/connect/bin/ascp -k 1 -QT -l 100M -i /home/用户/.aspera/connect/etc/asperaweb_id_dsa.openssh -T anonftp@ftp-private.ncbi.nlm.nih.gov:/refseq/release/plant/plant.1.protein.faa.gz ./

google根据图片搜索图片

最近在浏览网页的时候看到一张图“凝结了人类一半智慧的照片,”

凝结了人类一半智慧的照片

想找一下它的出处,无意中点了下右键,发现有一个”用google搜索图片”的功能,点了一下,想不到马上出现这张图片的来源,对该图片的最佳猜测是”solvay conference 1927 color”,而且出现了外观类似此图片的图片搜索结果,

图片搜索结果

看来google的图片识别技术非常高了,以后还是少传点私人的照片到网上吧,不然可以被瞬间人肉,不过如果想扩大影响,也可以多传点。

centOS7 安装mysql5.7

mysql5.7相比较mysql5.6而言,有很大进步,特别对于安装来说,要简单得多。现将方法简介而下。
前两步和安装mysql5.6相同。
1、卸载mariadb
rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64
###会提示错误:依赖检测失败
###加上–nodeps参数强制卸载
rpm -e –nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
如果找不到就用yum -y remove mariadb-libs.x86_64
2、下载mysql5.7
进入mysql下载官网,点击左上方的“Community”,选择平台“Red Hat Enterprise Linux”,下载此版本下的mysql-5.7.11-1.el7.x86_64.rpm-bundle.tar(大小为520.7M),如果点击Download会提示你要先登录Oracle帐户,如果没有帐户或者不想登录,可以点击下方的“No thanks,just start my download”,也可一个FTP站点下载,里面包含了几乎所有的mysql版本。
3、安装
解压:tar xvf mysql-5.7.11-1.el7.x86_64.rpm-bundle.tar ,先安装“rpm -ivh mysql-community-common-5.7.11-1.el7.x86_64.rpm”,然后“mysql-community-libs-5.7.11-1.el7.x86_64.rpm”,再“mysql-community-client-5.7.11-1.el7.x86_64.rpm”,“mysql-community-devel-5.7.11-1.el7.x86_64.rpm”,最后“mysql-community-server-5.7.11-1.el7.x86_64.rpm”。
安装后mysql的主要文件如下:
MySQL Installation Layout for Linux RPM Packages from the MySQL Developer Zone

Files or Resources Location
Client programs and scripts /usr/bin
mysqld server /usr/sbin
Configuration file /etc/my.cnf
Data directory /var/lib/mysql
Error log file For RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.log

For SLES: /var/log/mysql/mysqld.log

Value of secure_file_priv /var/lib/mysql-files
System V init script For RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqld

For SLES: /etc/init.d/mysql

Systemd service For RHEL, Oracle Linux, CentOS or Fedora platforms: mysqld

For SLES: mysql

Pid file /var/run/mysql/mysqld.pid
Socket /var/lib/mysql/mysql.sock
Keyring directory /var/lib/mysql-keyring
Unix manual pages /usr/share/man
Include (header) files /usr/include/mysql
Libraries /usr/lib/mysql
Miscellaneous support files (for example, error messages, and character set files) /usr/share/mysql

3、初始化
切换到root用户,启动服务“service mysqld start”,找到root用户的初始密码“grep ‘temporary password’ /var/log/mysqld.log”,用找到的密码登录root用户“mysql -uroot -p ”,改密码“mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘yourpasswd’; ”。

Xming + PuTTY 在Windows终端运行图形界面的程序

有些程序需要运行图形界面,特别是用java写的程序,例如R,试着用Xming + PuTTY可以实现。
1、下载xming
这个百度一下吧,我忘了在哪里下了,好像网上介绍的网址有些不对,多试一下就可以。
2、登录xming
第一次登录用XLaunch,一路默认就可以,再点xming运行xming服务。
3、修改putty
Connection\SSH\X11:Enable X11 Forwarding前加对勾,X display Location设为127.0.0.1:0,这里的 0 就是配置 Xming X server 时指定的 Display Number,127.0.0.1是localhost地址,最好写这个IP地址,而不是像网上介绍的写“localhost”。
4、修改SSH配置文件
切换到根用户,vim /etc/ssh/sshd_config
AllowTcpForwarding yes
X11Forwarding yes
如果有“X11Forwarding no”就把它注释掉。
5、安装x11
yum -y install xorg-x11-xauth
6、重启服务器,登录putty后,在终端运行”xterm”就可以了。

Blast+本地化及使用方法

原来一直用blast的,但NCBI已停止了对blast的更新,而强力推荐使用blast+,这次因为要做blast的数据量比较大,所以试了一下blast+,同时也用blast做了一下,发现blast+果然要快得多,看来习惯要改变了。其实blast+和blast的原理差不多,只不过程序参数和名称有了点变化而已,现简要介绍一下其本地化的方法:
1、下载最新版的程序,根据自己的系统选择合适的版本。
2、解压后进入程序目录……ncbi-blast-2.2.31+/bin,各个程序的功能说明可以参考我的另外一篇博客
3、各程序的参数说明可以用自带的help,例如想查blastx的参数说明可以用: ./blastx -help
4、做blast前一般要先格式化数据库,除非只是几个序列之间的比对,例如格式化一个蛋白数据库可以用下列参数:
$HOME/……/ncbi-blast-2.2.31+/bin/makeblastdb -in uniprot_sport -dbtype prot -input_type fasta -parse_seqids -hash_index
主要几个程序的使用例子:
blastp -query protein.fa -out /protein.output -db dbname -outfmt 0 -evalue 1e-3 -max_target_seqs 20
blastn -query nucl.fa -out output -db dbname -outfmt 6 -evalue 1e-5 -num_descriptions 10
blastx -query nucl.fa -out output -db dbname -outfmt 6 -evalue 1e-5 -num_descriptions 10
参数说明:
-query: 输入文件路径及文件名
-out:输出文件路径及文件名
-db:格式化了的数据库路径及数据库名
-outfmt:输出文件格式,2.2.31版共有14种格式,6是tabular格式对应BLAST的m8格式
-evalue:设置输出结果的e-value值
-max_target_seqs:找到的最大的目标的数目,也可用-num_descriptions,tabular格式输出结果的条数

TGICL安装和使用

TGI Clustering tools(简称TGICL),是对大量EST或者转录本数据进行快速聚类的软件,也就是将序列进行组装拼接。原理是先用NCBI的megablast先粗略进行聚类,然后用CAP3进行组装。
1、下载
TGICL在sourceforge网站可以下载到(TGICL-2.1.tar.gz),我这里是下载的是最新的2.1版。
2、安装
$tar zxvf TGICL-2.1.tar.gz
$cd TGICL-2.1

$perl Makefile.PL
$make
$make test
$make install
完成

或者
perl Build.PL
./Build
./Build test
./Build install

tgicl就安在用户目录上了,可将刚安装好的perl包和程序分别拷贝到/usr/local/lib64/perl5/ 和/usr/local/bin/perl5/中。
用的时候调用此程序就可以了,如
/usr/local/bin/perl5/tgicl -F /home/用户/all.contigs.fasta

3、安装存在的问题及解决方法
(1)Can’t locate TGI/Mailer.pm in @INC (@INC contains:
那是找不到Mailer.pm,将TGICL-2.1/lib里的文件拷贝到/usr/local/lib64/perl5/中去就可以了。
(2)Can’t locate File/HomeDir.pm in @INC (@INC contains:
那是缺少perl的File/HomeDir.pm包,进入cpan,install File::HomeDir.pm
(3)Package main, File ./tgicl, Line 27 == Failed to find tgicl.cfg config file in
那是因为tgicl.cfg配置文件没有找到,将TGICL-2.1/conf/tgicl.cfg拷贝到tgicl所在的目录,如/usr/local/bin/perl5/。
(4)Use of :locked is deprecated at ……/TGI/DBDrv.pm line 36.
打开此文件,在our $VERSION = ‘0.01’;这句的下面加上一行,
no warnings ‘deprecated’;
###直接忽略掉deprecated警告
(5)运行时产生错误err_tgicl_all_contigs.fa.log文件显示不能运行formatdb程序,因为tgicl是32 bit系统的程序,在64位系统不能运行,要安装32位运行库glibc.i686和libstdc++.i686。直接yum install glibc.i686和yum install libstdc++.i686
(6)error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
安装zlib.i686
sudo yum install zlib.i686