首页 > 其他分享 >Visual DSD语法

Visual DSD语法

时间:2024-11-14 18:29:21浏览次数:1  
标签:种群 directive Process Float 语法 Visual 指令 速率 DSD

Visual DSD语法

目录

Visual DSD | Andrew Phillips

https://wwvh.lanzn.com/imBw32f1ihod

https://ph1ll1ps.github.io/files/VisualDSDManual.pdf

词法规则

数字

单个字符,0-9

字母

A-Z,或a-z

Integer 整数

非空的数字序列

Name 名称

名称的第一个字符必须为字母下划线(_) ,接下来可以是一个可能为空的字符序列,这些字符可以是字母数字下划线撇号(‘)

String 字符串

一个可能为空的字符序列,用引号(“)括起来。如果字符串中包含引号,则必须用反斜杠(\)进行转义。

Float 浮点数

  1. 一个或多个数字后跟一个小数点(.),再跟零个或多个数字。例如:“\(3.141\)”。
  2. 一个或多个数字后跟一个大写的‘E’或小写的‘e’,再跟一个加号(+)或减号(-),再跟一个或多个数字。例如:“\(3e-5\)”。
  3. 一个或多个数字后跟一个小数点,再跟零个或多个数字,再跟一个大写的‘E’或小写的‘e’,再跟一个加号或减号,再跟一个或多个数字。例如:“\(1.4324e+2\)”。

Char 字符

一个用撇号括起来的单个字符。这个字符可以是任何字符,除了撇号或反斜杠。

注释

使用(* 开头 *)结尾

保留关键词

directive sample plot leak tau migrate lengths  def new true false int_of_float float_of_int time concentration  constant tolerance sum scale duration points toeholds

程序结构

程序分为指令(给模拟器和绘图器的指令)、声明(值、全局域和模块的声明)、进程(要运行的进程,包含物种及其初始种群)

一个程序必须包含进程,可能包含指令和声明

程序可以是这样的(就是说可以没有指令和声明,但有声明必然有指令):

Directives Declarations Process
Directives Process
Process

Directive 指令

