NIPT检测
NIPT(Noninvasive prenatal testing)非侵入式产前检测,国内一般称作“无创DNA产前检测技术”。之前一直没有时间看,这个技术究竟怎么从母亲的血液中测胎儿的DNA,现在有时间了,赶紧记录一下原理。
NIPT技术细分为两种:一种是测CNV,另一种是测SNP。 在2012年时比较流行的4中具体方式是1:
- Sequenom 公司:定量,短序列全基因组测序,并且评估胚胎DNA含量
- Verinata 公司:定量,短序列全基因组深度测序,并评估胚胎的DNA含量
- Ariosa 公司:定量,目标区域扩增,并且根据SNP频率来确定胚胎DNA含量
- Natera 公司:基于非定量的SNP,分析等位基因频率(这个方法中用白细胞的测序结果作为母亲的基因型)
其中重点要说明的是,测CNV是不用区分母亲和胎儿的DNA的,首先,我们明确母亲没有任何一种三体综合征和染色体缺失,那么在这种条件下仍然检测出一定比例的三倍体或者单倍体,那么就说明是胚胎出现了问题。
从测序角度来说就是测序深度越高越精确,对于测序结果是否说明有染色体异常,用假设检验(Z-score)来估计其异常程度。
下图比较了四个公司的方法的准确性,可以看到对于21三体综合征是最准确的,对于18三体综合征和单倍体的检测准确性低。
测不准的原因在于测序技术有GC偏好性,并且在13和X染色体上表现得很明显2。
NIPT方法目前主要还是用于测染色体倍增或者缺失(截至2013年),对于一些微缺失和微倍增( microdeletions and microduplication )用芯片的方法也开展了检测研究。
我个人的理解,孕妇首先应该做常规血检和B超检查,如果检查认为有问题,可以先做一个无创DNA产前检测来确认一下,如果无创也指示有问题或者数值处于临界值,那么继续做羊水穿刺来确定。
我本认为技术应该很高超,结果看完相关网络资料发现不用区分母婴的DNA时,方法也就很常规了。
=========================
2019年12月18日更新,修改错别字,标注失效链接
我从网上搜NIPT的具体计算方法,结果第一篇文章是自己的。。。看样子需要再写一篇算法的介绍。
玩具总动员
又来补课了,这三部太经典了,一口气看完,每一部都很有意思。
里面的梗是在是太多了:
- 没想到霸王龙的小手原来在十几年前已经是个梗了。
- 企鹅叫Wheezy,马上想到Linux/Debian,结果查看百科,原来所有Debian的发行版本号命名都来自这部片子。
- I am your father!
- 第三部的越狱,比TV系列剧越狱难度还高。
- 玩具里还有一只龙猫。
看完之后去翻资料,原来在2014年还出了个短篇,2018年还可能要有第四部。Andy的玩具传承给了Bonnie,不知道第四部会有什么样的故事(据说是去找Bo)。
最后再喊一句 To Infinity and Beyond!(英文博客的subtitle出处)
Jupyter,IJulia以及IRkernel
之前(今年一月份)本以为Jupyter这种形式可以很成功的复制到Jilia和R上,结果我发现装个IJulia非常费尽。
依赖的一个模块在安装时使用curl -f -o /root/.julia/v0.4/ZMQ/deps/downloads/zeromq-3.2.4.tar.gz -L http://download.zeromq.org/zeromq-3.2.4.tar.gz
的地址已经找不到安装包了。
换成Github的结果还因为亚马逊云的问题没下载下来。顿时失去了用Jupyter写IJulia的兴趣。
20160607更新,上述逗逼问题已经解决了,安装ZMQ要用系统的安装命令dnf install zeromq3*
或者 apt-get install libzmq3*
。成功安装好IJulia!
ZMQ.jl 两天前更新了新的版本,但是需要在julia里及时更新METAINFO Pkg.update()
否则安装时还会出现上述问题。
另外,Rstudio太好用,以至于自己也出了个简易的R notebook,我就没兴趣用IRkernel了。
Jupyter还是用来写python比较好。
R画图速查手册
最近在写R画图的速查手册,写这个东西主要是记录学习R的基本画图命令。除此之外,还学习了Rmarkdown Tufte样式的使用。 不得不提,用这个样式编写绘图类的文档,不如使用普通的书籍格式方便。$\LaTeX$编写文档时图表与正文不一定能紧密相连。 基本上前面添加两句话,后面的图位置就全都跑了,在这个版式里该问题由为突出,主要是Tufte包里没有页面内部的交叉引用功能。 用了2天后,我就转向了Bookdown包,这个包是Xie Yihui从手术室出来后连续几个月不间断工作完成的新包,但是基本命令我还没有掌握, 所以第一版的速查手册是用Tufte包完成的。第一版里面对于排版以及大纲逻辑都不太清晰,以后的更新中会有较大改动。
PDF版文件在这里下载,会持续更新。
Bookdown包目前编译pdf文档采用的命令是bookdown::render_book("index.Rmd", "bookdown::pdf_book")
。注意首先要将R工作目录跳转到需要编译的文档目录下,否则会找不到要编译的文件。
不能在函数中以添加路径的方式来编译,因为找不到需要涵盖到书籍里的所有文档(这是错误的->render_book("/root/bookfiles/index.Rmd")
)。
参考资料
Rmarkdown的Tufte模板用xeCJK包写中文的一点问题
我自己的系统里没有安装windows下的字体,也不打算装ctex宏包,所以需要用xeCJK宏包来显示中文。
如果在没有安装SimSun字体的情况下使用Rmarkdown里的tufte包的模板写中文文档,编译时会报错找不到SimSun字体。 这是因为tufte模板里作者默认使用ctex,ctex默认使用了SimSun字体。
如果把ctex去掉,用in_header: header.tex
的方法来调用xeCJK宏包,那么会发现有些页面的字会重叠或者不显示。
例如在模板的中文例子里“响应式页面”后面有一段话:
# 响应式页面
这个包生成的HTML页面是响应式的:
如果页宽小于760像素,边栏内容会自动隐藏。
此时我们可以点击脚注的序号显示它,其它边栏附注则可以通过点击圆圈加号的符号显示。
# 结语
希望诸位喜欢R Markdown的超级简洁性,同时我们感谢Tufte-CSS和Tufte-LaTeX项目的作者们,没有他们的辛勤劳动,就没有这个**tufte**包。
这份文档的R Markdown源文档可以在[Github上找到](https://github.com/rstudio/tufte/raw/master/inst/rmarkdown/templates/tufte_ctex/skeleton/skeleton.Rmd),
或者直接使用RStudio菜单`File -> New File -> R Markdown -> From Template`新建一个文档,或直接从R里面打开这个Rmd文件:
但是在生成的文档中缺失了。
解决这个问题的最简单方法就是在header里重新定义上边界和下边界的距离。
\usepackage{xeCJK}
\setCJKmainfont{WenQuanYi Zen Hei}
%定義top和bottom邊界的距離
\usepackage{geometry}
\geometry{top=2cm,bottom=2cm}
所以完整的Rmarkdown YAML 写法是:
---
title: "Tufte样式"
subtitle: "一个R Markdown实现"
author: "JJ Allaire,谢益辉"
date: "`r Sys.Date()`"
output:
tufte::tufte_handout:
citation_package: natbib
includes:
in_header: header.tex
latex_engine: xelatex
biblio-title: 参考文献
bibliography: skeleton.bib
link-citations: yes
---
其中header.tex 像上面\(\LaTeX\)例子中的那样。
这是打脸最快的一篇文章
20160519更新
我现在已经不用tufte包了,改用bookdown包的bookdown::tufte_handout2
。
安装方式如下:
install.packages("devtools")
devtools::install_github("rstudio/bookdown")
强烈推荐使用,但要注意编译后的排版同tufte包的有所不同,主要是bookdown包里的tufte样式貌似没有对table进行优化。
在bookdown里配置YAML实现中文tufte sytle的方法如下所示。
title: "A Minimal Book Example"
author: "Yihui Xie"
date: "`r Sys.Date()`"
output:
bookdown::tufte_handout2:
citation_package: natbib
latex_engine: xelatex
includes:
in_header: header.tex
toc: yes
link-citations: yes
description: "This is a minimal example of using the bookdown package to write a book."