云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

京东云_cdn发展前景_免费

小七 141 0

利用基因组变异和K均值预测地理种群

2016年星火峰会将于6月6日至8日在旧金山举行。查看完整的日程安排,在票卖完之前拿到票!在数据库里试试这个笔记本这是西北基因组中心的Deborah Siegel和来自Databricks的Denny Lee来自华盛顿大学的客座帖子,介绍他们与ADAM和Spark在基因组变异分析方面的合作。这是使用K-Means、ADAM和Apache Spark进行的3部分系列基因组变异分析的第3部分:1.一言以蔽之,基因组测序2.基因组变异分析的并行化3.利用基因组变异和K均值预测地理种群介绍在过去的几年里,我们看到基因组测序的成本和时间都在迅速减少。了解基因组序列变化的潜力包括帮助我们识别易患常见疾病的人、解决罕见疾病以及使临床医生能够根据个人情况定制处方和剂量。在这个由三部分组成的博客中,我们将提供基因组测序及其潜力的入门知识。我们将关注基因组变异分析——即基因组序列之间的差异——以及如何利用Databricks Community Edition利用ApacheSpark和ADAM(基因组处理的可伸缩API和CLI)来加速分析。最后,我们将对基因组变异数据执行k-means聚类算法,并建立一个基于这些变异的个体地理种群预测模型。这篇文章将着重于使用基因组变异和k均值预测地理种群。你也可以简单回顾一下更新后的基因组测序,或者是平行化基因组变异分析背后的更多细节。利用基因组变异和K均值预测地理种群我们将在Databricks社区版上使用apachespark在ADAM数据上执行K-Means来演示基因组变异分析。这本笔记本展示了如何使用大数据基因组学ADAM项目(0.19.0版本)对1000个基因组项目的公共数据进行分析。我们尝试用k均值聚类来预测每个人来自哪个地理群体,并将结果可视化。准备与大多数数据科学项目一样,有许多准备工作必须首先完成。在本例中,我们将从示例笔记本中展示:将示例VCF文件转换为ADAM拼花格式加载描述样本VCF/ADAM parquet中数据的面板文件将ADAM数据读入RDDs并开始基因型的并行处理创建ADAM拼花板文件为了从VCF创建一个ADAM拼花文件,我们将首先使用ADAM的SparkContext LoadGeneogenes方法加载VCF文件。通过使用adamParquetSave方法,我们将VCF保存为ADAM parquet格式。瓦尔gts:RDD[基因型]=负荷基因型(vcf路径)比较请求(tmp_路径)加载面板文件虽然VCF数据包含样本ID,但它们不包含我们要预测的总体代码。虽然我们在这个分析中使用了无监督的算法,但是我们仍然需要响应变量来过滤样本和估计预测误差。我们可以从集成的_call_samples_v3.20130502获得每个样本的总体代码。所有面板来自1000基因组项目的面板文件。来源:1000-genomes-map_11-6-12-2_750.jpg下面的代码片段使用Spark的CSV读取器加载面板文件,以创建面板Spark数据帧。val面板=sqlContext.read.格式("com.databricks.spark网站.csv").option("header","true").option("inferSchema","true").option("分隔符","\\t").load(面板路径)我们将为英国人和中国人建立一个新的聚类算法(我们将为英国人和中国人建立3个聚类模型)。为此,我们将创建一个只包含这三个总体的filterPanel数据帧。由于这是一个小面板,所以我们也把它广播给所有的执行器,这样当我们做进一步的操作时,会减少数据的洗牌,从而提高效率。//创建三个群体的筛选面板val过滤器面板=面板.选择("sample","pop")。where("pop-IN('GBR','ASW','CHB')")//把过滤的面板拿出来广播val fpanel=过滤器面板.rdd公司.map{x=>x(0).toString->x(1).toString}.collectAsMap()值B面板=sc.广播(面板)基因型的并行处理使用下面的命令,我们将加载我们三个群体的基因型。这可以更有效地并行进行,因为过滤面板加载在内存中并广播到所有节点(即bPanel),而包含基因型数据的parquet文件允许谓词下推到文件级。因此,只有我们感兴趣的记录才会从文件中加载。//创建三个群体的筛选面板val popFilteredGts:RDD[基因型]=负荷基因型(tmp_路径).filter(基因型=>{bPanel.value.包含(基因型.getSampleId)})笔记本包含许多附加步骤,包括:数据探索——我们的数据包含了6号染色体的一小部分变体,覆盖了大约50万个碱基对。数据的清理和过滤-缺失数据或变量为三等位基因。为k-means聚类准备数据-为每个样本创建ML向量(包含完全相同顺序的变量),然后提取特征向量来运行模型。最终,我们在数据中留下的805个变体的基因型将是我们用来预测地理种群的特征。我们的下一步是创建一个特征向量和数据帧来运行k-means聚类。运行KMeans群集通过上述准备步骤,针对基因组序列数据运行k-means聚类与Spark编程指南中的k-means示例类似。进口org.apache.spark网站.mllib.群集{KMeans,KMeansModel}//使用KMeans将数据分为三个类值numClusters=3口粮=20瓦尔簇:KMeansModel=KMeans.火车(特征、数量、数量、数量)现在我们有了我们的模型——集群——让我们预测人群并计算混淆矩阵。首先,我们执行创建predictionRDD的任务,它包含原始值(即指向CHB、ASW和GBR的原始地理人口位置)并利用群集.预测根据特征(即基因组变异)输出模型对地理位置的预测。接下来,我们将其转换为predictDF数据帧,使查询更容易(例如,使用display()命令,在后续单元格中运行R命令,等等)。最后,我们连接回filterPanel以获得原始标签(实际的地理人口位置)。//创建利用群集.预测输出模型预测地理位置的方法val预测RDD:RDD[(String,Int)]=dataPerSampleId.map(标准偏差=>{(标准1,群集.预测(标准2)})//转换为DataFrame以更方便地查询数据预测值=预测RDD.toDF("样本"、"预测")//连接回filterPanel以获得原始标签val结果DF=过滤器面板.join(predictDF,"样品")//注册为临时表结果df.registerEmptable("结果表")//显示结果显示(结果DF)以下是预测值和实际值之间输出的图形表示。如何计算混淆矩阵的一个简单例子是使用R。虽然这个笔记本主要是用Scala编写的,但是我们可以使用%R添加一个新的单元格,表明我们正在使用R语言进行查询。%rresultsRDF