指令是 Visual DSD 模拟器和数据绘图仪的指令。

  1. Duration 指令:告诉模拟器运行多长时间,使用浮点数表示。可以选择性地包含一个“Points”值(整数),指定在这段时间内采样物种种群的次数。如果没有提供这个值,默认情况下会在每次反应后采样,这可能会产生大量数据点。

    directive duration Float
    directive duration Float points Integer
    
  2. Sample 指令:这是另一种语法,与 Duration 指令具有相同的行为,主要是为了向后兼容。增加相同模拟时间内的数据点数量会产生更细致的结果,但显示可能会变得不太流畅。同样,如果数据点数量保持不变但模拟时间延长(或缩短),结果图将变得不那么(或更)详细。如果没有提供这些指令,默认行为是运行模拟 1000 个时间单位并采集 10,000 个物种种群样本。

    directive sample Float
    directive sample Float Integer
    
  3. Scale 指令:允许随机模拟器从摩尔浓度扩展到个体种群。浓度通过乘以一个因子进行缩放,二元反应的速率根据 Cardelli (2008) 的第 4.2 节进行修改。因此,用户不必担心在连续和离散模拟方法之间切换的细节。默认的缩放因子是 1.0。缩放因子还会修改确定性模拟器的容差参数。

  4. Concentration 指令:允许用户指定浓度的单位。当模拟器以确定性模式运行时,这个单位会显示在模拟图的 y 轴上,并且会出现在“Text”标签的摘要信息中。默认的浓度单位是纳摩尔(nM)。

    directive concentration String
    
  5. Time 指令:允许用户指定时间的单位。这将显示在模拟图的 x 轴上。默认的时间单位是秒(s)。

    directive time String
    
  6. Plot 指令:告诉系统在每个时间点采样哪些种群。如果没有提供“Plot”指令,系统将在每个时间点采样所有物种的种群。

    directive plot Plots
    

    Plots的样例

    String
    Gate
    Strand
    sum(Plots)
    sub(Plot;Plot)
    diff(Plot;Plot)
    div(Plot;Plot)
    Plots;Plots
    

    Plots 是一个用分号分隔的链和门物种列表。如果任何物种包含下划线字符 (_),则将其解释为通配符,可以匹配单个域,从而绘制多个物种。例如,模式 <_ s t> 将匹配 <u s t> 和 <v s t>,但不匹配 <u v s t>。Plot 指令也可以包含带引号的字符串——在这种情况下,是否绘制的决定基于物种名称的精确字符串匹配。这在处理局部受限域时非常有用,因为这些域会被系统自动重命名。还可以使用 sum 关键字加上括号内的物种来绘制物种种群的简单算术函数,例如多个物种种群的总和。对于给定的一对绘图物种 P1 和 P2,还可以绘制 P1 的种群减去 P2 的种群(使用 sub)、差异(使用 diff)或 P1 与 P2 的比率(使用 ‘div’)。

  7. Leak指令 设置泄漏反应的速率(默认值为 \(10^{-9} nM^{-1}s^{-1}\))

    directive leak Float
    
  8. Tau 指令 设置有限语义中的 tau 反应速率(默认值为 \(0.1126 s^{-1}\))

    directive tau Float
    
  9. Migrate 指令 设置跨单个核苷酸的分支迁移速率(默认值为 \(8000 s^{-1}\))。长度为 L 的域的分支迁移速率由 \(r/L^2\) 给出,其中 r 是指令设置的单个核苷酸迁移速率

    directive migrate Float
    
  10. Lengths指令 设置 toeholds 和长域的默认长度值。为了计算速率常数,假设所有长域具有相同的长度,该长度由 lengths 指令设置。代码 directive lengths 5 15 将 toeholds 的长度设置为 5nt,将长域的长度设置为 15nt(默认值为 toeholds 为 6nt,长域为 20nt)。提供的 toeholds 值必须大于特异性域的值,否则系统会报错。目前,分配给 toehold 域的默认长度不用于计算速率。相反,用户可以直接为每个 toehold 设置结合和解离速率。请注意,当前在计算速率常数时不使用特定的核苷酸序列。

    directive lengths Integer Integer
    
  11. Tolerance 指令 指定确定性模拟器的容差参数,这在计算成本和结果平滑度之间提供了权衡。默认值为 \(10^{-6}\)。选择反映系统中种群和反应速率的容差值至关重要,否则确定性模拟器的性能可能会受到影响。请注意,容差乘以比例因子,以尝试保持相对于物种种群的合理值

    directive tolerance Float
    
  12. Toeholds 指令 为声明时未指定显式速率的域的默认绑定和解除绑定速率(按此顺序)。默认值为 \(3.0*10^{-4} nM^{-1}s^{-1}\)(结合速率)和 \(0.1126 s^{-1}\)(解离速率)

    directive toeholds Float Float
    

Declarations声明

声明引入了新的模块定义、全局定义的域和值赋值。

  1. def 声明模块

    def Name ()= Process
    def Name ( Parameters )= Process
    

    模块只是一个参数化的过程。在这里,Parameters 代表一个非空的、用逗号分隔的名称列表,这些名称是该特定模块的参数。语法也允许模块具有空参数列表。我们将在下面描述过程。模块的名称和参数在该模块的主体内绑定,模块的名称在程序的其余部分绑定。

  2. new 声明新域

    new Name @ Value , Value
    new Name
    

    声明在全局范围内有效,即该域的名称在程序的其余部分中都有效。该域可以选择性地附加两个浮点值,分别明确表示该域的结合速率和解离速率。如果省略这些值,则使用 toeholds 指令设置的默认速率(如果程序中没有此类指令,则默认结合速率为 \(3.0*10^{-4} nM^{-1}s^{-1}\),默认解离速率为 \(0.1126 s^{-1}\))。值得注意的是,程序中使用的域并不都需要以这种方式全局声明。如果系统在程序中检测到未声明的域,则假定其具有这些默认的结合和解离速率。这种方式既能保持程序简洁,又能灵活地修改某些域的交互速率。速率值没有单位——程序员需要确保所有速率都以相同的(隐含)单位给出。解离速率在默认语义模型中使用

  3. def 赋值

    def Name = Value
    

    赋值后任何后续对该名称的使用都将引用此值,除非中间出现了同名的绑定(即 defnew 的实例)。如果在名称未先绑定到值的情况下使用该名称(除非该名称用作域,如上所述),系统将报错

Processes 进程(或者叫过程)

Visual DSD 的核心是一个专门用于模拟 DNA 交互的过程演算

先是' 进程们' Processes:

