#if defined (MAKRPANEL)
#define DOGLCD
#define SDSUPPORT
#define ULTIPANEL
#define NEWPANEL
#define DEFAULT_LCD_CONTRAST 17
#endif
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
#define DOGLCD
#define U8GLIB_ST7920
#define REPRAP_DISCOUNT_SMART_CONTROLLER
#endif
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
#define ULTIPANEL
#define NEWPANEL
#endif
#if defined(REPRAPWORLD_KEYPAD)
#define NEWPANEL
#define ULTIPANEL
#endif
#if defined(RA_CONTROL_PANEL)
#define ULTIPANEL
#define NEWPANEL
#define LCD_I2C_TYPE_PCA8574
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
#endif
//I2C PANELS
//#define LCD_I2C_SAINSMART_YWROBOT
#ifdef LCD_I2C_SAINSMART_YWROBOT
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
// Make sure it is placed in the Arduino libraries directory.
#define LCD_I2C_TYPE_PCF8575
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
#define NEWPANEL
#define ULTIPANEL
#endif
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
//#define LCD_I2C_PANELOLU2
#ifdef LCD_I2C_PANELOLU2
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
#define LCD_I2C_TYPE_MCP23017
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
#define NEWPANEL
#define ULTIPANEL
#endif
// Panucatt VIKI LCD with status LEDs, integrated click &L/R/U/P buttons, separate encoder inputs
//#define LCD_I2C_VIKI
#ifdef LCD_I2C_VIKI
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
#define LCD_I2C_TYPE_MCP23017
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
#define NEWPANEL
#define ULTIPANEL
#endif
#ifdef ULTIPANEL
// #define NEWPANEL //enable this if you have a click-encoder panel
#define SDSUPPORT
#define ULTRA_LCD
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
#define LCD_WIDTH 20
#define LCD_HEIGHT 5
#else
#define LCD_WIDTH 20
#define LCD_HEIGHT 4
#endif
#else //no panel but just lcd
#ifdef ULTRA_LCD
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
#define LCD_WIDTH 20
#define LCD_HEIGHT 5
#else
#define LCD_WIDTH 16
#define LCD_HEIGHT 2
#endif
#endif
#endif
// default LCD contrast for dogm-like LCD displays
#ifdef DOGLCD
# ifndef DEFAULT_LCD_CONTRAST
# define DEFAULT_LCD_CONTRAST 32
# endif
#endif
最近看了一篇综述,粗略翻译一下
文献:
Padhukasahasram, B. (2014). Inferring ancestry from population genomic data and its applications . Frontiers in genetics, 5, 204.
祖先推断是一个经常遇到的问题,有许多应用,如法医分析,遗传关联研究,和个人基因组学。祖先推断的主要目标是根据我们对自然种群的认识来确定一个种群的起源。由于物种的祖先或生物体的取样位置都可能不准确,因此使用遗传标记可以促进对个体祖先起源的准确和可靠推断。在更高的层次上,祖先推断有两种不同的模式:全球祖先推断(试图计算人口贡献的全基因组平均)和本地祖先推断(试图识别基因组片段的区域祖先)。在这篇简短的综述中,我描述了目前从种群基因组数据集中两种类型的祖先推断可用的许多方法。目前可用的两种类型的血统推断从人口基因组数据集。我首先描述这些推理方法的基本思想以及它们之间的关系。然后,我描述了血统推断被证明是有用的实际应用。
在种群基因组分析中,常常需要将一个生物体样本划分为不同的种群组。这可以帮助我们了解自然种群的进化关系和迁徙历史,并有助于确定个体的种群起源。由于生物体的取样位置或人类的自我报告祖先的信息可能不够充分,因此利用遗传标记可以通过 利用群体间等位基因频率的差异 促进准确和可靠的祖先推断。
目前有两种不同的遗传推断模式: 全局遗传估计global ancestry (GA) estimation 和 局部遗传估计 local ancestry (LA) estimation 。GA遗传推理估计整个基因组中不同种群平均贡献的祖先比例。这种方法已被应用于研究人类以及许多其他物种的种群结构。相比之下,在LA推理纤亩中,我们将个体基因组中的每条染色体解释为来自不同祖先种群的片段拼接,目的是找到每个位置的祖先种群的起源。LA推理方法主要用于研究最近混合人口,如非洲裔美国人和拉丁裔美国人。
遗传推理的主要目标是估计整个基因组中每个种群平均贡献的祖先的比例。这种推断有两大类可用的方法: 基于模型蚂脊的方法 和 非参数的方法 。
基于模型的遗传推理方法试图估计单个祖先系数假设特定的统计模型。例如,STRUCTURE和ADMIXTURE软件都毁物森利用遗传比例和群体等位基因频率假设位点间的Hardy-Weinberg平衡和连锁平衡来建模观察到的基因型的概率。STRUCTURE是基于贝叶斯方法,使用马尔可夫链蒙特卡罗算法 Markov Chain Monte Carlo algorithm获得样本后验分布。后来该方法扩展为允许混合连锁不平衡(LD)。InStruct是STRUCTURE的延伸,可以共同推断自花受精生物的种群结构和近交系率。该方法放宽了cluster内的Hardy-Weinberg平衡假设。fastSTRUCTURE使用高效采用变分贝叶斯框架的算法来推断STRUCTURE 模型的后验。在这个框架下,后验推理被提出为一个优化问题。ADMIXTURE采用与STRUCTURE相同的模型,但使用了涉及高维优化算法的最大似然估计过程。特别是,这是通过一个块松弛方案交替更新血统系数矩阵和种群等位基因频率矩阵。采用一种新的拟牛顿quasi-Newton方法加速收敛。ADMIXTURE比STRUCTURE快一个数量级,并产生类似精度的估计。FRAPPE程序也遵循与STRUCTURE相同的似然模型,但使用期望最大化算法通过最大似然估计参数。执行严格的收敛准则使这个程序在计算上很麻烦。因此,在实际应用中,采用了松弛的收敛准则,使得计算结果的精度略低于ADMIXTURE。最近,Frichot等人在2014年描述了利用稀疏非负矩阵分解(sNMF)和最小二乘优化来产生祖先比例估计数的祖先推断的快速计算算法。特别是,这些算法产生的祖先估计与ADMIXTURE一样准确,但在速度方面要快约10-30倍。空间祖先分析(spatial ancestry analysis, SPA)是最近发展起来的一种替代方法,它利用显性的概率模型研究空间中等位基因频率的变化,并利用这些模型将个体定位到二维或三维空间中。
非参数方法利用多变量分析技术,如聚类分析和主成分分析(PCA)来推断数据中的结构。聚类分析的主要目标是直接找到代表数据中不同群体的子集。其他技术如PCA、多维标度和主坐标分析寻求在低维空间构建投影,以捕获标记基因型的大部分变异。这种方法推断出的坐标往往与个人取样所处的地理位置高度相关。EIGENSTRAT 是一个著名的实现PCA的程序。
诸如STRUCTURE和ADMIXTURE等方法的问题之一是,它们只考虑单个标记,而不考虑它们的联合变异模式。在没有重组的情况下,同一染色体上的标记倾向于一起遗传。对于接近的标记,在种群水平上,这导致LD,即反映共同家谱的非随机关联,并推翻了独立假设。对于密集的多态数据集,比如那些从测序中获得的数据集,基于单倍型的分析有潜力利用这些信息,并提供改进的检测群体子结构的能力。ChromoPainter和fineSTRUCTURE是最近开发的程序,目的是利用单倍型结构,分别用于高质量的PCA和种群结构推断。与PCA和ADMIXTURE等程序相比,LD的建模可以实现更准确的结构推断,但运行时间的成本要高得多。
当两个或更多不同的人口在一段时间内混合(即混合人口,如非洲裔美国人和拉丁裔美国人)时,血统推断就会变得更加复杂。GA算法推理方法将这些种群中的每个个体分配到一个以上的组。混合基因组是由来自不同祖先群体的片段拼接而成的,估计祖先的比例,特别是在这种情况下,在每个基因组位置寻找区域祖先是一个特别具有挑战性的问题。到目前为止,大多数已开发的方法都采用生成方法来解决这个问题,并尝试使用隐马尔可夫模型(HMM)或其扩展来将显式概率模型与数据拟合。LA推断的生成方法首先尝试建模等位基因和祖先的联合依赖性,然后使用“贝叶斯”规则估计祖先对SNP等位基因构型的依赖性。
早期基于STRUCTURE框架的LA推理方法使用了隐马尔可夫模型,没有明确地建模背景LD。这种方法的一个局限性是,它们没有充分利用单倍型中可用的信息,而单倍型可能有助于区分密切相关的种群。相比之下,其他可以显式建模LD的方法是计算密集的,并且一次只能考虑两个祖先种群。local ancestry in admixed populations (LAMP,混合种群中的本地祖先)是一种最新的估计最近混合种群中LA的算法,它在相邻SNPs的滑动窗口上 *** 作,并基于聚类算法分配祖先。结果显示,它比STRUCTURE(大约104倍)和SABER(大约200倍)更准确,速度也快得多。其中一个基本假设是窗口内不存在重组。WINPOP是对原始LAMP框架的修改,该框架使用了重组事件的改进模型和高效的动态规划算法,以改进祖先种群密切相关情况下的LA推断。PCAdmix 是LA推理的一种启发式方法。该方法首先将基因组划分为10-50 kb宽的窗口,并利用PCA估计特定参考面板群体的起源概率。然后,这些概率被用作HMM中的发射概率,通过维特比解码来推断祖先。SupportMix是另一种最近开发的用于LA推理的方法,它在滑动窗口HMM框架中训练支持向量机。ASPCA(祖系特异性主成分分析)是一种新方法,用于推断混合居群的单倍型在大陆内的起源,是最近在重建加勒比居群历史的背景下发展起来的。它涉及到首先推断LA,然后应用PCA只对特定祖先的基因组片段。
LA推断的另一种方法,RFMix是最近开发的,它对这个问题采取了一种鉴别方法。这些方法将未观察到的变量(即祖先)的依赖性直接建模为观察变量(即等位基因)的函数。RFMix利用了基于参考面板上训练的随机森林的条件随机字段。基于RFMix的LA推断被证明比许多竞争方法更快更准确,比如LAMP(快了33倍)和Support Mix(快了1.7倍)。EILA(本地祖先的有效推断)是另一种最近开发的统计方法,它使用融合分位数回归和k-means分类器来执行LA推断。该方法不假设标记之间的连锁平衡,并建议使用所有基因型SNPs以获得更高的准确性。EILA已经被证明比LAMP和HAPMIX等程序更准确,当种群间的祖先距离大或中等,并且在速度方面具有可比性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)