资源

蛋白质折叠(mpex28)

/***************************************************************//*                                                             *//*S A S S A M P L E L I B R A R Y*//*                                                             *//*名称:mpex28*//*标题:蛋白质折叠(mpex28)*//*产品:或*//*系统:所有*//*关键字:或*//*程序:OPTMODEL,SGPLOT*//*数据:*//*                                                             *//*支持:更新:*//*参考:*//*MISC:数学编程示例28*//*示例手册*//*                                                             *//***************************************************************/数据疏水数据;输入位置@@;数据线;2 4 5 6 11 12 17 20 21 25 27 28 30 31 33 37 44 46;%设num_acides=50;过程操作模型;num n=酸;设置位置=1..n;设置疏水性;将数据hydrophic_data读取到hydrophobic=[位置];设置PAIRS={i(疏水),j(疏水):i+1<j和mod(j-i-1,2)=0};/*如果折叠发生在位置i和i+1之间,则IsFold[i]=1;否则为0*/var IsFold{1..n-1}二进制;/*IsMatch[i,j]=1,如果i和j位置的疏水对匹配;否则为0*/var IsMatch{PAIRS}二进制;/*最大化匹配数*/max NumMatches=成对}IsMatch[i,j]中的总和{i,j>;/*如果IsMatch[i,j]=1,则IsFold[k]=0*/成对的con DoNotFold{<i,j>,i..j-1 diff{(i+j-1)/2}}中的k:IsMatch[i,j]+IsFold[k]<=1;/*如果IsMatch[i,j]=1,则IsFold[k]=1*/con Foldway Between{<i,j>in PAIRS}(成对):IsMatch[i,j]<=IsFold[(i+j-1)/2];解决;在1..n-1中打印{i:IsFold[i].sol>0.5}IsFold;成对打印{<i,j>:IsMatch[i,j].sol>0.5}IsMatch;num x{位置};数字y{位置};num xx初始化0;num yy初始化0;num目录初始化1;对于位置}中的{i do;xx=xx+dir;x[i]=xx;y[i]=yy;如果i=n或IsFold[i].sol>0.5,则执行;xx=xx+dir;dir=-dir;yy=yy-1;结束;结束;从[i]x y is_dehological=(疏水性中的i)创建data plot_data;从[i]=(1..n-1)创建数据edge_datax1=x[i]y1=y[i]x2=x[i+1]y2=y[i+1]线型=1;从PAIRS:IsMatch[i,j].sol>0.5}中的[ij]={i,j>创建数据match_datax1=x[i]y1=y[i]x2=x[j]y2=y[j]线型=2;退出;数据sganno(drop=i j);保留drawspace“datavalue”linethickness 1;设置edge_data match_data;函数='line';运行;proc sgplot数据=绘图数据sganno=sganno;散射x=x y=y/组=is_疏水性数据标签=i;xaxis显示=无;yaxis显示=无;运行;退出;