linux挂载移动硬盘

挂载移动硬盘可以使用mount命令,注意需要root权限,先使用fdisk -l查看插入的硬盘名称,移动硬盘一般在最后几行,然后使用mount命令挂载。

fdisk -l
mount /dev/sdc1 /mnt/

卸载硬盘使用unmount命令,如果显示busy,就使用-f参数强行卸载。

umount -f /mnt

如果还是不行的话,可以是其它用户正在挂载的目录里面,或者root用户正在挂载的目录里面,退出挂载的目录,然后使用umount命令就可以了。

利用primer3批量设计引物

1、Primer3的下载与安装

primer3官网上下载相应版本的程序,解压后安装,然后检测是否有安装错误。例如安装2.6.1版本:

wget https://github.com/primer3-org/primer3/archive/refs/tags/v2.6.1.tar.gz
tar xzvf primer3-2.6.1.tar.gz
cd primer3-2.6.1/src
make
make test

安装好之后只需要调用src文件夹中的primer3_core程序就可以了,可以拷贝到其它的地方使用。

primer3的各参数说明可以参考官方文档,中文的可以参考这篇博客

2、模板的准备

将模板序列单独放在一个文件,如果是fasta格式的可以命名为fasta格式的代码读取文件,如果是tsv格式的(第一列为序列id,第二列为模板序列),使用tsv格式对应的代码读取文件。然后用下面代码进行批量设计。如果对引物条件不敏感,可以在参数中加入这个参数PRIMER_PICK_ANYWAY=1“,如果想获得多对引物可以修改这个参数”PRIMER_NUM_RETURN=1“。其它参数也可以根据需要修改或者添加。

#!/usr/bin/perl
use strict;
use warnings;

my $primer3_core = "./primer3_core";
my $Seq_file = "./input_file";
my $primer3out_file = "./primer3out.txt";

############Change the parameter if need #######
my $primer3input = <<SET;
PRIMER_TASK=generic
PRIMER_PICK_LEFT_PRIMER=1
PRIMER_PICK_INTERNAL_OLIGO=0
PRIMER_PICK_RIGHT_PRIMER=1
PRIMER_PRODUCT_SIZE_RANGE=75-100
PRIMER_EXPLAIN_FLAG=1
PRIMER_FIRST_BASE_INDEX=1
PRIMER_LIBERAL_BASE=1
SEQUENCE_FORCE_LEFT_END=41
PRIMER_NUM_RETURN=1
PRIMER_OPT_SIZE=20
PRIMER_MIN_SIZE=18
PRIMER_MAX_SIZE=25
PRIMER_MIN_GC=30.0
PRIMER_MAX_GC=70.0
PRIMER_MIN_TM=58.0
PRIMER_OPT_TM=60.0
PRIMER_MAX_TM=62.0
=
SET

open(F, $Seq_file) or die "Can not open the flankingSeq file $!\n";
open(POUT, ">$primer3out_file");
my $print_out_head = join("\t", ("primer_id", "Foward", "Reverse"));
print POUT $print_out_head."\n";

my %id2seq;
my $id="";
my $seq="";

############if the input file is the fasta format##################
while(<F>){
	if(/^>(\S+)/){
		if($id){
			$id2seq{$id}=$seq;
			$seq="";
		}
		$id=$1;
	}else{
		s/\s+$//;
		$seq.=$_;
	}
	if(eof){
		$id2seq{$id}=$seq;
	}
}

############if the input file is the tsv format, use this code################
#while(<F>){
#	s/\s+$//;
#	($id, $seq)=split/\t/;
#	$id2seq{$id}=$seq;
#}		
		
foreach my $primer_id(keys %id2seq){
	my (@primer_left, @primer_right)=&primerPick($primer_id, $id2seq{$primer_id});
	my $i=0;
	while($i<=$#primer_left){
		print POUT $primer_id."\t".$primer_left[$i]."\t". $primer_right[$i]."\n" if($primer_left[$i] and $primer_right[$i]);
	}
}
	
close(POUT);
system("rm ./primer3input.txt");


