当前位置:文档之家› R语言命令Tutorial-更新后,CCA ,RDA,PCA, heatmap

R语言命令Tutorial-更新后,CCA ,RDA,PCA, heatmap

R语言命令Tutorial-更新后,CCA ,RDA,PCA, heatmap
R语言命令Tutorial-更新后,CCA ,RDA,PCA, heatmap

一、GeoChip 数据处理

1 准备数据

?登录数据库,用户名ieg\jianqiang,PW:ieg123?

?选择GeoChip4数据,再次输入用户密码;

?点击Prepare microarray data,点击选择要分析的数据,点击submit,勾选“Remove the spots SNR less than 2”,此即为SNR数据;若勾选“Adjust SNR according to Thermophile probes less than 5%”,此即为Thermo数据;

?勾选“by dividing the mean of each sample”,即为DBM数据,若不勾选,则为relative abundance(RA)数据;

?这样就有四套数据分别为SNR DBM、SNR RA、Thermo DBM、Thermo RA,选择好要下载的数据后,输入“Experimental Name:”,点击submit,点击“set it as default”

点击go,随后点击main回到主界面,点击“Analyze microarray data”在跳出的对话框中点cancel,点击如下图所示项目后,点击submit;

在show information框中选择除了“All targets”外的所有项,点击submit;

点击download后,待所有数据出来后另存为文本文件,这样就准备好一套数据,将所有4套数据都如此下载好。

?数据下载后,在excel中去除各样品重复中只有一个重复有检测到基因信号的数据,即为cut 1;

?Relative abundance数据需要将各基因信号值分别除以该样品中所有基因信号值得和,再乘以各个样品基因信号值和的平均值,即data1/sum1*average。。。

这样即得到Relative abundance数据

Relative abundance数据继续做两种处理,一是将数据+1后取ln,一是将数据除以1000;这样总共是6套数据,将所有数据中0值替换为空白,同时只留下gene ID和genename两项,

另存为tab delimited txt文件,即可用于DCA(Detrended Correspondence Analysis)、Dissimilarity Test、cluster(A simple hierarchical clustering analysis)分析;

2 数据预分析

2.1 DCA分析

在数据分析界面点击以下项后,上传刚刚准备的数据,即可做DCA分析,

结果可获得DCA图及DCA数据,可拷贝出数据自行作图;

2.2 Dissimilarity Test

点击后,上传数据,选择需要比较的样品,即可做MRPP、anosim、adonis比较,记录distance和sig值;

2.3 cluster分析

点击,将数据按各样品取平均值后上传分析,即可得cluster图。

比较以上6套数据分析结果,选择最好的一套进行数据处理,目前一般SNR RA ln 的数据最好,可只比较其与Thermo RA ln之间的差异。

3 数据处理

3.1 Diversity and summary

3.1.1 alpha-diversity

点击,上传用于做DCA的数据,即可得到alpha-diversity;

3.1.2 beta-diversity

点击,上传用于做DCA的数据,即可得到beta-diversity;

3.1.3 Summary gene categories

点击,上传数据,此时只用relative abundance的数据,不要取ln,若保留genename 则只统计gene水平,保留各个不同级别的category,则统计为各个category的

加和;数据上传后选择show intensity,将所得的结果保存;求出各个样品的平均值,取ln去掉0值后保存为txt文件,即可用于genecluster分析;

3.1.4 Summary phylogenetic

点击,同上但只保留Organism或Lineage即可对phylogenetic基因分布进行统计;

3.2 Gene cluster

将3.1.3得到文件进行GeneCluster分析,打开GeneCluster软件,点击“load files”载入文件,如下图勾选计算后可达到3个文件cdt、atr、gtr,atr为每列信号和,gtr为每行信号和;

用GeneTreeView打开cdt文件即可看到图,save tree image保存树图,save zoomed image保存信号图,其中红色方块深浅代表信号值,即该基因丰度,若采用category数据,则表示某类基因丰度,将树图和该图用photoshop拼合即可。

3.3 Response ratio

点击,上传与3.1.3相同数据,gene 水平和category水平数据均可

3.4 环境因子拟合

采用3.1.3中基因水平或category水平的相对丰度,计算标准差,或采用total intensity,直接与环境因子拟合,correlation test相关性分析即可,excel即可做。

3.5CCA using R

?打开R软件,输入

All=read.table('D:/桌面/SNR RA ln for cca.csv',header=T, sep=","),输入准确的路径名,以及要读入的数据文件名,采用csv格式数据,Relative abundance取ln的数据,空白值替换为0,不要genename等,格式如下:

dim(All)

T.All<-t(All)

dim(T.All),这三个命令是将数据转置为样品在列;

?All.group=read.table('D:/桌面/Chemical property.csv',header=T, sep=",") Y=T.All

X=All.group,读入理化参数数据,格式如下

行为参数值,列为样品名,参数不要用符号空格。

?library(vegan),调用vegan程序包;

?输入,A=cca(Y ~ pH+TOC+TN+TC+TS+CEC+NH4+AK, data=X),即所有的参数名字,即开始计算CCA.

?输入https://www.doczj.com/doc/d416324349.html,a(A),看计算结果,可导出自行作图,用“Site scores (weighted averages of species scores)”数据样品点,“Biplot scores for constraining variables”做环境因子;

?输入https://www.doczj.com/doc/d416324349.html,a(A),看各参数的vif值,<10表示该参数为单独影响,>10表示该参数为共同影响,一般选择<20的参数;

