Esempio n. 1
0
YMODEMCLASS::YMODEMCLASS (OBJECTID oiFT, char *fileName, BOOL sORr) :XMODEMCLASS (oiFT, fileName, sORr)
{
	char * p ;
	FILETRANSFER fltr(oiFT) ;

  fileCount = 0 ;
	if (sORr)
	  {
		filename = new char[2048] ;
		p = filename ;
		while(lstrlen(fileName))
			{
			CopyMemory(p, fileName, lstrlen(fileName)+1) ;
			fileName = fileName+lstrlen(fileName)+1 ;
			p=p+lstrlen(p)+1 ;
			fileCount ++ ;
			}
		p = '\0' ;
		}
	else
	  {
		filename = new char[256] ;
		lstrcpy (filename, fileName) ;
		}
	lErrorCount =0 ;
	maxTimeout   = fltr.data0->maxTimeout*60 ;
  maxTrytimes  = fltr.data0->maxTrytimes ;
	bSeq = 0 ;
	fCRC = TRUE ;
	dataBlock0 = TRUE ;
	AObjSetRuntimeInfo (oiFT, (long)this) ;
}
Esempio n. 2
0
void
rankSufmatch ( 	void *space,
                Suffixarray *a,
                PairSint *matches,
                Uint len,
                Uint maxmatches,
                Uint S,
                IntSequence **s,
                Uint noofseqs,
                double (*fltr)(		void *,
                                    Matchtype *,
                                    IntSequence *,
                                    IntSequence *,
                                    Uint *,
                                    Uint,
                                    Uint,
                                    void *),
                Matchtype* (*sel)(	void *,
                                    Matchtype *,
                                    Uint,
                                    IntSequence *,
                                    IntSequence **,
                                    void *),
                int (*handler)(	void *,
                                Matchtype *,
                                IntSequence **,
                                Uint,
                                Uint,
                                void *),
                IntSequence *queryseq,
                void *info,
                double *scores,
                unsigned char depictsw
             )

