整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

「众筹破解凶案」,人人都是「名侦探柯南」?

「众筹破解凶案」,人人都是「名侦探柯南」?

名侦探柯南」,其实并不好当。

作者 | Lilyann
编辑 | 靖宇

不久前,重新翻拍的《尼罗河上的惨案》(Death on the Nile)登陆国内院线。即便有「神奇女侠」盖亚·加朵和一众明星支持,影片还是遭到了阿加莎·克里斯蒂原著粉的疯狂吐槽,豆瓣评分目前 5.8 分——鉴于英国名导肯尼斯·布拉纳(同时饰演片中主角大侦探波洛)还会继续翻拍下去,该系列的评分可能还会继续走低。

从波洛、福尔摩斯再到各国影视剧,推理和探案故事在全球培养起了数亿的「业余侦探」。而现在,随着技术的发展,这些推理爱好者已经不满足于文艺作品,而想要「亲自上场」,用自己的力量侦破陈年遗案。

在美国,有人专门在 GoFundMe 和 Kickstarter 上众筹,对一些未侦破案件的证物和遗骸进行 DNA 检测,用来辨别遇害人以及犯罪嫌疑人身份。而针对这些来自推理爱好者的需求,甚至有名为 Othram 的公司,专门进行 DNA 分析比对鉴定,并且成功拿到了融资。

利用 DNA 技术「众筹擒凶」,会成为一种潮流吗?在推理爱好者的狂热背后,又有哪些阴暗面,会在意料之外,对人们和社会产生影响?

01 DNA「擒凶」

1959 年,年仅 9 岁的女童甘迪丝?罗杰斯(Candice Elaine Rogers)在华盛顿州斯波坎社区失踪,16 天过后,她的鞋子被两名猎人在山区发现,而后警方发现了她被埋在树下的遗体。

尸检报告显示,罗杰斯生前曾遭遇虐待,后被凶手勒死。由于失踪前她还在社区内兜售薄荷糖,所以又被称为「糖果」(Candy)。

甘迪丝生前照片|图片来自网络

由于证据始终不够确凿,警方始终难以被锁定嫌犯。警察曾将遇害者身上的体液进行检测分析,但遗憾的是,在联邦犯罪资料库中并没有找到能够与之吻合的对象。

半个多世纪以来,随着科技逐渐成熟,本地也成立了愈来愈多的 DNA 检测实验室。2020 年,警方曾与其中一家接洽,但得到的回信是样本年久腐坏,无法分析出更多的结果。

直到一年之后,法医科学家布列塔尼·赖特 (Brittany Wright) 与 Othram 实验室进行交谈得知,后者正在研发更为先进的基因测序技术:通过法医族谱学构建出凶手档案,缩小嫌犯人选至锁定目标到兄弟三人身上,其中一人便是真正的罪犯:约翰·霍夫(John Reigh Hoff)。

而推动整个案件水落石出的,是霍夫的女儿凯西·霍夫得知自己已在 30 年前自杀的父亲,和几十年前的悬案突然产生联系,主动与警方联络提供了自己的 DNA 样本。在搜索令获准下,警方挖掘霍夫的坟墓进行遗体采样,最后确认,霍夫即为 62 年前性侵并杀害女童的凶手。

2021 年召开的警方记者会上,甘迪丝?罗杰表亲出现在电视屏幕上,擦去眼角的泪水|The Spokesman-Review

而像小甘迪丝这样的案例,在美国还有很多。美国国家失踪与不明身份人口系统(NamUs)的数据,平均每年有超过 4 千具无名尸骸被发现,且每年遗骸与失踪人口的数量都在增加——美国国家司法研究所将其称之为「无声的巨大灾难」(silent mass disaster)。

让「无声灾难」不再「沉默」,是 Othram 这类的 DNA 实验室创办的初衷。实验室名称来自《指环王》中冈多主城——白城米纳斯·提力斯外的城墙,创始人 Mittelman 希望对基因进行测序、归档的技术手段,构建一个庞大的、可共享的数字化法医证据库(学界称为法医系谱学),破解积压疑案,从而成为守护社会的城墙

