跳到主要内容

一种使用变质测试测试生物信息学程序的创新方法

摘要

背景

实验和计算技术的最新进展推动了许多复杂生物信息学程序的发展。这些程序的正确性至关重要,因为不正确的计算结果可能会导致错误的生物学结论或误导下游实验。通用软件测试程序包括使用一组测试输入执行目标程序,然后验证测试输出的正确性。然而,由于许多生物信息学程序的复杂性,通常很难验证测试输出的正确性。因此,我们执行系统软件测试的能力受到极大阻碍。

结果

我们建议使用一种新的软件测试技术——变形测试(MT)来测试一系列生物信息学程序。MT技术不需要一种机制来验证单个测试输出是否正确,而是验证一对测试输出是否符合一组称为变形关系(MR)的领域特定属性,从而大大增加了可以应用的测试用例的数量和种类。为了证明机器翻译是如何在实践中使用的,我们应用机器翻译测试了两个开源生物信息学程序,即GNLab和SeqMap。特别是,我们证明了机器翻译的实现简单,并且在检测实际程序和一些人工故障导向程序中的故障方面是有效的。此外,我们讨论了机器翻译如何应用于生物信息学各个领域的测试程序。

结论

本文描述了一种简单、有效和自动化的技术在系统测试一系列生物信息学程序中的应用。我们通过两个真实的案例研究展示了MT如何在实践中实现。由于许多生物信息学程序,特别是用于大规模模拟和数据分析的程序,很难进行系统测试,因此其开发人员可能会受益于将机器翻译作为测试策略的一部分。因此,我们的工作代表着生物信息学软件可靠性的重要一步。

背景

生物信息学中的软件测试问题

在这个后基因组时代,我们正经历着生物数据在数量和种类上的爆炸式增长。迄今为止,已经并正在持续开发许多生物信息学程序来支持这些数据的分析。生物信息学界的大部分研究工作都集中在开发先进的计算和统计方法以支持这些工具。然而,关于如何系统有效地测试这些程序的工作却鲜有报道。显然,这些程序的正确性与使用最佳算法同样重要,因为不正确的计算结果可能会导致错误的生物学结论,进而误导下游实验。

目前,只有少量工作致力于生物信息学中的软件工程[1,2]. 此外,他们的主要关注点是大型复杂生物数据集的管理,而与生物信息学软件的正确性相关的问题在很大程度上被忽视了。

就其本质而言,许多生物信息学程序都是为了组织和分析大型复杂的生物数据集而开发的。其中许多程序涉及(1)处理大量数据,(2)调用复杂的处理过程来提取有用的信息。特别是,由于高通量数据集的快速积累和对系统级生物建模的日益关注,生物信息学程序的规模和复杂性正在迅速增长。这对开发良好的测试策略以确保软件实现的可靠性提出了巨大挑战。

软件测试包括定义测试目标,选择测试软件的一些输入测试用例,使用这些测试用例执行软件,并验证测试结果[]. 一个好的测试策略应该使用一组选定的测试用例主动地发现尽可能多的故障。为了实现这个目标,已经开发了许多技术来指导如何生成好的测试目标和选择好的测试用例。一些常用的测试技术包括随机测试、域测试、控制流测试、数据流测试等[,4]. 然而,许多这些技术隐含地假设有一种方法可以验证测试结果是否正确,但在许多实际情况下并不一定如此。在软件测试中神谕是一种机制,用于确定给定任何可能的输入时目标程序的输出是否正确。当测试预言机存在时,我们可以应用大量和多种测试用例来测试程序,因为可以使用预言机验证输出的正确性。如果没有有形的预言机,测试用例的选择将极大地局限于那些特殊测试用例[5]在预期输出已知或存在容易验证测试结果正确性的方法的情况下。特别是oracle问题在以下情况下称为存在:(1)“不存在预言”或(2)“理论上是可能的,但实际上很难确定正确的输出”[6].

在执行系统程序测试时,有形预言机的存在至关重要。由于oracle是一种系统机制,用于验证所有可能的程序输入的测试输出,因此oracle的存在使测试策略能够以系统的方式选择不同的输入进行测试。在实践中,可以使用一些简单或特殊的测试用例来测试程序,这些测试用例是在软件开发过程中逐步开发的。然而,这些测试用例很可能只构成整个输入域的一小部分,因此无法替代系统预言机。

甲骨文问题是测试程序的一个挑战性话题。不幸的是,许多生物信息学程序都存在预言机问题,因为通常很难构建一个实用的预言机来验证程序所有可能输入的结果。由于大多数常用的测试技术(如随机测试、领域测试等)都假设存在预言符,因此它们不适合测试不存在预言符的生物信息学程序。这个问题在生物网络模拟领域尤其相关。SBML社区已经实现了对确定性和随机模拟器进行客观测试的挑战[7,8]. 为了测试新的支持SBML的模拟器的可靠性,当前的实践包括在一些研究良好的输入模型上使用多个现有模拟器执行该模拟器,并比较仿真结果的一致性[7]. 这种方法称为N版编程[9]. 尽管这种努力似乎令人满意,但它并非普遍适用,因为它依赖于具有相同输入/输出结构的程序的多个实现的可用性,而这通常很难获得。此外,当不同的模拟器产生非常不同的结果时,很难判断什么是正确的输出。有人指出,“[a]不存在权威的结果集,很难根据模拟结果设计一个度量标准,从而告诉我们给定的模拟结果是否“正确””[7]. 建议对模拟结果进行目视检查,以帮助我们区分不合理的结果和合理的结果。尽管如此,这种方法不是自动的、主观的,并且要求测试人员具有底层算法的专家知识。因此,我们需要一种替代测试策略来解决oracle问题。

变形测试

