在从技术而言,PG 功能丰富,SQL 支持得很完备,强大的数据类型,严谨的关系模型,很难从关系模型去找出PG
得
不合理之处,多年的积累,连全文索引词库都非常丰富,据说对于一些简单的搜索,都可以摆脱搜索引擎了,优化器做得很好,在代价选择上PG 实现了基因算法,这一点连Oracle 也没有做到。
也正因如此在早期mysql变成了事实上的互联网企业OLTP的事实标准。不管干啥业务,mysql都不可或缺。在行业里跳槽来跳槽去的程序员普遍对mysql也更熟悉。大量围绕mysql的商业服务都成为了行业主流。新一代分布式数据库,像TiDB为了吸引用户,首先要做的是“兼容mysql的语法”
数据库这种早期用了就基本不能换的东西是有滞后性的,你看到现在MySQL的现状,是5年前MySQL是国内几乎唯一选择的情况。5年前Postgres就已经在欧美初创项目里比较受欢迎了,PostgreSQL在全球也是二线,不独中国。PostgreSQL一直就功能比MySQL完备,唯独缺乏一个引爆点,导致生态长期不如MySQL。
两者之间区别:
Postgres是一个对象关系数据库(ORDBMS),具有表继承和函数重载等功能,可以处理复杂的查询和大型数据库。
而MySQL就是一个纯粹的关系数据库(RDBMS)相对易于建立和管理,快速,可靠且易于理解。
pg替代mysql,技术上没有任何问题。mysql能做到的,pg同样能做到,不说做得更好,至少是各有千秋。也是因为pgsql的确是好,这个查查就知道。当然现在pgsql集群方案也很多,所以我估计早期的时候,pgsql在集群方案上可能不如mysql。而且pgsql的地理信息支持是很好的……。
有一个优势是pg是BSD开源协议,允许在pg的基础上开发商业版和销售。对于商业化非常友好。而mysql是GPL协议,如果某软件使用了GPL协议,那该软件也必须开源。所以一定程度上mysql受到oracle的控制。
服务器优化的选项:MySQL提供了很多选项来调整和优化你的MySQL服务器,通过调整变量,如排序缓冲区大小,读缓冲区大小,最大允许包等。
易于使用和流行:MySQL的流
前言:因为最近陆陆续续接手了几个物种的基因组项目,这也是生信分析中很大的一块。其中最基础的是组装和注释(当然我们实验室也做组装方法学的研究)。现在随着很多物种基因组的发表,纯基因组想发个很好的文章没有新颖的故事感觉也挺难的。看最近关于基因组的文章,尤其是已经release过的物种,好像都是在炒泛基因组/SV的概念。因为我们做的是多倍体物种,所以更多的就牵扯到多倍体进化,物种的比较等等比较基因组学的内容。所以最近一直在陆陆续续的系统学习一些这方面的分析。 先介绍几个概念。 Orthologs(直系同源物)是在两个物种的最后共同祖先(LCA)中来自单个基因的一对基因。直系同源物是同源性基因,是物种形成事件的结果。Paralogs(旁系同源物)是同源基因,是重复事件的结果。下图就可以看到,不同物种间的alpha-chain gene互为Orthologs(直系同源物)。这时候可以引用一个新名词orthogroup (正交群)就用来形容自一组物种的LCA中的单个基因的基因组(在图中就是alpha chain gene)。然后同一物种间alpha 和beta chain gene互为Paralogs(旁系同源物)。最后所有这些关系都可以由OrthoFinder来识别。在介绍基因家族收缩和扩张之前,有一个概念是绕不过去的,就是基因家族。 基因家族(gene family),是来源于同一个祖先,由一个基因通过基因重复而产生两个或更多的拷贝而构成的一组基因,它们在结构和功能上具有明显的相似性,编码相似的蛋白质产物,同一家族基因可以紧密排列在一起,形成一个基因簇,但多数时候,它们是分散在同一染色体的不同位置,或者存在于不同的染色体上的,各自具有不同的表达调控模式。在基因组项目中,通常会选择自己要研究的物种和其近缘的物种通过比对来寻找基因家族。 谈论到直系同源基因分析的时候,大部分教程都是介绍OrthoMCL,这是2003年发表的一个工具,目前的引用次数已经达到了3000多,但这个软件似乎在2013年之后就不在更新,而且安装时还需要用到MySQL(GitHub上有人尝试从MySQL转到sqlite)。 而OrthoFinder则是2015年出现的软件,目前已有400多引用。该软件持续更新,安装更加友好,因此决定使用它来做直系同源基因的相关分析。 那么,OrthoFinder能做什么? OrthoFinder: solving fundamental biases inwhole genome comparisons dramatically improves orthogroup inference accuracy提到,它的优点就是比其他的直系同源基因组的推断软件准确,并且速度还快。 此外它还能分析所提供物种的系统发育树,将基因树中的基因重复事件映射到物种树的分支上,还提供了一些比较基因组学中的统计结果。 OrthoFinder的分析过程分为如下几步: 1. BLAST all-vs-all搜索。使用BLASTP以evalue=10e-3进行搜索,寻找潜在的同源基因。(除了BLAST, 还可以选择DIAMOND和MMSeq2) 2. 基于基因长度和系统发育距离对BLAST bit得分进行标准化。 3. 使用RBNHs确定同源组序列性相似度的阈值 4. 构建直系同源组图(orthogroup graph),用作MCL的输入 5. 使用MCL对基因进行聚类,划分直系同源组OrthoFinder2在OrthoFinder的基础上增加了物种系统发育树的构建,流程如下: 1. 为每个直系同源组构建基因系统发育树 2. 使用STAG算法从无根基因树上构建无根物种树 3. 使用STRIDE算法构建有根物种树 4. 有根物种树进一步辅助构建有根基因树 5. 基于Duplication-Loss-Coalescent 模型,有根基因树可以用来推断物种形成和基因复制事件,最后记录在统计信息中。===安装=== 对于我这种安装软件总是无能的人,conda真是拯救了我。 conda install -c bioconda -c conda-forge orthofinder ==测试例子运行=== orthofinder -f ExampleData -S mmseqs 注: -f 指定文件夹 -S 指定序列搜索程序,有blast,mmseqs, blast_gz, diamond可用 so easy!!! OrthoFinder的基本使用就是如此简单,而且最终效果也基本符合需求。 如果你想根据多序列联配(MSA)结果按照极大似然法构建系统发育树,那么你需要加上-M msa。这样结果会更加准确,但是代价就是运行时间会更久,这是因为OrthoFinder要做10,000 - 20,000个基因树的推断。 OrthoFinder默认用mafft进行多序列联配,用fasttree进行进化树推断。多序列联配软件还支持muscle, 进化树推断软件还支持iqtree, raxml-ng, raxml。例如参数可以设置为-M msa -Amafft -T raxml. 并行化参数: -t参数指定序列搜索时的线程数,-a指的是序列搜索后分析的CPU数。 ===结果文件=== 运行结束后,会在ExampleData里多出一个文件夹,Results_ Jun07, 其中Jun07是我运行的日期 (1) Results Files: Orthogroups 包含一个主文件“Orthogroups.csv”和两个支持文件: Orthogroups.csv,每一行为一个group,每一列为一个物种,行列交汇处为基因名称。 Orthogroups_UnassignedGenes.csv,包含所有未分配到任何group的基因名称。 Orthogroups.txt,OrthoMCL格式的输出结果,内容等同于Orthogroups.csv。 (2)Results Files: Comparative_Genomics_Statistics 包含一些统计数据,可用于比较基因组分析、绘图以及质控。 Statistics_Overall.csv和Statistics_PerSpecies.csv,提供基本的描述信息 Orthogroups_SpeciesOverlaps.tsv,两两物种的group共享矩阵 - G50:group中的基因数,使得50%的基因处于该大小或更大的group中。 - O50:最小数量的group,使得50%的基因处于该大小或更大的group中。 - Number of single-copy orthogroups:每个物种中只有一个基因的group(相当于单拷贝核心基因)。这些group是构建物种树和许多其他分析的理想选择。 - Unassigned gene:未与任何其他基因划分到一个group的基因。 (3) Results Files: Orthologues 两两物种间的直系同源基因,每一行为一个group,第一列为group编号,第二列为第一个物种的基因,第三列为第二个物种的基因。同一物种的基因名以“,”分割。直系同源物可以是一对一,一对多或多对多。 (4) Results Files: Gene_Trees and Species_Tree 每个group的基因树和定根的物种树以newick格式输出,可以用各种看树软件展示,如MEGA、iTOL、Dendroscope和FigTree等,个人推荐用iTOL。例子的species的tree展示:===其它用法=== 1. 添加新物种到之前的分析(previous_orthofinder_directory指的是包含“SpeciesIDs.txt”的目录) orthofinder -bprevious_orthofinder_directory -f new_fasta_directory 2. 从之前的分析中移除物种 从输出目录下找到工作目录“WorkingDirectory”中的“SpeciesIDs.txt”文件,在要移除的物种那一行最前面加上一个“#”并保存,然后运行(previous_orthofinder_directory指的是包含“SpeciesIDs.txt”的目录): orthofinder -bprevious_orthofinder_directory 3. 同时添加和删除物种 编辑好“SpeciesIDs.txt”后,运行: orthofinder -b previous_orthofinder_directory-f new_fasta_directory欢迎分享,转载请注明来源:内存溢出
评论列表(0条)