⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proml.c

📁 一个神经网络工具箱
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "phylip.h"#include "seq.h"/* version 3.6. (c) Copyright 1993-2000 by the University of Washington.   Written by Joseph Felsenstein, Lucas Mix, Akiko Fuseki, Sean Lamont,   Andrew Keeffe, Dan Fineman, and Patrick Colacurcio.   Permission is granted to copy and use this program provided no fee is   charged for it and provided that this copyright notice is not removed. */typedef long vall[maxcategs];typedef double contribarr[maxcategs];#ifndef OLDC/* function prototypes */void   init_protmats(void);void   getoptions(void);void   makeprotfreqs(void);void   allocrest(void);void   doinit(void);void   inputoptions(void);void   input_protdata(long);void   makeweights(void);void   prot_makevalues(long, pointarray, long, long, sequence, steptr);void   prot_inittable(void);void   alloc_pmatrix(long);void   getinput(void);void   inittravtree(node *);void   prot_nuview(node *);void   prot_slopecurv(node *, double, double *, double *, double *);void   makenewv(node *);void   update(node *);void   smooth(node *);void   make_pmatrix(double **, double **, double **, long, double,            double, double *, double **);double prot_evaluate(node *, boolean);void   treevaluate(void);void   promlcopy(tree *, tree *, long, long);void   proml_re_move(node **, node **);void   insert_(node *, node *, boolean);void   addtraverse(node *, node *, boolean);void   rearrange(node *, node *);void   proml_coordinates(node *, double, long *, double *);void   proml_printree(void);void   sigma(node *, double *, double *, double *);void   describe(node *);void   prot_reconstr(node *, long);void   rectrav(node *, long, long);void   summarize(void);void   initpromlnode(node **, node **, node *, long, long, long *, long *,            initops, pointarray, pointarray, Char *, Char *, FILE *);void   dnaml_treeout(node *);void   buildnewtip(long, tree *);void   buildsimpletree(tree *);void   free_all_protx (long, pointarray);void   maketree(void);void   clean_up(void);/* function prototypes */#endifextern sequence y;long rcategs;Char infilename[100], outfilename[100], intreename[100], outtreename[100],     catfilename[100], weightfilename[100];double *rate, *rrate, *probcat;long nonodes2, sites, weightsum, categs,  datasets, ith, njumble, jumb;long inseed, inseed0, parens;boolean global, jumble, weights, trout, usertree, reconsider,  ctgry, rctgry, auto_, hypstate, progress, mulsets, justwts, firstset,  improve, smoothit, polishing, lngths, gama, invar, usepam, usejtt;tree curtree, bestree, bestree2, priortree;node *qwhere, *grbg;double cv, alpha, lambda, invarfrac, bestyet;long *enterorder;steptr aliasweight;contribarr *contribution, like, nulike, clai;double **term, **slopeterm, **curveterm;longer seed;char *progname;char aachar[26]="ARNDCQEGHILKMFPSTWYVBZX?*-";/* Local variables for maketree, propagated globally for c version: */long k, nextsp, numtrees, maxwhich, mx, mx0, mx1;double dummy, maxlogl;boolean succeeded, smoothed;double **l0gf;double *l0gl;double **tbl;Char ch, ch2;long col;vall *mp;/* Variables introduced to allow for protein probability calculations   */long   max_num_sibs;                /* maximum number of siblings used in a */                                /* nuview calculation.  determines size */                                /* final size of pmatrices              */double *eigmat;                        /* eig matrix variable                        */double **probmat;                /* prob matrix variable                        */double ****dpmatrix;                /* derivative of pmatrix                */double ****ddpmatrix;           /* derivative of xpmatrix               */double *****pmatrices;          /* matrix of probabilities of protien   */                                /* conversion.  The 5 subscripts refer  */                                /* to sibs, rcategs, categs, final and  */                                /* initial states, respectively.        */double freqaa[20];                /* amino acid frequencies                */static double pameigmat[20] =    {       -0.022091252,-0.019297602, 0.000004760,-0.017477817,       -0.016575549,-0.015504543,-0.002112213,-0.002685727,       -0.002976402,-0.013440755,-0.012926992,-0.004293227,       -0.005356688,-0.011064786,-0.010480731,-0.008760449,       -0.007142318,-0.007381851,-0.007806557,-0.008127024    };static double pamprobmat[20][20] =    {      {-0.01522976,-0.00746819,-0.13934468, 0.11755315,-0.00212101,        0.01558456,-0.07408235,-0.00322387, 0.01375826, 0.00448826,        0.00154174, 0.02013313,-0.00159183,-0.00069275,-0.00399898,        0.08414055,-0.01188178,-0.00029870, 0.00220371, 0.00042546},      {-0.07765582,-0.00712634,-0.03683209,-0.08065755,-0.00462872,       -0.03791039, 0.10642147,-0.00912185, 0.01436308,-0.00133243,        0.00166346, 0.00624657,-0.00003363,-0.00128729,-0.00690319,        0.17442028,-0.05373336,-0.00078751,-0.00038151, 0.01382718},      {-0.08810973,-0.04081786,-0.04066004,-0.04736004,-0.03275406,       -0.03761164,-0.05047487,-0.09086213,-0.03269598,-0.03558015,       -0.08407966,-0.07970977,-0.01504743,-0.04011920,-0.05182232,       -0.07026991,-0.05846931,-0.01016998,-0.03047472,-0.06280511},      { 0.02513756,-0.00578333, 0.09865453, 0.01322314,-0.00310665,        0.05880899,-0.09252443,-0.02986539,-0.03127460, 0.01007539,       -0.00360119,-0.01995024, 0.00094940,-0.00145868,-0.01388816,        0.11358341,-0.12127513,-0.00054696,-0.00055627, 0.00417284},      { 0.16517316,-0.00254742,-0.03318745,-0.01984173, 0.00031890,       -0.02817810, 0.02661678,-0.01761215, 0.01665112, 0.10513343,       -0.00545026, 0.01827470,-0.00207616,-0.00763758,-0.01322808,       -0.02202576,-0.07434204, 0.00020593, 0.00119979,-0.10827873},      { 0.16088826, 0.00056313,-0.02579303,-0.00319655, 0.00037228,       -0.03193150, 0.01655305,-0.03028640, 0.01367746,-0.11248153,        0.00778371, 0.02675579, 0.00243718, 0.00895470,-0.01729803,       -0.02686964,-0.08262584, 0.00011794,-0.00225134, 0.09415650},      {-0.01739295, 0.00572017,-0.00712592,-0.01100922,-0.00870113,       -0.00663461,-0.01153857,-0.02248432,-0.00382264,-0.00358612,       -0.00139345,-0.00971460,-0.00133312, 0.01927783,-0.01053838,       -0.00911362,-0.01010908, 0.09417598, 0.01763850,-0.00955454},      { 0.01728888, 0.01344211, 0.01200836, 0.01857259,-0.17088517,        0.01457592, 0.01997839, 0.02844884, 0.00839403, 0.00196862,        0.01391984, 0.03270465, 0.00347173,-0.01940984, 0.01233979,        0.00542887, 0.01008836, 0.00126491,-0.02863042, 0.00449764},      {-0.02881366,-0.02184155,-0.01566086,-0.02593764,-0.04050907,       -0.01539603,-0.02576729,-0.05089606,-0.00597430, 0.02181643,        0.09835597,-0.04040940, 0.00873512, 0.12139434,-0.02427882,       -0.02945238,-0.01566867,-0.01606503, 0.09475319, 0.02238670},      { 0.04080274,-0.02869626,-0.05191093,-0.08435843, 0.00021141,        0.13043842, 0.00871530, 0.00496058,-0.02797641,-0.00636933,        0.02243277, 0.03640362,-0.05735517, 0.00196918,-0.02218934,       -0.00608972, 0.02872922, 0.00047619, 0.00151285, 0.00883489},      {-0.02623824, 0.00331152, 0.03640692, 0.04260231,-0.00038223,       -0.07480340,-0.01022492,-0.00426473, 0.01448116, 0.01456847,        0.05786680, 0.03368691,-0.10126924,-0.00147454, 0.01275395,        0.00017574,-0.01585206,-0.00015767,-0.00231848, 0.02310137},      {-0.00846258,-0.01508106,-0.01967505,-0.02772004, 0.01248253,       -0.01331243,-0.02569382,-0.04461524,-0.02207075, 0.04663443,        0.19347923,-0.02745691, 0.02288515,-0.04883849,-0.01084597,       -0.01947187,-0.00081675, 0.00516540,-0.07815919, 0.08035585},      {-0.06553111, 0.09756831, 0.00524326,-0.00885098, 0.00756653,        0.02783099,-0.00427042,-0.16680359, 0.03951331,-0.00490540,        0.01719610, 0.15018204, 0.00882722,-0.00423197,-0.01919217,       -0.02963619,-0.01831342,-0.00524338, 0.00011379,-0.02566864},      {-0.07494341,-0.11348850, 0.00241343,-0.00803016, 0.00492438,        0.00711909,-0.00829147, 0.05793337, 0.02734209, 0.02059759,       -0.02770280, 0.14128338, 0.01532479, 0.00364307, 0.05968116,       -0.06497960,-0.08113941, 0.00319445,-0.00104222, 0.03553497},      { 0.05948223,-0.08959930, 0.03269977,-0.03272374,-0.00365667,       -0.03423294,-0.06418925,-0.05902138, 0.05746317,-0.02580596,        0.01259572, 0.05848832, 0.00672666, 0.00233355,-0.05145149,        0.07348503, 0.11427955, 0.00142592,-0.01030651,-0.04862799},      {-0.01606880, 0.05200845,-0.01212967,-0.06824429,-0.00234304,        0.01094203,-0.07375538, 0.08808629, 0.12394822, 0.02231351,       -0.03608265,-0.06978045,-0.00618360, 0.00274747,-0.01921876,       -0.01541969,-0.02223856,-0.00107603,-0.01251777, 0.05412534},      { 0.01688843, 0.05784728,-0.02256966,-0.07072251,-0.00422551,       -0.06261233,-0.08502830, 0.08925346,-0.08529597, 0.01519343,       -0.05008258, 0.10931873, 0.00521033, 0.02593305,-0.00717855,        0.02291527, 0.02527388,-0.00266188,-0.00871160, 0.02708135},      {-0.04233344, 0.00076379, 0.01571257, 0.04003092, 0.00901468,        0.00670577, 0.03459487, 0.12420216,-0.00067366,-0.01515094,        0.05306642, 0.04338407, 0.00511287, 0.01036639,-0.17867462,       -0.02289440,-0.03213205, 0.00017924,-0.01187362,-0.03933874},      { 0.01284817,-0.01685622, 0.00724363, 0.01687952,-0.00882070,       -0.00555957, 0.01676246,-0.05560456,-0.00966893, 0.06197684,       -0.09058758, 0.00880607, 0.00108629,-0.08308956,-0.08056832,       -0.00413297, 0.02973107, 0.00092948, 0.07010111, 0.13007418},      { 0.00700223,-0.01347574, 0.00691332, 0.03122905, 0.00310308,        0.00946862, 0.03455040,-0.06712536,-0.00304506, 0.04267941,       -0.10422292,-0.01127831,-0.00549798, 0.11680505,-0.03352701,       -0.00084536, 0.01631369, 0.00095063,-0.09570217, 0.06480321}    };/* this jtt matrix decomposition due to Elisabeth  Tillier */static double jtteigmat[] ={0.0,        -0.007031123, -0.006484345, -0.006086499, -0.005514432,-0.00772664, -0.008643413, -0.010620756, -0.009965552, -0.011671808,-0.012222418,-0.004589201, -0.013103714, -0.014048038, -0.003170582,-0.00347935, -0.015311677, -0.016021194, -0.017991454, -0.018911888};static double jttprobmat[20][20] ={{0.076999996, 0.051000003, 0.043000004, 0.051999998, 0.019999996, 0.041,  0.061999994, 0.073999997, 0.022999999, 0.052000004, 0.090999997, 0.058999988,  0.024000007, 0.04, 0.050999992, 0.069, 0.059000006, 0.014000008, 0.032000004,  0.066000005}, {0.015604455, -0.068062363, 0.020106264, 0.070723273, 0.011702977, 0.009674053,  0.074000798, -0.169750458, 0.005560808, -0.008208636, -0.012305869, -0.063730179, -0.005674643, -0.02116828, 0.104586169, 0.016480839, 0.016765139,  0.005936994, 0.006046367, -0.0082877}, {-0.049778281, -0.007118197, 0.003801272, 0.070749616, 0.047506147,   0.006447017, 0.090522425, -0.053620432, -0.008508175, 0.037170603,   0.051805545, 0.015413608, 0.019939916, -0.008431976, -0.143511376,  -0.052486072, -0.032116542, -0.000860626, -0.02535993, 0.03843545}, {-0.028906423, 0.092952047, -0.009615343, -0.067870117, 0.031970392,   0.048338335, -0.054396304, -0.135916654, 0.017780083, 0.000129242,   0.031267424, 0.116333586, 0.007499746, -0.032153596, 0.033517051,  -0.013719269, -0.00347293, -0.003291821, -0.02158326, -0.008862168}, {0.037181176, -0.023106564, -0.004482225, -0.029899635, 0.118139633, -0.032298569, -0.04683198, 0.05566988, -0.012622847, 0.002023096, -0.043921088, -0.04792557, -0.003452711, -0.037744513, 0.020822974,  0.036580187, 0.02331425, -0.004807711, -0.017504496, 0.01086673}, {0.044754061, -0.002503471, 0.019452517, -0.015611487, -0.02152807, -0.013131425, -0.03465365, -0.047928912, 0.020608851, 0.067843095, -0.122130014, 0.002521499, 0.013021646, -0.082891087, -0.061590119,  0.016270856, 0.051468938, 0.002079063, 0.081019713, 0.082927944}, {0.058917882, 0.007320741, 0.025278141, 0.000357541, -0.002831285, -0.032453034, -0.010177288, -0.069447924, -0.034467324, 0.011422358, -0.128478324, 0.04309667, -0.015319944, 0.113302422, -0.035052393,  0.046885372, 0.06185183, 0.00175743, -0.06224497, 0.020282093}, {-0.014562092, 0.022522921, -0.007094389, 0.03480089, -0.000326144, -0.124039037, 0.020577906, -0.005056454, -0.081841576, -0.004381786,  0.030826152, 0.091261631, 0.008878828, -0.02829487, 0.042718836, -0.011180886, -0.012719227, -0.000753926, 0.048062375, -0.009399129}, {0.033789571, -0.013512235, 0.088010984, 0.017580292, -0.006608005, -0.037836971, -0.061344686, -0.034268357, 0.018190209, -0.068484614,  0.120024744, -0.00319321, -0.001349477, -0.03000546, -0.073063759,  0.081912399, 0.0635245, 0.000197, -0.002481798, -0.09108114}, {-0.113947615, 0.019230545, 0.088819683, 0.064832765, 0.001801467, -0.063829682, -0.072001633, 0.018429333, 0.057465965, 0.043901014, -0.048050874, -0.001705918, 0.022637173, 0.017404665, 0.043877902, -0.017089594, -0.058489485, 0.000127498, -0.029357194, 0.025943972}, {0.01512923, 0.023603725, 0.006681954, 0.012360216, -0.000181447, -0.023011838, -0.008960024, -0.008533239, 0.012569835, 0.03216118,  0.061986403, -0.001919083, -0.1400832, -0.010669741, -0.003919454, -0.003707024, -0.026806029, -0.000611603, -0.001402648, 0.065312824}, {-0.036405351, 0.020816769, 0.011408213, 0.019787053, 0.038897829,   0.017641789, 0.020858533, -0.006067252, 0.028617353, -0.064259496,  -0.081676567, 0.024421823, -0.028751676, 0.07095096, -0.024199434,  -0.007513119, -0.028108766, -0.01198095, 0.111761119, -0.076198809}, {0.060831772, 0.144097327, -0.069151377, 0.023754576, -0.003322955, -0.071618574, 0.03353154, -0.02795295, 0.039519769, -0.023453968, -0.000630308, -0.098024591, 0.017672997, 0.003813378, -0.009266499, -0.011192111, 0.016013873, -0.002072968, -0.010022044, -0.012526904}, {-0.050776604, 0.092833081, 0.044069596, 0.050523021, -0.002628417,   0.076542572, -0.06388631, -0.00854892, -0.084725311, 0.017401063,  -0.006262541, -0.094457679, -0.002818678, -0.0044122, -0.002883973,   0.028729685, -0.004961596, -0.001498627, 0.017994575, -0.000232779}, {-0.01894566, -0.007760205, -0.015160993, -0.027254587, 0.009800903,  -0.013443561, -0.032896517, -0.022734138, -0.001983861, 0.00256111,   0.024823166, -0.021256768, 0.001980052, 0.028136263, -0.012364384,  -0.013782446, -0.013061091, 0.111173981, 0.021702122, 0.00046654}, {-0.009444193, -0.042106824, -0.02535015, -0.055125574, 0.006369612,  -0.02945416, -0.069922064, -0.067221068, -0.003004999, 0.053624311,   0.128862984, -0.057245803, 0.025550508, 0.087741073, -0.001119043,  -0.012036202, -0.000913488, -0.034864475, 0.050124813, 0.055534723}, {0.145782464, -0.024348311, -0.031216873, 0.106174443, 0.00202862,  0.02653866, -0.113657267, -0.00755018, 0.000307232, -0.051241158,  0.001310685, 0.035275877, 0.013308898, 0.002957626, -0.002925034, -0.065362319, -0.071844582, 0.000475894, -0.000112419, 0.034097762}, {0.079840455, 0.018769331, 0.078685899, -0.084329807, -0.00277264, -0.010099754, 0.059700608, -0.019209715, -0.010442992, -0.042100476, -0.006020556, -0.023061786, 0.017246106, -0.001572858, -0.006703785,  0.056301316, -0.156787357, -0.000303638, 0.001498195, 0.051363455}, {0.049628261, 0.016475144, 0.094141653, -0.04444633, 0.005206131, -0.001827555, 0.02195624, 0.013066683, -0.010415582, -0.022338403,  0.007837197, -0.023397671, -0.002507095, 0.005177694, 0.017109561, -0.202340113, 0.069681441, 0.000120736, 0.002201146, 0.004670849}, {0.089153689, 0.000233354, 0.010826822, -0.004273519, 0.001440618,  0.000436077, 0.001182351, -0.002255508, -0.000700465, 0.150589876, -0.003911914, -0.00050154, -0.004564983, 0.00012701, -0.001486973, -0.018902754, -0.054748555, 0.000217377, -0.000319302, -0.162541651}};void init_protmats(){  long l, m;  eigmat = (double *) Malloc (20 * sizeof(double));  for (l = 0; l <= 19; l++)    if (usejtt)      eigmat[l] = jtteigmat[l];    else      eigmat[l] = pameigmat[l];  probmat = (double **) Malloc (20 * sizeof(double *));  for (l = 0; l < 20; l++)    probmat[l] = (double *) Malloc (20 * sizeof(double));  for (l = 0; l <= 19; l++)    for (m= 0; m <= 19; m++)      if (usejtt)        probmat[l][m] = jttprobmat[l][m];      else        probmat[l][m] = pamprobmat[l][m];}  /* init_protmats */void getoptions(){  /* interactively set options */  long i, loopcount, loopcount2;  Char ch;  boolean didchangecat, didchangercat;  double probsum;  fprintf(outfile, "\nAmino acid sequence Maximum Likelihood");  fprintf(outfile, " method, version %s\n\n",VERSION);  putchar('\n');  ctgry = false;  didchangecat = false;  didchangercat = false;  reconsider = false;  trout = true;  usertree = false;  weights = false;  printdata = false;  progress = true;  treeprint = true;  interleaved = false;  init_protmats();  loopcount = 0;  for (;;){    cleerhome();    printf("Amino acid sequence Maximum Likelihood");    printf(" method, version %s\n\n",VERSION);    printf("Settings for this run:\n");    printf("  U                 Search for best tree?  %s\n",           (usertree ? "No, use user trees in input file" : "Yes"));    if (usertree) {      printf("  L          Use lengths from user trees?  %s\n",               (lngths ? "Yes" : "No"));    }    printf("  P   JTT or PAM amino acid change model?  %s\n",           (usejtt ? "Jones-Taylor-Thornton model" : "Dayhoff PAM model"));    printf("  C                One category of sites?");    if (!ctgry || categs == 1)      printf("  Yes\n");    else      printf("  %ld categories of sites\n", categs);    printf("  R           Rate variation among sites?");    if (!rctgry)      printf("  constant rate of change\n");    else {      if (gama)        printf("  Gamma distributed rates\n");      else {        if (invar)          printf("  Gamma+Invariant sites\n");        else          printf("  user-defined HMM of rates\n");      }      printf("  A   Rates at adjacent sites correlated?");      if (!auto_)        printf("  No, they are independent\n");      else        printf("  Yes, mean block length =%6.1f\n", 1.0 / lambda);    }    printf("  W                       Sites weighted?  %s\n",           (weights ? "Yes" : "No"));    if ((!usertree) || reconsider) {      printf("  S        Speedier but rougher analysis?  %s\n",             (improve ? "No, not rough" : "Yes"));      printf("  G                Global rearrangements?  %s\n",             (global ? "Yes" : "No"));    }    if (!usertree) {      printf("  J   Randomize input order of sequences?");      if (jumble)        printf("  Yes (seed =%8ld,%3ld times)\n", inseed0, njumble);      else        printf("  No. Use input order\n");    }    else       printf("  V    Rearrange starting with user tree?  %s\n",             (reconsider ? "Yes" : "No"));    printf("  O                        Outgroup root?  %s%3ld\n",           (outgropt ? "Yes, at sequence number" :                       "No, use as outgroup species"),outgrno);    printf("  M           Analyze multiple data sets?");    if (mulsets)      printf("  Yes, %2ld %s\n", datasets,               (justwts ? "sets of weights" : "data sets"));    else      printf("  No\n");    printf("  I          Input sequences interleaved?  %s\n",           (interleaved ? "Yes" : "No, sequential"));    printf("  0   Terminal type (IBM PC, ANSI, none)?  %s\n",           (ibmpc ? "IBM PC" : ansi  ? "ANSI" : "(none)"));    printf("  1    Print out the data at start of run  %s\n",           (printdata ? "Yes" : "No"));    printf("  2  Print indications of progress of run  %s\n",           (progress ? "Yes" : "No"));    printf("  3                        Print out tree  %s\n",           (treeprint ? "Yes" : "No"));    printf("  4       Write out trees onto tree file?  %s\n",           (trout ? "Yes" : "No"));    printf("  5   Reconstruct hypothetical sequences?  %s\n",           (hypstate ? "Yes" : "No"));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -