“如果不熟悉线性代数的概念,要去学习自然科学,现在看来就和文盲差不多” “按照现行的国际标准,线性代数是通过公理化来表述的,它是第二代数学模型,…,这就带来了教学上的困难” ——瑞典数学家Lars Garding《Encounter with Mathematics》 当我们开始学习线性代数的时候,不知不觉就进入了“第二代数学模型”的范畴当中,这意味着数学的表述方式和抽象性有了一次全面的进化,对于从小一直在“第一代数学模型”,即以实用为导向的、具体的数学模型中学习的我们来说,在没有并明确告知的情况下进行如此剧烈的paradigm shift,不感到困难才是奇怪的。 1. 我们对于矩阵的种种疑惑——本质是线性代数教学中直觉性丧失对于矩阵的一些基础问题: (1)矩阵究竟是什么东西?向量可以被认为是具有n个相互独立的性质(维度)的对象的表示,矩阵又是什么呢?我们如果认为矩阵是一组列(行)向量组成的新的复合向量的展开式,那么为什么这种展开式具有如此广泛的应用?特别是,为什么偏偏二维的展开式如此有用?如果矩阵中每一个元素又是一个向量,那么我们再展开一次,变成三维的立方阵,是不是更有用? ( ...
从CONCOCT入手理解宏基因组binning
1. 宏基因组binning简介Metagenome 组装完成后,我们得到的是成千上万的 contigs,我们需要知道哪些 contigs 来自哪一个基因组,或者都有哪些微生物的基因组。所以需要将 contigs 按照物种水平进行分组归类,称为 “bining” Supervised binning methods: use databases of already sequenced genomes to label contigs into taxonomic classesUnsupervised (clustering) methods: look for natural groups in the dataBoth supervised and unsupervised methods have two main elements: a metric to define the similarity between a given contig anda bin, and an algorithm to convert those similarities into ass ...
【编程技巧】shell+R双重并行化——加速分析过程
问题描述在进行宏基因组shotgun数据分析时,数据集分case和control两组,每组11个样本,通过Gene Profiling得到400多万行的profile(以RPKM方式进行定量),得到的proflie文件有600+MB 接着想用wilcox检验来筛选两组gene abundance存在差异的基因,结果跑了一天一夜没跑出结果 在排除脚本问题后,基本确定问题是数据量太大,计算效率太低导致的,在解决这个问题过程中总结出了一种加速技巧:shell+R的双重并行化 shell并行化我目前所知道的在linux环境下的并行化实现方式有两种: (1)利用Slurm排队系统 可以使用--array=1-11%4参数来指定任务队列编号为1-11,每次最多并行执行4个任务 有两种书写格式: 1. 作为sbatch的参数$ sbatch --array=1-11%4 tasks.sh2. 写在shell脚本内部如: #!/bin/bash #SBATCH --array=1-11%4 ... (2)使用do{...} &;done;wait语句 该语句的格式为: while read i ...
跟着李永乐老师学数学/物理
数学部分1. 祖暅原理:我国古代数学家算球体积的方法 2. 容斥原理:春节集卡活动集齐的概率有多大 3. 无理数的数学公理化:如何证明0.999… = 1 4. 杨辉三角:性质与应用 物理部分1. 电容:触摸屏原理与触电原因 参考资料: (1) 李永乐老师B站视频
实用小脚本
Perl1. 拆分FASTA文件将FASTA文件按照用户指定的序列条数进行拆分,即每n条序列写到一个文件中,或者按照指定的输出文件数进行拆分,则每个文件中包含的序列数相同 脚本名:splitFasta.pl#!/usr/bin/perluse strict;use warnings;use Getopt::Long;use POSIX;# 帮助文档=head1 Description This script is used to split fasta file, which is too large with thosands of sequence=head1 Usage $0 -i <input> -o <output_dir> [-n <seq_num_per_file>] [-m <output_file_num>] =head1 Parameters -i [str] Input raw fasta file -o [str] Output file to which directory -n [int] Sequence n ...
MeRIP/ChIP-seq分析流程
Schematic diagram of the MeRIP-seq protocol 由于m6A-seq数据分析的原理与过程和ChIP-seq十分相似,所以这里略过前面的质控,简单说明比对和peak calling步骤,具体内容可以参考ChIP-seq分析流程 m6A背景知识目前已知有100多种RNA修饰,涉及到mRNAs、tRNAs、rRNAs、small nuclear RNA (snRNAs) 以及 small nucleolar RNAs (snoRNAs)等。其中甲基化修饰是一种非常广泛的修饰,N6-methyl adenosine (m6A)是真核生物mRNA上最为广泛的甲基化修饰之一,并存在于多种多样的物种中。 腺嘌呤可以被编码器METTL3、METTL14和WTAP及其他组分组成的甲基转移酶复合体甲基化,甲基化的腺嘌呤可以被读码器(目前发现m6A读码器主要有四个,定位于细胞核内的YTHDC1以及定位在细胞质中的YTHDF1、YTHDF2、YTHDF3、YTHDC2)识别,同时m6A可以被擦除器FTO和ALKBH5这两个去甲基化酶催化去甲基化。 在哺乳动物mRNA ...
PHP+MySQL实战:小鼠与人类lincRNA数据库
Part1:lincRNA注释信息数据库实现目标 将lincRNA的gtf格式的注释信息写到MySQL数据库中 用户需要登录才具有数据库访问权限 提供数据库的检索功能 思路 从 UCSC genome browser 或 Ensemble 等数据库中下载人类(homo sapiens)和小鼠 (Mus musculus)的全基因组注释信息文件(GTF或者GFF3格式文件) 提取出其中的lincRNA的注释信息记录,然后将其写入MySQL数据库系统 写好PHP脚本与之前建好的MySQL数据库系统进行数据交互 准备需要写入数据库中的数据下载注释信息文件获取GTF文件的下载地址: 打开Ensemble数据库:http://asia.ensembl.org/index.html 以下列出了可供下载的基因组注释信息版本release-XX,目前的最新版本为release-91 得到下载链接,开始下载(下载至Linux服务器中) # 下载GRCh38.91(人类)注释文件$ wget -c -P /Path/To/dir ftp://ftp.ensembl.org/pub/ ...
前端小技巧:加载并解析Markdown文档
问题描述与分析作为程序猿,应该多多少少都用过Markdown,或者至少读过别人用Markdown语法写的一些文档,比如在GitHub有一个你要用的开源程序,而你又是第一回用它,那么你一般会在这个仓库的Readme里读一读开发者提供的工具说明和使用的相关信息,这部分文档一般就是用Markdown的语法写的 此处以李恒大神的BWA的Readme为例 简单来说,Markdown就是简化阉割过的HTML,优点是语法简单高效,缺点就是HTML中一些稍微高级复杂一点的效果,比如文本居中,Markdown就无法实现,所以Markdown一般被用来写对页面排版要求不高,以文字为主的笔记和文档 如果你一开始用Markdown写了文档,想要把它放到你的网页上去,并以解析后的形式呈现 左边是原始Markdown文档,右边是解析后的网页效果 那么你有两种实现途径: 将Markdown文档以HTML形式导出,在网页上加载之前导出的HTML文件即可 原始网页获取Markdown文档,用js将Markdown文本解析成HTML文本,动态修改原始网页对应标签节点的内容,就实现了Markdown文本的解析和展 ...
在Perl、Shell和Python中传参与输出帮助文档
基于本人对多种编程语言的粗浅了解,不论是哪种编程语言它的参数传递方式主要分为下面两类: 直接传递(以Perl为例进行说明) 在调用脚本时,直接传递参数,如:./script.pl a b c 然后在脚本中用@ARGV变量获取这些参数 getopt方法 这种方法是大多数专业程序中都会用到的方法,使用的时候在参数名前加连接符,后面接上参数的实际赋值,例如:-a 1 不过getopt方法的参数解析方式略显复杂,下面会在具体的语言中进行逐一说明 直接传递的传参方式的优点是编写和使用起来很方便,但缺点很明显,参数的顺序是固定的,不能随意改变,每回使用时都需要确定各个参数分别是什么,而且一般采用这种传参方式的人是不会编写帮助文档的,所以一旦忘了只能查看源代码 getopt方法的优点是,传参方式灵活,而且采用这种传参方式的程序员一般都会在程序中添加帮助文档,因此这种传参方式对用户是非常友好的,但是对于程序员来说,则意味着他或她不得不多写好几行代码——所以一个好的程序员头顶凉凉是可以理解的~ 以下我们只介绍第二种传参方法 PerlPerl中getopt传参Perl中的这个功能需要通过调用G ...
多套RNA-seq分析流程
1. 测序数据下载参见: https://github.com/Ming-Lian/Memo/blob/master/ChIP-seq-pipeline.md#get-data 2. 比对与定量2.1. Salmon流程不需要比对,直接对转录水平进行定量 2.1.1. 创建索引$ salmon index -t Arabidopsis_thaliana.TAIR10.28.cdna.all.fa.gz -i athal_index_salmon 2.1.2. 定量salmon quant 有两种运行模式: Salmon’s quasi-mapping-based mode: using raw reads 输入以下命令查看该模式下的help文档 > salmon quant --help-reads> Salmon’s alignment-based mode: makes use of already-aligned reads (in BAM/SAM format) 当使用参数-a时,启用该模式,否则默认使用quasi-mapping-based mod ...