sub primerPick{
	my ($snp_id, $template)=@_;
	my $attachmentSet = <<ASET;
SEQUENCE_ID=$snp_id
SEQUENCE_TEMPLATE=$template
ASET

	my $primer3set=$attachmentSet.$primer3input;
	open(OUT, ">./primer3input.txt");
	print OUT $primer3set;
	close(OUT);	
	
	my $primer3output = `$primer3_core --default_version=2 --io_version=4 --strict_tags  <./primer3input.txt `;
	my @primer_left="";
	if($primer3output=~/PRIMER_LEFT_(\d+)_SEQUENCE=(\w+)/g){
		$primer_left[$1]=$2;
	}
	my @primer_right="";
	if($primer3output=~/PRIMER_RIGHT_(\d+)_SEQUENCE=(\w+)/g){
		$primer_right[$1]=$2;
	}
	
	return @primer_left,@primer_right;
}

如果只是检测设计的引物是否满足条件,可以引入以下函数修改对应的参数。

sub checkPrimer{
	my ($primer_id, $primer_left, $primer_right, $template)=@_;
	my $primer3set=$primer3input;
	$primer3set=~s/PRIMER_TASK=generic/PRIMER_TASK=check_primers/;
	$primer3set=~s/PRIMER_PICK_LEFT_PRIMER=1/PRIMER_PICK_LEFT_PRIMER=0/;
	$primer3set=~s/PRIMER_PICK_RIGHT_PRIMER=1/PRIMER_PICK_RIGHT_PRIMER=0/;
	my $attachmentSet = <<ASET;
SEQUENCE_ID=$primer_id
SEQUENCE_TEMPLATE=$template
SEQUENCE_PRIMER=$primer_left
SEQUENCE_PRIMER_REVCOMP=$primer_right
ASET
	$primer3set = $attachmentSet.$primer3set;
	open(OUT, ">./primer3input.txt");
	print OUT $primer3set;
	close(OUT);
	my $primer3out = `$primer3_core --default_version=2 --io_version=4 --strict_tags  <./primer3input.txt `;

	if($primer3out=~/PRIMER_PAIR_EXPLAIN=considered 1, ok 1/){
		return 1;
	}else{
		return 0;
	}
}

perl删除字符串中的重复字符

在设计KASP引物时,需要知道双等位基因型对应的碱基,这就需要从GT中却除重复的基因型,可以参考下面的代码:

#!/usr/bin/perl
use strict;
use warnings;
my $string="A/C	A/C	A/C	A/C	A/C	A/A	A/C	A/A	A/C	A/C	A/C	A/C	A/A	A/C	A/C	A/A";
$string=~s/\s+//g;
while($string =~ s/((.).*)\2+/$1/g) {};
print $string."\n";

perl循环读取文件时判断是否到最后一行

当需要去掉序列的分行符或者是建立序列的索引时,当序列文件较大时,不好将文件读入内存,需要一行一行的去读取,但怎样判断到了文件最后一行呢,在perl中一般用eof函数,但 eof 和带空圆括弧对 () 的 eof()表示的意思是不一样的,特别容易混淆。带圆括弧的 eof() 只是检测一组文件中的最后一个文件的文件结束,而 eof(没有圆括弧)在 while (<>) 循环里检查每个文件的文件结束。下面是建立fasta文件索引的代码。

#!/usr/bin/perl
use strict;
use warnings;

my $genome_file = “genomic.fna";
open(F, $genome_file);
#open(OUT, ">outfile");

my %chr2seq;
my $id="";
my $seq="";
while(<F>){
	if(/^>(\S+)/){
		if($id){
			$chr2seq{$id}=$seq;
			$seq="";
		}
		$id=$1;
	}else{
		s/\s+$//;
		$seq.=$_;
	}
	if(eof){
		$chr2seq{$id}=$seq;
	}
}

利用R语言做冗余分析

在统计学中,冗余分析是通过原始变量与典型变量之间的相关性,分析引起原始变量变异的原因。以原始变量为因变量,典型变量为自变量,建立线性回归模型,则相应的确定系数等于因变量与典型变量间相关系数的平方。它描述了由于因变量和典型变量的线性关系引起的因变量变异在因变量总变异中的比例。 在生态学中应用比较多,也有用来做基因型与表型性状做关联分析的。利用R语言比较好实现,也方便做图。

主要需要用到vegan这个R包,其中比较关键的函数是rda这个函数,进行数据分析后可以用ggplot2进行绘图。具体代码如下:


library(vegan)
library(ggrepel)  ###这个包主要用来防止画图时标签重叠,不过好像用处也不是很大,不用的话将后面geom_text_repel改成geom_text就可以了,标签位置可以后期用AI进行调整
library(ggplot2)