设想很美好,但问题依旧存在。他们首先遇到的麻烦就是:DNA 样本过少怎么办?

其实从 1994 年,FBI 就已经开始建立 DNA 数据库了,名为 DNA 联合索引系统(Combined DNA Index System),将案件中的受害者与犯罪人员的 DNA 档案编入,从而能够快速抓获惯犯。但其中储存的样本数量与内容依旧不够详尽。

Othram 实验室内,工作人员正在进行DNA测序,旁边是一台Illumina NovaSeq 6000测序仪|New York Time

以 2020 年刚刚结案、Othram 也同样参与 DNA 化验的「休斯敦伴娘被新郎杀害」一案来说,一般的刑事案件会给出 20 个 DNA 注记作为对比,但在这个案子上至少从数据库中比对了几万个注记,越多的注记相符,能够确认的几率就越高。

由此,DNA 样本储存越多,一定程度上越能够推动案件进展。在这种条件下,「众筹」的模式就产生了。

这里的众筹衍生出两种意味:一是通过捐款,为 DNA 测序提供足够的基金,二是捐赠自己委托商业测序公司所测出的 DNA 信息到类似 Othram、GED Match 等机构的族谱数据库中。

而参与众筹的这个群体,往往就会被称之为「DNA 侦探」。

02「众筹破案」时代

去年,居住在迪拜的 Carla Davis,在 LinkedIn 上看到了 Othram 实验室发布的,关于「寻找 1978 年田纳西谋杀案凶手」的帖子,需要筹集到 5000 美元才能进行下一步的 DNA 测序。

Davis 被其中一句「我们是在为了正义众筹」所打动,直接补足了剩下未筹到的近 4,000 美元。根据纽约时报的报道:截至今年三月,这些 DNA 侦探们已经累计在众筹中捐赠了超过一百万美元。

在 Facebook 上,有人建立了「DNA Detectives Facebook」群组,聚集了许多与 Davis 有着相似追求的同好。这些人如此活跃的原因之一,是对「解谜快感」的追求。

对于犯罪事件的披露,一直以来都是人们好奇心最为高涨的议题之一。即使发生在距离遥远的其他国家,也难以抑制人们想要了解更多的冲动。

Carla Davis 已经为「悬案众筹」捐赠了超过 10 万美元|New York Times

一起复杂而悬而未决的案件,能够同时戳中人们内心对作案动机的窥探欲、对受害者的共情力、伸张正义的使命感、以及对案件调查的参与欲。它们混合起来,成为同情、害怕、刺激,又带着些快感的情绪。

来自多伦多大学的学者 Jooyoung Lee 就曾提到,当我们开始消费这种「来自现实生活中的恐怖」,会让大家觉得自己成为了故事中的一部分。

而通过社交群组和 Othram 这类向大众开放捐款或捐赠 DNA 的基因实验室,让以众筹形式侦破悬案一事彻底变成可能。正如 Davis 在接受媒体采访时说的:「如果我们能够真的对于破案帮上忙,为什么还要仅仅呆在家里收听犯罪悬疑播客呢?」

法医界从业人士告诉极客公园(ID:geekpark),在国内,破案更多是依赖罪犯 DNA 数据库,将现场检材的 DNA 分型结果输入数据库对比,归属公安部管理。

而美国由于消费级基因检测市场的成熟,有需求的当事人(无论是寻根问祖或是侦破悬案)委托实验室发起众筹,逐渐形成公众的、可交叉共享的数据库。

不仅限于留有案底的罪犯,如果嫌疑人有亲属曾经向数据库提交过 DNA 采样,那么通过缩小范围的方式也能够定位。由此,「法医系谱学」应运而生。

Othram 的两位创始人展示其网站 DNASolves.com 上的内容|New York Times

03 伸张正义背后的「阴影」

当人们沉浸在冤案得雪,擒获凶手和伸张正义的满足背后,同样也有一些不可忽视的问题。

