Exemple #1
0
static codefile_t* open_for_writing(const char* fn) {
    codefile_t* cf;
    qfits_header* hdr;
    if (fn)
        cf = new_codefile(fn, TRUE, FALSE);
    else
        cf = new_codefile(fn, TRUE, TRUE);
    if (!cf)
        goto bailout;
    // default
    cf->dimcodes = 4;

    // add default values to header
    hdr = codefile_get_header(cf);
    fits_add_endian(hdr);
    qfits_header_add(hdr, "AN_FILE", "CODE", "This file lists the code for each quad.", NULL);
    qfits_header_add(hdr, "NCODES", "0", "", NULL);
    qfits_header_add(hdr, "NSTARS", "0", "", NULL);
    fits_header_add_int(hdr, "DIMCODES", cf->dimcodes, "");
    qfits_header_add(hdr, "SCALE_U", "0.0", "", NULL);
    qfits_header_add(hdr, "SCALE_L", "0.0", "", NULL);
    qfits_header_add(hdr, "INDEXID", "0", "", NULL);
    qfits_header_add(hdr, "HEALPIX", "-1", "", NULL);
    qfits_header_add(hdr, "HPNSIDE", "1", "", NULL);
    fits_add_long_comment(hdr, "The first extension contains the codes "
                          "stored as %i native-endian doubles.  "
                          "(the quad location in %i-D code space)", cf->dimcodes, cf->dimcodes);
    return cf;
bailout:
    if (cf)
        codefile_close(cf);
    return NULL;
}
int allquads_close(allquads_t* aq) {
	startree_close(aq->starkd);

	// fix output file headers.
	if (quadfile_fix_header(aq->quads) ||
		quadfile_close(aq->quads)) {
		ERROR("Couldn't write quad output file");
		return -1;
	}
	if (codefile_fix_header(aq->codes) ||
		codefile_close(aq->codes)) {
		ERROR("Couldn't write code output file");
		return -1;
	}
	return 0;
}
Exemple #3
0
codefile_t* codefile_open(const char* fn) {
    codefile_t* cf = NULL;

    cf = new_codefile(fn, FALSE, FALSE);
    if (!cf)
        goto bailout;
    if (fitsbin_read(cf->fb)) {
        ERROR("Failed to open codes file");
        goto bailout;
    }
    cf->codearray = codes_chunk(cf)->data;
    return cf;

bailout:
    if (cf)
        codefile_close(cf);
    return NULL;
}
int hpquads_files(const char* skdtfn,
				  const char* codefn,
				  const char* quadfn,
				  int Nside,
				  double scale_min_arcmin,
				  double scale_max_arcmin,
				  int dimquads,
				  int passes,
				  int Nreuses,
				  int Nloosen,
				  int id,
				  anbool scanoccupied,

				  void* sort_data,
				  int (*sort_func)(const void*, const void*),
				  int sort_size,

				  char** args, int argc) {
	quadfile_t* quads;
	codefile_t* codes;
	startree_t* starkd;
	int rtn;

	logmsg("Reading star kdtree %s ...\n", skdtfn);
	starkd = startree_open(skdtfn);
	if (!starkd) {
		ERROR("Failed to open star kdtree %s\n", skdtfn);
		return -1;
	}

	logmsg("Will write to quad file %s and code file %s\n", quadfn, codefn);
    quads = quadfile_open_for_writing(quadfn);
	if (!quads) {
		ERROR("Couldn't open file %s to write quads.\n", quadfn);
		return -1;
	}
    codes = codefile_open_for_writing(codefn);
	if (!codes) {
		ERROR("Couldn't open file %s to write codes.\n", codefn);
		return -1;
	}

	rtn = hpquads(starkd, codes, quads, Nside,
				  scale_min_arcmin, scale_max_arcmin,
				  dimquads, passes, Nreuses, Nloosen, id,
				  scanoccupied, 
				  sort_data, sort_func, sort_size,
				  args, argc);
	if (rtn)
		return rtn;

	if (quadfile_close(quads)) {
		ERROR("Couldn't write quad output file");
		return -1;
	}
	if (codefile_close(codes)) {
		ERROR("Couldn't write code output file");
		return -1;
	}
	startree_close(starkd);

	return rtn;
}