变形测试(公吨)[5,6,1013]是一种缓解oracle问题的创新测试方法。MT没有使用传统的测试oracle,而是使用了一些特定于问题域的属性,即变质关系(MR),以验证测试输出。最终用户与测试人员或程序开发人员一起,首先需要确定被测试软件的一些属性。然后,可以根据这些属性导出MR。一些测试用例(即源测试用例可以根据一些传统测试技术进行选择。进一步的测试用例(即后续测试用例在MT的上下文中)可以基于源测试用例并根据MR生成。执行所有测试用例,然后对照MR检查源和后续测试用例的输出。如果任何一对源和后续测试用例违反(即,不满足)它们对应的MR,测试人员可以说检测到了故障,从而得出程序有错误的结论。

. [10]使用了一些示例来说明如何使用机器翻译技术。一个示例是测试一个程序,该程序搜索无向图中任意两个节点之间的最短路径。给定加权图,源节点x个和目标节点在里面,目标程序是输出最短路径和最短距离,d日(x个,,),来自x个。在这个问题中,由于在x个因此,由于oracle问题,测试这样的程序很困难。使用机器翻译技术,我们可以根据图论中的一些著名属性定义一些MR。这里我们使用两个这样的属性作为示例:d日(x个,,) =d日(,x个,),以及d日(x个,,) =d日(x个,w个,) +d日(w个,,)其中w个是程序在运行中识别的最短路径上的节点d日(x个,,). 想法是,尽管很难验证每个测试用例的正确性(即,d日(x个,,),d日(,x个,),d日(x个,w个,)和d日(w个,,)),更容易测试这些测试用例及其相应的输出是否满足MR。如果最短路径程序违反了这些MR中的任何一个,我们可以得出程序不正确的结论。

我们的贡献

本文的主要贡献是介绍了使用机器翻译作为一种简单、有效和自动化的技术来测试生物信息学程序,特别是那些遭受预言机问题的生物信息学软件。通过两个案例研究,我们逐步介绍了机器翻译在实践中的应用。我们解释了如何从领域知识和程序规范中导出MR,以及如何基于这些MR生成测试用例。通过分析MT检测某些程序中故障的能力,证明了MT的有效性。我们还讨论了机器翻译在生物信息学中各种重要应用领域的适用性。

结果

机器翻译的一般过程非常简单。首先,最终用户和测试人员需要想出一些属性涉及目标程序的多对输入和输出。这些属性源自目标程序的领域知识。它们被称为变质关系(MR)。其次,测试人员需要根据这些MR设计一组源测试用例及其相应的后续测试用例。在本研究中,源测试输入要么是随机生成的,要么是从一些实际案例中提取的。最后,执行所有测试用例,并比较源测试用例和后续测试用例的输出,以检查是否满足相应的MR。在本节中,我们通过测试两个生物信息学程序(即GNLab)来演示机器翻译如何在实践中应用[14]和SeqMap[15]. 在我们的每个案例研究中,简要描述了目标程序的预期行为,并解释了MR推导过程。应该指出,选择这两个程序是因为它们是开源的,代表了生物信息学中的两个重要应用领域:网络模拟和高通量数据处理。

案例研究1:GNLab测试

GNLab公司[14,16]是用于大规模分析和模拟基因调控网络(GRN)的命令行工具。该程序由用于网络生成、模拟、分析、可视化和比较的单独组件组成。这里我们只关注测试GNLab的确定性网络模拟组件。GNLab的网络模拟器采用有向加权图作为输入,其中基因对基因交互的类型和强度由边缘权重表示。它假设输入图结构和网络动力学之间存在以下关系:

  1. 1

    边的权重表示调节器(边尾部的节点)对目标基因(边所指的节点)的影响。

  2. 2

    边的权重应介于-1和1之间(包括-1和1),其中正权重表示激活,负权重表示抑制。

  3. 三。

    如果两个节点没有通过有向路径连接,则这两个节点的表达动力学应该是独立的。

这组GRN模拟规则和以前执行网络模拟的经验共同构成了本案例研究中的领域知识,表明网络结构的变化应导致程序执行路径的变化。因此,我们首先旨在设计一组MR,以捕捉各种类型网络结构改变的行为:

1.添加节点

  1. (a)

    添加断开连接的节点.给定网络,我们向其添加一个节点P(P),未连接到中的任何节点新网络称为G’.的输出应完全包含在G’即,(的输出G’)=(输出)+(输出P(P)).

  2. (b)

    添加非调节器节点.给定网络,我们向其添加一个节点P(P),它不是中任何节点的调节器新网络称为G’.的输出应完全纳入G’即,(的输出G’)=(输出)+(输出P(P)).

2.添加边缘

  1. (a)

    添加具有正权重的边.给定网络和非调节器节点P(P)在里面,我们添加一条边,该边指向P(P)具有正权重。新网络称为G’.在输出中G’,仅输出P(P)将增加,而其他节点的输出应保持不变。

  2. (b)

    添加具有负权重的边.给定网络和非调节器节点P(P)在里面,我们添加一条边,该边指向P(P)重量为负。新网络称为G’。在的输出中G’,仅输出P(P)将减少,而其他节点的输出应保持不变。

  3. (c)

    添加权重为零的边.给定网络和一个节点P(P)在里面,我们添加一条边,该边指向P(P)重量为零。新网络称为G’.的输出G’应与的输出相同.

3.删除节点

  1. (a)

    删除非调节器节点.给定网络和非调节器节点P(P)在里面,我们删除P(P)建立一个新的网络G’.的输出G’应完全纳入也就是说,(的输出G’)=(输出)-(输出P(P)).

  2. (b)

    删除调节器节点.给定网络和调节器节点P(P)在里面,我们删除P(P)建立一个新的网络G’。此类删除应影响与所有P’子节点,而输出与P’非后代节点应保持不变。

4.网络复制

给定一个网络,我们重复建立一个新的网络G’(即,G’=+). (输出G’)=(输出)+(输出).

5.边重修改

  1. (a)

    边缘重量增加.给定网络,一个节点P(P)在里面和边缘E类定向到P(P),我们增加了E类。此类修改应增加与P(P).

  2. (b)

    边缘重量减少.给定网络,一个节点P(P)在里面和边缘E类指向P(P),我们减少了E类。这样的修改应该会减少与P(P).

我们使用了三批测试用例来测试GNLab。第一批包含一些随机生成的输入网络作为源测试用例。使用酵母GRN生成第二批和第三批测试用例[17]和a大肠杆菌GRN公司[18]分别作为源测试用例。酵母GRN有477个节点和906个边缘,而大肠杆菌GRN有1306个节点和2981条边[16]. 我们将这三个批次称为批次R(随机网络)、批次Y(酵母GRN)和批次E(大肠杆菌GRN)。对于三个批次中的每一个,每个MR都使用了一对源测试用例和后续测试用例(尽管通常可以从一个源测试用例生成多个后续测试用例,但为了简化分析,我们这里只使用了一个后续测试例)。所有测试用例均由GNLab执行,并对照MR检查结果。结果(见表中“原始”一栏1)表明GNLab违反MR2(c),同时满足所有其他MR。

表1使用MT测试GNLab的结果

最初的程序开发人员选择使用K(K)= 2000 – 1950|w个|将网络的边权重映射到希尔动力学方程的参数中(参见方法更多详细信息)。由于边缘重量的绝对值|w个|限制在0和1之间,动力学参数K(K)映射到2000到50之间的值。我们注意到,这个公式满足了这样一种直觉,即定向边缘上的更高权重意味着调节器对受调控基因的影响更强(通过具有更小的K(K)希尔方程中的值)。然而,通过使用此公式,零权重边缘仍允许调节器(此零权重边缘)弱影响其目标基因。为了纠正这个问题,GNLab的开发人员要么需要围绕这个公式添加一个条件子句,要么使用更合适的映射公式。因此,我们的结果通过识别导致程序行为违反基本网络仿真直觉的程序规范问题,证明了机器翻译的有效性。

案例研究2:SeqMap测试

SeqMap是将大量短序列读取映射到参考基因组的有效工具[15]. SeqMap的一个重要应用是检测寡核苷酸微阵列中的杂交探针[19]. SeqMap通过解决近似字符串匹配问题来执行短序列映射,该问题定义如下:给定一个引用字符串第页和一组目标字符串T型= {t吨1,t吨2, ...,t吨 k个 }其中所有字符串都由取自字母集的有限个字符组成A类= {1,2, ..., },任务是查找中的所有子字符串第页这样,每个子字符串的编辑距离等于或小于最大不匹配数e(电子)针对每个t吨 T型编辑距离是指将一个字符串转换为另一个字符串所需的操作数。在短序列映射(SSM)中,第页是基因组和T型是我们打算映射到基因组的一组短序列读取。特别是,允许的字母集是A类={A、T、G、C},有效的编辑操作是替换、插入和删除。如果序列读取t吨 匹配基因组中的任何子串第页据说是可映射的否则,据说不可映射的.

虽然很容易验证在一个基因组位置上每个读取的映射是否具有等于或小于最大不匹配数的不匹配数,但很难检查该读取是否映射到基因组中所有可能的匹配位置。此外,还很难检查所有不可匹配的读取是否真的与基因组不可匹配。换句话说,结果的可靠性很容易验证,但结果的完整性不易验证。因此,SeqMap的测试受到了oracle问题的影响,可能会从MT中受益。

基于问题域的知识,我们确定了两个最有可能影响程序执行模式的重要变量:输入序列的内容第页T型和编辑距离约束,e(电子)因此,我们根据这些变量的属性导出了一组MR:

1.读数的变化T型

  1. (a)

    添加不匹配项。给定一组序列读取T型= {t吨1,t吨2, ...,t吨 n个 },一个基因组第页以及最大数量的不匹配e(电子),我们绘制地图T型第页并将可映射读取集表示为T型 = { t吨 1 , t吨 2 , ... , t吨 k个 } 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabibiWaaaGcbaGaei4EaSNafmiDaqNbauadaWgaaWcbaGaeGymaedabaakiabcYcaSiqbdsha0zaafaWaaSbaaSqaaibikdaYaqabaGcqGGGgaGlcqGUaGlcqgGGGUaGLcqGGSalcuWG0baDgaqbamaaBaaaacqWGRbWAaeqaaOGaeiyFa0haaa@3C7B@ ,其中k个n个.定义子集M(M)属于T型 ,其中M(M)= {1,2, ..., q个 }和q个k个。对于任何 M(M),假设作为其中一个不匹配的数字。我们任意选择l’,因此<l’e(电子),并介绍(l’-)上的新不匹配 (表示为 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauadaWgaaWcbaGaemyAaKgabeaaaa@2ECB@ ). 然后 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauadaWgaaWcbaGaemyAaKgabeaaaa@2ECB@ 仍应可以映射到第页。此外,应至少存在一个用于 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauadaWgaaWcbaGaemyAaKgabeaaaa@2ECB@ .

  2. (b)

    消除不匹配。给定一组序列读取T型= {t吨1,t吨2, ...,t吨 n个 },一个基因组第页以及最大数量的失配e(电子),我们绘制地图T型第页并将可映射读取集表示为T型 = { t吨 1 , t吨 2 , ... , t吨 k个 } 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabibiWaaaGcbaGaei4EaSNafmiDaqNbauadaWgaaWcbaGaeGymaedabaakiabcYcaSiqbdsha0zaafaWaaSbaaSqaaibikdaYaqabaGcqGGGgaGlcqGUaGlcqgGGGUaGLcqGGSalcuWG0baDgaqbamaaBaaaacqWGRbWAaeqaaOGaeiyFa0haaa@3C7B@ ,其中k个n个.定义子集M(M)属于T型 ,其中M(M)= {1,2, ..., q个 }和q个k个。对于任何 M(M),假设作为其中一个不匹配的数字。我们任意选择l’,使得0≤l’<、和删除(-l’)上的不匹配 (表示为 数学类型@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearnWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9specI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauadaWgaaWcbaGaemyAaKgabeaaaa@2ECB@ ). 然后 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauadaWgaaWcbaGaemyAaKgabeaaaa@2ECB@ 仍应可以映射到第页。此外,应至少存在一个用于 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauadaWgaaWcbaGaemyAaKgabeaaaa@2ECB@ .

  3. (c)

    更改不匹配的类型。给定一组序列读取T型= {t吨1,t吨2, ...,t吨 n个 },一个基因组第页以及最大数量的不匹配e(电子),我们绘制地图T型第页并将可映射读取的集合表示为T型 = { t吨 1 , t吨 2 , ... , t吨 k个 } 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabibiWaaaGcbaGaei4EaSNafmiDaqNbauadaWgaaWcbaGaeGymaedabaakiabcYcaSiqbdsha0zaafaWaaSbaaSqaaibikdaYaqabaGcqGGGgaGlcqGUaGlcqgGGGUaGLcqGGSalcuWG0baDgaqbamaaBaaaacqWGRbWAaeqaaOGaeiyFa0haaa@3C7B@ ,其中k个n个.定义子集M(M)属于T型 ,其中M(M)= {1,2, ..., q个 }和q个k个。对于任何 M(M),假设作为其中一个不匹配的数字。我们任意用不同类型的不匹配替换几个不匹配 (表示为 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauaadaWgaaWcbaGaemyAKgabeaaaaaa@2ECB@ ),同时保持与相同的不匹配总数(例如,可以用删除替换替换,而不影响不匹配的数量)。然后 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauadaWgaaWcbaGaemyAaKgabeaaaa@2ECB@ 仍应可以映射到第页此外,应至少存在一个用于 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyBa0MbauadaWgaaWcbaGaemyAaKgabeaaaa@2ECB@ .

2.变更第页

  1. (a)

    读取子集的级联。给定一组序列读取T型= {t吨1,t吨2, ...,t吨 n个 }和基因组第页,我们选择序列读取的子集TS公司 T型并将此读取子集连接到第页形成新的基因组p’.映射后T型到两者第页p’独立地,以下关系应该成立:(1)所有读入T型可映射到的第页也应该可以映射到p’和(2)各读入TS公司可以映射到第页应在的部分至少有一个附加映射位置p’,对应于连接的字符串。(3)每个读入TS公司无法与匹配第页应在的部分至少映射一次p’,对应于连接的字符串。

  2. (b)

    删除 第页。给定一组序列读数T型= {t吨1,t吨2, ...,t吨 n个 }和基因组第页,我们形成了一个新的基因组p’通过删除第页.映射后T型到两者第页p’独立阅读T型无法与匹配的第页也应该不可映射到p’.

3.两者的变化第页T型

  1. (a)

    反转输入 第页 T型。给定一组序列读取T型= {t吨1,t吨2, ...,t吨 n个 }和基因组第页,我们形成一组新的序列读取T英尺= { t吨 1 , t吨 2 , ... , t吨 n个 } 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabibiWaaaGcbaGaei4EaSNafmiDaqNbauadaWgaaWcbaGaeGymaedabaakiabcYcaSiqbdsha0zaafaWaaSbaaSqaaibikdaYaqabaGccqGGgaGlcqGGGUaGlcqgGGGGUAGlcqG SaalcuWG0baqbaaaBaaaaBaaaacqWGUbGBaeqaaOGaeiyFa0haaa@3C81@ p’这样每个字符串 t吨 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmiDaqNbauadaWgaaWcbaGaemyAaKgabeaaaaa@2ED9@ 是的反向字符串t吨 对于1≤n个、和p’是的反向字符串第页.字符串s’是的反向字符串如果的第一个字符s’是的最后一个字符和的第二个字符s’是的倒数第二个字符等等。我们绘制地图T型第页并独立绘制地图T英尺p’.应保持以下关系:(1)t吨 可映射到第页当且仅当 t吨 数学类型@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearnWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9specI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmiDaqNbauadaWgaaWcbaGaemyAaKgabeaaaaa@2ED9@ 可映射到p’对于1≤n个、和(2)t吨 无法映射到第页当且仅当 t吨 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmiDaqNbauadaWgaaWcbaGaemyAaKgabeaaaaa@2ED9@ 无法映射到p’对于1≤n个.

  2. (b)

    字母的排列。给定一组序列读取T型= {t吨1,t吨2, ...,t吨 n个 },一个基因组第页,以及字母集上的一对一置换函数,Permute公司。对于任何字符串,Permute公司()用于表示置换后的字符串。我们定义了一组新的序列读取T英尺= { t吨 1 , t吨 2 , ... , t吨 n个 } 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabibiWaaaGcbaGaei4EaSNafmiDaqNbauadaWgaaWcbaGaeGymaedabaakiabcYcaSiqbdsha0zaafaWaaSbaaSqaaibikdaYaqabaGccqGGgaGlcqGGGUaGlcqgGGGGUAGlcqG SaalcuWG0baqbaaaBaaaaBaaaacqWGUbGBaeqaaOGaeiyFa0haaa@3C81@ p’这样的话 t吨 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmiDaqNbauadaWgaaWcbaGaemyAaKgabeaaaaa@2ED9@ =静音(t吨 )对于所有1≤n个、和p’=Permute公司(第页). 我们绘制地图T型第页并独立绘制地图T英尺p’以下关系应成立:(1)t吨 可映射到第页当且仅当 t吨 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmiDaqNbauadaWgaaWcbaGaemyAaKgabeaaaaa@2ED9@ 可映射到p’对于1≤n个、和(2)t吨 无法映射到第页当且仅当 t吨 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmiDaqNbauadaWgaaWcbaGaemyAaKgabeaaaaa@2ED9@ 无法映射到p’对于1≤n个.

4.最大不匹配数的变化(e(电子))

  1. (a)

    减少 e(电子)。给定一组序列读取T型= {t吨1,t吨2, ...,t吨 n个 },一个基因组第页,以及最大不匹配数e(电子),我们创建了一个新的e’使0≤e’<e(电子).我们绘制地图T型第页带参数e(电子)并将可映射读取集表示为M(M).我们独立绘制地图T型第页带参数e’并将可映射读取的集合表示为M’。应保持以下关系:M’ M(M).

  2. (b)

    增加 e(电子)。给定一组序列读取T型= {t吨1,t吨2, ...,t吨 n个 },一个基因组第页,以及最大不匹配数e(电子),我们创建了一个新的e’使0≤e(电子)<e’.我们绘制地图T型第页带参数e(电子)并将可映射读取集表示为M(M).我们独立绘制地图T型第页带参数e’并将可映射读取集表示为M’。应保持以下关系:M(M) M’.

使用机器翻译,我们用五批测试用例测试了SeqMap(版本1.0.8)。对于每个批次,我们随机生成一个源测试用例,根据每个MR构建一个后续测试用例。根据这些MR检查执行结果,我们没有观察到任何违反情况。

GNLab和SeqMap的突变分析

为了更好地证明机器翻译的适用性,我们生成了一些GNLab和SeqMap的故障导向变体,并测量机器翻译程序检测它们的能力。此过程称为突变分析[20,21]. 带有种子错误的程序称为突变体所有突变体都是通过应用一些非常简单的变异算子以更改原始程序的源代码。先前的研究表明,尽管这些突变算子很简单,但从生成的突变中检测失败的能力是测试方法有效性的良好指标[20]. 应该注意的是,如果一个变异体为测试功能的所有可能输入产生与原始程序相同的输出,那么这种变异体称为相等的到原始程序。使用无偏随机突变体生成策略(如方法部分),我们最初为GNLab生成了25个突变体,为SeqMap生成了20个突变体。由于我们只专注于测试GNLab和SeqMap的某些功能(分别是确定性网络模拟和近似序列匹配),因此源代码中的许多自动变异语句并不影响目标功能,因此许多变异都是等效的变异。因此,GNLab有9个非等效突变体,SeqMap有3个非等效突变。尽管适用(非等效)突变体的数量并不多,但我们在这里获得的结果足以证明机器翻译在生物信息学中的适用性。

GNLab的九个非等效变异体(用GM1、GM2、…和GM9表示)通过原始GNLab程序测试中使用的三批测试用例进行测试。结果如表所示1我们观察到所有突变体都侵犯了至少一个MR。值得注意的是,不同的MR可以有效地揭示不同突变体的错误。此外,不同的MR具有不同的故障检测能力。与MR 1(a)、1(b)、3(a)和3(b)相关的测试用例无法检测到任何故障。换言之,与GNLab网络中节点修改相关的所有MR都不如其他类型的MR有效。三个批次的MR违反率(违反MR的源和后续测试用例对的比例)为:0.267(R)、0.3(Y)和0.278(E)。此外,对于给定的突变体,单个批次的测试用例可能不会违反所有可能的MR。例如,只有批次E可以揭示GM4中MR5(a)和(b)的违反,只有批次Y可以揭示GM7中MR2(a)的违反。这表明了在进行测试时使用各种测试用例的重要性。

SeqMap的三个非等效突变体(表示为SM8、SM11和SM18)由测试原始SeqMaps程序时使用的相同五批测试用例进行测试。结果(如表所示2)表明我们的测试用例可以有效地检测所有三个变体中的故障。与GNLab的测试类似,我们观察到在用不同的测试用例测试相同的突变时,违反了不同的MR集。此外,我们注意到,对于每个突变体,至少有一个MR被测试案例所违反。

表2使用MT测试SeqMap的结果

讨论

变形测试在生物信息学中的适用性

机器翻译是一种缓解预言机问题的通用技术

我们在案例研究中使用的程序属于两种类型的生物信息学程序,由于缺乏有形的预言,这些程序传统上很难测试。例如,当前测试网络模拟器的方法涉及对模拟值的目视检查以及模拟器多个实现之间的比较[7]. 因此,它试图通过使用多种实现来解决oracle问题。这样的多个实现在实践中通常很难获得,并且当不同的实现产生不同的结果时,这种测试的结果可能很难解释。我们缓解oracle问题的方法是通过验证多个测试用例之间的关系。正如我们两个案例研究以及许多以前的研究所证明的那样[5,6,11,22],机器翻译对于测试由于甲骨文问题而传统上难以测试的程序是有效的。这使得机器翻译可以用于测试存在预言机问题的各种生物信息学程序。

机器翻译可以根据程序的预期行为测试程序

对于任何程序,MR都可以从预期的程序行为或程序规范中导出。如我们的案例研究所示,所有MR都基于预期的程序行为(即,从网络动力学和近似字符串匹配的领域知识),并且它们没有利用实现的细节(例如,底层算法和数据结构)。基于从GRN模拟器的预期行为导出的十个MR,我们在GNLab中发现了一个故障。如中所述结果第节,此错误是由于算法的指定错误,而不是实现中的错误。这意味着,如果测试用例仅来自规范,则可能没有检测到该故障。我们相信,这种针对计划行为测试程序的能力在生物信息学中非常重要,因为它使我们能够将测试工作集中于评估潜在的生物问题是否得到了正确解决。当然,我们也可以很容易地从程序规范中导出MR。

MT可以与特殊测试用例结合使用

应该强调的是,机器翻译是一种通用的测试技术,适用于没有有形预言的情况。它可以用于根据现有的测试用例集生成大量测试用例。例如,我们可以使用预定义的不匹配模式轻松构建一些人工短序列读取,以测试SeqMap。这种特殊的测试用例是有用的,应该尽可能地使用。然而,特殊的测试用例只覆盖了所有可能输入的一小部分,我们仍然需要更多的测试用例,其测试结果不容易验证。一种简单的方法是将机器翻译技术与特殊测试用例相结合。这可以通过使用每个特殊测试用例作为源测试用例来实现,以基于一些MR生成后续测试用例。这种方法已被证明在检测非常见故障方面非常有效[5].

机器翻译简单且自动化

正如两个案例研究所证明的那样,机器翻译的过程是简单的。目标程序的不同行为子集可以通过使用不同的MR进行测试。一旦识别出MR,就可以轻松地自动生成测试用例,并且可以使用简单的脚本验证其输出。单个程序可以有大量MR,并且可以基于单个源测试用例定义各种后续测试用例。此外,机器翻译的简单性允许我们使用简单的测试脚本执行系统自动化测试。使用简单的测试脚本对于最大限度地减少将错误引入测试脚本本身的可能性非常重要,这可能会导致测试结果的解释混乱。

机器翻译允许使用实际输入作为测试用例

自动生成更多测试用例的能力的一个含义是,我们现在可以使用真实的程序输入作为测试输入。在机器翻译框架中,很容易将实际输入视为源测试用例,并使用一组MR生成许多后续测试用例。对于缺乏有形预言的程序,测试用例通常仅限于那些易于构建和验证的程序。此类测试用例可能与实际程序输入的大小和特征不同。例如,由于我们没有客观的方法来验证大量的仿真结果,因此对大多数网络模拟器来说,通常无法测试实际输入。使用机器翻译,通过对一组MR而不是oracle测试输出,可以缓解这种困难。在我们的GNLab案例研究中,我们可以基于两个实际的GRN构建测试用例,这两个GRN比随机生成的GRN要大得多且复杂得多。许多生物信息学程序处理高通量数据,因此测试它们是否能够正确处理此类真实输入的能力非常重要。

MT适合生物信息学程序员

与许多其他测试技术相比,机器翻译在实践中更容易实现,因为它主要依赖于用户领域知识,而不是软件测试知识。许多生物信息学程序是由最终用户开发的,即使用该程序的研究人员或研究小组。. [13]已经证明机器翻译特别适合于测试最终用户程序员自己的程序,因为(1)“最终用户程序员具有识别MR的领域知识”和(2)“终端用户程序员可以根据程序结构区分好的MR”[13]. 在GNLab示例中,我们只识别并使用了一些与输入网络结构相关的MR,因为我们的领域知识指出,更改网络结构应该会导致模拟器执行过程中的最大变化。MR未涵盖与仿真执行相关的其他属性,如仿真长度和输出间隔。机器翻译的这一功能使测试人员能够将大部分测试工作集中在更重要或更常用的功能子集上。

机器翻译对于测试不同类型的程序很有用

虽然我们案例研究中使用的两个程序都实现了确定性程序,但一些初步结果表明,机器翻译也可以用于测试其他类型的传统上难以测试的程序,如启发式方法、机器学习方法、随机方法等[23,24]. 由于许多生物信息学程序都实施了这种程序,我们希望机器翻译能够适用于这些程序。

限制

应该注意的是,基于一组MR满足所有测试用例并不能保证测试程序的正确性。MR是必要的属性,因此满足所有这些属性并不足以保证程序的正确性。事实上,这个问题是所有软件测试方法的局限。尽管如此,系统地生成大量测试用例的能力应该会增加我们在目标程序中检测故障的机会,从而提高其质量。

由于本文重点介绍机器翻译在生物信息学中的应用,因此这里还没有明确讨论与机器翻译相关的其他问题。首先,机器翻译的成功在很大程度上取决于定义一组“好”的MR。从GNLab和SeqMap的测试结果来看,我们发现一些MR在检测故障方面不如其他MR有效。特别是,我们注意到,所有基于从网络中添加和删除节点的MR在检测GNLab的容错变体中的故障时都是无效的。到目前为止,在本文中,我们还没有明确解决选择有效MR的问题。一些初步结果表明,触发源和后续案例不同执行路径的MR更有可能揭示错误[25]. 这意味着,尽管推导MR通常很简单,但选择最有效的MR需要对问题域有很好的理解。目前正在积极研究选择核磁共振的更具体指导方针。其次,机器翻译技术本身并没有规定在给定一组MR的情况下如何选择源测试用例。在我们的研究中,我们使用了随机生成的输入和实际输入来生成源测试案例。然而,如我们的案例研究所示,机器翻译的性能还取决于源测试用例的数量和种类。我们希望机器翻译可以与其他已建立的测试用例选择技术相结合,以提高故障排除能力。

生物信息学的更多示例

除了用于网络模拟和短序列映射的程序外,我们注意到许多其他生物信息学程序也可以从中受益。在这里,我们简要讨论了来自几个重要生物信息学领域的程序测试如何受到预言问题的影响,以及在每种情况下如何使用机器翻译技术。这里提供的应用程序列表绝非详尽无遗。这里只指出了非常简单的MR,因为我们没有讨论任何特定的详细问题描述。一般来说,更复杂且可能更容易揭示故障的MR可以基于对问题域或程序规范的更透彻理解来制定[25].

系统发育学

系统发育学中的一项主要工作是根据核苷酸或氨基酸序列来推断某些物种的系统发育(系统发育树)[26]. 系统发育推断有三种主要方法:(1)简约方法,(2)基于距离的方法,(3)基于模型的方法。广义地说,所有方法的目的都是根据序列相关性的不同度量将这些物种分组为二叉树。我们通常分析大量的长生物序列。此外,这些方法中有许多涉及计算距离矩阵或计算最大似然估计,除了琐碎的输入外,这些估计很难验证。因此,系统发育推断程序的测试存在预言问题。

让我们将执行系统发育推断的程序表示为P(P).的输入P(P)是一组n个对齐序列S公司= {S公司1,S公司2, ...,S公司 n个 },输出为二叉树T型(S公司). 一个可能的MR是添加一个序列,S公司n个+1,不会更改树其余部分的相对结构。也就是说,源案例生成的树T型(S公司)以及后续案例T型(S公司 S公司n个+1)只差一个额外的叶节点表示S公司n个+1。对于P(P)我们可以定义另一个MR:用另一个字母替换或排列序列中的字母(例如AC、 T型A、 克T、 C类G) 不会更改树的最终结构。那就是,T型(S公司) =T型(排列(S公司))其中Permute()是字母置换函数。

微阵列分析

微阵列分析已成为现代生物学和医学研究中不可或缺的工具。许多类型的分析可用于分析微阵列数据。它们包括差异表达(DE)[27],差异性(DV)[28],分层聚类[29],基因集富集分析[30]和贝叶斯网络分析[31]. 由于分析高维输入(微阵列表达谱)和高维输出(排序基因列表、二叉树和贝叶斯网络)的困难,实现的正确性通常难以验证。在这种情况下,MT技术可能很有用。让我们以两个样本类之间DE基因的鉴定为例。一种简单的方法是使用t吨-统计信息以获取P(P)基于双边假设的每个基因的值,并用P(P)小于预设阈值的显著DE基因。t吨-统计是独立于移位的,我们可以定义一个MR,将一个常量值添加到输入微阵列配置文件中的所有值中不会改变结果列表P(P)值。第二个MR是切换样本的类标签也不会改变结果P(P)值作为t吨-分布是对称的。

生物数据库检索

许多生物分子数据库可用,其中大多数是为了支持快速数据检索和数据库挖掘而构建的[18,3234]. 一个主要挑战是确保我们能够准确有效地从数据库中检索所需的数据项。当我们开始使用这些数据库构建大规模基因调控网络和代谢网络时,这一点尤为重要。无效的检索结果可能会导致在重建的网络中出现假阳性或假阴性边缘。由于数据库很大,通常很难测试搜索引擎是否能够正确检索到与查询完全匹配的所有数据。一个可能合适的MR是一个查询A类B类C类包含的结果不应多于查询A类B类另一个MR是执行查询(A类 B类)应具有与执行查询相同的效果(A类) ∩ (¬B类). 沿着这条路线可能会有更多的MR。

结论

在生物信息学界,与适当软件测试相关的问题在很大程度上被忽视了。正如本文所讨论的,由于预言机问题,许多生物信息学程序的系统测试很困难,也就是说,很难验证这些程序的测试结果。在本文中,我们建议应用一种创新的软件测试技术——变形测试(MT)来测试这些生物信息学程序。作为一个案例研究,我们应用机器翻译技术测试了一个网络模拟器和一个短序列映射程序。结果表明,机器翻译实现简单,能够有效地揭示程序中的错误。

我们认为,我们的工作有重大贡献。据我们所知,这是第一篇系统地讨论生物信息学程序测试中的预言问题以及如何缓解这一问题的论文。随着生物学家越来越依赖这些生物信息学项目产生的结果,确保它们具有高质量至关重要。我们希望本文能够提高生物信息学界对正确软件测试实践的认识。

方法

GNLab规范

为了模拟表达动力学,GNLab[14]使用希尔动力学将GRN建模为常微分方程(ODE)系统[35,36]. 特别是,门德斯等等.的乘法模型[37]使用。假设X( )代表基因的mRNA水平 它被基因激活 1 , 2 , ... , 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4raC0aaSbaaSqaaibdggaHnaaBaaamaaacqaXaqmaeqaaWcbeaakiabYcaSiabdEeahnaaBaaaaacqWGHbydaWgaaadbaGaeGOmaidabeaaaaSqabaGcqGGgaaGlcqGUaGlcgGGGUaGLcqGGSalcqqWGhbWgaaWgaaWCbaeqaaa2aaaBaaWqaaaBaa Wqaabqabaaaaaaaaaa@3CCC@ 被基因抑制 第页 1 , 第页 2 , ... , 第页 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4raC0aaSbaaSqaaibdkhaYnaaBaaameaacqaXaqmaeqaaaWcbeaakiabYcaSiabdEeahnaaBaaaleaacqWGYbGCdaWgaaadbaGaeGOmaidabeaaaSqabaGcqSaalcqGGUaGlcqGGuaGlcgGGUa GlcqgGGGGUa-GlcqSaallcqbWhbWdaWgaaWgaaWCbaaGaemOCai3abaWqaab2gabqaaaaaaaaa@3D32@ .常量 K(K) 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4saS0aaSbaaSqaaibdggaHnaaBaaameaacqWGPbqAaeqaaaWcbeaaaaa@2FFE@ K(K) 第页 j个 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4saS0aaSbaaSqaaibkhaYnaaBaaameaacqWGQbGAaeqaaaWcbeaaaa@3022@ 表示的表达水平 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4raC0aaSbaaSqaaibdggaHnaaBaaameaacqWGPbqAaeqaaaWcbeaaaaa@2FF6@ 第页 j个 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4raC0aaSbaaSqaaibdhaYnaaBaaameaacqWGQbGAaeqaaaWcbeaaaa@301A@ 对目标基因的影响是其饱和值的一半。希尔常数n个控制交互曲线的S形性。V(V) 代表基因的基本转录率 因此,mRNA合成的速率定律可以表述为:

n个 ( ) = V(V) = 1 ( 1 + X ( ) n个 X ( ) n个 + K(K) n个 ) j个 = 1 n个 K(K) 第页 j个 n个 X ( 第页 j个 ) n个 + K(K) 第页 j个 n个 数学类型@MTEF@5@5@+=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qaqFr0xc9vqFj0dXdba91qpei8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaaeGaciGaaiaabeqaqaqabiWaaabiWaaaGcb aGaem4CamNaemyEaKNaemOBa4MaeiikaGIaem4raC0aaSbaaSqaaabdMgaPbqabaGccqGGPaqkcqGH9aqpcqWGwbGvdaWgaaWcbaGaemyAaKgabeaakmaaraHabaGaeiikaGIaeGymaeJaey4kaScfa4aaSaaaaacqWGybawcqGGOaakcqWGhbWrdaWgaaqaiabdgaHnaaBaabaGaemyAKgabeaaaeqaaiaiabcMcaPmaCaaabeqaaiabd6gaUbaaaaaaacqWGybawcqGGOaakcqWGhbWrdaWgaaqaiabdgaHnaaBaabaGaemyAKgabeaaaeqaaiabcMcaPmaCaaabeqaaiabd6gaUbaacqGHRaWkcqWGlbWsdaqaaqaaiabdgaHnaaBaabaGaemyAKgaba eaaaeaacqWGUbGBaaaaiabcMcaPOWaaebCaKqbagadaWcaaqaaiabdUealnaaDaaabaGaemOCai3aasbaaaacqWGbGAaeqaaaqaaaiabd6gaUbaaaacqWGybawcqGGOaakcqWGhbWrdaWgaaqaaaaabdkhaYnaaBaaabaGaemaOAaOgabeaaaqaiabcMcaPmaaCaaabeqaaiaabd6ga UbaacqGHRaWkcq WGlbWsdaqaaaaqaaiabkhaYna BaaabagaemOAaOga babaaaaacq WaaaaaaaaaWcbaGaemOAaOMaeyypa0JaeGymaedabaaGaemOBa4加尼亚贝格+GivdaaleaacqWGPbqAcqGH9aqpcqaIXaqmaeaacqWGTbqBa0Gaey4dIunaaaa@76FA@
(1)

假设mRNA降解速率仅与当前表达水平呈线性关系,即:,

打破( ) =b·X( )

总的来说,基因表达水平的变化 由以下ODE建模:

d日 d日 t吨 = n个 ( ) b 第页 e(电子) k个 ( ) 数学类型@MTEF@5@5@@=feaagart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qaqFr0xc9vqFj0dXdba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabibiWaaaGcbaqcfa4aasaaaaacqWGbazcqWGhbWrdaWgaqaaaiabdMgaPbqabaababaGaemizaqMaemiDaqhaaOGaeyypa0Jaem4CamNaemyEaKNaemOBa4MaeiikaGIaem4raC0aaSbaaSbaaqaaabdMga PbqaabGccqGpaqkcqGHsislcqWGIbGycqYbGCcqLbqcqWGHbqcgRbWAcqGGOaakcqWGRbWrdawbWrda gaaWcbaGaemyAaKgabeaakiabcMcaPaaa@491E@
(3)

基于GNLab的预期行为,图被转换为ODE集合,其中图中的每个节点表示一个基因,其关联的ODE依赖于传入的边。每条边的权重转换为ODE模型中的许多动力学参数,如等式所述1和2(包括K(K),V(V),n个b). GNLab使用以下默认参数设置:V(V)= 10,b=0.01,以及n个= 4. 弧权重之间的关系w个(其中0≤|w个|≤1)和相互作用强度K(K)封装在函数中K(K)= 2000 – 1950|w个|. 所有的初始值 设置为50。这组常微分方程是用欧拉方法模拟的。

SeqMap规范

为了实现高效的短序列读取映射的目标,SeqMap[15]首先构建所有短序列读取的索引。然后对基因组进行扫描,以找到与每个位置匹配的候选短序列读取。特别是,SeqMap使用两阶段策略来加快匹配过程。在第一阶段,在给定允许的编辑距离约束的情况下,将短序列分割为多个部分。由于允许的不匹配只能发生在序列的某些部分,SeqMap可以通过鸽子洞原理快速消除一些非候选。在第二阶段,运行局部对齐算法以确定匹配目标。

GNLab和SeqMap的执行

对于GNLab,所有测试用例都是通过命令“GNLab-t input d 150 0.1 150”执行的,该命令指定网络input.gnl.txt将由一个确定性模拟器进行模拟,该模拟器具有150个输出显示,使用Euler方法,步长为0.1,并且在模拟过程中没有扰动。对于SeqMap,大多数测试用例由命令“SeqMap 3 T.fa P.fa out.txt/allow_insdel:3/output_alignment/silent/output_all_matches/output_top_matches:6”执行,该命令将文件T.fa中的短序列读取映射到文件P.fa的参考基因组,最多允许3个不匹配。对于测试MR4(a)和4(b),失配的最大数量可以改变。

突变分析

为了生成GNLab和SeqMap的变体,我们在这两个程序的源代码中应用了四个流行的突变算子:算术运算符替换(AOR)、常量替换(CR)、关系运算符替换(ROR)和标量变量替换(SVR)。为了避免任何潜在的偏差,错误查找过程不是由测试人员手动决定的,而是通过以下两个步骤随机选择的:首先,随机选择程序语句作为目标语句进行修改。然后,随机选择一个变异操作符来应用于该目标语句以生成一个变异,并约束该修改生成一个语法正确的语句。例如,语句if(x>0)可以由ROR运算符更改为if(x<0)。使用该策略,我们为GNLab生成了25个突变体,为SeqMap生成了20个突变体。在这些突变体中,有9个GNLab突变体和3个SeqMap突变体在所研究的功能方面与各自的原始程序不等价。在我们的研究中,我们只使用这些非等效突变体作为目标程序。

特别是,在GNLab和SeqMap之间,选择要变异的目标语句的过程是不同的。SeqMap源代码中的所有语句都可以被选择作为变异的目标语句,但只有完整的GNLab源代码的一部分可以被选择为变异的目标声明。这是因为GNLab是一个包含许多其他附加功能(如网络分析和随机网络模拟)的大型程序,所以我们决定排除那些与确定性模拟器无关的语句,以避免出现过多的等效变体。这种差异导致了非等效突变产生率之间的明显差异:SeqMap为3/20,GNLab为9/25。然而,正如结果第节,这组突变体足以满足我们的研究目的。

工具书类

  1. 贝克J、桑顿J:生物信息学中的软件工程挑战。《软件工程国际会议论文集》,2004年12月15日。

    第章 谷歌学者 

  2. Weston P:生物信息学软件工程:提供有效的应用程序。2004年,威利

     谷歌学者 

  3. 贝泽尔B:软件测试技术。1990年,Van Nostrand Reinhold

    谷歌学者 

  4. Ammann P,Offutt J:软件测试简介。2008年,剑桥大学出版社

     谷歌学者 

  5. Chen T,Kuo FC,Liu Y,Tang A:变形测试和特殊值测试。第五届软件工程、人工智能、网络和并行/分布式计算国际会议论文集(SNPD’04)。2004, 128-134.

    谷歌学者 

  6. 陈天勇、谢霆、周志强:无需神谕的基于错误的测试。Inform Software Tech.2003,45:1-9。

    第条 谷歌学者 

  7. Bergmann FT,Sauro HM:比较支持SBML的模拟器的仿真结果。生物信息学。2008, 24 (17): 1963-1965.

    第条 公共医学中心 中国科学院 公共医学 谷歌学者 

  8. Evans TW、Gillespie CS、Wilkinson DJ:SBML离散随机模型测试套件。生物信息学。2008, 24 (2): 285-286.

    第条 中国科学院 公共医学 谷歌学者 

  9. Knight JC,Leveson NG:对多版本编程中独立性假设的实验评估。IEEE软件工程汇刊。1986,12:96-109。

    第条 谷歌学者 

  10. Chen TY,Cheung SC,Yiu SM:变形测试:生成下一个测试用例的新方法。技术代表HKUST-CS98-01。1998年,香港科技大学计算机科学系,香港

    谷歌学者 

  11. Chen TY,Feng J,Tse TH:偏微分方程程序的变形测试:案例研究。第26届国际计算机软件和应用年会(COMPSAC 2002)会议记录。2002年,IEEE Computer Society Press,Los Alamitos,California,327-333。

    谷歌学者 

  12. Gotlieb A,Botella B:自动变形测试。第27届国际计算机软件和应用年会(COMPSAC 2003)会议记录。2003年,IEEE Computer Society Press,Los Alamitos,California,34-40。

    第章 谷歌学者 

  13. Chen TY,Kuo FC,Zhou ZQ:终端用户程序员的一种有效测试方法。《终端用户软件工程第一次研讨会论文集》,2005,1-5。

    第章 谷歌学者 

  14. Ho JWK,Charleston MA:GNLab:大规模基因网络分析的计算管道。2008, [网址:http://www.cs.usyd.edu.au/~mcharles/software/gnlab/index.html]

    谷歌学者 

  15. 姜浩,王文华:SeqMap:将大量寡核苷酸映射到基因组。生物信息学。2008, 24 (20): 2395-2396.

    第条 公共医学中心 中国科学院 公共医学 谷歌学者 

  16. Ho JWK,Charleston MA:基因调控网络进化建模。第八届系统生物学国际会议论文集。2007, 44-

    谷歌学者 

  17. Guelzim N,Bottani S,Bourgine P,KéPèS F:酵母转录调控网络的拓扑和因果结构。自然遗传学。2002, 31 (1): 60-63.

    第条 中国科学院 公共医学 谷歌学者 

  18. Salgado H、Gamma-Castro S、Peralta-Gil M、Díaz-Peredo E、Sánchez-Solano F、Santo-Zavaleta A、Martínez-Flores I、Jiménez-Jacinto V、Bonavides-Martinez C、Segura-Salazar J、Martánez-Nonio A、Collado-Vides J:RegulonDB(5.0版):大肠杆菌K-12转录调控网络、操纵子组织和生长条件。核酸研究,2006,34(数据库问题):D394-D397。

    第条 谷歌学者 

  19. Xing Y,Stoilov P,Kapur K,Han A,Jiang H,Shen S,Black DL,Wong WH:MADS:利用外显子芯片分析差异选择性剪接的一种新的改进方法。RNA。2008, 14 (8): 1470-1479.

    第条 公共医学中心 中国科学院 公共医学 谷歌学者 

  20. Andrews JH,Briand LC,Labiche Y:突变是测试实验的合适工具吗?。第27届国际软件工程会议论文集(ICSE05)。2005, 402-411.

    谷歌学者 

  21. 伍德沃德先生(Woodward MR)、海伍德(Halewood K):从弱者到强者,交易还是活着?一些突变测试问题的分析。在软件测试、验证和分析第二次研讨会的会议记录中。1988, 152-158.

    第章 谷歌学者 

  22. Chen TY,Tse TH,Zhou ZQ:半营利:基于全局符号评估和变形测试的集成方法。ACM SIGSOFT软件测试与分析国际研讨会会议记录(ISSTA 2002)。2002年,ACM出版社,纽约,191-195年。

    第章 谷歌学者 

  23. Barus AC,Chen TY,Grant D,Kuo FC,Lau MF:启发式方法的测试:贪婪算法的案例研究。第三届IFIP中欧和东欧软件工程技术会议论文集(CEE-SET 08)。2008, 267-280.

    谷歌学者 

  24. Murphy C、Kaiser G、Hu L、Wu L:变形测试中使用的机器学习应用程序的特性。在第20届软件工程和知识工程国际会议论文集(SEKE08)上。2008, 867-872.

    谷歌学者 

  25. 陈天勇,黄德华,谢霆,周志强:变质测试中有用关系选择的案例研究。第四届伊比利亚-美国软件工程和知识工程研讨会论文集(JIISIC 2004)。2004年,西班牙马德里:马德里理工大学,569-583。

    谷歌学者 

  26. Felsenstein J:推断系统发育。2004年,Sinauer Associates

    谷歌学者 

  27. Smyth GK:评估微阵列实验中差异表达的线性模型和经验贝叶斯方法。统计应用基因分子生物学。2004年3月:第3条-

    公共医学 谷歌学者 

  28. Ho JWK,Stefani M,dos Remedios CG,Charleston MA:基因表达差异性分析及其在人类疾病中的应用。生物信息学。2008年,24(13):i90-i398。

    第条 公共医学中心 中国科学院 公共医学 谷歌学者 

  29. Eisen MB、Spellman PT、Browndagger PO、Botstein D:全基因组表达模式的聚类分析和显示。美国国家科学院院刊1998,95(25):14863-14868。

    第条 公共医学中心 中国科学院 公共医学 谷歌学者 

  30. Subramanian A、Tamayo P、Mootha VK、Mukherjee S、Ebert BL、Gillette MA、Paulovich A、Pomeroy SL、Golub TR、Lander ES、Mesirov JP:基因集富集分析:解释全基因组表达谱的基于知识的方法。美国国家科学院院刊2005,102(43):15545-15550。

    第条 公共医学中心 中国科学院 公共医学 谷歌学者 

  31. Friedman N,Linial M,Nachman I,Peer D:使用贝叶斯网络分析表达数据。计算机生物学杂志。2000, 7 (3-4): 601-620.

    第条 中国科学院 公共医学 谷歌学者 

  32. Ogata H、Goto S、Sato K、Fujibuchi W、Bono H、Kanehisa M:KEGG:《京都基因和基因组百科全书》。《核酸研究》1999,27(1):29-34。

    第条 公共医学中心 中国科学院 公共医学 谷歌学者 

  33. Keseler I、Collado-Vides J、Gama-Castro S、Ingraham J、Paley S、Saulsen I、Peralta-Gil M、Karp P:EcoCyc:大肠杆菌综合数据库资源。《核酸研究》2005,33(数据库问题):D334-D337。

    谷歌学者 

  34. Salwinski L、Miller CS、Smith AJ、Pettit FK、Bowie JU、Eisenberg D:相互作用蛋白质数据库:2004年更新。核酸研究,2004,32(数据库问题):D449-D451。

    第条 谷歌学者 

  35. Hill AV:血红蛋白分子聚集对其解离曲线的可能影响。生理学杂志。1910年,第40页:iv-vii。

    谷歌学者 

  36. Hofmeyr JHS,Cornish-Bowden A:可逆希尔方程:如何将协同酶纳入代谢模型。计算应用生物科学。1997, 13 (4): 377-385.

    中国科学院 公共医学 谷歌学者 

  37. Mendes P,Sha W,Ye K:分析算法客观比较的人工基因网络。生物信息学。2003年,19补充2:ii122-ii129。

    公共医学 谷歌学者 

下载参考资料

致谢

该项目得到了澳大利亚研究委员会(ARC DP0771733)的资助。JWKH获得了澳大利亚研究生奖和NICTA研究项目奖的支持。我们感谢Michael A.Charleston博士的建设性意见,感谢Wing Hung Wong教授允许我们在研究中使用SeqMap。

作者信息

作者和附属机构

作者

通讯作者

与的通信约书亚·WK·何.

其他信息

作者的贡献

TYC和JWKH构思并启动了该项目。所有作者都对实验的总体设计和实施做出了贡献。HL、XX和JWKH进行了实验并分析了结果。JWKH和HL编写了手稿的初稿。所有作者都参与、阅读并批准了这份手稿的最终版本。

作者提交的原始图像文件

以下是作者提交的图像原始文件的链接。

图1的作者原始文件

图2的作者原始文件

权利和权限

开放式访问本文经BioMed Central Ltd.许可发布。这是一篇开放存取文章,根据知识共享署名许可条款分发(https://creativecommons.org/licenses/by/2.0)它允许在任何介质中不受限制地使用、分发和复制原始作品,前提是正确引用了原始作品。

转载和许可

关于本文

引用这篇文章

Chen,T.Y.,Ho,J.W.,Liu,H。等。使用变形测试测试生物信息学程序的创新方法。BMC生物信息学 10, 24 (2009). https://doi.org/10.1186/1471-2105-10-24

下载引文

  • 收到:

  • 认可的:

  • 出版:

  • DOI程序:https://doi.org/10.1186/1471-2105-10-24

关键词