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=<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)

NCBI测序原始数据上传

具体操作可以参照这篇博客,这里只补充几点。

1、申请登录号顺序

建议首先申请Biosample号,再申请BioProject号,最后申请SRA号。在第二步的过程中只需要填写第一个Biosample号就可以了。也可以先申请BioProject号,Biosample号先空着,再申请Biosample号,然后在填表中”bioproject_accession”填上申请的BioProject号就可以了。

2、填表的疑问

遇到最多的问题就是sample_name通不过,按照参考中的方法在最后添加一列“replicate”,然后填上对应的replicate描述就可以了。在填写“collection_date”时也应注意要使用标准日期格式,如“2021-07-01”,不能把月份和日期前面的0省略。“geo_loc_name”这栏填写上传样品基因型的位置,国家要采用标准的国家名称,后面跟冒号和省份,也可以不加。

在填写”SRA_metadata_acc”表时,”library_ID”可以自己编一个,不能重复,”title” 填写样品描述信息,可以采用如以下格式“RNA-Seq of organism: cultivar tissue”,“design_description”可以填写实验设计时的信息,如”control,replication 1″,”Treatment,replication 1″。

3、测序原始数据上传

建议使用Aspera上传,特别是数据量比较大时。可以参考这篇文章的方法,不过需要特别注意的最好上传文件夹,里面包含了所有需要上传的测序文件,不然是上传到根目录了,不能显示,费半天劲白传了。可以参考我的这个代码。”samples_dir”为包含测序文件的文件夹,“root_link”为NCBI提供的链接,点“Aspera Command-Line upload”右边的加号就会出现,一般是邮箱加密钥。一般是上传完成后10分钟才会看到结果。

nohup ~/.aspera/connect/bin/ascp -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh -QT -l100m -k1 -d ~/data/transcriptome/samples/fleshed/samples_dir subasp@upload.ncbi.nlm.nih.gov:uploads/root_link &

Galaxy介绍

galaxy是一个很好的生信云平台,云平台也是今后的趋势,毕竟在本地安装各种各样的软件实在是太折腾人了。网址:https://usegalaxy.org/ 。 如果想用的话可以看官方操作说明。简单的操作可以看这篇博客。

admixture的安装

由于admixture软件下载(http://software.genetics.ucla.edu/admixture/download.html )地址打不开了,所以admixture无法从原网址下,尝试使用了

conda install admixture

还是不行,最后想到admixture是生物信息软件,应该用专用的生物类的conda下载,试了下,果然OK。

conda install -c bioconda admixture