?输入plot(A,dis=c('wa','cn'))输出CCA排序图;

?输入https://www.doczj.com/doc/d416324349.html,a(A, by = "term", step = 200)计算方差,各环境因子显著性检验;

输入anova(A,by="axis",perm=1000),看各轴解释量;再次输入A=cca(Y ~ pH+TOC+TN+TC+TS+CEC+NH4+AK, data=X),可得以下结果:解释量即为某轴值除以Total值,如高亮部分,其解释量为12.81%

Inertia Proportion Rank

Total 0.3537 1.0000

Constrained 0.1336 0.3778 8

Unconstrained 0.2201 0.6222 30

Inertia is mean squared contingency coefficient

414 species (variables) deleted due to missingness

Eigenvalues for constrained axes:

CCA1 CCA2 CCA3 CCA4 CCA5 CCA6 CCA7 CCA8

0.045309 0.034580 0.013917 0.009750 0.009280 0.008328 0.007542 0.004894

Eigenvalues for unconstrained axes:

CA1 CA2 CA3 CA4 CA5 CA6 CA7 CA8

0.036623 0.013366 0.011339 0.010286 0.009655 0.009085 0.008615 0.007996

(Showed only 8 of all 30 unconstrained eigenvalues)

?输入bioenv(Y ~pH+TOC+TN+TC+TS+CEC+NH4+AK, data=X),

该项也可在网站上进行分析,可得出矩阵,各个因子,上传DCA数据和环境因子数据。Best Subset of Environmental Variables with Maximum (Rank) Correlation with Community Dissimilarities

3.6 Partial CCA

输入cca(Y ~ CEC+Condition(pH+TOC+TN+TC+TS+NH4+AK), data=X),可得CEC的部分解释量

cca(Y ~ pH+TOC+Condition(CEC+ TN+TC+TS+NH4+AK), data=X),则得到pH和TOC 的解释量,最终做出Variation partitioning analysis图,即VPA分析。

3.7 Partial Mantel Test

To calculate the correlation between microarray data and environmental factor(s)

点击,上传做DCA的数据,再上传做CCA的环境因子数据,即可针对不同基因和不同基因category做mantel test,若只选择几个环境因子数据,则为Partial Mantel Test。

结果如下:

r为相关系数,significance

3.8 MRT

Multivariate Regression Tree

读入数据与CCA分析相同,先读基因数据

All=read.table('D:/桌面/SNR RA ln for cca.csv',header=T, sep=",")

dim(All)

T.All<-t(All)

dim(T.All),这三个命令是将数据转置为样品在列;

再读treatment数据

All.group=read.table('D:/桌面/treatment.csv',header=T, sep=",")

Y=T.All

X=All.group

MRT=rpart(Y ~ age+plant+landusing,data=X),加亮为处理名字

plot(MRT)

text(MRT)

treatment数据如下图排列

所得结果中字母a b即按照处理中字母顺序排列,如Ancient 和Modern,前者为a,后者为b。画图前应将绘图窗口放大。

二、Vegan tutor

Common commands

write.table(shan,quote=FALSE,sep="\t",file="shan.txt")

x11(1),打开一个绘图窗口

dev.list(),看有几个设备

dev.set(2), 改变当前设备为2

1 DCA using R

选用做DCA的数据,只保留geneID即可。

library(vegan)

x<-read.csv(file.choose(),https://www.doczj.com/doc/d416324349.html,s=1)

x[is.na(x)]<-0

dim(x)

X<-t(x)

dim(X)

X.dca<-decorana(X)

summary(X.dca)

https://www.doczj.com/doc/d416324349.html,a = cca(X)

total.eigen = https://www.doczj.com/doc/d416324349.html,a$tot.chi

dca1.percent = round(X.dca$evals[1]/total.eigen,digits=3)*100 dca2.percent = round(X.dca$evals[2]/total.eigen,digits=3)*100 https://www.doczj.com/doc/d416324349.html,bel =paste("DCA1 ",dca1.percent, "%",sep="")

https://www.doczj.com/doc/d416324349.html,bel =paste("DCA2 ",dca2.percent,"%",sep="")

jpeg(file="1304744832.jpeg")

plot(X.dca,dis="site",type="text",xlab=https://www.doczj.com/doc/d416324349.html,bel,ylab=https://www.doczj.com/doc/d416324349.html,bel) points(X.dca, pch=21, col="red", bg="red", cex=0.5)

dev.off()

2 Diversity using R

2.1 a-diversity

数据表格同3.9 DCA分析

library(vegan)

X<-read.csv(file.choose(),https://www.doczj.com/doc/d416324349.html,s=1)

X[is.na(X)]<-0

dim(X)

spe<-t(X)

dim(spe)转置,数据量大,excel无法转置

X<-read.csv("Chem property.csv",header=T,https://www.doczj.com/doc/d416324349.html,s=1,sep=",")

dim(env)

Shannon指数:diversity(spe, index = "shannon", MARGIN = 1, base = exp(1)) 或者:shan<-diversity(spe)

Simpson指数:

simp<- diversity(spe, "simpson")

invsimp<- diversity(spe, "inv")

pairs(cbind(shan, simp, invsimp), pch="+", col="blue", type="text") Species richness:S <- specnumber(spe)

Pielou's evenness:J <- shan/log(S)

2.2 b-diversity

library(MASS)

Non-metricMultidimensionalscaling

BrayCurtis:bray<-vegdist(spe),vegdist的默认index是braycurtis write.matrix(bray, file = "", sep = " ")即可写出数据,拷贝出来

vare.mds0<-isoMDS(bray)

stressplot(vare.mds0,bray)

ordiplot(vare.mds0,type="t")

Community dissimilarities

rankindex(scale(env), spe, c("euc", "man","bray", "jac", "kul")) euclideanindice:euclidean<- vegdist(decostand(A, "norm"), "euclidean")

euclidean<- vegdist(decostand(spe, "hell"), "euclidean")

chao<- vegdist(decostand(spe, "norm"), "chao")

vare.mds0<-isoMDS(euclidean)

stressplot(vare.mds0,euclidean)

ordiplot(vare.mds0,type="t")

3 PCA using R

数据表格同DCA分析(上接DCA)

vare.pca<- rda(X)

vare.pca

summary(vare.pca)

https://www.doczj.com/doc/d416324349.html,bel =paste("PCA1 ",10.61, "%",sep="")

https://www.doczj.com/doc/d416324349.html,bel =paste("PCA2 ",3.69,"%",sep="")

plot(vare.pca, dis="site",type="text",xlab=https://www.doczj.com/doc/d416324349.html,bel,ylab=https://www.doczj.com/doc/d416324349.html,bel) points(vare.pca, pch=21, col="red", bg="red", cex=0.5)

spe.h=decostand(spe,"hellinger")

spe.pca=rda(spe.h)

plot(spe.pca, display = "sites", scaling = 1, type = "text")

plot(spe.pca, display = "sites", scaling = 1, type = "text", choices = c(1,3)) plot(spe.pca, display = "sites", scaling = 1, type = "n", choices = c(1, 2)) sc<- scores(spe.pca, display = "sites", scaling = 1, choices = c(1, 2)) my.colors<- as.character(as.integer(group$group) + 1)

points(sc, pch = 21, col = my.colors, bg = my.colors)

Correspondence analysis (CA):

vare.ca <- cca(spe)

vare.ca

summary(vare.ca)

Correspondence analysis is based on Chi-squared distance

chisq.test(spe/sum(spe))

env.s=decostand(env,"standardize")标准化环境因子

4Environmental interpretation using R

4.1 Vector fitting using R

vare.mds<- metaMDS(spe, trace = FALSE)

ef<- envfit(vare.mds, env, permu = 999)

ef

plot(vare.mds, display = "sites", type="text")

plot(ef, p.max = 0.1)该值为自己设定的p最大值,环境样品可为0.1 4.2 Surface fitting

ef<- envfit(vare.mds ~ NO3N + AP, env)

plot(vare.mds, display = "sites",type="text")

plot(ef)

tmp<- with(env, ordisurf(vare.mds, NO3N, add = TRUE))

with(env, ordisurf(vare.mds, AP, add = TRUE,+ col = "green4"))

4.3 Factors

spe.ca <- cca(spe)

ef<- envfit(spe.ca, env, permutations = 999)

ef

plot(spe.ca, display = "sites", type="text")

plot(ef)

4.4 Non-metric Multidimensional scaling

library(vegan)

library(MASS)

pyrospe=read.csv(file.choose(),https://www.doczj.com/doc/d416324349.html,s=1)

pyrospe=t(pyrospe)

pyrospe.dis<- vegdist(pyrospe)

pyrospe.mds0 <- isoMDS(pyrospe.dis)

Nmds maps observed community dissimilarities nonlinearly onto ordination space and it can handle nonlinear species responses of any shape

stressplot(pyrospe.mds0, pyrospe.dis)

ordiplot(pyrospe.mds0, type = "t")

pyrospe.mds<- metaMDS(pyrospe, trace = FALSE)

plot(pyrospe.mds, type = "t")

plot(pyrospe.mds, dis="site",type = "t")

5Constrained ordination

5.1 Model specification

用~符号,左边是群落数据,右边是限制方程

https://www.doczj.com/doc/d416324349.html,a<- cca(spe ~ Nit+AMM+AP+pH+AK, env)

https://www.doczj.com/doc/d416324349.html,a

https://www.doczj.com/doc/d416324349.html,bel =paste("CCA1 ",30,"%",sep="")

https://www.doczj.com/doc/d416324349.html,bel =paste("CCA2 ",20,"%",sep="")

plot(https://www.doczj.com/doc/d416324349.html,a) or plot(https://www.doczj.com/doc/d416324349.html,a, dis=c('wa','cn'))

points(https://www.doczj.com/doc/d416324349.html,a, pch=21, col="red", bg="red", cex=0.5)

library(scatterplot3d)

ordiplot3d(https://www.doczj.com/doc/d416324349.html,a, type = "h")

pl<- ordiplot3d(https://www.doczj.com/doc/d416324349.html,a, angle=15, type="n")

points(pl, "points", pch=16, col="red", cex = 0.7)

text(pl, "arrows", col="blue", pos=3)

text(pl, "points", col="blue", pos=1, cex = 1.2)

5.2 Permutation tests

anova(https://www.doczj.com/doc/d416324349.html,a)

anova(https://www.doczj.com/doc/d416324349.html,a, by="term", step = 200)计算方差,各环境因子显著性检验;anova(https://www.doczj.com/doc/d416324349.html,a, by = "margin", perm = 500)

anova(https://www.doczj.com/doc/d416324349.html,a,by="axis",perm=1000)看各轴解释量

6Corelation test using R

Y<-read.csv("correlation test.csv",https://www.doczj.com/doc/d416324349.html,s=1)

or Y<- read.csv(file.choose(), https://www.doczj.com/doc/d416324349.html,s=1)可选择文件

attach(E3)将每列都设为一个变量,名字为每列的名字

Y.cor<-cor(nosZ,nirS, method = "method")得出两个变量之间的相关系数,默认是pearson,还有"kendall" or "spearman"

E1.cor.test<-cor.test(nosZ,nirS, method = "method")显著性检验

E3.cor.mat<-cor(E3)计算各个变量之间的相关系数,生成相关系数矩阵symnum(Y.cor.mat)符号化相关程度

plot(x=nosZ, y=nirS, xlab="nosZ", ylab="nirS", pch=21)画出散点图

abline(lm(nirS~nosZ))加一条拟合曲线

7Classification

7.1 Cluster analysis

dis <- vegdist(A)或者dis <- dist(X)

clus<- hclust(dis, "single")

plot(clus)

cluc<- hclust(dis, "complete")

plot(cluc)

clua<- hclust(dis, "average")

plot(clua)

range(dis)

cor(dis, cophenetic(clus))

cor(dis, cophenetic(cluc))

cor(dis, cophenetic(clua)),计算各方法的异化性

7.2 Display and interpretation of classes

plot(cluc)

rect.hclust(cluc, 3)

grp<- cutree(cluc, 3)分为不同级别的cluster

boxplot(Nit ~ grp, data = env, notch = TRUE)

ord<- cca(dune)

plot(ord, display = "sites")

ordihull(ord, grp, lty = 2, col = "red")ordispiderand ordiellipse都可使用7.3 Classfied community tables

wa<- scores(ord, display = "sites", choices = 1)

den <- as.dendrogram(clua)

oden <- reorder(den, wa, mean)

op <- par(mfrow = c(2, 1), mar = c(3, 5, 1, 2) +0.1)

plot(den)

plot(oden)

par(op)

8Dissimilarities and environment

8.1 adonis: Multivariate ANOVA based on dissimilarities

betad<- betadiver(spe, "z")

adonis(betad ~ Nit, env, perm = 200)

adonis(betad ~ Nit+AMM+AP+pH+TC+TN, env, perm = 200)

8.2 Homogeneity of groups and beta diversity

mod <- with(env, betadisper(betad, Nit+AMM+AP+pH+TC+TN))

plot(mod)

boxplot(mod)

anova(mod)

permutest(mod)

8.3 Mantel test

data(varespec)

data(varechem)

veg.dist<- vegdist(varespec) # Bray-Curtis

env.dist<- vegdist(scale(varechem), "euclid")

mantel(veg.dist, env.dist)

mantel(veg.dist, env.dist, method="spear")

8.4 Protest: Procrustes test

pc <- scores(pc, choices = 1:2)

pro <- protest(vare.mds, pc)

plot(pro)

pro

8.5 anosim

spe.dist<- vegdist(spe) or spe.dist<- vegdist(spe, method="euclidean") group=read.csv(file.choose(),https://www.doczj.com/doc/d416324349.html,s=1)如下图

attach(group)

spe.ano<- anosim(spe.dist, usage)

summary(spe.ano)

plot(spe.ano)

adonis(spe ~ usage, data=group, permutations=99,method="bray")

spe.mrpp<- mrpp(spe, group$usage, distance="bray")

9 Multivariate homogeneity of groups dispersions (variances)

用于检验重复中的outlier,此处spe用非相对丰度数据

spe.h=decostand(spe,"hellinger")

spe.h.dist=vegdist(spe.h, "euclidean")

var.test<- betadisper(spe.h.dist, group = group$group, type = "median", bias.adjust = TRUE)

boxplot(var.test)

permutest(var.test)

permutest(var.test, pairwise = TRUE)

10PcoAPrincipal Coordinates Analysis

library(labdsv)

data(spe)

dis.bc<- dsvdis(spe,'bray/curtis')

veg.pco<- pco(dis.bc,k=4)

plot(veg.pco,dis="site",type="text")

三、Other application

1seqRFLP

1.1 Rename sequence

library(seqRFLP)

x=read.fasta(file.choose())

gnames.fas(x)

y=rename.fas(x, name = paste("P04B1_", as.character(1:3678), sep = ""))

write.fasta(y,"P04B1.fasta")

2 heatmap

2.1 Simple heatmap

数据如下图

P1=read.csv(file.choose(),https://www.doczj.com/doc/d416324349.html,s=1)

P1_matrix <- data.matrix(P1)

P1_heatmap <- heatmap(P1_matrix, Rowv=NA, Colv=NA, col = heat.colors(256), scale="column", margins=c(5,10))

?cm.colors看使用什么颜色,改变col参数

nba<- nba[order(nba$PTS),],使其按PTS由小到大排列

2.2 pheatmap function

X=read.csv(file.choose(),https://www.doczj.com/doc/d416324349.html,s=1)

X=as.matrix(X)

library(pheatmap)

pheatmap(X)

pheatmap(P1.n,scale="row")

pheatmap(spe,scale="row", clustering_distance_rows = "euclidean",clustering_distance_cols="euclidean",clustering_method = "average", display_numbers = "T", filename="4.pdf", fontsize = 8)

3Phylogenetic tree

I made the tree figure with phyloseq’splot_tree function:

plot_tree(temp, nodelabf=nodeplotblank, color="Group",size="abundance", label.tips="taxa_names", plot.margin=0.6)

where temp was a phyloseq object containing only the 16 OTUs. These OTUs were were all unclassified Bacteria with more than 500 sequences each.

四、Network analysis (igraph)

pheatmap(spe,scale="row", clustering_distance_rows = "FALSE",clustering_distance_cols="FALSE",clustering_method = "average", display_numbers = "T", filename="4.pdf", fontsize = 8)

Tcl语言基础教程

Tcl语言参考 Tcl("Tool Command Language",即工具命令语言;Tcl念作“踢叩” "tickle" )是一种易学易用易于扩展的脚本语言,实际上包 含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些交互程序如文本编辑器、调试器和shell。它有一个简单 的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。 其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充 (定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读 取(按钮或菜单等)。 Tcl和其他编程语言例如C不同,它是一种解释语言而非编译语言。Tcl程序由一系列Tcl 命令组成,在运行时由Tcl解释 器解释运行。 Tcl有大量的用C/C++编写的扩展用于提供Tcl本身不具有的功能。其中使用最广泛的扩展是TK,TK提供了各种OS平台下 的图形用户界面GUI(连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上)。另一个流行的扩展包是Exp- ect,它提供了通过终端自动执行命令的能力,例如passwd, ftp, telnet等命令驱动的外壳。

一、Tcl程序基本结构 1、基本语法 Tcl有类似于shell的语法,一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个 域(field)的集合,域使用空白(空格或TAB)分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。 Tcl解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,Tcl 解释器运用规则识别出命令并把命令分 成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,Tcl 解释器会把第一个单词当作命令名,并查看这 个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过 程进行处理。 Tcl的命令名可以是内建的命令也可以是用户建的新命令,在应用程序中可用函数Tcl_CreateCommand来创建新的命令。 所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。 另外关于Tcl的注释有一个特殊的要求:'#'必须出现在Tcl解释器期望命令的第一个字符出现的地方,才被当作注释。 例如: set a 100 # Not a comment

TCL语言及其文件的认识、理解和编辑

TCL语言及其文件的认识、理解和编辑 欢迎大家指正和补充。 Tcl语法简介 Tcl是用于工具命令语言的一个解释器。它由作为基本命令解释器嵌入到工具(比如编辑器、调试器等)中的一个库包组成。Tcl提供了(a)用于简单的文本命令语言的分析器,(b)一组内置的实用命令,和(c)一个C 接口,工具通过它用特定于工具的命令增加内置命令。Tcl在与窗口组件库整合的时候特别有吸引力:它通过了提供变量、过程、表达式等机制增进了组件的可编程性;它允许用户编程组件的外观和动作二者;并且它在交互式程序之间提供一个简单但强力的通信机制 作为一种脚本语言,Tcl具有简单的语法 Tcl/Tk 的发明人John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路CAD 设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使Ousterhout 教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了Tcl (Tool Command Language) 语言的产生。 Tcl最初的构想的是希望把编程按照基于组件的方法(component approach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小的, 具备一定“完整”功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的。并可为其它的应用程序所利用。当然, 这种语言还要有良好的扩展性, 以便用户为其增添新的功能模块。最后,需要用一种强的,灵活的“胶水”把这些组件“粘”合在一起, 使各个组件之间可互相“通信”,协同工作。程序设计有如拼图游戏一样,这种设计思想与后来的Java 不谋而合。终于在1988 年的春天, 这种强大灵活的胶水- Tcl语言被发明出来了。 按照Ousterhout 教授的定义,Tcl是一种可嵌入的命令脚本化语言(Command Script Language)。“可嵌入”是指把很多应用有效,无缝地集成在一起。“命令”是指每一条Tcl 语句都可以理解成命令加参数的形式: 命令[参数1] [参数2] [参数3] [参数4] ...... [参数N] 脚本化是指Tcl为特殊的,特定的任务所设计。但从现在角度看,可以说Tcl是一种集C 语言灵活强大的功能与BASIC 语言易学高效的风格于一身的通用程序设计语言。 Tk (Tool Kit) 是基于Tcl的图形程序开发工具箱, 是Tcl的重要扩展部分。Tk 隐含许多C/C++ 程序员需要了解的程序设计细节, 可快速地开发基于图形界面Windows 的程序。据称, 用Tcl/Tk 开发一个简单的GUI 应用程序只需几个小时, 比用C/C++ 要提高效率十倍。需要指明的是这里所说的“窗口”是指Tcl定义的窗口,与X-Windows 与MS Windows 的定义有所不同,但它可完美地运行在以上两个系统上。 Tcl代表了“tool command language - 工具命令语言”。它由一个库包组成,程序可以把它用作自己的命令语言的基础。Tcl的开发由两项观察所推动。第一项观察是,通用可编程命令语言通过允许用户用命令语言写程序来扩展工具的内置设施,从而扩大了工具的能力。在强力的命令语言之中最众所周知的例子是UNIX shell[5] 和Emacs 编辑器[8]。在各自情况下,出现的有着不同寻常能力的计算环境,在很大程度上是因为能获得可编程的命令语言。第二个促成它的观察是交互式应用正在增长。在1970 年代晚期和1980 年代早期的分时环境中,几乎所有的程序都是面向批处理的。典型的使用交互式的命令shell 来调用它们。

TCL脚本实例解读

TCL脚本实例解读 作者:杨帆、老卢 前言 Sigma的这段日子在技术方面感觉提高的方面可能就是脚本的编写吧,我感觉写一个可用的脚本,并不一定非的在于你对脚本有了多了解之后,然后再去实现一个切合实际的脚本,最主要是思路,当你对所需要使用的脚本工具有一定的理解(如:TCL),在一个实际环境,首先能有个明确的想法,想实现个具体的什么东西,怎么样的思路可以实现,大脑里具备了这些条件,就可以尝试去写一些脚本。当然了,在实现的过程中肯定会遇到这样或者那样的问题,但一般来说,基本都是一些对脚本语法以及命令不熟悉的原因造成,这些问题很好解决,可以跟熟悉脚本的同事讨论,来帮你解决当时的问题,所以,千万不要因为还没有开始,就将脚本看得非常困难,导致自己一直无法迈出第一步,其实有些东西还是比较容易实现的。所以在此将我写的几个脚本在此解读解读。 文档目的 这篇文档中所附带的脚本,主要是根据Sigma这边搭建的系统测试环境而撰写出来的,脚本内容可能与今后Sigma公司为我们所开发的系统测试脚本无关,当撰写完这几个脚本之后,各人感觉有些东西还是比较有价值的,因此本人将此脚本撰写为文档,将这些东西共享出来供大家分享、借鉴、参考,相信看完这篇文档,因该会提供很多切合实际测试的一些脚本开发思路。还有,这篇文档并非一篇解释TCL命令的文档,有许多脚本中的相关命令不熟悉的地方需要查找其它资料,部分命令只做了解释或者介绍。 感谢!:) 这些脚本的撰写过程中感谢小康同学与小井同学的帮助(很多地方错误的查找、以及提供了一些解决关键问题的命令,如果没有他们的帮助,这个脚本完成的难度就大了,有很多也是他们的功劳) 环境介绍 这里提到的环境主要介绍的是系统测试的物理网络TOP环境与逻辑网络TOP环境,因为脚本里面的内容跟这个具体环境有关: 物理网络TOP,物理网络TOP所描述的实际是所有测试PC与DUT连接的物理

TCL语言.

TCL语言 Tcl(最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种脚本语言。由John Ousterhout创建。TCL很好学,功能很强大。TCL经常被用于快速原型开发,脚本编程,GUI 和测试等方面。TCL念作“踢叩” "tickle". Tcl的特性包括: * 任何东西都是一条命令,包括语法结构(for, if等)。 * 任何事物都可以重新定义和重载。 * 所有的数据类型都可以看作字符串。 * 语法规则相当简单 * 提供事件驱动给Socket和文件。基于时间或者用户定义的事件也可以。 * 动态的域定义。 * 很容易用C, C++,或者Java扩展。 * 解释语言,代码能够动态的改变。 * 完全的Unicode支持。 * 平台无关。Win32, UNIX, Mac上都可以跑。 * 和Windows的GUI紧密集成。Tk * 代码紧凑,易于维护。 TCL本身不提供面向对象的支持。但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl, Incr Tcl 等。另外SNIT扩展本身就是用TCL写的。 使用最广泛的TCL扩展是TK。TK提供了各种OS平台下的图形用户界面GUI。连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上。另一个流行的扩展包是Expect. Expect提供了通过终端自动执行命令的能力,例如(pass wd, ftp, telnet等命令驱动的外壳). 下面是TCL程序的例子: #!/bin/sh # next line restarts using tclsh in path \ exec tclsh ${1+"$@"} # echo server that can handle multiple # simultaneous connections. proc newConnection { sock addr port } { # client connections will be handled in # line-buffered, non-blocking mode fconfigure $sock -blocking no -buffering line # call handleData when socket is readable fileevent $sock readable [ list handleData $sock ] } proc handleData {

tcl脚本进行二次开发

HyperMesh中利用Tcl脚本进行二次开发 杨国雄 上海世科嘉车辆技术有限公司

HyperMesh中利用Tcl脚本进行二次开发 Further Develop by Tcl Script Based on HyperMesh 杨国雄 (上海世科嘉车辆技术有限公司) 摘要:当代企业发展的关键是创新,本文通过对HyperMesh软件进来二次开发的两个实例—频响分析流程订制和通过Comps名自动定义单元属性,研讨了通过HyperMesh软件对企业CAE分析流程进行简化,标准化,人性化的可能性。 关键字:Tcl,二次开发,HyperMesh Abstract:Innovation is the key of contemporary enterprise's development. In this paper, 2 examples(customized frequency analysis process and automatic definition of element properties via comps name)were made by further developed of HyperMesh. The possibility of CAE analysis process be simplified, standardized and humanized with HyperMesh software was also discussed. Keyword:Tcl, Further Develop,HyperMesh 1 概述 随着各个行业对CAE技术应用的深入,企业对规范化分析流程,简化前处理等各个方面提出了需求。HyperMesh是一款功能强大的有限元前处理软件,同时还具有丰富的二次开发能力。通过二次开发为企业更好的利用HyperMesh软件提供了可能性。 2 HyperMesh二次开发简介 HyperMesh二次开发主要包括了2个层次的内容——宏命令和Tcl/Tk脚本。宏命令主要功能是定义面板按钮及对Tcl脚本的调用。Tcl/Tk脚本命令可以自定义各类窗口,程序的流程化控制,宏命令、Tcl脚本和C语言程序的关系如图1所示。本文主要讨论Tcl脚本的编写。

TCL语言基础资料

TCL语言基础资料 一脚本语言详细介绍 21世纪的高级编程语言 摘要: Perl和Tcl等脚本语言代表一种与c或JavaTM 为代表的系统程序设计语言完全不同的编程形式。脚本语言为"胶着"应用程序而设计,它使用无类型方法来实现高级编程和比系统程序设计语言更快的发展应用。计算机速度的增长和混合应用的改变使脚本语言在今后的应用中越来越重要。 关键字: 组件框架,面向对象编程,脚本,强类型,系统编程 1.简介 在过去的十五年里,人们编写计算机程序的方法

发生了根本的转变。这种转变是从c或c++等系统程序设计语言到Perl或Tcl等脚本语言的过渡。虽然很多人参与了转变,却很少有人意识到它的发生,更不用说知道为什么会发生。这篇文章是我关于为什么在下个世纪脚本语言可以比系统程序设计语言更好的处理许多编程工作的一点看法。 与系统程序设计语言相比,不同的脚本语言为不同的工作而设计,这导致了语言间的根本不同。系统程序设计语言起源于像内存字等最初期的计算机元素,它为建立数据结构和算法而创建。相反的,脚本语言为胶着而设计:他们假设已经存在一套强大的组件,而它主要是把组件连在一起。系统程序设计语言使用强类型定义来帮助处理复杂事务,而脚本语言使用无类型定义来简化组件间的联系,并提供快速应用开发. 脚本语言和系统程序设计语言互为补充,并且二十世纪六十年代以来的大多数主要的计算机平台都同时提供这两种类型的语言。这些语言在组件框架中有着典型的应用:组件由系统程序设计语言创建,并由脚本语言组合在一起。然而,速度更快的机器,

更好的脚本语言,图形用户界面和组件构造重要性的不断提高,因特网的发展等发展趋势大大提高了脚本语言的应用。在今后的十年中,这种趋势将继续,而且越来越多的完全使用脚本语言和系统程序设计语言书写的应用程序将主要用来创建组件。 2.系统程序设计语言 为了理解脚本语言和系统程序设计语言的不同,最好先了解一下系统程序设计语言是如何发展的.系统程序设计语言是作为除汇编语言外的另一种选择而引入的.在汇编语言里,实际上机器的每一个细节都被反映在程序里.每个状态代表一个简单的机器指令,而程序员必须处理像寄存器分配和程序调用顺序等低层细节.因此,用汇编语言编写和维持大型程序是很困难的. 真的不掉线吗??、???????????? 二十世纪五十年代后期像Lisp,Fortran和Algol等高层语言开始出现.这些语言里的状态和机器指令不再完全一致,编译程序把过程程序中的每个状

Tcl脚本语言教程

Tcl教程 TCL语法 ■脚本、命令和单词符号 (2) ■置换(substitution) (2) ■注释 (5) 变量 ■简单变量 (5) ■数组 (6) ■相关命令 (6) 表达式 ■操作数 (7) ■运算符和优先级 (7) ■数学函数 (8) List ■list命令 (10) ■concat命令 (10) ■lindex命令 (11) ■llength命令 (11) ■linsert命令 (11) ■lreplace命令 (11) ■lrange 命令 (11) ■lappend命令 (12) ■lsearch 命令 (12) ■lsort命令 (13) ■split命令 (13) ■join命令 (13) 控制流 ■if命令 (13) ■循环命令:while 、for、foreach (14) ■eval命令 (15) ■source命令 (16) 过程(procedure) ■过程定义和返回值 (16) ■局部变量和全局变量 (17) ■缺省参数和可变个数参数 (17) ■引用:upvar (18) 字符串操作 ■format命令 (19) ■scan命令 (20) 1

■regexp命令 ■regsub命令 ■string命令 文件访问 ■文件名 ■基本文件输入输出命令 ■随机文件访问 ■当前工作目录 ■文件操作和获取文件信息 错误和异常 ■错误 ■从TCL脚本中产生错误 ■使用catch捕获错误 ■其他异常 深入TCL ■查询数组中的元素 ■info命令 TCL语法> 脚本、命令和单词符号 一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的: set a 1 set b 2 或 set a 1;set b 2 TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。 TCL解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,TCL 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。 TCL语法> 置换(substitution) 注:在下面的所有章节的例子中,'%'为TCL的命令提示符,输入命令回车后,TCL会在接着的一行输出命令执行结果。'//'后面是我自己加上的说明,不是例子的一部分。 TCL解释器在分析命令时,把所有的命令参数都当作字符串看待,例如: 2

DDL,DML,DCL,TCL四种语言的简介

DDL,DML,DCL,TCL四种语言的简介 1.DDL(Data Definition Language)数据库定义语言 statements are used to define the database structure or schema. DDL是SQL语言的四大功能之一。 用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束 DDL不需要commit. CREATE ALTER DROP TRUNCATE COMMENT RENAME 2.DML(Data Manipulation Language)数据操纵语言 statements are used for managing data within schema objects. 由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。 DML分成交互型DML和嵌入型DML两类。 依据语言的级别,DML又可分成过程性DML和非过程性DML两种。 需要commit. SELECT INSERT UPDATE DELETE MERGE CALL EXPLAIN PLAN LOCK TABLE 3.DCL(Data Control Language)数据库控制语言授权,角色控制等GRANT 授权 REVOKE 取消授权 4.TCL(Transaction Control Language)事务控制语言 SAVEPOINT 设置保存点 ROLLBACK 回滚 SET TRANSACTION SQL主要分成四部分: (1)数据定义。(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。 (2)数据操纵。(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。

TCL脚本语言-14-输入输出系统

输入输出系统 输入和输出相比大家都不陌生。说起它,我就想起来大学第一次写Pascal程序的时候,总要写出这样的代码: Program Test(input,output); Begin Write(‘Hello,World!’); End. 老实说,第一行的input和output两个参数让我迷惑了很久,一直都不明白它们的用途。后来才慢慢的知道它们叫做输入和输出。 输入和输出总是和文件系统紧密相连。现代操作系统中,所有的设备几乎都被抽象成文件系统。但是不同操作系统下文件系统格式不同,例如Unix和Windows、MAC的目录等都有一定的差异。好在TCL语言比较好的解决了这个问题。本章节我们会详细的介绍如何在TCL中操作文件系统以及读写文件。 操作文件系统 TCL中能够非常方便的操作文件、目录。包括:查询和设置文件属性、复制、删除以及路径名字的操作等。所有这些都是通过一个file命令来完成,其语法都非常简单,所以我们这里只是按照分类,列举出该命令的各种用法: 文件属性操作 命令用法描述 file atime name ?time? 返回文件name最后被读取的时间;该命令在FAT文 件系统上无效(返回数据可能不正确); file mtime name ?time? 设置或者修改文件name的最后被修改时间。time参 数表示1970/1/1到现在的秒。设置最后修改时间,和 那个著名的touch命令完成类似的功能; file attributes name file attributes name ?opt? file attributes name ?opt vla? ?opt val?... 查询或者设置文件的属性。第一个命令查询所有的属性;第二个命令查询指定的属性;第三个设置属性的值。 file executable name 看看这个文件是否是可执行的,是就返回1;

Tcl用法详述

T C L用法祥述 一TCL语法 1 脚本、命令和单词符号 一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的: set a 1 set b 2 或 set a 1;set b 2 TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。 TCL解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,TCL 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。 2 置换(substitution) 注:在下面的所有章节的例子中,'%'为TCL的命令提示符,输入命令回车后,TCL会在接着的一行输出命令执行结果。'//'后面是我自己加上的说明,不是例子的一部分。 TCL解释器在分析命令时,把所有的命令参数都当作字符串看待,例如: %set x 10 //定义变量x,并把x的值赋为10 10 %set y x+100 //y的值是x+100,而不是我们期望的110 x+100 上例的第二个命令中,x被看作字符串x+100的一部分,如果我们想使用x的值'10' ,就必须告诉TCL解释器:我们在这里期望的是变量x的值,而非字符'x'。怎么告诉TCL解释器呢,这就要用到TCL语言中提供的置换功能。 TCL提供三种形式的置换:变量置换、命令置换和反斜杠置换。每种置换都会导致一个或多个单词本身被其他的值所代替。置换可以发生在包括命令名在内的每一个单词中,而且置换可以嵌套。 1) 变量置换(variable subtitution)

TCL培训教程(全)

. Tcl编程简介(一) 简介 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为 "tickle”,实际上包含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。 其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。 下面简单介绍以下tcl的语法规则: 解释器 在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl命令是在特定的 Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。 Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。 数据类型 Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。这是它比较有特点的方面字符串有三种形式:命令(command), 表达式(expresion)和表(list)。 Basic Command Syntax 基本语法 Tcl有类似于shell和lisp的语法,当然也有许多的不同。一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白分开的,第一个域是一个命令的名字,其它

tcl_tk编程,tcl_tk编程教程

Tcl / Tk 大全 (1) 一. Tcl / Tk简介 (1) 1.1 背景 (1) 1.2 定义 (2) 二. Tcl / Tk基础 (2) 2.1 交互方式 (3) 2.2 非交互方式 (3) 三. TCL总体结构图 (4) 四. 与其它语言的比较 (4) 五. TCL语法 (5) 5.1 t c l 命令结构. (5) 5.2 TCL 的注释 (5) 5.3 数据类型 (5) 5.4 变量 (6) 5.5 字符串的操作 (8) 5.6 引用和置换 (10) 5.7 流的控制 IF 和 SWITCH (12) 5.8文件的输入输出和文件的信息 (14) 5.9 过程 (16) 六.工具箱 (17) 6.1 构件的介绍 (17) 6.2 创建构件 (18) 6.3 构件的选项 (18) 6.4 一个TCL./TK 构件的编程示例 (19) 七. 小结 (20) Tcl / Tk 大全 摘要: Tcl/Tk 是一种简明,高效,可移植性好的编程语言。在信息产业领域具有广泛的应用。本文描述了TCL/TK成长历史,特点,优势及应用范围,阐述了TCL/TK的总体结构图,比较了TCL/TK与当今流行的C++,Java 的性能比较,详细阐述了TCL/TK的语法,并介绍了TK的工具箱. 一. Tcl / Tk简介 1.1 背景 Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路 CAD 设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使Ousterhout 教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了 Tcl (Tool Command Language) 语言的产生。 Tcl 最初的构想的是希望把编程按照基于组件的方法 (component approach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小

相关主题
文本预览
相关文档 最新文档