2018 年,基因监测机构 FamilyTreeDNA 宣布向执法部门开放,并且通过与调查人员合作,让警方能够使用的基因数量几乎翻了一倍,此举当时就引发了一轮对于身份隐私的担忧争议。次年,FamilyTreeDNA 正式就此事向公众道歉。

根据 FamilyTree 持有的 200 万人 DNA 数据,能够辨认出相关几乎数亿人的身份。这意味着,如果把控不严,这些掌握大量 DNA 数据的数据库,将会引发可怕的数据隐私问题。

萨拉劳伦斯学院(Sarah Lawrence College)的基因咨询师 Laura Hercher 曾经指出,应该由法律界定获取 DNA 信息的条件,而非机构本身。「(DNA)是抓捕罪犯的好方法,但也可能被别有用心的人滥用。」

通过 DNA 技术,可以追溯到一个人家庭谱系中的大多数亲人,而并不是所有人都想要自己的信息进入到这个系统之中。可惜的是,一旦有人上传了自己的 DNA 信息,与其相关的亲戚,也被动地进入到系统之中,其中的隐私和法律问题,目前还没有明确的解决方法。

不管是文艺作品,还是现实生活,在任何一起案件的侦破中,涉及的都不仅仅是犯罪者和受害者,更会影响到双方背后大量的关系人员。如何将先进的技术,控制在合理范围内,某种意义上要比破案更加重要。

参考资料

[1]Hoff's family proves crucial to helping solve murder, now live with fact family member committed brutal crimes | The Spokesman-Review

https://www.spokesman.com/stories/2021/nov/19/hoffs-family-proves-crucial-to-helping-solve-murde/

[2]NGS 为法医学带来变革

https://www.illumina.com.cn/company/news-center/feature-articles/revolutionizing-forensics-with-ngs.html

[3] 休士顿伴娘遭奸杀 25 年后揪出新郎是凶手

https://posts.careerengine.us/p/60a28d9b4087816230fef0e3

[4] 你就是侦探:真实犯罪案件为什么吸引我们?|界面新闻 · 影像

https://www.jiemian.com/article/3200114.html

[5]The Racial Composition of Forensic DNA Databases - California Law Review

https://www.californialawreview.org/print/racial-composition-forensic-dna-databases/

[6] 基因检测会暴露我们的隐私吗?_信息

https://www.sohu.com/a/319550815_119097

[7]The True Crime-Obsessed Philanthropists Paying to Catch Killers

https://www.nytimes.com/2022/03/27/technology/dna-tests-crime-solving.html


*头图来源:pixabay

本文为极客公园原创文章,转载请联系极客君微信 geekparkGO

它新生信分析过程中,会与很多不同格式的文件打交道,除了原始测序数据fastq之外,还需要准备基因组文件fasta格式和基因注释文件gtf格式。在分析的过程中还会有众多中间文件的生成,如bed、bed12、sam、bam、wig、bigwig、bedgraph等,生成后我们一般会查看下内容了解文件每一列的含义,以此来决定需要提取哪些有用信息列来进行下一步分析。

插播一个小剧场

老板:“先查看一下bam文件内容。”
小白:嗒嗒嗒敲键盘。

$ less ehbio.bam
"ehbio.bam" may be a binaryfile.  See it anyway?

小白:“哎呀,错了,应该这样。” 嗒嗒嗒敲键盘。

$ samtools view ehbio.bam # 回车一敲,灾难,电脑要卡死,赶紧按`control  + c`
$ samtools view ehbio.bam | less  # 这下终于可以查看了

老板:“你逗我呢……”(不失礼貌的批评)

刚接触生信分析的小白们这种尴尬的事情时有发生,为了帮助大家梳理这些剪不断理还乱的文件,本文以分析流程为主线,介绍各文件的格式以及有哪些常用命令来查看或处理它们。

1. 测序数据FASTQ文件

1)文件用途:样品测序返回的数据一般存储为fastq文件,通常是压缩文件filename.fq.gz的格式,节省存储空间和传输时间。NGS基础 - FASTQ格式解释和质量评估

2)查看方式

# zcat查看gzip压缩的文件
# head -n 8 显示前8行文件内容(前8行代表2条序列)

