示例#1
0
void 
remapind(SNP **snpmarkers, int numsnps, Indiv **indivmarkers, Indiv **indm2, int numindivs, int numind2) 

{

  int *g1, *g2, *w1 ;
  int *tind, t, i, j, k ; 
  Indiv *indx ;
  SNP *cupt ;

  if (numindivs != numind2) fatalx("different remapind sizes %d %d\n", numindivs, numind2) ;
  ZALLOC(tind, numind2, int) ;
  ZALLOC(g2, numind2, int) ;
  ZALLOC(g1, numind2, int) ;
  ZALLOC(w1, numind2, int) ;

  for (k=0; k<numind2; ++k) { 
   indx = indm2[k] ;   
   t = tind[k] = indindex(indivmarkers, numindivs, indx -> ID) ;
   if (t<0) fatalx("bad newindiv: %s\n", indx -> ID) ;
  }

  for (i=0; i<numsnps; i++)  { 
   cupt = snpmarkers[i]  ;

   for (j=0; j<numind2; ++j) { 
    g1[j] = getgtypes(cupt, j) ;
   }
   copyiarr(g1, w1, numind2) ;

   for (k=0; k< numind2; ++k)  { 
     g2[k] = g1[tind[k]]  ;
   }

   ivclear(g1, -1, numind2) ;
   copyiarr(g2, g1, numind2) ;

   for (k=0; k<numind2; ++k) { 
    putgtypes(cupt, k, g1[k]) ;
   }

/**
   if (i<100) { 
    printf("zzz %s\n", cupt -> ID) ;
    for (j=0; j<numind2; ++j) { 
     g1[j] = getgtypes(cupt, j) ;
    }
    printimat(w1, 1, numind2) ;
    printimat(g1, 1, numind2) ;
   }
*/

  }

  free(w1) ; 
  free(g1) ; 
  free(g2) ;
  free(tind) ;

}
示例#2
0
文件: sortit.c 项目: FerRacimo/cTools
void ipsortitp(int **a, int *ind, int len, int rlen, int *order) 
/** 
 sort integer array pointers 
 rows of array are sorted in lexicographical order 

 compiarr can be called outside the sort
*/
{
  int i,k  ;
  int *inda ;

  if (len==0) fatalx("(ipsortit) len = 0\n") ;
  ZALLOC(pttt, len, int *) ;
  ZALLOC(inda, len, int) ;

  setorder(order, rlen) ; // order defines order as sorted in ascending order.  

  for (i=0; i<len; i++) {
   if (a[i] == NULL) fatalx("(ipsortit) array pointer %d NULL\n",i) ;
   inda[i] = i ;
  }

  copyiparr(a,pttt,len) ;
  qsort((int *) inda, len, 
   sizeof(int), (int (*) (const void *, const void *)) ipcompit);

  for (i=0; i<len; i++) {
   k = inda[i] ;
   a[i] = pttt[k] ;
  }
  if (ind != NULL) copyiarr(inda, ind, len) ;
  free(inda) ;
  free (pttt) ;
}
示例#3
0
void mapit(int *a, int *b, int n, int inval, int outval)
{
    int k ;

    copyiarr(b, a, n) ;
    for (k=0; k<n; ++k) {
        if (a[k]==inval)  a[k] = outval ;
    }
}
示例#4
0
void reviarr(int *b,int *a,int n)
{
    int i ;
    int *x   ;
    ZALLOC(x, n, int) ;
    for (i=0; i<n; i++) {
        x[n-i-1] = a[i] ;
    }
    copyiarr(x, b, n) ;
    free(x) ;

}
示例#5
0
文件: sortit.c 项目: FerRacimo/cTools
void isortit(int *a, int *ind, int len) 
{
  int i,k  ;
  int *inda ;

  if (len==0) fatalx("(isortit) len = 0\n") ;
  ZALLOC(ittt, len, int) ;
  ZALLOC(inda, len, int) ;

  for (i=0; i<len; i++) {
   inda[i] = i ;
  }

  copyiarr(a,ittt,len) ;
  qsort((int *) inda, len, sizeof(int), (int (*) (const void *, const void *)) icompit);

  for (i=0; i<len; i++) {
   k = inda[i] ;
   a[i] = ittt[k] ;
  }
  free (ittt) ;
  if (ind != NULL) copyiarr(inda, ind, len) ;
  free(inda) ;
}
示例#6
0
void flipiarr(int *a, int *b, int n) 
{
   int *x, k ;
   ZALLOC(x, n, int) ;  

   for (k=0; k<n; ++k)  {  
    x[n-1-k] = b[k] ;
   }

   copyiarr(x, a, n) ;  

   free(x) ;


}
示例#7
0
void ipermute(int *a, int *ind, int len)
{

    int i , k ;
    int *rrr ;

    ZALLOC(rrr, len, int) ;

    copyiarr(a, rrr, len) ;

    for (i=0; i<len; i++) {
        k = ind[i] ;
        a[i] = rrr[k] ;
    }

    free (rrr) ;
}
示例#8
0
void imulmat(int *a, int *b, int *c, int a1, int a2, int a3) 
/* b is a1 x a2 , c a2 x a3 so a is a1 x a3  */  
{
    int *t ;
    int i,j,k ;
    ZALLOC(t, a1*a3, int) ;

    for (i=0; i<a1; i++)  
     for (j=0; j<a3; j++)  
      for (k=0; k<a2; k++)  
       t[i*a3+j] += b[i*a2+k]*c[k*a3+j] ;

    copyiarr(t, a, a1*a3) ;

    free (t) ;

}
示例#9
0
文件: sortit.c 项目: FerRacimo/cTools
void invperm(int *a, int *b, int n) {
/** 
 a, b can be same 
*/
     int i, j ;
     int *x ;

     if (n==0) return ;
     ZALLOC(x, n, int) ;

     ivclear(x,-1,n) ;
     for (i=0; i<n; i++)  {
      j=b[i] ;
      x[j]=i ;
     }
     copyiarr(x, a, n) ;
     free(x) ;
}
示例#10
0
文件: sortit.c 项目: FerRacimo/cTools
void setorder(int *pp, int rlen) 
{
  int *tt ;

  if (plen > 0) { 
   if (porder != NULL) free(porder) ;
  }

   if (pp==NULL) { 
    porder = NULL ;
    plen = rlen ; 
    return ;
   }
   ZALLOC(porder, rlen, int) ;
   ZALLOC(tt, rlen, int) ;
   copyiarr(pp, tt, rlen) ;
   isortit(tt, porder, rlen) ;
   free(tt) ;
   plen = rlen ;
}