Process
Process | Processes
  1. 指定种群

    Species
    

    一个物种就是一个过程

  2. 初始化种群数目

    此处应为整数

    Value * Process
    

    如果加上了constant就说明种群数目不变

    constant Process
    constant Value * Process
    
  3. 局部域声明

    new Name @ Value , Value Process
    new Name Process
    

    new Name Process 表示在过程 Process 中声明一个名为 Name 的局部域。

  4. 组合过程

    一个过程们也可以组合作为一个过程

    ( Processes )
    
  5. 并行运行

    使用竖线隔开

    Process | Processes
    

Species 物种

Value 值

标签:种群,directive,Process,Float,语法,Visual,指令,速率,DSD
From: https://www.cnblogs.com/qbning/p/18546565

相关文章

  • VisualVM 使用说明
    VisualVM简介:一个轻量级的Java进程监控软件VisualVM安装介绍(Mac使用brew安装)➜~brewuninstallvisualvm==>UninstallingCaskvisualvm==>BackingApp'VisualVM.app'upto'/opt/homebrew/Caskroom/visualvm/2.1.10/VisualVM.app'==>RemovingAp......
  • Arduino语法详解_含示例详解
    Arduino的程序可以划分为三个主要部分:结构、变量(变量与常量)、函数。  结构部分 一、结构1.1setup()1.2loop()二、结构控制2.1if2.2if...else2.3for2.4switchcase2.5while2.6do...while2.7break2.8continue2.9return2.10goto三、扩展语法......
  • 三步解决error: Microsoft Visual C++ 14.0 or greater is required. Get it with “M
    文章目录前言一、问题描述二、报错信息三、解决步骤1.下载并安装MicrosoftVisualC++BuildTools2.配置系统环境变量3.重新运行安装指令四、安装成功总结前言本文记录了在使用AnacondaPrompt安装Python程序包时遇到的报错问题,并详细描述了如何通过安装Micros......
  • C++基础语法实现写时复制CowString
    前言: CowString写时复制设计思路难点:通过下标访问字符串元素的基本思路重载[]运算符,在函数中直接返回该位置指针的解引用,但此时返回值为char类型,对于进行单个字符串修改的操作,如:str[1]='H';,无法处理赋值时的写时复制操作,只能通过输出流运算符输出char。解决方法:可以在Cow......
  • Python语法:循环语句,掌握程序运行的节奏
    引言在当今数字化飞速发展的时代,编程已经成为一项不可或缺的技能,而Python作为一门简洁、高效且应用广泛的编程语言,备受开发者青睐。循环语句是Python编程中的基础结构之一,它在数据处理、算法实现、自动化任务等众多场景中都发挥着至关重要的作用。无论是专业的软件开发人员......
  • Visual C++ 6.0中文版安装包下载教程及win11安装教程
    本文分享的是VisualC++6.0(简称VC++6.0)中文版安装包下载及安装教程,关于win11系统下安装和使用VC++6.0使用问题解答,大家在安装使用的过程中会遇到不同的问题,如遇到解决不了的问题请给我留言!一、安装包的下载vc6.0安装包下载连接:https://pan.quark.cn/s/979dd8ba4f35二、......
  • RabbitMQ 全面解析:语法与其他消息中间件的对比分析
    1.引言在分布式系统和微服务架构中,消息中间件扮演着重要的角色。它们能够解耦服务、平衡负载、提高系统的可扩展性和可靠性。RabbitMQ是其中广受欢迎的一种。本文将从RabbitMQ的基础概念、语法介绍、以及与其他消息中间件的对比角度,全面剖析其在实际项目中的应用及优劣......
  • 大数据学习13之Scala基础语法(重点)
    1.简介        Scala是ScalableLanguage的简写,是一门多范式的编程语言。创始人为MartinOdersky马丁·奥德斯基。        Scala这个名字来源于ScalableLanguage(可伸缩的语言),它是一门基于JVM的多范式编程语言,通俗的说:Scala是一种运行在JVM上的......
  • ❤React-JSX语法认识和使用
    1、JSX基本使用​JSX是React的核心JSX是ES的扩展jsx语法->普通的JavaScript代码->babelReact可以使用JSX的前提和原因:React生态系统支持: 脚手架通常用于构建React应用程序,而JSX是React框架的核心语法之一。因此,脚手架默认支持JSX语法,以便更轻松地编写和管理React组件......
  • selenium测试的一些语法
    元素定位语法通过ID定位:使用find_element_by_id方法,传入元素的ID属性值作为参数。例如,定位一个ID为username的输入框:element=driver.find_element_by_id("username")通过名称定位:使用find_element_by_name方法,根据元素的名称属性来定位。比如定位一个名称为password......