zcat filename.fq.gz | head -n 8

# @SRR1039521.13952745/1
# TTCCTTCCTCCTCTCCCTCCCTCCCTCCTTTCTTTCTTCCTGTGGTTTTTTCCTCTCTTCTTC
# +
# HIJIIJHGHHIJIIIJJJJJJJJJJJJJJJJJJJJJIIJJFIDHIBGHJIHHHHHHFFFFFFE

3)格式说明:fastq文件每4行代表一条序列
第一行:记录序列测序时所用仪器以及在测序通道中坐标信息,以@开头;
第二行:测序的序列信息,以ATCGN表示,由于荧光信号干扰无法判断是什么碱基时就用N表示;
第三行:通常一个+;
第四行:与第二行碱基信息一一对应,存储测序碱基的质量值。

4)其他常用命令

# 计算read数
# wc -l: 计算行数
# bc -l: 计算器 (-l:浮点运算)
# 为什么除以4,又除以1000000,计算的是million值

echo "`zcat trt_N061011_1.fq.gz | wc-l` / (4*1000000)" | bc -l

# 测序碱基数计算
zcat trt_N061011_1.fq.gz | awk'{if(FNR%4==0) base+=length}END{print base/10^9,"G";}'

awk的介绍见:常用和不太常用的awk命令

2.基因组FASTA文件

此文件可以从ensemble数据库下载的(https://www.ensembl.org/info/data/ftp/index.html), 一般选择下载primary assemblyfasta(想知道为什么,点这里)。fasta文件用于序列存储,可以是DNA或蛋白序列,在此FASTA文件存储了基因组序列的信息。

序列名字行:>符号开头,记录了该序列类型和所在基因组位置信息;

序列行(一行或多行):序列信息,soft-masked基因组会把所有重复区和低复杂区的序列用小写字母标出的基因组,小写字母n表示未知碱基

>1 dna_sm:chromosomechromosome:GRCh38:1:1:248956422:1 REF
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
.....
ttgggctggggcctggccatgtgtatttttttaaatttccactgatgattttgctgcatg
gccggtgttgagaatgactgCGCAAATTTGCCGGATTTCCTTTGCTGTTCCTGCATGTAG
TTTAAACGAGATTGCCAGCACCGGGTATCATTCACCATTTTTCTTTTCGTTAACTTGCCG
.....
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

# 通常要求序列名字行简单为好,而且一般加chr作为开头
# 给第一行添加chr标签,并去掉其他多余信息
# 下面的写法复杂了些,是为了避免给已经有chr信息的名字再加一次
# 帮助无脑操作
sed 's/^>\([^chr]\)/>chr\1/'  Homo_sapiens.GRCh38.dna.primary_assembly.fa |cut -f 1 -d ' ' > GRCh38.fa

3. 基因组注释文件gff和gtf

gff全称General featureformat,主要是用来注释基因组。gtf全称Gene transfer format,主要是用来对基因进行注释。两者均是一个9列的基因信息注释文件,前8列的信息几乎一样,区别在于第9列。具体可见历史推文NGS基础 - GTF/GFF文件格式解读和转换 在此不再赘述。

从ensemble下载的gtf文件前5行一般是以#开头的注释信息,后续分析中用不上需要去除,同时需要给第一列添加chr标签(与基因组序列一致),可通过下面的命令对文件进行加工:

# grep 匹配查询 -v 输出不匹配的行
gunzip Homo_sapiens.GRCh38.94.gtf.gz -c |grep -v '^#' | sed '/^[^chr]/ s/^/chr/' >GRCh38.gtf

4. bed文件

分析过程中的bed文件一般代表区域信息,如表示Peak位置的bed文件,表示基因注释的bed12文件。

  • 表示基因注释时,gtf/gff和bed文件的区别

1)gtf/gff文件一行表示一个exon/CDS等子区域,多行联合表示一个gene;bed文件一行表示一个gene;
2)gtf文件中碱基位置定位方式是1-based,而bed中碱基定位方式是0-based,如下图所示。

  • bed文件每一行对应信息

