Posted in: Biology Science, Python

7天用 Flask 开发完一个生物信息学数据库的体会

这不是教程,而是我的随笔✏️

以前,做普通计算时用 Perl,开发数据库网页后台却用 PHP,然后前端还要用 JavaScript,简直要把人折腾死。后来普通计算从 Perl 转到 Python,发现 Python 有个工具叫做 Flask 可以代替 PHP 作为网页后台,那就方便了,能省用一种语言。

第一个 Flask 开发的工具是 2019 年刚开始学 Python 时开发的一个 Pipeline,不涉及数据库查询,只是接收输入、后台计算,得到结果,页面只有一个,比较简单。

这次开发的是真正的数据库,多个页面,需要与 MySQL 对接,而且也有 Pipeline 的内容。一共花了 7 天时间。生物信息学数据库与传统IT不一样的在于它多为纯查询类,不允许用户进行数据的增加、删除、修改,看起来应该很简单,但由于经常涉及到后台计算,可能还会碰到多线程分配问题。下面列条目说一下体会:

Posted in: Biology Science

GTF与GFF3的相互转换

GTF虽然比较古老,但确实有些软件(即使是最近的,例如SQANTI)会用到。转换的方法可能有各种各样,下面给出我实践过可行的方法:

一、GFF3转成GTF

gffread old.gff3 -E -F -T -o new.gtf
# -F   preserve all GFF attributes (for non-exon features)
# -E   show all warnings

二、GTF转成GFF3

gffread old.gtf -E -F --keep-genes -o new.gff3

可能有人会问GFF3转成GTF为什么不用gt gff3_to_gtf?主要问题在于这样子会把ID编号全部丢掉(我手头上的v1.5.8),所以不用了。

Posted in: Biology Science

PharmGKB数据库中的基因下载页面

PharmGKB有一个隐藏得很深的基因下载页面,在这里可以下载获得各种excel格式的Haploid定义表、功能表、频率表等。

URL是:https://www.pharmgkb.org/page/cyp2a6RefMaterials,把其中的cyp2a6替换成自己要的基因即可。

全部的基因列表是:https://www.pharmgkb.org/page/pgxGeneRef

Posted in: Biology Science, Science

从ENA下载SRA

最近(2020年以来),Aspera(ascp)无法从NCBI下载SRA了,但是可以用ENA下载。现在以(SRR10609482)为例,官方教程在此:

版本问题

目前 Aspera(ascp)最新的是4.2.X版,但是它有个问题是不存在 .aspera/connect/etc/asperaweb_id_dsa.openssh 这个文件,所以需要找老版本。遗憾的是官网下载老版本需要注册登录账号,因此这里提供一个 URL 解析的结果,下载 3.11.2 版:

https://d3gcli72yxqn2z.cloudfront.net/connect/bin/ibm-aspera-connect-3.11.2.63-linux-g2.12-64.tar.gz

第一步:获取准确链接

访问https://www.ebi.ac.uk/ena/browser/view/SRR10609482,获取准确链接如下:

ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR106/082/SRR10609482/SRR10609482_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR106/082/SRR10609482/SRR10609482_2.fastq.gz

可以看出中间出现了一个奇怪的三位数082

Posted in: Biology Science, Science

一些有意思的SNP

(一)参考基因组为minor allele

很多情况下,人类参考基因组上的碱基是major allele。但也有相当多的情况下,它们是minor allele,有时甚至是rare allele。

BRCA2基因上有一个变异位点编号为rs169547,为非同义突变。全世界98%的人都是等位基因C,只有2%的人是等位基因T。

但是参考基因组上的等位基因是T(GRCh37和38都是),这纯属侥幸。

Posted in: Biology Science

NGS检测体细胞突变数据分析几个要点

一、mapping

在参考基因组中可能会见到诸如 chr6_apd_hap1chr1_gl000191_random这样的序列,把它们去掉!否则bwa在做mapping时会认为这些区域的reads匹配不唯一,把mapping quality定为0,导致后续无法发现相应区域内的变异位点,造成假阴性!

二、CNV

不用什么特殊的软件或pipeline,直接使用samtools bedcov target.bed tumor.bam normal.bam去计算每个目标区间的覆盖度,然后除一下看看比例就行(用LOG2转换一下更形象)

三、SV

推荐使用COSMOS,速度比较快(5000X的大panel大约40min),无需复杂的参数,直接表格式结果,取size值高的即可(即supporting reads数目)。注意每个SV事件会列出两行。

四、SNP与INDEL

  1. 为了组合单倍型,GATK4 Mutect2可以加上--max-mnp-distance参数(默认是1,可以增大比如20),但这不是万能的!拿到VCF结果之后根据坐标排序仔细核对!必要时用IGV确认一下。
  2. FilterMutectCalls会添加很多过滤标签。一般采用排除法,把contamination、normal_artifact、weak_evidence、position 这些标签过滤掉即可。
  3. INDEL存在位置滑移的问题,需要确定位于cDNA 3′ 端(可以用IGV核对一下,反正IDNEL不多)
  4. –germline-resource 这个参数有时会带来一些假阴性(例如SNP正好落在里面),如果时间充裕可以去掉它再运行一次,看看有没有多出来位点

Back to Top