启动子
启动子是RNA 聚合酶识别、结合和开始转录的一段DNA 序列,它含有RNA 聚合酶特异性结合和转录起始所需的保守序列,多数位于结构基因转录起始点的上游,启动子本身不被转录。但有一些启动子(如tRNA启动子)位于转录起始点的下游,这些DNA序列可以被转录。启动子的特性最初是通过能增加或降低基因转录速率的突变而鉴定的。启动子一般位于转录起始位点的上游几百至几千Bp不等。
背景
将获得的某基因转录起始位点2000Bp序列提交至Plantcare(关于如何预测可查阅其他文章,或
点击直奔网站主页
),即可通过邮件回执
预测
结果(回执结果是一个由TAB分割的表格文件,在下文使用的使用需要以tab分割导入excel),若基因数量较少时可以通过手工或肉眼即可对预测结果进行观察,并寻找是否存在目标基序,但当涉及到较多的基因数量,如整个基因家族、群体检测SNP等,则会比较费时费力;本文采用VBA编程,对Plantcare的预测结果表格文件(图1)进行筛选、分列、计数等,使其结果形成一个基因为多行(样本),基序为多列(特征)的矩阵,极大的方便了后续筛选目标基序的数量,形成了矩阵,也极大的方便了进行可视化,如热力图等。
过程
'因过程中并没有引用数组,大约2w行100列数据需要30s的运行时间
Sub 生成矩阵表格()
'删除多余表格
Application.DisplayAlerts = False
Dim k As Integer
For k = Sheets.Count To 1 Step -1
If k = 1 Then
Exit For
Else
Sheets(k).Delete
End If
Next
Application.DisplayAlerts = True
'创建变量
Dim gene_num, seq_num As Integer
Sheets(1).Copy After:=Sheets(1) '拷贝副本
Range("$A$1:$H$" & Range("a666666").End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo '去重
gene_num = Range("a666666").End(xlUp).Row
'复制新的sheet
ActiveWindow.SmallScroll Down:=-110
Range("A1:A" & Range("a666666").End(xlUp).Row).Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = "生成的矩阵表格"
ActiveSheet.Paste
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'二次
Sheets(1).Copy After:=Sheets(Sheets.Count) '拷贝副本
Range("$A$1:$H$" & Range("a666666").End(xlUp).Row).RemoveDuplicates Columns:=2, Header:=xlNo '去重
seq_num = Range("a666666").End(xlUp).Row
Dim n1, n2 As Integer
'将多行粘为多列
Sheets(4).Select
n1 = Range("a666666").End(xlUp).Row
For n2 = 1 To n1
Sheets(4).Select
Range("B" & n2).Select
Selection.Copy
Sheets(3).Select
Range("C1").Cells(1, n2).Select
ActiveSheet.Paste
Next
'计算出现的次数并写入对应单元格
Dim rng1, rng2, rng3, rng4, all_num As Integer
all_num = Sheets(1).Range("a666666").End(xlUp).Row
For rng1 = 1 To all_num '执行第一列判断
For rng3 = 1 To gene_num
If Sheets(1).Range("a" & rng1) = Sheets(3).Range("a" & rng3 + 1) Then
'Sheets(3).Range("c" & rng3 + 1) = rng3
'For rng2 = 1 To all_num '执行第二列判断
For rng4 = 1 To seq_num
If Sheets(1).Range("b" & rng1) = Sheets(3).Range("C1").Cells(1, rng4) Then
Sheets(3).Range("C1").Cells(rng3 + 1, rng4) = Sheets(3).Range("C1").Cells(rng3 + 1, rng4) + 1
End If
Next rng4
'Next rng2
End If
Next rng3
Next rng1
'对sheet更改顺序
Sheets("生成的矩阵表格").Select
Sheets("生成的矩阵表格").Move Before:=Sheets(2)
Application.DisplayAlerts = False
Dim kk As Integer
For kk = Sheets.Count To 1 Step -1
If kk = 2 Then
Exit For
Else
Sheets(kk).Delete
End If
Next
Application.DisplayAlerts = True
Range("a1").Select
'完成提示语
MsgBox "已完成!"
MsgBox "感谢使用,联系作者:643237173@qq.com"
End Sub
Sub 开始()
On Error Resume Next
'
'开始提示语
Dim i As Integer
MsgBox "请确定文件中有且只有一个表格,否则其他表格会被自动删除; 本次可能会花费较多时间,请耐心等待 ^ _ ^"
i = Application.InputBox("已读警告确认输入1,其他数字取消后续操作")
If i = 1 Then
'调用功能函数
Call 生成矩阵表格
Else
MsgBox "好的,已取消~"
End If
End Sub
开始
-
将过程中的代码复制到回执表格中的代码框中
-
若没有该选项,请参考以下步骤打开开发者选项,此过程基于excel2016,版本不同会有所差异
-
复制代码并运行
结果
-
代码运行后会弹出一系列的对话框,请按照提示运行
-
运行后需要等待一小段时间,此时excel可能会提示未响应,其实在运行,可以忽略该提示
-
运行完会提示已完成,下面是结果展示
小结
以上就是利用上传Plantcare回执的表格,进行结果统计和数据整理,后续就可以利用该表格的特定基序数量和某一个基因的数据进行可视化,但是本表格并没有涉及到基序在启动子序列上位置的展现,这个可以通过回执附带的网页文件查看;更多技术交流请发邮件643237173@qq.com或者yyyz5678@163.com,也可以向我获取带有源码的excel文件,只需要将自身的文件内容复制并替换就可以直接运行。觉得有用,请在下方留言支持下。