{

    Matchtype key, *cur, *occ=NULL;
    int i=0, j=0, k=0, l=0, r=0, retval=0;
    int *hashTable;
    double t;
    Uint *ptr;

    hashTable = ALLOCMEMORY(space, NULL, int, (noofseqs+1));
    memset(hashTable, -1, sizeof(int)*(noofseqs+1));

    for(i=0; i < len; i++) {
        if(matches[i].b >= ((matches[i].a))) {

            for(j=matches[i].a; j <= matches[i].b; j++) {
                key.id = getMultiSeqIndex(a->seq, &a->seq->sequences[a->suftab[j]]);
                r = hashTable[key.id];

                if (r == -1) {
                    occ = ALLOCMEMORY(space, occ, Matchtype, k+1);
                    hashTable[key.id]=(&occ[k])-(occ);
                    initMatchtype(&occ[k], key.id);
                    cur = &occ[k];
                    k++;
                } else {
                    cur = ((Matchtype*)(occ+r));
                }

                /*score the matches if no < maxmatches*/
                if ((matches[i].b-matches[i].a) < maxmatches) {
                    ptr = &a->seq->sequences[a->suftab[j]]);
                    t=fltr(space, cur, queryseq, s[cur->id], ptr, S, i, info);

                    if (t == -1) break;
                }
        }
    }
}
Esempio n. 3
0
int main(int argc, char* argv[])
{
    FILE *f;        // исходный файл
    FILE *f1;       // файл для печати
    int *n=0, *c=0; // указатель на начало и после конца массива
    int *m=0, *d=0; // указатель на начало и после конца отфилтрованного массива
    setlocale(0, "russian");

    if (argc < 4)
    {
        printf("Нет достаточного числа аргументов!");
        return BADARG;
    }
    f = fopen(argv[1], "r");
    if (f == NULL)
    {
        printf("Невозможно открыть исходный файл!");
        return BADINFILE;
    }
    if (readarray(f, &n, &c))
        {
            printf("Невозможно выделить память под исходный массив!");
            fclose(f);
            return FAILEDINMEM;
	}
    f1 = fopen(argv[2], "w");
    if (f1 == NULL)
    {
        printf("Невозможно открыть файл результата!");\
        fclose(f);
        free(n);
        return BADOUTFILE;
    }

    if (strcmp(argv[3], "-flt") == 0)
    {
        if (fltr(n, c, &m, &d))
        {
            printf("Невозможно выделить память под отфильтрованный массив!");
            fclose(f);
            fclose(f1);
            free(n);
            return FAILEDOUTMEM;
        }
        myqsort(m, d - m, sizeof(*m), compare_int);
        printmass(f1, m, d);
        free(n);
        free(m);
    }
    else
    {
        myqsort(n, c - n, sizeof(*n), compare_int);
        printmass(f1, n, c);
        free(n);
    }
    fclose(f);
    fclose(f1);
    printf("Успешно!");
    getch();
    return 0;
}
Esempio n. 4
0
bool NucleicAcidTools::symm_match( clipper::MiniMol& molwrk, const clipper::MiniMol& molref )
{
  clipper::Spacegroup spg1 = clipper::Spacegroup(clipper::Spacegroup::P1);
  clipper::Spacegroup spgr = molwrk.spacegroup();
  clipper::Cell       cell = molwrk.cell();

  // calculate extent of model
  clipper::Atom_list atomr = molref.atom_list();
  clipper::Range<clipper::ftype> urange, vrange, wrange;
  clipper::Coord_frac cfr( 0.0, 0.0, 0.0 );
  for ( int i = 0; i < atomr.size(); i++ ) {
    clipper::Coord_frac cf = atomr[i].coord_orth().coord_frac( cell );
    cfr += cf;
    urange.include( cf.u() );
    vrange.include( cf.v() );
    wrange.include( cf.w() );
  }
  clipper::Coord_frac cf0( urange.min(), vrange.min(), wrange.min() );
  clipper::Coord_frac cf1( urange.max(), vrange.max(), wrange.max() );
  cfr = (1.0/double(atomr.size())) * cfr;

  // calculate mask using wrk cell and ref atoms
  clipper::Resolution reso( 5.0 );
  clipper::Grid_sampling grid( spg1, cell, reso );
  clipper::Grid_range    grng( grid,  cf0,  cf1 );
  grng.add_border(4);
  clipper::NXmap<float> nxmap( cell, grid, grng ), nxflt( cell, grid, grng );
  clipper::EDcalc_mask<float> maskcalc( 2.0 );
  nxmap = 0.0;
  maskcalc( nxmap, atomr );
  MapFilterFn_g5 fn;
  clipper::MapFilter_fft<float>
    fltr( fn, 1.0, clipper::MapFilter_fft<float>::Relative );
  fltr( nxflt, nxmap );

  // now score each chain, symmetry and offset in turn
  for ( int c = 0; c < molwrk.size(); c++ ) {
    double              bestscr = 0.0;
    int                 bestsym = 0;
    clipper::Coord_frac bestoff( 0.0, 0.0, 0.0 );
    const clipper::Coord_frac cfh( 0.5, 0.5, 0.5 );
    for ( int sym = 0; sym < spgr.num_symops(); sym++ ) {
      clipper::Atom_list atomw = molwrk[c].atom_list();
      clipper::RTop_orth rtop = spgr.symop(sym).rtop_orth( cell );
      clipper::Coord_orth cow( 0.0, 0.0, 0.0 );
      for ( int a = 0; a < atomw.size(); a++ ) {
	atomw[a].transform( rtop );
	cow += atomw[a].coord_orth();
      }
      if ( atomw.size() > 0 ) cow = (1.0/double(atomw.size())) * cow;
      clipper::Coord_frac cfw = cow.coord_frac( cell );
      clipper::Coord_frac cfwt = cfw.lattice_copy_near( cfr - cfh );
      clipper::Coord_frac off0 = cfwt - cfw;

      // try offsets
      for ( double du = 0.0; du <= 1.01; du += 1.0 )
	for ( double dv = 0.0; dv < 1.01; dv += 1.0 )
	  for ( double dw = 0.0; dw < 1.01; dw += 1.0 ) {
	    clipper::Coord_frac off( rint( off0.u() ) + du,
				     rint( off0.v() ) + dv,
				     rint( off0.w() ) + dw );
	    clipper::Coord_orth ofo = off.coord_orth( cell );
	    double scr = 0.0;
	    for ( int a = 0; a < atomw.size(); a++ ) {
	      clipper::Coord_orth coa = atomw[a].coord_orth() + ofo;
	      clipper::Coord_grid cga = nxflt.coord_map( coa ).coord_grid();
	      if ( nxflt.in_map( cga ) ) scr += nxflt.get_data( cga );
	    }
	    if ( scr > bestscr ) {
	      bestscr = scr;
	      bestsym = sym;
	      bestoff = off;
	    }
	  }
    }
    // now transform using the best operator
    clipper::Coord_orth cot = bestoff.coord_orth( cell );
    clipper::RTop_orth rtop = spgr.symop(bestsym).rtop_orth( cell );
    rtop = clipper::RTop_orth( rtop.rot(), rtop.trn()+cot );
    molwrk[c].transform( rtop );
  }

  return true;
}