必须包含的3列信息:
1)chrom:染色体名字 (e.g.chr3, chrY, chr2_random或者scaffold10671)。
2)chromStart:基因在染色体或scaffold上的起始位置(0-based)。
3)chromEnd:基因在染色体或scaffold上的终止位置 (前闭后开)。

可选的9列信息:
4)name:bed文件的行名。
5)score:本条基因在注释数据集文件中的评分(0-1000),在Genome Browser中会根据不同区段的评分显示对应的阴影强度(评分越高灰度越高)。
6)strand:链的方向+-. (.表示不确定链的方向)
7)thickStart:CDS区(编码区)的起始位置,即起始密码子的位置。
8)thickEnd:The endingposition at which the feature is drawn thickly (for example the stop codon ingene displays).
9)itemRgb:RGB颜色值(如:255,0,0),方便在GenomeBrowser中查看。
10)blockCount:bed行中外显子的数目。
11)blockSizes:逗号分割的列,数目与blockCount值对应,每个数表示对应外显子的碱基数。
12)blockStarts:逗号分割的列,数目与blockCount值对应,每个数表示对应外显子的起始位置(数值是相对ChromStart计算的)。

5. sam和bam文件

sam文件全称The SequencingAlignment/Map Format,是Alignment/Map步骤bwa/STAR/HISAT2等软件对结果的标准输出文件,用于存储reads比对到参考基因组的比对结果,是一个纯文本格式,文件一般较大。为了节省硬盘存储,一般使用其高效压缩的二进制格式bam文件。

利用samtools view-b参数就能把sam文件转为bam文件。

1)sam文件查看方式
在linux终端直接用less即可进行查看;

2)bam文件查看方式
需要借助samtools view工具进行查看

samtools view filename.bam | less -S
samtools view -h filename.bam | less -S

NGS分析中大多数文件都是由headerrecord两部分组成,加上-h参数后可以将header显示出来,默认是不显示的。

@HD    VN:1.5  SO:coordinate
@SQ    SN:chr1 LN:248956422
@SQ    SN:chr10        LN:133797422
......
@SQ    SN:chrKI270392.1        LN:971
@SQ    SN:chrKI270394.1        LN:970
@RG    ID:BH_H3K27ac_2 LB:BH_H3K27ac_2 SM:BH_H3K27ac_2
@PG    ID:bwa  PN:bwa  VN:0.7.15-r1140 CL:bwa mem -M -t 8 -R@RG\tID:BH_H3K27ac_2\tLB:BH_H3K27ac_2\tSM:BH_H3K27ac_2\tPL: /MP
@PG    ID:MarkDuplicates      VN:1.138(aa51703435dc6a423013e74e56b0b68405facd79_1439324166)   CL:picard.sam.markduplicates.
K00141:244:HVL3NBBXX:8:2119:27235:3145399      chr1    10016  32      115M=10016   115     CCCTAACCCTAACCCTAACCC
K00141:244:HVL3NBBXX:8:2119:27235:31453147     chr1    10016  32      115M=10016   -115   CCCTTACCCTAACCCTAACCC
  • header内容
    @HD:是必须的标准文件头,包含版本信息;
    @SQ:参考序列染色体名字和长度信息 (SN:scaffold name; LN: length);
    @RG:重要read group信息,通常包含测序平台,测序文库和样本ID等信息,分析时用于区分不同样本(重测序时用到);
    @PG:生成此文件的操作过程和参数信息 (program)。
  • record内容
    每一行就是一条read比对上参考基因组的信息,总共12列,用tab键分割。
# 1. read名称;
# 2. 比对信息位flag值;
# 3. 参考序列染色体编号;
# 4. 5′端起始位置;
# 5. MAPQ:mapping quality,描述比对的质量,数字越大,特异性越高;
# 6. CIGAR字符串,记录插入、删除、错配等信息;
# 7. 配对read所比对到的染色体,仅双端测序的数据才有;
# 8. 配对read所比对到的位置,仅双端测序的数据才有;
# 9. 插入片段的长度,仅双端测序的数据才有;
# 10. read序列;
# 11. read质量值;
# 12. 12列以后的信息都是metadata,程序用标记

