精华内容
下载资源
问答
  • UE4GamePlay框架概述

    2021-01-10 14:44:30
    GameInstance(游戏实例) 贯穿一个游戏始终东西,不关...指是游戏玩规则,里面通常会写明游戏玩,游戏进行规则,胜负条件等等,游戏模式是和关卡绑定,一个关卡只能有一个游戏模式,但是一整个游戏可以有

    GameInstance(游戏实例)

    贯穿一个游戏始终的东西,不关关卡是否在进行,是否在等待界面,是否已经结束了,都是可以访问到GameInstance的,适合放置一些独立于关卡的信息,以及一些功能,例如,显示UI登录,UI独立于任何关卡,比如刚打开一个游戏进入主界面/登录界面,就可以把显示它的逻辑放在GameInstance里。

    GameMode (游戏模式)

    指的是游戏玩法规则,里面通常会写明游戏玩法,游戏进行的规则,胜负条件等等,游戏模式是和关卡绑定的,一个关卡只能有一个游戏模式,但是一整个游戏可以有多少GameMode。比如Moba游戏的LOL有不同的游戏模式,5V5模式拆掉水晶胜利,还有轮换模式比拼杀敌数胜利的模式,都属于不同的GameMode。

    GameState(游戏状态)

    游戏状态,通常用于记录游戏模式规定好规则之后,GameState用来记录因为GameMode所产生的信息和数据,GameMode通过和GameState绑定使用的,一个是抽象的规则,一个是因为规则产生的具体信息和数据

    Pawn(可以被控制对象)

    可以是玩家,也可以是敌人,也可以是NPC,LOL中玩家控制的英雄,敌人野怪,都是Pawn,Pawn不一定人,也不一定是活物,比如在球球大作战中,球是被玩家控制的对象,也是Pawn。框架中Pawn代表了一切具有运动形态的物体,即拥有运动形态的物体应该继承于该类。

    Character(可以被控制的人形对象)

    继承自Pawn的一种特殊Pawn,但设计为类人的,并附带有人的基础属性和特征动作,大多情况下游戏的主角(即玩家)应该继承于该类。

    PlayerState(玩家状态)

    玩家的信息和数据一般就记录在PlayerState里,也就是说玩家如果是Pawn/ Character,那玩家的信息和数据就记录在PlayerState里面,有点类似于之前GameMode和GameState的关系一样,是绑定使用的,GameState和PlayerState就像两个信息收集员,负责收集游戏中主要的信息和数据。

    Controller(控制器)

    Controller拥有一个Pawn类实例,负责控制该Pawn应有的行为。把Pawn比作木偶,Controller就是控制这个木偶的控制器,一个Controller可以持有一个Pawn,一般玩家死亡的时候先会销毁Controller持有的Pawn,然后在创建一个新的Pawn让Controller持有。通常通过Controller作为媒介来操控角色。也可以把一些不要同Pawn同时销毁的信息存放在Controller中。

    PlayController(玩家控制器)

    玩家控制器,属于游戏玩家的控制器,继承自Controller(控制器,本质上代表了人类玩家的意愿。
    官方对PlayController的描述是:您可以在 Pawn 中处理所有输入, 尤其是不太复杂的情况下。但是,如果您的需求非常复杂,比如在一个游戏客户端上的多玩家、或实时地动态修改角色的功能,那么最好 PlayerController中处理输入。在这种情况中,PlayerController决定要干什么,然后将命令(比如"开始蹲伏"、“跳跃”)发布给Pawn。

    AIController(AI控制器)

    AIController继承于Controller,拥有一个Pawn的实例,下AIController继承于Controller,拥有一个Pawn的实例,主要负责控制非玩家控制的有运动形态的物体,比如AI等等。

    HUD(屏幕二维信息显示设置选项)

    框架下HUD是一种二维的屏幕显示信息,如玩家的生命值、分数信息等会在该类中进行绘制显示。
    UE4中HUD、UMG、Slate之间的区别

    展开全文
  • 体系结构模式主要用在系统整体框架设计阶段;设计模式主要用在模块设计阶段;惯用主要用在实际编码阶段。体系结构模式又分成8种:分层、管道和过滤器、黑板、代理者、模型—视图—控制器、表示—抽象—控制、微...

     

    本书介绍了三种模式:体系结构模式、设计模式、惯用法。体系结构模式主要用在系统整体框架设计阶段;设计模式主要用在模块设计阶段;惯用法主要用在实际的编码阶段。

    体系结构模式又分成8种:分层、管道和过滤器、黑板、代理者、模型—视图—控制器、表示—抽象—控制、微核、映像。分层模式就是把系统分成多层,比如表示层、业务逻辑层等。管道和过滤器模式是将数据通过过滤器处理进行提取与目标化,然后通过管道发送给另一个对象或组件等。黑板是解决部分解或近似解的问题。代理者模式用于构建带有隔离组件的分布式软件系统,该组件通过远程服务调用进行交互。代理者组件负责协调通信。模型—视图—控制器(MVC)模式将一个交互式应用程序分为三个组件。模型包含核心功能和数据。视图向用户显示信息。控制器处理用户输入。表示—抽象—控制(PAC)模式以合作agent的层次形式定义了交互式软件系统的一种结构。每个agent负责应用程序功能的单一特定方面,并且由表示、抽象和控制三个组件构成。微核模式把最小功能内核同扩展功能和特定客户部分分离开来,像这种内核的功能一般是很少变更,经常变更的是特定客户需求部分,这样就很容易处理需求经常性变更的问题。映像模式为动态地改变软件系统的结构和行为提供了一种机制。它支持诸如类型结构和函数调用机制等基本方面的修改。将结构、行为、程序逻辑分离,支持动态的增加/删除结构和行为。

    设计模式又分成8种:整体—部分、主控—从属、代理、命令处理器、视图处理程序、转发器—接收器、客户机—分配器—服务器、出版者—订阅者。

    惯用法是特定程序设计语言中的的低层模式。惯用法描述如何使用给定语言的特征来实现组件的特殊方面或它们之间的关系。一个惯用法有助于用常用的程序设计语言解决经常遇到的问题,如内存管理、对象创建、方法命名、为了易读性而进行的源代码格式化、特定库构件的有效使用等。解决这类问题的方法有:阅读有经验程序员写的源代码;理解程序设计中设计人员使用的模式;代码风格;计数指针等。

           本书中列出了多种模式的模版,不过我推荐大家看看代理者模式的例子,以城市信息系统(CIS)介绍了代理者模式。通过这个例子就知道COBRA(公共对象请求代理系统结构)、IBM SOM/DSOM、微软OLE/COM/DCOM等分布式系统是怎么构成的。当然不是只使用了一个代理者模式,而是多个模式的灵活运用。

     

     

    一、模式的构成

    每个模式由三个基础部分图式组成:语境、问题、解决方案。

    语境:问题出现的场景。

    问题:在那个语境中出现的再现问题。

    解决方案:已被证实的问题的解决方案。

    模式全体提供了一个“智力工具箱”来帮助你构造满足应用程序的功能需求和非功能需求的软件。

    二、模式的分类

    模式类型

    含义

    关注点

    软件开发活动

    体系结构模式

    表示软件系统的基本结构化组织图式。它提供了一套预定义的子系统,规定它们的职责,并包含用于组织它们之间关系的规则和指南。

    系统的总体结构

    大规模的模式

     

    大粒度设计

     

     

    设计模式

    提供了一个用于细化软件系统的饿子系统或组件,或它们之间关系的图式。它描述通信组件的公共再现结构,通信组件可以解决特定语境中的一个一般设计问题。

    软件体系结构的子系统,以及它们之间的关系。

    中等规模的模式

    整个设计阶段

     

    惯用法

    具体针对一种编程语言的低层模式。惯用法描述如何使用给定语言的特征来实现组件的特殊方面或它们之间的关系。

    关注设计和实现方面

    最低层模式

    实现阶段

     

    三、描述模式的模版

    四、体系结构模式

    体系结构模式描述了软件系统的基本结构化组织方案。它提供了一套预定义的子系统,规定它们的职责,并包含用于组织它们之间关系的规则和指南。

    8种体系结构模式:层、管道和过滤器、黑板、代理者、模型—视图—控制器、表示—抽象—控制、微核、映像。

    把上8种体系结构模式分成四类:

         从混沌到结构。支持把整个系统任务以受控的方式分解成可协作的子任务。这一类包括层模式、管道和过滤器模式以及黑板模式。

         分布式系统。这类包含一种模式,即代理者模式,并涉及到其他种类中的两个模式,即微核模式、管道和过滤器模式。代理者模式为分布式应用提供了一个完整的基础结构。它的基础体系结构很快被对象管理组(OMG)所标准化。

         交互式系统。该类由两种模式构成,即模型—视图—控制器模式和表示—抽象—控制模式。这两个模式都支持具有人机交互的软件系统的构建。

         适应性系统。映像模式和微核模式强有力地支持应用的扩展以及它们对进化技术和变更功能需求的适应性。

    绝大多数软件体系结构不能仅依据一个系统结构模式来构建。它们必须支持几种用不同系统结构模式来说明的系统需求。

    1、  从混沌到结构

    与该类别相关的三种体系结构模式:层、管道和过滤器以及黑板,它们提供不同类型的高层系统划分。

    层模式有助于构建这样的应用:它能被分解成子任务组,其中每个子任务处于一个特定的抽象层次上。

    管道和过滤器模式为处理数据流的系统提供了一种结构。每个处理步骤封装在一个过滤器组件中。数据通过相邻过滤器之间的管道传输。重组过滤器可以建立相关系统族。

    黑板模式对于无确定性求解策略的问题比较有用。在黑板模式中有几个专用子系统收集其知识以建立一个可能的部分解或近似解。

    详细模式应用介绍:以网络分层的例子介绍了层模式;以编译器软件的例子介绍了管道和过滤器模式;以语音识别软件的例子介绍了黑板模式。具体参考书中18~55页的内容。

    2、  分布式系统

    分布式系统的优势有经济性、性能与可扩展性、固有分布性、可靠性(在大多数情况下,网络上的一台机器或多处理器系统中的一个CPU的崩溃不会影响到系统的其余部分。中心节点(文件服务器)是明显的例外,但可以采用备份系统来保护)。但是分布式系统有一个显著的缺点:分布式系统与集中式系统相比需要完全不同的软件。

    与该类别相关的三种体系结构模式:

    管道和过滤器模式为处理数据流的系统提供了一种结构。每个处理步骤封装在一个过滤器组件中。数据通过相邻过滤器之间的管道传输。重组过滤器可以建立相关系统族。这种模式与分布相比,更经常用于构建一个应用程序的功能内核。

    微核模式应用于必须能够适应变更系统需求的软件系统。这种模式把最小功能内核同扩展功能和特定客户部分分离开来。微核也可作为插入到这些扩展中和协调其协作的套接字。

    代理者模式可以用于构建带有隔离组件的分布式软件系统,该组件通过远程服务调用进行交互。代理者组件负责协调通信,诸如转发请求以及传送结果和异常。

    代理者系统提供了两种核心技术集成的途径:分布技术和对象技术。本书以城市信息系统(CIS)介绍了代理者模式,详细具体参考书中P55-69

    代理者模式已有的应用有COBRA(公共对象请求代理系统结构)、IBM SOM/DSOM、微软OLE/COM/DCOM、万维网(WWW)、ATM-P(西门子公司建立基于ATM(异步传输方式)的电信交换系统)。

     

    3、  交互式系统

    交互式系统的内核基于系统功能需求,通常保持稳定。然而,用户接口常常要经受变化和改建。这就需要能支持用户接口改建而特定应用程序或低层软件的数据模型不产生重要影响的系统结构。这里提供两种模式,它们能够为交互式系统提供一个基本的结构化组织:

    模型—视图—控制器(MVC)体系结构模式将一个交互式应用程序分为三个组件。模型包含核心功能和数据。视图向用户显示信息。控制器处理用户输入。视图和控制器共同构成了用户接口。变更—传播机制确保了用户接口和模型之间的一致性。

    表示—抽象—控制(PAC)体系结构模式以合作agent的层次形式定义了交互式软件系统的一种结构。每个agent负责应用程序功能的单一特定方面,并且由表示、抽象和控制三个组件构成。这种细分将agent的人机交互部分与其功能内核和它与其他agent的通信分隔开来。

     

    4、  适应性系统

    系统随着时间演化——添加新的功能和更改现有的服务。它们必须支持新版本的操作系统、用户接口平台或第三方组件。适应新的标准或硬件平台也是必要的。应对变化的设计成为我们在描述一个软件系统的体系结构时应该主要考虑的方面。这里提出了两种模式:

    微核模式应用于必须能够适应变更系统需求的软件系统。这种模式把最小功能核心同扩展功能和特定客户部分分离开来。微核也可作为插入到这些扩展中并协调其协作的套接字。微核模式提供了一个“即插即用”的软件环境,使得你容易地连接扩展部分并把它们同系统的核心服务集成在一起。

           映像模式为动态地改变软件系统的结构和行为提供了一种机制。它支持诸如类型结构和函数调用机制等基本方面的修改。在这种模式中,一个应用程序可分成两部分。一个元层次提供所选系统属性的相关信息并使软件含自述信息。一个基本层次包括应用程序逻辑。它的实现建立在元层次之上。改变保存在元层次上的信息会影响其后的基本层次上的行为。

     

    五、设计模式

    八种设计模式:整体—部分、主控—从属、代理、命令处理器、视图处理程序、转发器—接收器、客户机—分配器—服务器、出版者—订阅者。

    设计模式分类:

         结构化分解。此类别包含的模式支持将子系统和复杂组件适当地分解成相互合作的部分。

    整体—部分模式是我们在此类别中能体会到的最普遍的模式。它被广泛应用于构造复杂组件。

         工作的组织。此类别包含的模式定义了组件之间如何协作来共同解决复杂问题。我们描述的主控—从属模式有助于构成服务所需的容错或计算精度的计算。它同时支持将服务分解成相互对立的部分并能并行执行。

         访问控制。这种模式保护和控制对服务或组件的访问。这里描述的代理模式允许客户机与组件的代表通信而不是与组件本身通信。

         管理。次类别包含的模式将同类对象集、同类服务集、同类组件集视为一个整理来处理。我们描述两种模式:命令处理器模式处理用户命令的管理和协议,而视图处理程序模式描述在一个软件系统中如何管理视图。

         通信。次类别中的模式有助于构成组件间的通信。有两种模式用于出来进程间通信问题:转发器—接收器模式处理对等通信,客户机—分配器—服务器模式描述在一个客户机—服务器结构中的位置透明通信。

    出版者—订阅者模式有助于合作组件之间保持数据一致性任务。为了达到这一点,它能实现单向更改传播:一个出版者通知任意数目的订阅者有关对于其状态的更改。

     

    六、惯用法

    惯用法是特定程序设计语言中的的低层模式。惯用法描述如何使用给定语言的特征来实现组件的特殊方面或它们之间的关系。

    一个惯用法有助于用常用的程序设计语言解决经常遇到的问题,如内存管理、对象创建、方法命名、为了易读性而进行的源代码格式化、特定库构件的有效使用等。解决这类问题的方法有:阅读有经验程序员写的源代码;理解程序设计中设计人员使用的模式;代码风格;计数指针等。

    计数指针惯用法使C++中的动态分配共享对象的内存管理更为容易。它引入了实体类的一个引用计数器,其中的计数器由句柄对象更新。客户机只有凭借句柄通过重载operator->()来访问实体类对象。

     

     

    七、本书模式与设计模式

    展开全文
  • 由于J2EE开源的框架中提供了MVC模式实现框架Struts、对象关系模型中Hibernate 的框架及拥有事务管理和依赖注入Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 开发工具。 为了增加系统...
  • 需求:横切逻辑代码是打印⽇志,希望把打印⽇志的逻辑织⼊到⽬标⽅法的特定位置(service层transfer ⽅法) 4.1 XML 模式 Spring是模块化开发的框架,使⽤aop就引⼊aop的jar <!--spring aop的jar包支持...

    4 SpringAOP实现

    需求:横切逻辑代码是打印⽇志,希望把打印⽇志的逻辑织⼊到⽬标⽅法的特定位置(servicetransfer
    ⽅法)

    4.1 XML 模式

    Spring是模块化开发的框架,使⽤aop就引⼊aopjar
     
    <!--spring aop的jar包支持-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.1.12.RELEASE</version>
    </dependency>
    
    <!--第三方的aop框架aspectj的jar-->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.13</version>
    </dependency>
    

    创建横切逻辑代码

    package com.lagou.edu.utils;
    
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.*;
    import org.springframework.stereotype.Component;
    
    
    public class LogUtils {
    
    
        /**
         * 业务逻辑开始之前执行
         */
      
        public void beforeMethod(JoinPoint joinPoint) {
          
            System.out.println("业务逻辑开始执行之前执行.......");
        }
    
    
        /**
         * 业务逻辑结束时执行(无论异常与否)
         */
      
        public void afterMethod() {
            System.out.println("业务逻辑结束时执行,无论异常与否都执行.......");
        }
    
    
        /**
         * 异常时时执行
         */ 
        public void exceptionMethod() {
            System.out.println("异常时执行.......");
        }
    
    
        /**
         * 业务逻辑正常时执行
         */
        public void successMethod(Object retVal) {
            System.out.println("业务逻辑正常时执行.......");
        }
    
    }
    
    <!--进行aop相关的xml配置,配置aop的过程其实就是把aop相关术语落地-->
    <!--横切逻辑bean-->
    <!--<bean id="logUtils" class="com.lagou.edu.utils.LogUtils"></bean>
    &lt;!&ndash;使用config标签表明开始aop配置,在内部配置切面aspect&ndash;&gt;
    
    &lt;!&ndash;aspect   =    切入点(锁定方法) + 方位点(锁定方法中的特殊时机)+ 横切逻辑 &ndash;&gt;
    <aop:config>
        <aop:aspect id="logAspect" ref="logUtils">
    
            &lt;!&ndash;切入点锁定我们感兴趣的方法,使用aspectj语法表达式&ndash;&gt;
            &lt;!&ndash;<aop:pointcut id="pt1" expression="execution(* *..*.*(..))"/>&ndash;&gt;
            <aop:pointcut id="pt1" expression="execution(* com.lagou.edu.service.impl.TransferServiceImpl.*(..))"/>
    
    
            &lt;!&ndash;方位信息,pointcut-ref关联切入点&ndash;&gt;
            &lt;!&ndash;aop:before前置通知/增强&ndash;&gt;
            <aop:before method="beforeMethod" pointcut-ref="pt1"/>
       </aop:aspect>

    测试:

    /**
     * 测试xml aop
     */
    @Test
    public void testXmlAop() throws Exception {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        TransferService transferService = applicationContext.getBean(TransferService.class);
        transferService.transfer("6029621011000","6029621011001",100);
    }
    

     结果:

    获取一些参数,能够获取方法传入的参数
    public void beforeMethod(JoinPoint joinPoint) {
        Object[] args = joinPoint.getArgs();
        for (int i = 0; i < args.length; i++) {
            Object arg = args[i];
            System.out.println(arg);
        }
        System.out.println("业务逻辑开始执行之前执行.......");
    }

    加入环绕通知

    /**
     * 环绕通知
     *
     */
    /*@Around("pt1()")*/
    public Object arroundMethod(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        System.out.println("环绕通知中的beforemethod....");
    
        Object result = null;
        try{
            // 控制原有业务逻辑是否执行
            // result = proceedingJoinPoint.proceed(proceedingJoinPoint.getArgs());
        }catch(Exception e) {
            System.out.println("环绕通知中的exceptionmethod....");
        }finally {
            System.out.println("环绕通知中的after method....");
        }
    
        return result;
    }

    展开全文
  • 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共 通方法 数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方 等 图片操作工具类...
  • 14.5 基于UML表示技术对象设计技术重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用UML交互图表示 15.4 顺序图基本表示...
  • 14.5 基于UML表示技术对象设计技术重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用UML交互图表示 15.4 顺序图基本表示...
  • 14.5 基于UML表示技术对象设计技术重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用UML交互图表示 15.4 顺序图基本表示...
  • 14.5 基于UML表示技术对象设计技术重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用UML交互图表示 15.4 顺序图基本表示...
  • 14.5 基于UML表示技术对象设计技术重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用UML交互图表示 15.4 顺序图基本表示...
  • 14.5 基于UML表示技术对象设计技术重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用UML交互图表示 15.4 顺序图基本表示...
  • 14.5 基于UML表示技术对象设计技术重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用UML交互图表示 15.4 顺序图基本表示...
  • 14.5 基于UML表示技术对象设计技术重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用UML交互图表示 15.4 顺序图基本表示...
  • 众所周知,Struts2是以Webwork2作为基础发展出来,WebWork是一个强大基于WebMVC框架, 它构建在一个命令模式框架XWork之上。 WebWork真正优势在于它强调简洁和协作能力根本理念. 使用WebWork将有助于最小化...
  • 18.7 GRAS:职责分配中通用原则的模式 18.8 UML类图表示 18.9 专家 18.10 创建者 18.11 低耦合度 18.12 高聚合度 18.13 控制者 18.14 职责、角色扮演和CRC卡 第19章 运用对象和模式设计一个解决...
  • 深度学习识别人类昼夜节律基因

    千次阅读 2020-10-09 11:37:46
    本文使用深度神经网络(DNN)为昼夜节律基因识别构建了一个新计算框架。首先,将时间过程基因表达数据转化为分类状态数据来表示基因表达变化趋势。从学习数据集中对昼夜节律基因状态数据进行聚类后,出现了两...

    文章转自(带图):http://burningcloud.cn/article/98/index.html

    1. 摘要

    本文使用深度神经网络(DNN)为昼夜节律基因识别构建了一个新的计算框架。首先,将时间过程的基因表达数据转化为分类状态数据来表示基因表达的变化趋势。从学习数据集中对昼夜节律基因的状态数据进行聚类后,出现了两种不同的表达模式。然后利用DNN对非周期基因和周期基因的两种亚型进行区分。为了评估DNN的性能,本文使用了四种常用的机器学习方法进行比较,包括k近邻、逻辑回归、朴素贝叶斯和支持向量机。结果表明,DNN模型的percision和recall达到了最佳平衡。

    2. 介绍

    昼夜节律以24小时周期的方式控制着一系列重要的生物行为,在包括人类、动物、植物和原核生物在内的许多生物体内都观察到了昼夜节律。

    目前用于检测昼夜节律基因的算法大致可分为两类:谱分析和正弦拟合。光谱分析方法更适合于采样频率较高的数据集,并且只能用于均匀间隔的数据。正弦波拟合方法通过线性回归,比较每个文本与用户预先定义的正弦波曲线之间的相关性。

    本文使用深度神经网络(DNN)为昼夜节律基因识别构建了一个新的计算框架。首先,将时间过程的基因表达数据转化为分类状态数据来表示基因表达的变化趋势。从学习数据集中对昼夜节律基因的状态数据进行聚类后,出现了两种不同的表达模式。然后利用DNN对非周期基因和周期基因的两种亚型进行区分。

    3.方法

    3.1 方法介绍

    得益于深度学习算法,DNN模型可以捕捉到原始的表达模式,而不需要考虑不均匀的采样问题和正弦表达分布的关键假设。一般来说,深度学习方法需要学习数据来生成数据表示。然而,由于ground truth标签的缺失,作者手工确认了2000个基因的表达模式,并创建了一个高质量的周期性/非周期性标签子集,包括270个周期基因和1730个非周期基因。接下来,为了发现生成的昼夜节律基因的不同表达模式,首先将原始表达数据转换为(−1,0,1)来表示基因表达变化的:减少、稳定和增加的状态,然后使用转换后的数据进行heatmap聚类。得到了两个不同的簇。完成基准过程后,基于时间-过程表达数据构建DNN模型,将具有两种不同亚型的周期性表达基因与非周期性基因区分开来。

    3.2 网路结构

    具有三层以上(包括输入和输出)的神经网络可视为“深度”神经网络。在DNN中,每一层节点根据前一层的输出训练一组不同的特征,后一层可以识别更复杂的特征,因为前一层节点具有聚集和重组的能力。为了将信号分为周期性(包括第1类和第2类)或非周期性,本文训练了一个多类DNN,它可以使用Tensorflow自动执行特征工程。对于每个基因,DNN的输入是所有24个受试者的时间序列表达谱,输出是该基因的特定类别(0、1或2)。本文尝试了许多超参数,特别是隐藏层的数量,直到没有显著的改进。发现具有10个大小为100个节点的隐藏层的DNN结构具有更好的性能。采用整流线性单元(ReLU)作为激活函数。使用基于Adam gradient的优化器将学习率设置为0.0001。为了避免过拟合问题,本文还采用了dropout策略。具体来说,在训练过程中,DNN随机减少了5%的单元及其连接。该策略减少了过度拟合,并在其他正则化方法的基础上进行了改进。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b70uiKIq-1602214622361)(1.png)]

    图1。基于转化状态数据的270个昼夜节律基因的双侧聚类heat map。红色和青色分别表示与前一个时间点相比,增加或减少的趋势。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szZNRw5T-1602214622365)(2.png)]

    图2:三种不同的周期性/非周期性基因在人类血液中的表达模式。点和条表示每个类在各个时间点的状态数据累积和的平均值。昼夜节律基因标记为第1类和第2类,非昼夜节律基因为第0类

    3.3 结果比较

    为了评估DNN检测周期性表达基因的能力,本文还训练了四种常用的机器学习模型,即k近邻(k- nn,k = 3)、逻辑回归、朴素贝叶斯和支持向量机(SVM)。进行了十折交叉验证,并计算了ROC曲线。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5uzGCLn-1602214622368)(3.png)]

    图3:DNN昼夜节律基因分类的ROC曲线及其他四种机器学习方法。x轴和y轴分别表示假阳性率和真阳性率。每个方法的AUC(曲线下的面积)分数标示在右下角。

    3.4使用习得的DNN模型进行大规模的昼夜节律基因检测

    基于训练好的DNN模型,直接预测了剩下的16541个基因的昼夜节律基因。为了比较,使用JTK_CYCLE推导出昼夜节律基因,并采用Moller-Levet等人的研究方法。三种方法鉴定出的周期性表达基因的数量和重叠情况如图5所示。DNN模型识别出2007个昼夜节律基因,包括873个1类基因和1134个2类基因。相比之下,JTK_CYCLE和Moller-Levet等研究分别鉴定出921和1167个基因为昼夜节律。对于重叠部分,三种方法鉴定出394个基因为周期性表达基因,至少两种方法鉴定出1007个基因。对于已鉴定的孤儿基因,仅用DNN模型鉴定出1132个基因为昼夜节律基因。

    4.实验结果

    本文的分析发现,有两类昼夜节律基因具有不同的表达模式。第一类基因在褪黑素分泌后表达水平持续升高,直至次日中午(图2),说明这些基因可能在夜间起着重要的调控作用。另一方面,第2类基因以相反的方式表达,表明这些基因有一天的调节作用。为了发现这两类基因潜在的不同生物学功能,对仅用DNN模型检测到的新型昼夜节律基因进行了基因本体论和通路富集分析。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SwAG9WCt-1602214622373)(4.png)]

    从图7可以看出,第一类基因与激酶活性、磷酸化调控和液泡转运有关。所有这些活动都与免疫系统的功能有关,这已被证实为在静息期循环中重要的昼夜节律功能。这些活动往往发生在膜区,因为许多免疫功能需要在膜中发生的液泡运输,如一些免疫复合物的内吞作用。第2类的基因具有完全不同的功能——主要包括核糖体生物发生、rRNA、ncRNA、蛋白质定位和氧化还原反应。这些基因的作用所产生的细胞成分主要发生在胞浆和核糖体中。这些功能与先前的研究一致,即在白天活动的昼夜节律基因与营养和能量代谢有关。基因本体论分析还表明,发现的新的昼夜节律基因是真阳性。

    除了已知的昼夜节律功能,还发现鸟苷三磷酸酶(GTPase)超家族表现出明显的昼夜节律表达分布。如图7所示,第一类昼夜节律基因的分子功能与GTPase结合、小GTPase结合、GTPase调节活性、Ras GTPase结合等相关。虽然一些研究认为GTPases对生物钟有重要的调节作用,但很少有研究报道它们与人类血液中的昼夜节律有关。我们知道第一类基因与免疫系统的功能密切相关,所以有一个有趣的问题,即GTPases是否具有与免疫系统活动相关的重要昼夜调节作用。Johnson等人的研究认为,小的GTPases尤其是Ras超家族对免疫和炎症有显著影响。Bokoch已经报道RhoGTPases在调节免疫细胞分化的特定方面具有重要作用,和Saoudi等人证明RhoGTPases是T淋巴细胞发育的关键调控因子。此外,GTPases在细胞分裂、细胞凋亡和细胞活力等许多途径中往往起着分子开关的作用。综上所述,作者推测GTPase超家族可能为人类血液中免疫系统的生物钟提供分子开关。

    在本研究中,发现GTPase超家族经常作为许多重要生物学功能的分子开关,表现出明显的昼夜节律分布。此外,许多先前的研究认为GTPase超家族对免疫系统具有重要的调节作用,包括免疫细胞分化、T淋巴细胞发育和细胞迁移。综合这些信息,本文假设GTPase超家族可能控制人体血液中免疫系统的昼夜节律调节。未来的工作可能会深入探索昼夜节律、GTPase超家族和免疫系统的功能和调节之间的关系。

    5.结论

    免疫系统的昼夜节律调节。未来的工作可能会深入探索昼夜节律、GTPase超家族和免疫系统的功能和调节之间的关系。

    5.结论

    综上所述,深度学习方法在昼夜节律基因识别问题上取得了很好的结果,本文的研究结果和功能分析为人类血液转录组复杂的昼夜节律调控提供了新的见解。

    展开全文
  • 代码复审正确定义看代码是否在代码规范的框架内正确解决了问题 代码复审目的在于: 1.找出代码错误,比如: 1)编码错误,比如一些碰巧骗过了编译器错误 2) 不符合团队代码规范地方 2. 发现逻辑...
  • ;知识表达;2.1.2 用谓词逻辑表示知识;解;解;2.2 ?产生式表示;例;注;系统组成;系统组成;...框架frame;框架的使用;框架的引入;框架的表示方法;框架的基本形式;一种具体框架模式;2.3.2 框架的推理
  • 第 2 章 知识表达;知识表达;2.1.2 用谓词逻辑表示知识;解;解;2.2 ?产生式表示;例;注;系统组成;系统组成;...框架frame;框架的使用;框架的引入;框架的表示方法;框架的基本形式;一种具体框架模式;2
  • 人类智能活动过程主要是一个获得并运用知识过程知识是智能...主要知识表示方法 一阶谓词逻辑表示 产生式表示 框架表示 语义网络表示 脚本表示 过程表示 面向对象表示 Petri网表示 ;一什么是知识
  • 用java语言来设计一个游戏,不同于现在大型网络游戏和手机游戏,也不同于其他小型单机控制程序,它对游戏编写者对java语言特点认知、语法运用、工作模式、面向对象理解把握都提出了更高要求,特别是在...
  • .NET框架为C#提供了一个强大、易用逻辑结构一致程序设计环境。同时,公共语言运行时为C#程序语言提供了一个托管运行时黄精,是程序比以往更加稳定、安全。正是因为C#语言有如此多优点,因此,在系统开发...
  • 文章从民事类案监督法制土壤、民事类案界定、民事类案监督 界定以及民事类案监督目的和功能入手搭建了民事类案研究基本框架,结合司法实践中 民事类案,重点对“程度划分”和“逻辑推演”两种民事类案...
  • IframeWeb 基于框架的不刷新模式 AjaxWeb 基于AjaxWeb 2.0模式的刷新模式 AsyncAjaxSample Ajax异步调用完整示例 第2章(/C02/) 2.1.htm 3段JS使用形式 2.2.htm 不同浏览器使用...
  • 人工智能复习题 1人工智能研究的基本内容 2深度优先搜索 3思维可分为...10模式识别的方法主要有 11模糊度的直观含意 12建立隶属函数的方法 13知识的特性 1430产生式表示法的优点 15知识工程与软件工程的差异 16框架网络
  • AI:推理基础

    2020-04-27 11:40:18
    文章目录1. 承前2. 推理定义3....一阶谓词逻辑表示、产生式表示框架表示等知识表示方法可以把知识用某种模式表示出来存储到计算机中去,但是还必须使计算机具有思维能力,即可运用知识求解问题 2...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 129
精华内容 51
关键字:

逻辑框架法的模式