scale_df <-function(xv)          ########数据标准化
{
  max_v <- max(xv)
  min_v <- min(xv)
  return(round((xv-min_v)/(max_v-min_v), 2))
}


df <- read.table("df.txt", sep = "\t", header = F)
df <- apply(df, 2, scale_df)
env <- as.data.frame(df[,-c(1:7)])    #######数据的第8列到最后为解释变量,主要是一些环境因子
phe <- as.data.frame(df[,c(1:7)])    ####数据的前7列为响应变量,主要是样本的表型数据

RDA <- rda(env~phe[,1] + phe[,2] + phe[,3] + phe[,4] + phe[,5] + phe[,6] + phe[,7], phe)  ######进行RDA分析
######################################################
ii <- summary(RDA)
sp <- as.data.frame(ii$species[,1:2]) * 2      ####为了避免向量的标签重叠将数据进行了变换,不会影响向量的形状,对结果不会有影响
st <- as.data.frame(ii$sites[,1:2])
yz <- as.data.frame(ii$biplot[,1:2]) * 3

row.names(sp) <- c("MWD", "WHC", "BD", "SP", "CEC", "pH", "S1", "S2", "S3")   ####对解释变量进行重命名
row.names(yz) <- c("SOC", "TN", "SOCS", "TNS", "POC", "AN", "POC/MOC")  ####对响应变量进行重命名

p <- ggplot() + 
  geom_point(data = st, aes(RDA1, RDA2), col = "gray") +  ###各样本的分布图,也可以去掉
  geom_segment(data = sp, aes(x=0, y=0, xend = RDA1, yend = RDA2),
               arrow = arrow(angle=22.5,length = unit(0.35,"cm"),
                             type = "closed"),linetype=1, size=0.6,colour = "red") +  ####解释变量的向量图
  geom_text_repel(data = sp, aes(RDA1, RDA2, label=row.names(sp))) +
  geom_segment(data = yz, aes(x=0, y=0, xend = RDA1, yend = RDA2),
               arrow = arrow(angle=22.5,length = unit(0.35,"cm"),
                             type = "closed"),linetype=1, size=0.6,colour = "blue") +    ####响应变量的向量图
  geom_text_repel(data = yz, aes(RDA1, RDA2, label=row.names(yz))) +
  labs(x="RDA axis1(76.89%)", y="RDA axis2(14.43%)") +
  geom_hline(yintercept=0,linetype=3, size=1) +   ####分割线
  geom_vline(xintercept=0,linetype=3, size=1)+
  theme_bw()+theme(panel.grid=element_blank())

pdf("RDA.pdf")
print(p)
dev.off()

主要参考资料:

冗余分析(RDA)在R语言中的实现
R语言做冗余分析(RDA)的一个简单小例子
R语言实现冗余分析(RDA)完整代码
第五章 非约束排序3 主成分分析(PCA)-基于Hellinger转化的数据以及其他内容

perl批量导入手机号码和邮箱

当单位或者公司发布通讯录时,会增加很多新的联系人,一个一个的导入实在是太麻烦了,所以打算自己写个代码生成个联系人文件,然后导入手机中就可以了,费话不多说,开干。

首先 将联系人信息用EXCEL整理成三列 ,第一列为姓名,第二列为手机号码,第三列为邮箱,其它也是可以加一些分组信息和地址之类的信息,但考虑信息越详细,信息泄露的后果就越严重,因此只选择添加手机号码和邮箱。整理好后复制到一个”input.txt”的文本文件,可以用记事本创建。运行下面perl程序。

将生成的“contacts.vcf”文件传到手机,然后用“联系人”或“电话本”打开这个文件,就会提示导入联系人,成功导入后,选择手机中的整理联系人,合并名字重复的联系人就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/perl
##用perl处理Excel通讯录(从Excel复制到input.txt),最后形成vCard的
###############################################################
#input.txt文件格式如下:
#第一列姓名,第二列手机号码,第三email,中间制表符分开
###############################################################
#比如输入文件内容如下:
#张三 手机号码 email
#李四 手机号码 email
###############################################################
#输出内容如下:
#BEGIN:VCARD
#VERSION:2.1
#N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=E6=9D=8E=E5=9B=9B;;;
#FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=9D=8E=E5=9B=9B
#TEL;CELL:1234567
#EMAIL;X-internet:yuyin110110110@163.com
#END:VCARD
###############################################################
##perl convert2vcf.pl 
##Eidit by XiaowenH 2020-05-20
###############################################################
use strict;
use warnings;
 