sam文件中第二列flag信息很重要,下面做进一步解释。

利用samtools flagstat工具可以查看bam文件中比对的flag信息,并输出比对的统计结果。

samtools flagstat *.bam

flag一共有12个标签,使用16进制数表示,每个标签值是2^(n-1),其中n<=12,每个值有其对应的唯一解释含义,具体见下图。

你会发现随机挑选几个值做加和运算,他们的结果都是唯一的,所以在bam文件中第二列flag的值代表这条序列符合下图所示条件的值的和。

所以根据这个值我们可以判断这条序列是双端测序还是单端测序;如果是双端测序,reads来自左端还是右端。比如65 只能是164组成,代表这个序列是双端测序,而且是read1

每次转换很头疼?别担心,网上有很多解码flag含义的在线工具,如SAM Format(网址:https://www.samformat.info/sam-format-flag)

输入flag的值,解析工具会返回匹配上的信息。如果是单端测序,flag值都是偶数。

如果是双端测序,工具会帮我们把另外一端序列的flag值返回,并且将这些数字情况大致分为5类,在右侧进一步显示这个值对应的含义。

6. wig、bigwig和bedgraph文件

上述bamsam文件可以帮助我们探索reads在参考基因组中的比对情况,导入基因组浏览器查看比对状态和突变信息。而wiggle(简称wig)、bigwig(简写bw)以及bedgraph(简写bdg)只包含区域和区域的覆盖度信息,文件更小,用于可视化更方便,可以导入基因组浏览器(Genome Browser)中进行可视化,以查看reads在参考基因组各个区域的覆盖度并检测测序深度。这几个文件在ChIP-seq数据分析Call Peak阶段会生成,可以利用IGV等工具进行可视化,方便查看组蛋白修饰的程度。

  • wiggle:展示区域的密度或强度信息,如GCpercent, probability scores, and transcriptome data.
variableStep chrom=chr2
300701 12.5
300702 12.5
300703 12.5
300704 12.5
300705 12.5
fixedStep chrom=chr3 start=400601 step=100span=5
11
22
33
  • bedGraph: bedwig的结合,更省空间和灵活,展示信息与wig类似。(bedGraph的格式一般有四列,Chr、start、end和value,并且坐标是以0为起始左闭右开)
chromA chromStartA  chromEndA  dataValueA
chromB chromStartB  chromEndB  dataValueB
  • bigWig: wig文件的二进制压缩格式,可通过wigToBigWig工具转换

推荐大家阅读UCSC官网对这几个文件的详细解释:

  • wiggle(WIG):https://genome.ucsc.edu/goldenPath/help/wiggle.html
  • bedGraph:https://genome.ucsc.edu/goldenPath/help/bedgraph.html
  • bigWig:http://genome.ucsc.edu/goldenPath/help/bigWig.html

厂程序员经验之谈:前端不好找工作?那是你没掌握这些!最近有不少刚上大学的同学向我咨询如何学习前端,还有一些准备转行的朋友,我想分享一下如何正确学习前端。

首先,要具备扎实的理论基础,能够分析和解决应用场景的需求,以及实现和编码的能力。其次,要熟练掌握HTML、CSS3快速布局,能够高质量地还原设计图。然后,要熟练掌握各种CSS预处理、CSS模块、CSS NGS等方案,熟悉响应式、自适应移动端等适配方案。接下来,要熟练掌握JavaScript及ES6+,掌握异步编程、模块化编程、面向对象编程思想,能够熟练处理各种数据结构,并掌握TypeScript进行类型划分、阅读源码等技能。最后,要熟练掌握Nc:要学习的内容,这些资料可以分享给需要的人。

我推荐学习以下书籍:《JavaScript高级程序设计》、《Webpack、Babel、npm、Vite实战》、《Node.js从入门到精通》、《Git实战》、《SVN基础与实战》、《高性能JavaScript》、《CSS揭秘》、《图解HTTP》、《大话数据结构》。