变异体调用器的制作方法

文档序号:11529995阅读:188来源:国知局
相关申请的交叉引用本申请要求2004年10月16日提交的题为“变异体调用器”的美国临时申请no.62/064,717的优先权,在此通过引用将其内容全文并入本文用于所有目的。这一般地涉及用于识别和量化dna测序器读数中的变异体的过程和系统,并且在一个示例中涉及用于从参考基因组序列中识别变异体的变异体调用器过程和系统,其通过使用误差表以移除单体型误差,然后生成双体型(单体型对)并对其评分以确定变异体。
背景技术
::变异体调用器通常确定dna序列读数中相对于参考基因组序列存在核苷酸差异。存在多种已知的变异体调用器,包括称为platypus、基因分析工具箱“gatk”和freebayes的那些。例如,platypus是用于高通量测序数据中的变异体检测的系统,其主要依赖于读数的局部重新对准及其局部组装。platypus在“用于在临床测序应用中调用变异体的基于集成映射、组装和单体型的方法(integratingmapping-,assembly-andhaplotype-basedapproachesforcallingvariantsinclinicalsequencingapplications)”中被更详细地描述,在此通过引用将其整体并入本文。技术实现要素:在一个示例中,提供了用于相对于参考基因组序列从基因组样本读取变异体的计算机实施的过程。该过程包括收集读数组并从读数生成k-mer图。例如,k-mer图可以构造成表示收集的读数的所有可能的子串。k-mer图可以缩减成连通图,并且从连通图生成可能的单体型组。该过程可以进一步产生误差表(例如,从多个先前的样本来产生,以识别常见测序器误差),其提供用于常见测序器误差的过滤器。该过程然后可以基于该单体型组和误差表生成双体型组,并对该双体型组评分以根据参考基因组识别变异体。对双体型评分可以包括确定双体型中每一个的后验概率,最高评分的双体型被作为结果报告。在另一示例中,提供了用于生成序列数据的误差表的计算机实施的过程。示例性过程可以包括在具有至少一个处理器和存储器的电子设备处,从来自基因组样本的收集的读数组确定可能的单体型组,将收集的读数组与参考样本进行对准,确定收集的读数组的读数与参考样本错配的位点,以及向误差表增加错配的位点。确定可能的单体型组可以包括从收集的读数组生成k-mer图,将所生成的k-mer图缩减成连通图,和从连通图确定所述可能的单体型组。此外,描述了用于变异体调用器和生成误差表的系统、电子设备、图形用户界面和非暂态计算机可读存储介质(包括用于执行所描述的一个或多个过程的程序和指令的存储介质)。附图说明通过参考结合附图的以下描述可以最好地理解本申请,其中相同的部件可以通过相同的数字表示。图1说明了根据一个实施方式的示例性调用过程。图2a-2c示意性地说明了参考图1的过程描述的示例性过程。图3a和3b说明了不同读数模型的图。图4说明了本发明的各种实施方式可以在其中运行的示例性系统和环境。图5说明了示例性计算系统。具体实施方式提出以下描述以使得本领域普通技术人员能够做出和使用各种实施方式。具体设备、技术和应用的描述仅作为示例提供。对本文描述的示例的各种修改对于本领域普通技术人员将是显而易见的,并且在不脱离本技术的精神和范围的情况下,本文定义的一般原理可以应用于其他示例和应用。因此,所公开的技术不旨在限于本文所描述并示出的示例,而是符合与权利要求一致的范围。这通常涉及用于从参考基因组序列识别变异体的变异体调用器。在一个示例中,变异体调用器包括用于生成误差表以从单体型移除误差、生成双体型、并对双体型评分以从参考基因组序列识别变异体的过程。变异体调用器的示例可以提供相对于已知调用器(例如platypus、gatk、freebayes等)的多项进步。例如,虽然不存在于每个实施方式或示例中,但是进步可以包括读数的定位而非对准(例如,使用所有读数创建一个图,而非堆叠(pillingup)读数以用于对准)以及通过误差表进行误差校准以防范常见测序器误差。在一个实施方式中,变异体调用器被分成多个处理阶段,每个阶段将其输出作为输入提供给下一阶段。以下示例假定使用二进制对准/映射格式“bam”或“bam”格式,其是用于存储序列数据的二进制格式;然而,其他数据格式(例如,序列对准/映射(map)格式或“sam”格式)是可想到的并且是可能的。在一个示例中,每个bam文件中每个区域的处理与所有其他区域和bam文件完全分开。概括而言,在一个示例中,为了产生对于区域的调用,执行以下过程,其在图1中作为过程10说明。结合过程10的描述,将参考图2a-2c以示意性地说明过程10的各个方面。首先,在12处获得感兴趣的序列。例如,可以以任何方式从与调用的区域重叠的bam文件收集读数。该处理可以包括使用短读数对准器(例如bwa、bowtie、max等)将读数210与基因组区域220进行对准,如图2a中示意性说明的。收集的读数然后可以使用其相关联的软修剪信息进行修剪。然后可以丢弃来自对准器的辅助信息,例如碱基(base)对碱基对准信息,并且读数简单地变成碱基的序列。(在一些示例中,可以可选地进行基于映射质量的过滤。)然后在14处从收集的读数构建k-mer图,k-mer图代表收集的读数中包含的、长度为k的所有可能子串。图2b中说明了示例性的k-mer图,其中k=3(实际上可以使用20和30之间的k以确保k-mer是唯一的,例如仅在一个地方发生)。例如,扫描每个读数以收集k-mer和k-mer转换。每个边缘都以其相关联的转换概率进行注释,并且每个k-mer都以其被视为边缘的起始点的次数进行注释。k-mera和k-merb之间的转换概率是在k-mera之后的k-merb被看到的次数除以k-mera总共被看到的次数。然后,为了简化处理,可以在16处将k-mer图缩减成连通(“重叠群(contig)”)图。连通图通常说明共同形成基因组信息区域的重叠片段组。例如,该步骤可以结合两个k-mer,如果它们总是以相同路径结束。另外,k-mer图通过丢弃看起来小于阈值次数(例如小于4次)的任何k-mer并且丢弃具有低于阈值(例如,低于3%)的概率的任何边缘而过滤。一旦创建了k-mer图,就可以检查其循环,即收敛于自身的路径。如果该图具有循环,则可以将其丢弃,增加k,并重建图。因此,在该示例中,k-mer图将被构建为无循环。然后可以在18处进行单体型生成。例如,一旦构建重叠群图,就可以通过查看所有没有进入边缘(入度0)的重叠群而发现单体型候选者的起始点。这些应当是区域开始处的重叠群,然而在区域中间的重叠群如果它们是由噪音造成的话也可以具有该特性。然后,将这些重叠群作为起点,枚举通过连通图的所有可能路径,每个路径一旦其到达不具有外出边缘(尽头)的重叠群就结束。在继续前进之前,所有路径都可以通过加入其重叠群而变成单体型字符串。图2c中说明了概括的示例,起始点由“1”表示并移动到“6”。每个可能的路径都生成可能的单体型,其中一个在图中示出。一旦产生了可能的单体型组,则示例性过程(通过一个或多个探试程序)在20处验证其具有足够的数据以进行足够好的调用。例如,该过程检查期望区域中的每个位置都被足够的k-mer覆盖,并且存在覆盖整个区域的至少一个单体型。如果未通过这些检查中的任一个,则可以不对整个区域发出调用。应理解,探试程序可以就调用中的期望置信度进行调整。在任何评分过程之前,可以在22处进一步“清洁”可能的单体型组。从连通图生成的单体型通常不适合于输出或评分。因此,在一个示例中,在评分之前,它们经历了多个校正阶段。首先,单体型被修剪到感兴趣的区域;由于调用器使用所有重叠读数,大多数单体型将最初地超出讨论中的区域的边缘。在一个示例中,为了修剪单体型,将它与讨论中的区域进行对准,并且丢弃对准之外的任何碱基。一旦单体型被修剪,单体型中的误差就可以被校正。例如,该过程可以从列出常见测序器误差的多个样本生成误差表(下文更详细地描述),并且该误差表可以用于从可能的单体型组中移除这些误差。这些步骤可以产生包含副本的单体型组,并且这些副本可以被丢弃。可以在24处从单体型生成双体型并评分。例如,可以将n个单体型的组与其自身结合,以生成所有可能的双体型。对于n个单体型,将有n(n+1)/2个唯一的双体型。然后可以对这些双体型进行评分,其中双体型的评分等于其后验概率p(双体型|读数)。最高评分的双体型可以被作为结果报告,置信度等于获胜概率与下一个最佳概率之比的对数。下文更详细地描述了双体型评分。结果然后可以在26处按要求格式化(如果需要)并写出。例如,如果格式为javascriptobjectionnotation(“json”或“json”)或变异体调用格式(“vcf-full”),则在该示例中额外的处理是不必要的,并且仅将调用写出到磁盘。然而,如果结果格式为变异体调用格式-单核苷酸多态性(“vcf-snp”),则将结果分裂成更小的调用,其将区域分裂成其个体snp和插入缺失。vcf-snp格式的单个调用由在彼此的一定距离(例如10个碱基)内的不同变异体的所有变异组成。双体型评分在一个示例中,上述n个单体型的组可以与其自身结合,以生成所有可能的双体型。对于n个单体型,将有n(n+1)/2个唯一的双体型。然后对这些双体型进行评分;双体型的评分等于其后验概率p(双体型|读数)。最高评分的双体型可以作为结果来报告,置信度等于获胜概率与下一个最佳概率之比的对数。现在将描述用于确定候选者列表中的最佳双体型的示例性概率评分模型。在一个示例中,分配给每个双体型的评分是该双体型的后验概率p(双体型|读数)。由于用于评分的概率通常小,因此在一个实施方式中使用对数概率。后验概率可以分解成似然和先验:p(双体型|读数)=(1/z)p(读数|双体型)p(双体型),其中z=p(读数)是不被计算的一些归一化常数。由于z独立于双体型,因此出于比较两个双体型的目的,可以忽视它。然后可以分别计算先验p(双体型)和似然p(读数|双体型)。为了计算先验,在该示例中可以假设大多数区域与参考物相似。双体型的概率则是从参考物通过生物学突变生成双体型的概率。该示例假设这简单地是从参考物生成的单体型的概率的乘积(其应理解为由于选择而不是完全准确的,但通常是足够的)。因此,双体型的概率可以表示为:p(双体型)=p(单体型_1)p(单体型_2)生成的单体型的概率是以所有可能方式生成的单体型的概率的求和,其中单体型与参考物的每个可能的对准对应于生成单体型的不同方式。然而,对所有对准求和在计算上可能是难处理的,因此该示例假设概率质量的大部分包含在单个对准中,即具有最高概率的对准。因此,为了计算p(单体型),该过程将单体型与参考物进行对准。在对准过程中使用的匹配、错配、缺口打开和缺口延伸参数对应于由于生物学突变而发生的这些事件的对数概率。由于对准使评分最大化,它将使对数概率最大化,从而产生最高概率对准。例如,大约每一千个碱基发生一个碱基的变化,所以错配参数将是log(1/1000)。似然p(读数|双体型)的计算使用类似的过程。首先,该示例假定所有读数都是独立的,这允许似然被重写为:p(读数|双体型)=乘积_i{p(读数_i|双体型)}然后,该示例假设读数可以来自双体型的两个单体型(具有相等概率),或者其可以从基因组中的其他地方随机生成(具有非常低的概率)。第二种情况有效地模拟对准器误差和罕见异常值。因此,读数的概率可以表示为:p(读数|双体型)=εp(读数是随机的)+(0.5-ε)p(读数|单体型_1)+(0.5-ε)p(读数|单体型_2)。随机生成的读数的概率等于生成的每个碱基;因为有四种同样可能的碱基:p(读数是随机的)~=0.25^长度(读数)。给出单体型的读数的概率可以使用对准而发现。该示例假设单体型是基础基因组的真实序列,并且假设使用有误差的(errorful)测序过程从该序列生成读数。因此,对准参数应为序列器误差率;例如,错配参数应是测序器使得一个碱基在任意碱基处变化的概率的对数。与先验一样,该过程计算最佳对准,并将评分用作概率。本领域普通技术人员应当理解,可以使用其他评分过程代替本文所描述的或在本文所描述的之外使用其他评分过程,例如包括其他参数、值、假设和计算过程。误差表生成通常,并且在一个示例中,误差表如防范常见测序器误差的过滤器那样工作,这在其他方面可能使一些区域非常难以调用。在一个示例中,为了生成误差表,使用含有相同区域的数据的数百个(例如,100-300或更多个)样本。在该示例中,给定区域的误差表生成经过以下步骤:1.对于每个样本,将读数与参考物进行对准。对于参考物中的每个碱基,计数在那里看到不同变异体的次数(是四个碱基的变异体、不同长度缺失和不同插入)。该过程可以对向前和向后的读数分别进行。2.查找有着超过变异的某个阈值(即超过具有非参考等位基因的读数的某个阈值百分比)的位点。例如,阈值可以是1%。这些位点是进入误差表的候选位点。3.接下来,过滤误差表位点。在下一部分将在下文中更详细地描述过滤中的示例性步骤。4.过滤器从误差表移除位点中的一些。过滤后,将这些位点与单核苷酸多态性数据库“dbsnp”(以及潜在地多个dbsnp变异体调用器格式“vcf”)进行比较。发生在dbsnp中且常见的任何位点都可以从误差表移除。5.误差表作为大型json文件写到磁盘,其中每个位点的记录指示参考库和每个替代库的频率。可以过滤频率大于例如1%的任何替代碱基。过滤的截止值可以在系统自身中配置,因此在误差表中不足以保证过滤。但是,截止值是非常相似的。例如,该过程可以过滤误差表中大于1.5%频率的任何内容。误差表可以每个感兴趣的区域生成一次,然后存储供以后使用。误差表过滤统计数据如在误差表生成过程的步骤3(上文)中提到的,高变异位点都是误差表的候选者。候选位点可以通过一系列统计检验(以及通过与dbsnp进行比较)而被过滤。下文描述了用于过滤候选误差表位点的示例性程序,包括两个示例性检验。首先,对于每个位点,可以计算哈迪-温伯格(hardy-weinberg)检验统计数据。这可以通过非常朴素的基因分型实现:例如,如果碱基在少于20%读数的样本中看到,则将其看做是纯合参考物(“homref”);如果其在20%到75%读数的样本中看到,则将其看做是杂合的(“het”);如果其在超过75%读数的样本中看到,则将其看做是纯合替代物(“homalt”)。然后,将样本放到这三个分类(homref、het和homalt)中,并且使用针对0.5%的α的标准卡方(chi-squared)统计数据进行哈迪-温伯格检验。因此,如果有可能误差表中的这个位点可能来自真实的snp,则考虑将其从误差表中移除。然而,在该示例中这些位点不立即从误差表中移除。为了从误差表中移除,它们还必须通过贝叶斯因子检验。贝叶斯因子检验计算给出两个不同模型(snp模型和噪声模型)的数据的概率比,如下:b=p(数据|snp模型)/p(数据|噪声模型)如果贝叶斯因子高(例如,大于10),则数据具有来自snp模型的更高概率,因此该位点从误差表中移除。这两个模型是读数分数分布的模型。如果等位基因(allele)的频率为20%,则等位基因可能是噪声,并且样本中的频率分布将全部为约20%,即在每个样本中,约20%的读数将具有该等位基因。替代地,等位基因可能是真实的,在这种情况下,一些样本将具有接近100%的等位基因,一些样本将具有0%,并且一些样本将具有50%(对应于homalt、homref和het)。这两个模型具有不同数量的参数。通常,在噪声模型中,需要读数中的观察的噪声的概率(其对应于观察到的等位基因频率),而在snp模型中,需要homalt、homref和het样本的概率(其仅有两个参数,因为这两个参数必须求和为一个)。为了比较具有不同参数数量的模型,可以将参数积分。因此,为了计算p(数据|噪声模型),该过程可以将p(数据|噪声模型,噪声概率)在噪声概率(从0到1)的所有可能值上求积分。类似地,为了计算p(数据|snp模型),该过程可以将p(数据|snp模型,homref比例,het比例)在homref比例和het比例(homalt比例是1减去这两个)的所有可能值上求积分。(积分区域是受到约束的,使得这三个的和恰好为1,并且它们都不在[0,1]范围外。)这种积分可以使用scientificpython“scipy”数值积分函数(或等效的)实施。两种模型(噪声和snp模型)都是基于如下假设:读数是从某种伯努利(bernoulli)分布获取的;该过程以某个概率p看到或者看不到讨论中的等位基因。对于噪声模型,p是参数(噪声概率),并且该过程在p上求积分。概率p(数据|噪声模型,p)可以通过使用二项分布概率质量函数计算,其中p是该过程看到讨论中的等位基因的概率。对于pmf的x和n参数仅仅是样本中看到多少次等位基因和总计有多少个读数。这允许计算给定样本的概率,并且在数据集中的所有样本上将所有这些概率相乘,提供给定参数p的模型的总体概率。(注意:为了避免示例性计算中的下溢,该过程可以将每个概率乘以10;因此,所计算的概率被放大10^n,其中n是数据集中的样本的数量。)对于snp模型,示例性过程包括三个二项式分布,一个用于样本是homref的可能性,一个用于样本是het的可能性,并且一个用于样本是homalt的可能性。然而,在每个情况下,该过程不知道概率p,因为即使样本是homref或homalt,污染仍然可能产生一些参考物。类似地,对于het的情况,污染和其他影响(诸如映射质量)可能产生并非恰好是50%的p。为了对抗这一点,该过程可以使p是具有β分布的随机变量;在p的所有可能值上求积分,给出了β二项式分布,其可以在snp模型的这三种情况中用于代替简单二项式。为了模拟先验信息(即homref、het或homalt),该过程可以将α和β参数用于适当地使我们的分布偏斜的β先验。对于homref和homalt的情况,该过程可以使用α=20和β=1(或反之亦然),其产生类似图3a所示的图。对于het的情况,该过程可以使用α=20和β=20,其产生类似图3b所示的图。未通过贝叶斯因子检验的任何位点都假设是以哈迪-温伯格比例发生的噪音,因此被保留在误差表中。除了贝叶斯因子检验之外,并且在一个示例中,为了将位点保持在误差表外,它必须通过链偏倚(strandbias)检验。链偏倚检验是相当简单的:参考物的读数和等位基因的读数在所有样本上聚集,同时跟踪计数的链的数量。还计算总体等位基因频率p。然后,计算向前读数的概率(假设它们来自具有概率p的二项式分布),并计算向后读数的同一概率。如果这些概率之比非常高或非常低,则表明等位基因的分布非常偏向于一条链或另一条链。因此,如果该比率的对数具有大于某个阈值(例如,大于10)的大小,则该位点被认为是具有链偏倚并且被包括在误差表中。因此,在一个示例中,如果位点通过哈迪-温伯格检验、贝叶斯因子检验和链偏倚检验,则将其从误差表候选位点中移除。应认识到,可以采用各种其他检验或检验的组合以生成(或过滤)误差表。此外,可以采用其他变量或阈值与本文所描述的示例来确定测序器误差和真实变异之间的差异。命令行界面:以下部分描述了示例性变异体调用器的实际安装和使用以及可以提供给它的工具。本文描述的示例性变异体调用器可以作为标准python包实施(在一个示例中,仅有的相关性是用于序列对准的c++库seqan);当然,普通技术人员将认识到其他编程语言、数据格式等是可能的和可预期的。在一个示例中,示例性变异体调用器依赖于用于误差校正的预先建立的误差表(例如,如本文所述)。为了生成误差表,该过程使用用于调用的区域的数据收集多个样本(例如,数百个或更多个样本)。然后可以通过以下示例性命令针对特定区域(例如chr1:100-200)生成误差表:python-mkcallgen-table--reference/path/to/hg19.fa--outputmy_error-table.err--from/directory/with/bam/files--threads$nthreads--regionchr1:100-200--dbsnpdbsnp.vcf或者,该过程可以提供*.bed文件:python-mkcallgen-table--reference/path/to/hg19.fa--outputmy_error-table.err--from/directory/with/bam/files--threads$nthreads--bed/path/to/my/bedfile.bed--dbsnpdbsnp.vcf最后,使用*.bam文件的列表而非目录,该过程可以替代地将该列表提供到“--from”处:python-mkcallgen-table--reference/path/to/hg19.fa--outputmy_error-table.err--from/path/to/list-of-bam-files.txt--threads$nthreads--bed/path/to/my/bedfile.bed--dbsnpdbsnp.vcf如果用户期望在集群中的多个节点上并行化误差表生成,则该过程可以为*.bed文件中的每个区域生成单独的作业。该过程然后可以将所有生成的片段组合成单个表。由于误差表是简单的json格式,因此该过程可以使用jq工具来做这些:#假设所有误差表片段都存储在片段中/asjsonfiles.catpieces/*.json|jq-sadd>combined_table.json”生成误差表后,该过程可以使用以下命令运行kcall变异体调用器:python-mkcallcall--reference/path/to/hg19.fa--errorsmy_error-table.json--bam/path/to/sample.bam--threads$nthreads--bed/path/to/bed/file.bed--output-jsonoutput.json--output-vcf-fullfull.vcf--output-vcf-snpsnp.vcf示例性变异体调用器可以在上文示出的相应标志下以至少三种格式提供输出,例如:json、vcf-snp和vcf-full。该过程可以具有这些标志的任何子集;如果没有提供任何内容,则该过程将vcf-snp格式输出到标准输出。json格式通常是最简单的,并且简单地产生具有字典的json文件,其中每个密钥都是描述区域的字符串(例如“chr1:100-200”),并且值是描述无调用原因的字符串(如果区域未被调用)或者具有提供区域的序列的双体型和置信度密钥的字典。vcf-full格式输出与vcf相同的信息,其中每个区域正好对应于一行。注意,虽然关于无调用的信息可以从vcf获得(因为基因型gt字段将为./.),无调用的原因可以从json输出格式获得。最后,vcf-snp格式通过个体单体型调用使输出vcf分裂,如果它们比分开的几个碱基更靠近,则使snps结合在一起。这生成类似于gatk和freebayes的调用。一旦示例性变异体调用器已经生成调用,该过程可以将它们与另一组调用进行比较。例如,变异体调用器可以包括用于此目的的集成比较工具,其查找通过碱基在参考基因组中位置编制索引的逐个碱基的差异。这允许该过程将vcf与不同输出格式进行比较,因此可以容易地将调用集与freebayes、gatk1或gatk2调用集进行比较。为了比较两个vcf,可以使用以下命令:python-mkcallcomparefirst_vcf.vcfsecond_vcf.vcf--reference/path/to/hg19.fa--outputoutput.diff--statsoutput.stats--name$sample_name--bed/path/to/bed/file.bed生成的输出包含在上文的两个制表符分隔的表(output.diff和output.stats)中。这两个tsv文件分别含有两个调用集之间的差异以及关于该差异的频率的一些统计。示例性架构和处理环境:本文描述的系统和过程的某些方面和示例可以在其中操作的示例性环境和系统。如图4所示,在一些示例中,系统可以根据客户端-服务器模型实施。系统可以包括在用户设备102上执行的客户端侧部分和在服务器系统110上执行的服务器侧部分。用户设备102可以包括任何电子设备,例如台式计算机、笔记本、平板计算机、pda、手机(如智能手机)等。用户设备102可以通过一个或多个网络108与服务器系统110通信,网络108可以包括因特网、内联网或任何其它有线或无线公共或私人网络。用户设备102上的示例性系统的客户端侧部分可以提供客户端侧功能,例如面向用户的输入和输出处理以及与服务器系统110的通信。服务器系统110可以为驻留在各自的用户设备102上的任何数量的客户端提供服务器侧功能。此外,服务器系统110可以包括一个或多个调用器服务器114,其可以包括面向客户端的i/o接口122、一个或多个处理模块118、数据和模型存储器120以及通向外部服务116的i/o接口。面向客户端的i/o接口122可以便利调用器服务器114的面向客户端的输入和输出处理。一个或多个处理模块118可以包括如本文所述的各种问题和候选者评分模型。在一些示例中,调用器服务器114可以通过用于任务完成或信息获取的网络108与外部服务124(例如文本数据库、订阅服务、政府记录服务等)通信。通向外部服务116的i/o接口可以便利这样的通信。服务器系统110可以在一个或多个独立的数据处理设备或计算机分布式网络上实施。在一些示例中,服务器系统110可以采用第三方服务提供商(例如,第三方云服务提供商)的各种虚拟设备和/或服务以提供服务器系统110的底层计算资源和/或基础设施资源。虽然调用器服务器114的功能在图4中示出为包括客户端侧部分和服务器侧部分两者,但在一些示例中,本文描述的某些功能(例如,关于用户界面特征和图形元素)可以实现为安装在用户设备上的独立应用。此外,系统的客户端和服务器部分之间的功能划分可以在不同的示例中变化。例如,在一些示例中,在用户设备102上执行的客户端可以是仅提供面向用户的输入和输出处理功能的瘦客户端,并将系统的所有其他功能委托给后端服务器。应注意,服务器系统110和客户端102可以进一步包括各种类型的计算机设备中的任一种,其具有例如处理单元、存储器(其可以包括用于执行本文描述的功能中的一些或全部的逻辑或软件)和通信接口以及其它常规计算机组件(例如输入设备,如键盘/触摸屏,和输出设备,如显示器)。此外,服务器系统110和客户端102中的一者或两者通常包括逻辑(例如,httpweb服务器逻辑),或者被编程以格式化从数据和内容的本地或远程数据库或其他来源访问的数据。为此,服务器系统110可以利用各种web数据接口技术,例如通用网关接口(cgi)协议和相关应用(或“脚本”)、“servlet”(即在服务器系统110上运行的应用)等等以呈现信息并从客户端102接收输入。虽然本文以单数形式描述,但是服务器系统110实际上可以包括多个计算机、设备、数据库、相关后端设备等,通信(有线和/或无线)并协作以执行本文描述的功能一些或全部。服务器系统110还可以包括账户服务器(例如,电子邮件服务器)、移动服务器、介质服务器等或与其通信。还应注意,虽然本文描述的示例性方法和系统描述了使用分开的服务器和数据库系统以执行各种功能,但是可以通过将操作以造成所描述的功能的软件或编制程序存储在单个设备上,或者通过作为设计选择的问题的多个设备的任何组合实施其他实施方式,只要执行了所描述的功能。类似地,所描述的数据库系统可以作为单个数据库、分布式数据库、分布式数据库的集合、具有冗余在线或离线备份或其他冗余的数据库等实施,并且可以包括分布式数据库或存储网络和相关处理智能。虽然未在附图中描绘,但服务器系统110(和本文描述的其它服务器和服务)通常包括如常见于服务器系统中的这样的本领域公认的组件,包括但不限于处理器、ram、rom、时钟、硬件驱动器、相关存储器等(参见例如下文讨论的图5)。此外,所描述的功能和逻辑可以包括在软件、硬件、固件或其组合中。图5描绘了配置成执行包括各种调用和评分模型的上述过程中的任一个的示例性计算系统1400。在该上下文中,计算系统1400可以包括例如处理器、存储器、存储和输入/输出设备(例如,监视器、键盘、磁盘驱动器、因特网连接等)。然而,计算系统1400可以包括用于执行过程的一些或所有方面的电路或其他专用硬件。在一些操作设置中,计算系统1400可以配置成包括一个或多个单元的系统,每个单元配置成以软件、硬件或其某种组合执行过程的某些方面。图5描绘了具有可用于执行上述过程的大量组件的计算系统1400。主系统1402包括具有输入/输出(“i/o”)部分1406、一个或多个中央处理单元(“cpu”)1408和存储器部分1410的母板1404,其可以具有与之相关的闪存卡1412。i/o部分1406连接到显示器1424、键盘1414、磁盘存储单元1416和介质驱动单元1418。介质驱动单元1418可以读/写可以含有程序1422和/或数据的计算机可读介质1420。基于上述过程的结果的至少一些值可以被保存以供后续使用。另外,非暂态计算机可读介质可以用于存储(例如,有形地体现)用于通过计算机执行上述过程中的任一个的一个或多个计算机程序。计算机程序可以例如以通用编程语言(例如,pascal、c、c++、python、java)或某些专门的应用程序特定语言编写。本文描述了各种示例性实施方式。以非限制性的意义参考这些事例。它们是提供以说明所公开的技术的更广泛适用的方面。可以在不脱离各种实施方式的真实精神和范围的情况下进行各种改变并且可以用等同物替换。此外,可以进行许多修改以使特定情况、材料,物质组成、方法、方法动作或步骤适应于各种实施方式的目标、精神或范围。此外,如本领域技术人员将理解的,本文描述和说明的个体变异中的每一个都具有离散的组成和特征,其可以容易地在不脱离各种实施方式的范围或精神的情况下,与其他多个实施方式中的任一个的特征分离或组合。所有这样的修改都旨在是在与本公开相关的权利要求的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1