コード例 #1
0
ファイル: fitch.c プロジェクト: raeece/svamp
void doinit()
{
  /* initializes variables */

  inputnumbers2(&spp, &nonodes2, 1);
  if (inputnumbers2error)
      return;
    nonodes2--;
  alloctree(&curtree.nodep, nonodes2);
  allocd(nonodes2, curtree.nodep);
  allocw(nonodes2, curtree.nodep);
  alloctree(&bestree.nodep, nonodes2);
  allocd(nonodes2, bestree.nodep);
  allocw(nonodes2, bestree.nodep);
  alloctree(&priortree.nodep, nonodes2);
  allocd(nonodes2, priortree.nodep);
  allocw(nonodes2, priortree.nodep);
  if (njumble > 1) {
      alloctree(&bestree2.nodep, nonodes2);
      allocd(nonodes2, bestree2.nodep);
      allocw(nonodes2, bestree2.nodep);
  }

  allocrest();
}  /* doinit */
コード例 #2
0
ファイル: fitch.c プロジェクト: Denis84/EPA-WorkBench
void doinit()
{
  /* initializes variables */

  inputnumbers2(&spp, &nonodes2, 1);
  getoptions();
  if ( !usertree )
    nonodes2--;
  alloctree(&curtree.nodep, nonodes2);
  allocd(nonodes2, curtree.nodep);
  allocw(nonodes2, curtree.nodep);
  if (!usertree) {
    alloctree(&bestree.nodep, nonodes2);
    allocd(nonodes2, bestree.nodep);
    allocw(nonodes2, bestree.nodep);
    alloctree(&priortree.nodep, nonodes2);
    allocd(nonodes2, priortree.nodep);
    allocw(nonodes2, priortree.nodep);
    if (njumble > 1) {
      alloctree(&bestree2.nodep, nonodes2);
      allocd(nonodes2, bestree2.nodep);
      allocw(nonodes2, bestree2.nodep);
    }
  }
  allocrest();
}  /* doinit */
コード例 #3
0
ファイル: fitch.c プロジェクト: raeece/svamp
void globrearrange(long* numtrees,boolean* succeeded) 
{
  /* does global rearrangements */
  tree globtree;
  tree oldtree;
  int i,j,k,num_sibs,num_sibs2;
  node *where,*sib_ptr,*sib_ptr2;
  double oldbestyet = curtree.likelihood;
  int success = false;
 
  alloctree(&globtree.nodep,nonodes2);
  alloctree(&oldtree.nodep,nonodes2);
  setuptree(&globtree,nonodes2);
  setuptree(&oldtree,nonodes2);
  allocd(nonodes2, globtree.nodep);
  allocd(nonodes2, oldtree.nodep);
  allocw(nonodes2, globtree.nodep);
  allocw(nonodes2, oldtree.nodep);
  copy_(&curtree,&globtree);
  copy_(&curtree,&oldtree);
  for ( i = spp ; i < nonodes2 ; i++ ) {
    num_sibs = count_sibs(curtree.nodep[i]);
    if(openloop)return;
    sib_ptr  = curtree.nodep[i];
    if ( (i - spp) % (( nonodes2 / 72 ) + 1 ) == 0 )
      putchar('.');
    fflush(stdout);
    for ( j = 0 ; j <= num_sibs ; j++ ) {
      re_move(&sib_ptr,&where);
      copy_(&curtree,&priortree);
      
      if (where->tip) {
        copy_(&oldtree,&curtree);
        copy_(&oldtree,&bestree);
        sib_ptr=sib_ptr->next;
        continue;
      }
      else
      {
          num_sibs2 = count_sibs(where);
          if(openloop)return;
      }
      sib_ptr2 = where;
      for ( k = 0 ; k < num_sibs2 ; k++ ) {
        addwhere = NULL;
        addtraverse(sib_ptr,sib_ptr2->back,true,numtrees,succeeded);
        if ( addwhere && where != addwhere && where->back != addwhere
              && bestree.likelihood > globtree.likelihood) {
            copy_(&bestree,&globtree);
            success = true;
        }
        sib_ptr2 = sib_ptr2->next;
      } 
      copy_(&oldtree,&curtree);
      copy_(&oldtree,&bestree);
      sib_ptr = sib_ptr->next;
    }
  }
  copy_(&globtree,&curtree);
  copy_(&globtree,&bestree);
  if (success && globtree.likelihood > oldbestyet)  {
    *succeeded = true;
  }
  else  {
    *succeeded = false;
  }
  freed(nonodes2, globtree.nodep);
  freed(nonodes2, oldtree.nodep);
  freew(nonodes2, globtree.nodep);
  freew(nonodes2, oldtree.nodep);
  freetree(&globtree.nodep,nonodes2);
  freetree(&oldtree.nodep,nonodes2);
}