#先打开读取文件内容,保存到数组里面
open(FH, "input.txt");#读取通讯录
my @data=&lt;FH>;
close(FH);
#输出结果
open(OUT,">contacts.vcf"); #输出通讯录
foreach my $line (@data){
    $line=~s/\s+$//;
    my @l=split/\t/,$line;
    my $name = $l[0];
    $name=~s/^\s+//g;  ###去掉名字开头和结尾空格
    $name=~s/\s+$//g;
 
    my $phone="";
    if(exists $l[1]){
        $l[1]=~s/^\s+//g; ###去掉电话号码开头和结尾空格
        $l[1]=~s/\s+$//g;
	$phone=$l[1];
    }
 
 
    my $email = "";
    if(exists $l[2]){
	$email = $l[2];
    }
    print OUT "BEGIN:VCARD\n";
    print OUT "VERSION:2.1\n";
    print OUT "N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;$name;;;\n";
    print OUT "FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:$name\n";  #姓名
    print OUT "COUNTRYISO:CN\n";
    print OUT "TEL;CELL:$phone\n";#手机号
    print OUT "EMAIL;X-internet:$email\n";#邮箱
    print OUT "END:VCARD\n";
}
close(OUT);

使用ggplot2画Admixture群体结构图

关于怎么使用Admixture做群体结构分析可以参考这个篇文章。大多数其它介绍的绘图的都是用barplot画图,这样得到的图很多地方不好调整,这里主要讲怎么使用ggplot2画分群的结果图。

  1. 对群体进行聚类,将相近的个体放在一起,这里主要用到dist函数和hclust函数。
  2. 将个体的名称按照聚类的顺序排列
  3. 将个体的分群信息也按聚类的顺序排列
  4. 重新组合成一个新的数据框
  5. 使用reshap2的melt将数据框的宽数据转换成长数据
  6. 使用ggplot2绘图
library(ggplot2)
library(reshape2)

####cluster#######
df_order <- read.table("admixture/snp.4.Q", header = F, sep = " ")
out.dist=dist(df_order, method="euclidean")
out.hclust=hclust(out.dist,method="ward.D")
order_s <- out.hclust$order

df_sample <- read.table("admixture/snp.nosex", header = F, sep = "\t") ##存放个体名称的文件

df_sample  <- df_sample [,1]

df_sample <- df_sample[order_s]

col_panel <- rainbow(4)  ###设置调色板
#########i=4
i <- 4
file <- paste("admixture/snp.", i, ".Q", sep = "")
df <- read.table(file, header = F, sep = " ")
df <- df[order_s,]

df_new <- transform.data.frame(samples=df_sample, df)  ###组合成新的数据框

aql <- melt(df_new, id.vars = "samples")
aql$samples <- factor(x=aql$samples, levels = df_sample)
y_lab <- paste("K=", i, sep = "")

p4 <- ggplot(aql) + geom_bar(aes(x=samples, weight=value, fill=variable), position = "stack", width = 1) +
  scale_x_discrete(expand = c(0,0)) + scale_y_discrete(expand = c(0,0)) + 
  scale_fill_manual(values = col_panel ) + ####可根据需要调整颜色
  theme(legend.position = "none",
        panel.background = element_blank(),
        axis.text.x = element_text(angle = 90, size = 10),
        axis.title.x = element_blank(),
        axis.ticks = element_blank(), axis.title.y = element_text(size = 13),
        panel.grid = element_blank()) + ylab(y_lab)

在Jupyter中配置使用Julia语言

最近了解到Julia是种非常好用的语言,打算学习一下,在 coursera上找到了相应的课程,但是是写在Jupyter中的,只能安装 IJulia 插件,按照要求先是在Julia终端(安装Julia的过程很简单,这里就不介绍了)输入

1
2
using Pkg
Pkg.add("IJulia")
结果出现了好像包不能编译的情况如ZMQ,”build ZMQ”出现了下面的错误:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(v1.1) pkg&gt; build ZMQ
  Building ZMQ → `~/.julia/packages/ZMQ/ABGOx/deps/build.log`
┌ Error: Error building `ZMQ`: 
│ ┌ Warning: platform_key() is deprecated, use platform_key_abi() from now on
│ │   caller = ip:0x0
│ └ @ Core :-1
│ ┌ Warning: Could not extract the platform key of https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+6/ZMQ.x86_64-apple-darwin14.tar.gz; continuing...
│ └ @ BinaryProvider ~/.julia/packages/BinaryProvider/TcAwt/src/Prefix.jl:185
│ [ Info: Downloading https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+6/ZMQ.x86_64-apple-darwin14.tar.gz to /Users/davidbuchaca1/.julia/packages/ZMQ/ABGOx/deps/usr/downloads/ZMQ.x86_64-apple-darwin14.tar.gz...
│ ERROR: LoadError: Could not download https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+6/ZMQ.x86_64-apple-darwin14.tar.gz to /Users/davidbuchaca1/.julia/packages/ZMQ/ABGOx/deps/usr/downloads/ZMQ.x86_64-apple-darwin14.tar.gz:
│ ErrorException("")
│ Stacktrace:
│  [1] error(::String) at ./error.jl:33
│  [2] #download#89(::Bool, ::Function, ::String, ::String) at /Users/davidbuchaca1/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:498
│  [3] #download at ./none:0 [inlined]
│  [4] #download_verify#90(::Bool, ::Bool, ::Bool, ::Function, ::String, ::String, ::String) at /Users/davidbuchaca1/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:567
│  [5] #download_verify at ./none:0 [inlined]
│  [6] #install#129(::Prefix, ::String, ::Bool, ::Bool, ::Bool, ::Function, ::String, ::String) at /Users/davidbuchaca1/.julia/packages/BinaryProvider/TcAwt/src/Prefix.jl:314
│  [7] (::getfield(BinaryProvider, Symbol("#kw##install")))(::NamedTuple{(:prefix, :force, :verbose),Tuple{Prefix,Bool,Bool}}, ::typeof(install), ::String, ::String) at ./none:0
│  [8] top-level scope at /Users/davidbuchaca1/.julia/packages/ZMQ/ABGOx/deps/build.jl:44
│  [9] include at ./boot.jl:326 [inlined]
│  [10] include_relative(::Module, ::String) at ./loading.jl:1038
│  [11] include(::Module, ::String) at ./sysimg.jl:29
│  [12] include(::String) at ./client.jl:403
│  [13] top-level scope at none:0
│ in expression starting at /Users/davidbuchaca1/.julia/packages/ZMQ/ABGOx/deps/build.jl:40
│ [22:31:24] dyld: Library not loaded: @rpath/libssl.1.0.0.dylib
│ [22:31:24]   Referenced from: /Users/davidbuchaca1/anaconda3/lib/libssh2.1.dylib
│ [22:31:24]   Reason: image not found
└ @ Pkg.Operations /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Operations.jl:1075
整整折腾了太半天都没解决,如修改logo文件,切换到管理员权限,重装Julia等等都行不通,包括官网上的方法也不行,最后在CSDN中糖王大王中的一篇文章中找到了方法,原来是要先安装C库,而且只需要安装“MbedTLS”就可全部解决,包括IJulia都安装好了。具体思路就是先用“julia> rm(joinpath(homedir(), “.julia”, “registries”); recursive=true)”删除掉旧的registries,再导入”Pkg”,”julia> import Pkg”,最后安装”MbedTLS”,”julia> Pkg.build(“MbedTLS”)”,三步全部搞定。

如果还是出现上述的问题,可能还需要装一个windows更新Windows Management Framework

Download Windows Management Framework 5.1 from Official Microsoft

安装完成后”using IJulia”,因为电脑原来安装Anaconda3时已经安装了Jupter Notebook了,所以这时只需要打开Jupter Notebook,在首页右上角的”New”下拉菜单上就可以找到新安装的”julia”,打开就可以运行代码了。不需要在Julia终端运行“notebook()”。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.2.0 (2019-08-20)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |
 
(v1.2) pkg&gt; add ZMQ
  Updating registry at `C:\Users\kejunjun\.julia\registries\General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
 Resolving package versions...
  Updating `C:\Users\kejunjun\.julia\environments\v1.2\Project.toml`
 [no changes]
  Updating `C:\Users\kejunjun\.julia\environments\v1.2\Manifest.toml`
 [no changes]
julia&gt;  rm(joinpath(homedir(), ".julia", "registries"); recursive=true)
julia&gt; import Pkg
julia&gt; Pkg.build("MbedTLS")
   Cloning default registries into `C:\Users\kejunjun\.julia`
   Cloning registry from "https://github.com/JuliaRegistries/General.git"
     Added registry `General` to `C:\Users\kejunjun\.julia\registries\General`
 Installed Lazy ──────────────────────────────────── v0.14.0
 Installed FixedPointNumbers ────────── v0.6.1
 Installed Conda ────────────────────────────────── v1.3.0
 Installed FunctionalCollections ── v0.5.0
 Installed Distances ────────────────────────── v0.8.2
 Installed Traceur ────────────────────────────── v0.3.0
 Installed BinaryProvider ──────────────── v0.5.6
 Installed WebIO ────────────────────────────────── v0.8.11
 Installed Requires ──────────────────────────── v0.5.2
 Installed StringDistances ────────────── v0.4.0
 Installed CodeTracking ──────────────────── v0.5.8
 Installed Hiccup ──────────────────────────────── v0.2.2
 Installed Tokenize ──────────────────────────── v0.5.6
 Installed OrderedCollections ──────── v1.1.0
 Installed MbedTLS ────────────────────────────── v0.7.0
 Installed TreeViews ────────────────────────── v0.3.0
 Installed SoftGlobalScope ────────────── v1.0.10
 Installed Juno ──────────────────────────────────── v0.7.2
 Installed Pidfile ────────────────────────────── v1.1.0
 Installed CodeTools ────────────────────────── v0.6.4
 Installed VersionParsing ──────────────── v1.1.3
 Installed URIParser ────────────────────────── v0.4.0
 Installed JSON ──────────────────────────────────── v0.21.0
 Installed Colors ──────────────────────────────── v0.9.6
 Installed Widgets ────────────────────────────── v0.6.2
 Installed LNR ────────────────────────────────────── v0.2.0
 Installed Atom ──────────────────────────────────── v0.10.1
 Installed ColorTypes ──────────────────────── v0.8.0
 Installed WebSockets ──────────────────────── v1.5.2
 Installed IniFile ────────────────────────────── v0.5.0
 Installed HTTP ──────────────────────────────────── v0.8.6
 Installed DataStructures ──────────────── v0.17.1
 Installed Media ────────────────────────────────── v0.5.0
 Installed ZMQ ────────────────────────────────────── v1.0.0
 Installed JuliaInterpreter ──────────── v0.7.3
 Installed MacroTools ──────────────────────── v0.5.1
 Installed Compat ──────────────────────────────── v2.1.0
 Installed Reexport ──────────────────────────── v0.2.0
 Installed Cassette ──────────────────────────── v0.2.6
 Installed DocSeeker ────────────────────────── v0.3.0
 Installed Parsers ────────────────────────────── v0.3.7
 Installed Observables ────────────────────── v0.2.3
 Installed CSTParser ────────────────────────── v0.6.2
 Installed AssetRegistry ────────────────── v0.1.0
 Installed JuliaFormatter ──────────────── v0.1.13
 Installed IJulia ──────────────────────────────── v1.20.0
  Building MbedTLS →→ `C:\Users\kejunjun\.julia\packages\MbedTLS\a1JFn\deps\buil
d.log`
  Building WebIO ────→→ `C:\Users\kejunjun\.julia\packages\WebIO\2mZPb\deps\buil
d.log`
  Building Conda ────→→ `C:\Users\kejunjun\.julia\packages\Conda\kLXeC\deps\buil
d.log`
  Building ZMQ ────────→→ `C:\Users\kejunjun\.julia\packages\ZMQ\ABGOx\deps\buil
d.log`
  Building IJulia ──→→ `C:\Users\kejunjun\.julia\packages\IJulia\fRegO\deps\buil
d.log`
  Building MbedTLS →→ `C:\Users\kejunjun\.julia\packages\MbedTLS\a1JFn\deps\buil
d.log`
false
 
julia&gt; using IJulia
[ Info: Precompiling IJulia [7073ff75-c697-5162-941a-fcdaad2a7d2a]

批量预测蛋白质理化性质

原来用perl的LWP::UserAgent模块用在expasy批量做过一批蛋白理化性质预测,但不知为什么现在下载不了啦,决定改用python。一开始用的 urllib.request 模块,能做一部分,但总是会莫名奇妙的断掉,显示是“$HOME/anaconda3/lib/python3.6/http/client.py”文件中有问题,尝试了很多方法均没有解决,最后在网上看到这样一句话,如果 urllib.request 中的问题不能解决的话为什么要用它,而更高级一点的 requests是对urllib的进一步封装,因此在使用上显得更加的便捷,实际应用当中尽量使用requests 。更换成 requests 后显然解决了问题。

想到源代码的话给我留言。