精华内容
下载资源
问答
  • 通过脚本和snakemake实现自动化 ...一个shell脚本是一个文本文件完整shell命令,运行时就如同你在命令行交互方式运行它们。 在这里,我们将创建一个从中获取并一次运行它们全部命令。 编写shell脚本 让...

    通过脚本和snakemake实现自动化

    到目前为止,我们已经完成了所有工作,并复制并粘贴了许多命令来完成所需的操作。这可行!但是也可能很耗时,并且更容易出错。接下来,我们将向你展示如何将所有这些命令放入Shell脚本中。

    一个shell脚本是一个文本文件的完整的shell命令,运行时就如同你在命令行交互方式运行它们。

    在这里,我们将创建一个从中获取并一次运行它们全部的命令。

    编写shell脚本

    让我们将质量控制过程中的所有命令放入一个脚本中。

    我们称之为run_qc.sh。该sh在的结尾告诉你,这是一个bash脚本。

    使用nano(编辑器)编辑文件run-qc.sh,并将以下内容放在其中:

    cd ${PROJECT}
    mkdir -p quality
    cd quality
    
    ln -s ../data/*.fq.gz ./
    
    printf "I see $(ls -1 *.fq.gz | wc -l) files here.\n"
    
    fastqc *.fq.gz -t 4
    
    multiqc .
    

    现在,这是一个shell脚本,您可以使用一个命令来执行所有这些命令的去-试试跑下吧!:

    cd ~/
    bash run-qc.sh
    

    重新运行shell脚本

    假设您想重新运行脚本。你要怎么做?

    好吧,请注意,quality目录是在脚本开始创建的,所有内容都在该目录中执行。因此,要像这样删除quality目录,

    rm -fr quality
    

    然后你可以运行

    bash run-qc.sh
    

    编写Shell脚本的一些技巧

    1.使它可执行

    您可以bash通过一些magic来摆脱上面的命令部分:

    #! /bin/bash
    

    放在文件顶部,然后运行

    chmod +x ~/run-qc.sh
    

    您现在可以运行

    ./run-qc.sh
    

    代替bash run-rnaseq.sh

    您可能会想,好吧,为什么这很重要?好的,您可以对R脚本和Python脚本执行相同的操作(但是放在/usr/bin/env Rscript/usr/bin/env python放在顶部,而不是/bin/bash)。这基本上用脚本的编写语言来注释脚本,因此您不必自己了解或记住。

    所以:这不是必须的,但这是一个很好的技巧。

    您也可以始终通过指定或来强制脚本以特定语言运行。bash ``Rscript

    2.另一个很好的补充:使它很好地报错

    Shell脚本的一个怪异的方面是(默认情况下)即使有错误,它们也可以继续运行。这是不好的行为,我们应该将其关闭。

    您可以通过重新运行上面的脚本而不删除目录来观察此行为rnaseq/-该mkdir命令将打印错误,因为目录仍然存在,但是每个shell脚本的一个很好的补充就是使它在第一个错误时失败。通过放

    set -e
    

    在顶部-告诉bash在第一个错误时退出,而不是勇敢地继续前进。

    3.最后一个不错的补充:使shell脚本打印出它们正在运行的命令!

    你可能会注意到,shell脚本为您提供了它的运行命令的输出,但不告诉你的运行命令。

    如果添加

    set -x
    

    在Shell脚本的顶部,然后重新运行它,

    cd ~/
    rm -fr quality
    ./run-qc.sh
    

    然后您将看到正在运行的全部命令!

    关于shell脚本的最后说明:

    set -e并且set -x仅在shell脚本中起作用-它们是bash命令。您需要在Python和R中使用其他方法。

    Snakemake自动化!

    通过shell脚本实现自动化非常棒,但是这里存在一些问题。

    首先,您必须每次都运行整个工作流程,并且每次都要重新计算所有内容。如果您运行的工作流需要4天,并且在最后更改了命令,则必须手动进入,然后运行依赖于已更改命令的内容。

    其次,它是非常明确的,并且不是很通用。如果要在其他RNAseq数据集上运行,则必须更改许多命令。

    snakemake是帮助解决这些问题的几种工作流程系统之一。(您可以在此处阅读文档。)让我们看一下!

    首先,让我们激活我们的snakemake环境

    source deactivate
    source activate snake
    

    我们将自动化相同的脚本进行修剪,但是使用snakemake。

    rule all:
        input:
            "trim/TARA_135_SRF_5-20_rep1_1m_1.qc.fq.gz",
            "trim/TARA_135_SRF_5-20_rep1_1m_2.qc.fq.gz"
    
    rule trim_reads:
        input:
            r1="data/TARA_135_SRF_5-20_rep1_1m_1.fq.gz",
            r2="data/TARA_135_SRF_5-20_rep1_1m_2.fq.gz",
            adapters="trim/combined.fa"
        ouput:
            p1="trim/TARA_135_SRF_5-20_rep1_1m_1.qc.fq.gz",
            p2="trim/TARA_135_SRF_5-20_rep1_1m_2.qc.fq.gz",
            s1="trim/TARA_135_SRF_5-20_rep1_1m_1_s1.qc.fq.gz",
            s2="trim/TARA_135_SRF_5-20_rep1_1m_2_s2.qc.fq.gz"
        shell:'''
        trimmomatic PE {input.r1} \
                  {input.r2} \
         {output.p1} {output.s1} \
         {output.p2} {output.s2} \
         ILLUMINACLIP:{input.adapters}:2:40:15 \
         LEADING:2 TRAILING:2 \
         SLIDINGWINDOW:4:2 \
         MINLEN:25
        '''
    

    现在我们可以运行

    cd $PROJECT
    snakemake
    

    您应该看到“什么都没做”。

    那是因为修剪的文件已经存在!

    让我们修复一下:

    rm trim/TARA_135_SRF_5-20_rep1*
    

    现在,当您运行时snakemake,您应该看到正在运行Trimmomatic。是的!然后,如果snakemake再次运行,您将发现它不需要执行任何操作-所有文件都是“最新的”。

    添加环境

    在整个研讨会中,我们一直在使用conda环境。我们展示了您必须使用来在Bioconda课程中导出塔拉环境 conda env export -n tara -f $PROJECT/tara_conda_environment.yaml。我们也可以在snakemake规则中使用此环境!

    rule all:
        input:
            "trim/TARA_135_SRF_5-20_rep1_1m_1.qc.fq.gz",
            "trim/TARA_135_SRF_5-20_rep1_1m_2.qc.fq.gz"
    
    rule trim_reads:
        input:
            r1="data/TARA_135_SRF_5-20_rep1_1m_1.fq.gz",
            r2="data/TARA_135_SRF_5-20_rep1_1m_2.fq.gz",
            adapters="trim/combined.fa"
        ouput:
            p1="trim/TARA_135_SRF_5-20_rep1_1m_1.qc.fq.gz",
            p2="trim/TARA_135_SRF_5-20_rep1_1m_2.qc.fq.gz",
            s1="trim/TARA_135_SRF_5-20_rep1_1m_1_s1.qc.fq.gz",
            s2="trim/TARA_135_SRF_5-20_rep1_1m_2_s2.qc.fq.gz"
        conda: "tara_conda_environment.yaml"
        shell:'''
        trimmomatic PE {input.r1} \
                  {input.r2} \
         {output.p1} {output.s1} \
         {output.p2} {output.s2} \
         ILLUMINACLIP:{input.adapters}:2:40:15 \
         LEADING:2 TRAILING:2 \
         SLIDINGWINDOW:4:2 \
         MINLEN:25
         '''
    

    我们现在不打算在集群上运行它,因为它要求您能够下载内容,而我们不能执行此操作。但是,这是将来执行此操作的语法。

    其他资源

    今天,我们已经介绍了snakemake的一些基础知识,但是,如果您需要其他教程,可以在这里添加一个。

    展开全文
  • 命令 简介

    2020-12-15 11:55:57
    命令是一命令的集合,通过执行命令的方式,可以一次执行一批命令。 1、逐步创建一个命令 var closeDoorCommand = { execute: function () { console.log('关门') } } var oepnPcCommand = { ...

    宏命令是一组命令的集合,通过执行宏命令的方式,可以一次执行一批命令。

    1、逐步创建一个宏命令

        var closeDoorCommand = {
          execute: function () {
            console.log('关门')
          }
        }
    
        var oepnPcCommand = {
          execute: function () {
            console.log('开电脑')
          }
        }
    
        var openQQCommand = {
          execute: function() {
            console.log('登录QQ')
          }
        }

    2、定义宏命令,add方法将宏命令添加进队列,execute方法为依次执行宏命令

        var MacroCommand = function() {
          return {
            commandsList: [],
            add: function(command) {
              this.commandsList.push(command)
            },
            execute: function() {
              for (var i = 0, command; command = this.commandsList[i++];) {
                command.execute()
              }
            }
          }
        }
    
        var macroCommand = MacroCommand()
        macroCommand.add( closeDoorCommand )
        macroCommand.add( oepnPcCommand )
        macroCommand.add( openQQCommand )
    
        macroCommand.execute()

    结果展示:

    宏命令是命令模式和组合模式的联合产物。

    展开全文
  • 命令是一命令的集合,通过执行命令的方式,可以一次执行一批命令。 下面我们看看如何逐步创建一个命令。首先,我们依然要创建好各种 Command: 第一步 :定义好各种命令 var closeDoorCommand = { ...

    宏命令是一组命令的集合,通过执行宏命令的方式,可以一次执行一批命令。

    下面我们看看如何逐步创建一个宏命令。首先,我们依然要创建好各种 Command:
    在这里插入图片描述
    第一步 :定义好各种命令

    var closeDoorCommand = { 
         execute: function(){ 
             console.log( '关门' ); 
         } 
    };
    var openQQCommand = {
        execute: function(){
            console.log('打开QQ')
        }
    }
    var openPcCommand = { 
         execute: function(){ 
             console.log( '开电脑' ); 
         } 
    };
    

    第二步 :定义宏命令 MacroCommand
    macroCommand.add 方法表示把子命令添 加进宏命令对象,当调用宏命令对象的 execute 方法时,会迭代这一组子命令对象,并且依次执 行它们的 execute 方法:

    var MacroCommand = function(){
        return {
            commandList : [] ,
            add : function( command ){
                this.commandList.push( command );//把命令添加至数组中 
            },
            //撤销命令
            undo:function(command){
          		this.commandsList.pop( command ); 
        	},
            execute : function(){
                for(var i = 0 ,command;command = this.commandList[i++]){
                    command.execute(); //一次执行execute
                }
            }
        }
    
    }
    
    var macroCommand = MacroCommand(); //定义
    

    第三步 :添加命令

    macroCommand.add( closeDoorCommand );
    macroCommand.add( openQQCommand );
    macroCommand.add( openPcCommand );
    

    第四步 : 执行命令

    macroCommand.execute();
    

    宏命令是命令模式与组合模式的联用产物

    展开全文
  • 在Excel工作簿中创建宏后,有时用户需要宏能够随着工作表打开自动运行。要实现这种宏自动运行可以使用Auto_Open过程启动和事件启动这两种方式,本文分别介绍让Excel工作簿中宏自动运行两种方法。 1、启动...

    在Excel工作簿中创建宏后,有时用户需要宏能够随着工作表的打开自动运行。要实现这种宏的自动运行可以使用Auto_Open过程启动和事件启动这两种方式,本文分别介绍让Excel工作簿中宏自动运行的两种方法。

    1、启动Excel并打开包含宏的工作表,在“开发工具”选项卡的“代码”组中单击“宏”按钮打开“宏”对话框,单击“编辑”按钮打开VBA编辑器窗口,如图1所示。在代码窗口中将原有的过程名更改为"Auto_Open",如图2所示。切换到Excel窗口,再次打开“宏”对话框,可以看到宏的名称已经改变,如图3所示。保存该文档,当再次打开该文档时,宏将自动运行。

    让Excel工作簿中宏自动运行的两种方法

    图1 单击“编辑”按钮

    让Excel工作簿中宏自动运行的两种方法

    图2 修改过程名

    让Excel工作簿中宏自动运行的两种方法

    图3 宏名称发生改变

    2、在“开发工具”选项卡的“代码”组中单击"Visual Basic"按钮打开VBA编辑器,在工程资源管理器窗口中双击"Sheet1(Sheet1)"选项,如图4所示。在打开的代码窗口的“对象”下拉列表中选择"Worksheet"选项,在“事件”下拉列表中选择"Activate"选项,在Activate事件代码中添加宏过程名,如图5所示。保存文档,这样当工作表被激活时宏将自动执行。

    让Excel工作簿中宏自动运行的两种方法

    图4 双击

    让Excel工作簿中宏自动运行的两种方法

    图5 选择对象和事件并输入代码

    提示

    Auto_Open过程是一个特殊的自定义Sub过程,其包含的代码可以在工作簿打开时自动执行,宏过程写入其中当然也将被自动调用执行。Worksheet对象的Activate事件是在工作表被激活时触发,在该事件代码中调用宏过程将使工作表被激活时宏被启用。

    展开全文
  • 第十二周总结Access

    2018-05-26 17:58:00
    一、学到了什么? 宏 ...2、创建宏,在课堂上老师先说了如何创建宏,也让我们创建了宏操作。 二、有哪些心得? 三、有哪些疑惑? 转载于:https://www.cnblogs.com/a-9-9-n/p/9093793.h...
  • 5.Macros 宏 宏是一复合到一个可重用流程脚本中节点,可以在任何其他流程脚本中作为一个整体使用......创建宏可以通过两种方式完成。 通过“添加节点”上下文菜单和“MACROS /创建新...”选项,或...
  • 指向函数指针数组

    2016-01-08 11:53:47
    创建指向函数指针数组,为了选择一个函数,只需使用数组下标。然后间接引用这个指针。这种方式支持表格式驱动码(table-driven code)概念;...下面例子使用预处理宏创建了一些哑函数,然后使用自动集合初始
  • 本篇是action三板斧的最后一板,经过深思熟虑后,我决定就用正常人的方式写吧... 这次主要介绍动画的创建即存储,要实现的功能有: 1、创建动画,并存放至Array中; 2、创建四个虚拟方向按钮,控制精灵移动与...
  • 同时该软件还允许用户创建或使用多个宏文件,这些宏文件在主窗口中表示为选项卡,每个宏文件中宏都组织在具有树结构的宏组中,且一个宏组包含多个宏。另外,Perfect Keyboard Pro 9还提供了键盘属性、运行宏、创建...
  • excel使用

    2012-11-25 17:06:01
    首先打开“工具”菜单,单击“”命令中“Visual Basic编辑器”,进入Visual Basic编辑环境,在“工程-VBAobject”栏中当前表上单击鼠标右键,选择“插入”-“模块”,在右边栏创建下面函数rrr,代码如下: ...
  • 实例057——创建带有复选框列表框和可拖放列表项列表框 实例058——实现选中项缩进列表框 实例059——创建带有智能水平滚动条列表框 实例060——添加和获取组合框列表项 实例061——使用扩展组合框使...
  • 5.12 我用预处理#defineNullptr(type)(type*)0帮助创建正确类型空指针。 回顾 59 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定? 5.14 为什么有那么多关于空指针疑惑?为什么这些问题如此...
  • 5.12 我用预处理#defineNullptr(type)(type*)0帮助创建正确类型空指针。  回顾 59 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定?  5.14 为什么有那么多关于空指针疑惑?为什么这些问题...
  •  5.12 我用预处理#defineNullptr(type)(type*)0帮助创建正确类型空指针。 回顾 59 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定? 5.14 为什么有那么多关于空指针疑惑?为什么这些问题...
  • 5.12 我用预处理#define Nullptr(type)(type *)0帮助创建正确类型空指针。 88 回顾 88 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定? 88 5.14 为什么有那么多关于空指针疑惑?为什么这些...
  • 课程内容: 利用 明文包CALL和 目标ID找到游戏普通攻击功能,并分析封包组的汇编代码. 007 - VC++创建工程以及简单的函数 课程内容: 创建一个空白的工程,并开始写第一个简单函数 008 -函数的机制之栈帧的形成 课程...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    5.12 我用预处理#define Nullptr(type)(type *)0帮助创建正确类型空指针。 59 回顾 59 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定? 59 5.14 为什么有那么多关于空指针疑惑?为什么...
  • 5.12 我用预处理#define Nullptr(type)(type *)0帮助创建正确类型空指针。 59 回顾 59 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定? 59 5.14 为什么有那么多关于空指针疑惑?为什么...
  • 数组是一相同类型元素的集合 创建数组:类型 + 数组名 + [数组的大小];[]里面只能放字面常量,或定义的常规的常量 ...数组赋值:不能被整体赋值,可以通过循环的方式赋值; 具体如下例子: ...
  • OC基础三NSArray常用方法数组遍历数组排序array和String之间转换将数组写入到文件中NSMutableArray(可变数)NSDictionary(字典)可变字典常用结构体NSNumberNSValueNSDateNSCalendarNSFileManager对象...
  • 例如,键入“BTW”可以自动产生“的方式。” 创建自定义数据录入表格,用户界面和菜单栏。见GUI详情。 重映射你的键盘,游戏杆和鼠标上的按键和按钮。 响应信号从手持遥控器通过WinLIRC的客户端脚本。 运行现有...
  • 5.12 我用预处理#define Nullptr(type)(type *)0帮助创建正确类型空指针。 回顾 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定? 5.14 为什么有那么多关于空指针疑惑?为什么这些问题如此频繁地...
  • 软件介绍: Access2003是微软数据库编辑和查看工具,它可以打开mdb格式数据库文件,即可以...支持,内置visual basic编辑器及脚本编辑器,可使用将转换为vb代码,支持宏创建菜单及工具栏、创建快捷菜单。
  • 5.12 我用预处理#define Nullptr(type)(type *)0帮助创建正确类型空指针。 回顾 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定? 5.14 为什么有那么多关于空指针疑惑?为什么这些问题如此频繁地...
  • 语音识别MATLAB实现

    热门讨论 2009-03-03 21:39:18
    声控小车是科大华为科技制作竞赛命题组的项目,其要求是编写一个语言识别程序并适当改装一个小型机动车,使之在一个预先不知道具体形状的跑道上完全由声控来完成行驶比赛。跑道上可以有坡面,坑, 障碍等多种不利...
  • EXCEL 2007 宝典 附光盘文件

    热门讨论 2010-04-02 14:43:05
    mortgage loan data table.xlsx:一个演示如何创建一种方式的假设分析数据表工作簿。 mortgage loan.xlsx:一个使用输入单元格和公式单元格演示假设分析过程工作簿。 production model.xlsx:一个演示方案管理...
  • 例如,键入“BTW”可以自动产生“的方式。” 创建自定义数据录入表格,用户界面和菜单栏。见GUI详情。 重映射你的键盘,游戏杆和鼠标上的按键和按钮。 响应信号从手持遥控器通过WinLIRC的客户端脚本。 运行现有...
  • 8.7.3 用组的嵌套彻底解决问题 217 8.7.4 区分新旧记录 217 8.7.5 在交叉表查询中使用“总计”行 220 8.8 查询过程的结构 224 8.8.1 定义查询 224 8.8.2 编译 224 8.8.3 准备执行计划(优化) 225 8.9...

空空如也

空空如也

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

创建宏组的方式