Changeset 37585
- Timestamp:
- Nov 11, 2014, 8:54:37 PM (12 years ago)
- Location:
- branches/eam_branches/ipp-20140904/Ohana/src/dvomerge
- Files:
-
- 5 edited
-
include/dvomerge.h (modified) (1 diff)
-
src/LoadCatalog.c (modified) (1 diff)
-
src/build_links.c (modified) (1 diff)
-
src/merge_catalogs_new.c (modified) (3 diffs)
-
src/merge_catalogs_old.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/include/dvomerge.h
r37512 r37585 153 153 Lensing *sort_lensing PROTO((Average *average, off_t Naverage, Lensing *lensing, off_t Nlensing, off_t *next)); 154 154 155 off_t *build_starpar_links PROTO((Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar)); 156 off_t *init_starpar_links PROTO((Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar)); 157 int add_star_link PROTO((Average *average, off_t *next, off_t Nstarpar, off_t NSTARPAR)); 158 StarPar *sort_starpar PROTO((Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar, off_t *next)); 159 155 160 off_t *init_missing_links PROTO((Average *average, off_t Naverage, Missing *missing, off_t Nmissing)); 156 161 int add_miss_link PROTO((Average *average, off_t *next, off_t Nmissing)); -
branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/LoadCatalog.c
r37116 r37585 8 8 9 9 // always load all of the data (if any exists) 10 catalog[0].catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF | LOAD_LENSING | LOAD_LENSOBJ ;10 catalog[0].catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF | LOAD_LENSING | LOAD_LENSOBJ | LOAD_STARPAR; 11 11 12 12 catalog[0].catformat = dvo_catalog_catformat (CATFORMAT); // set the default catformat from config data -
branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/build_links.c
r37116 r37585 377 377 } 378 378 379 379 /******** StarPar ********************************************************************************/ 380 381 /* build the initial links assuming the table is sorted, 382 not partial, and has a correct set of average[].starparOffset,Nstarpar values */ 383 off_t *init_starpar_links (Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar) { 384 385 off_t i, j, N; 386 off_t *next_star; 387 388 N = 0; 389 390 ALLOCATE (next_star, off_t, Nstarpar); 391 for (i = 0; i < Naverage; i++) { 392 if (!average[i].Nstarpar) continue; 393 for (j = 0; j < average[i].Nstarpar - 1; j++, N++) { 394 next_star[N] = N + 1; 395 if (N >= Nstarpar) { 396 fprintf (stderr, "WARNING: N out of bounds (1)\n"); 397 } 398 } 399 next_star[N] = -1; 400 if (N >= Nstarpar) { 401 fprintf (stderr, "WARNING: N out of bounds (2)\n"); 402 } 403 404 if (N >= Nstarpar) { 405 fprintf (stderr, "overflow in init_starpar_links\n"); 406 abort (); 407 } 408 N++; 409 } 410 return (next_star); 411 } 412 413 /* construct starpar links which are valid FOR THIS LOAD 414 * - if we have a full load, we will get links which can 415 * be used by other programs (eg, relphot, etc) 416 * - if we have a partial load, the links are only valid 417 * for that partial load 418 */ 419 420 off_t *build_starpar_links (Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar) { 421 422 off_t i, m, k, Nm, averef; 423 off_t *next_star; 424 425 ALLOCATE (next_star, off_t, Nstarpar); 426 427 /* reset the Nm, offset values for average */ 428 for (i = 0; i < Naverage; i++) { 429 average[i].starparOffset = -1; 430 average[i].Nstarpar = 0; 431 } 432 433 for (Nm = 0; Nm < Nstarpar; Nm++) { 434 averef = starpar[Nm].averef; 435 m = average[averef].starparOffset; 436 next_star[Nm] = -1; 437 438 if (m == -1) { /* no links yet for source */ 439 average[averef].starparOffset = Nm; 440 average[averef].Nstarpar = 1; 441 continue; 442 } 443 444 for (k = 0; next_star[m] != -1; k++) { 445 m = next_star[m]; 446 if (m >= Nstarpar) { 447 fprintf (stderr, "WARNING: m out of bounds (1)\n"); 448 } 449 } 450 451 average[averef].Nstarpar = k + 2; 452 next_star[m] = Nm; 453 if (m >= Nstarpar) { 454 fprintf (stderr, "WARNING: m out of bounds (2)\n"); 455 } 456 } 457 return (next_star); 458 } 459 460 /* average[].starparOffset, average[].Nstarpar are valid within an addstar run */ 461 int add_star_link (Average *average, off_t *next_star, off_t Nstarpar, off_t NSTARPAR) { 462 463 off_t k, m; 464 465 /* if we have trouble, check validity of next_star[m] : m < Nstarpar */ 466 m = average[0].starparOffset; 467 468 for (k = 0; k < average[0].Nstarpar - 1; k++) { 469 m = next_star[m]; 470 if (m >= NSTARPAR) { 471 fprintf (stderr, "WARNING: m out of bounds (3)\n"); 472 } 473 } 474 475 /* set up references */ 476 next_star[Nstarpar] = -1; 477 if (Nstarpar >= NSTARPAR) { 478 fprintf (stderr, "WARNING: Nstarpar out of bounds (1)\n"); 479 } 480 481 if (m == -1) { 482 average[0].starparOffset = Nstarpar; 483 } else { 484 next_star[m] = Nstarpar; 485 if (m >= NSTARPAR) { 486 fprintf (stderr, "WARNING: m out of bounds (4)\n"); 487 } 488 } 489 490 return (TRUE); 491 } 492 493 StarPar *sort_starpar (Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar, off_t *next_star) { 494 495 off_t i, k, n, np, N; 496 StarPar *tmpstarpar; 497 498 /* 499 for (i = 0; i < Naverage; i++) { 500 if (average[i].Nstarpar != 4) { 501 fprintf (stderr, "check %d %d %d\n", (int) i, (int) average[i].Nstarpar, (int) average[i].starparOffset); 502 } 503 } 504 */ 505 506 /* fix order of StarPar (memory intensive, but fast) */ 507 N = 0; 508 ALLOCATE (tmpstarpar, StarPar, Nstarpar); 509 for (i = 0; i < Naverage; i++) { 510 if (!average[i].Nstarpar) continue; 511 n = average[i].starparOffset; 512 average[i].starparOffset = N; 513 for (k = 0; k < average[i].Nstarpar; k++, N++) { 514 if (n == -1) { 515 fprintf (stderr, "entry after %d has a problem\n", (int) np); 516 abort(); 517 } 518 tmpstarpar[N] = starpar[n]; 519 if (starpar[n].averef != i) abort(); 520 tmpstarpar[N].averef = i; 521 np = n; 522 n = next_star[n]; 523 } 524 } 525 free (starpar); 526 return (tmpstarpar); 527 } 528 529 -
branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/merge_catalogs_new.c
r37116 r37585 11 11 12 12 off_t i, j, offset; 13 off_t NAVERAGE, NMEASURE, NLENSING, N average, Nmeasure, Nlensing, NsecfiltIn, NsecfiltOut, Nm;13 off_t NAVERAGE, NMEASURE, NLENSING, NSTARPAR, Naverage, Nmeasure, Nlensing, Nstarpar, NsecfiltIn, NsecfiltOut, Nm; 14 14 15 15 Naverage = output[0].Naverage; … … 78 78 output[0].average[Naverage].Nlensing = Nm; 79 79 80 Nm = 0; 81 for (j = 0; j < input[0].average[i].Nstarpar; j++) { 82 offset = input[0].average[i].starparOffset + j; 83 84 output[0].starpar[Nstarpar] = input[0].starpar[offset]; 85 output[0].starpar[Nstarpar].averef = Naverage; 86 87 Nstarpar ++; 88 Nm ++; 89 if (Nstarpar == NSTARPAR) { 90 NSTARPAR += 1000; 91 REALLOCATE (output[0].starpar, StarPar, NSTARPAR); 92 } 93 } 94 output[0].average[Naverage].Nstarpar = Nm; 95 80 96 Naverage ++; 81 97 if (Naverage == NAVERAGE) { … … 88 104 REALLOCATE (output[0].measure, Measure, MAX (Nmeasure, 1)); 89 105 REALLOCATE (output[0].lensing, Lensing, MAX (Nlensing, 1)); 106 REALLOCATE (output[0].starpar, StarPar, MAX (Nstarpar, 1)); 90 107 REALLOCATE (output[0].secfilt, SecFilt, NsecfiltOut*MAX (Naverage, 1)); 91 108 output[0].Naverage = Naverage; 92 109 output[0].Nlensing = Nlensing; 110 output[0].Nstarpar = Nstarpar; 93 111 output[0].Nsecf_mem = Naverage * NsecfiltOut; 94 112 -
branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/merge_catalogs_old.c
r37512 r37585 14 14 double *X1, *Y1, *X2, *Y2; 15 15 double dX, dY, dR; 16 off_t *N1, *N2, *next_meas, *next_lens ;17 off_t Nave, NAVE, Nmeas, NMEAS, Nmatch, Nlens, NLENS ;16 off_t *N1, *N2, *next_meas, *next_lens, *next_star; 17 off_t Nave, NAVE, Nmeas, NMEAS, Nmatch, Nlens, NLENS, Nstar, NSTAR; 18 18 int NsecfiltIn; 19 19 int NsecfiltOut; … … 53 53 NMEAS = Nmeas = output[0].Nmeasure; 54 54 NLENS = Nlens = output[0].Nlensing; 55 NSTAR = Nstar = output[0].Nstarpar; 55 56 56 57 // current max obj ID for this catalog … … 116 117 next_meas = init_measure_links (output[0].average, Nave, output[0].measure, Nmeas); 117 118 next_lens = init_lensing_links (output[0].average, Nave, output[0].lensing, Nlens); 119 next_star = init_starpar_links (output[0].average, Nave, output[0].starpar, Nstar); 118 120 } else { 119 121 next_meas = build_measure_links (output[0].average, Nave, output[0].measure, Nmeas); 120 122 next_lens = build_lensing_links (output[0].average, Nave, output[0].lensing, Nlens); 123 next_star = build_starpar_links (output[0].average, Nave, output[0].starpar, Nstar); 121 124 } 122 125 … … 180 183 REALLOCATE (output[0].measure, Measure, NMEAS); 181 184 } 182 if (Nlens + input[0].average[N].N measure>= NLENS) {183 NLENS = Nlens + input[0].average[N].N measure+ 1000;185 if (Nlens + input[0].average[N].Nlensing >= NLENS) { 186 NLENS = Nlens + input[0].average[N].Nlensing + 1000; 184 187 REALLOCATE (next_lens, off_t, NLENS); 185 188 REALLOCATE (output[0].lensing, Lensing, NLENS); 189 } 190 if (Nstar + input[0].average[N].Nstarpar >= NSTAR) { 191 NSTAR = Nstar + input[0].average[N].Nstarpar + 1000; 192 REALLOCATE (next_star, off_t, NSTAR); 193 REALLOCATE (output[0].starpar, StarPar, NSTAR); 186 194 } 187 195 … … 270 278 } 271 279 280 // if lensing measurements exist, add them too 281 if (output[0].starpar) { 282 for (Nin = 0; Nin < input[0].average[N].Nstarpar; Nin++) { 283 /* add to end of lensing list */ 284 add_star_link (&output[0].average[n], next_star, Nstar, NSTAR); 285 286 // set the new starpar 287 off_t staroff = input[0].average[N].starparOffset + Nin; 288 output[0].starpar[Nstar] = input[0].starpar[staroff]; 289 290 output[0].starpar[Nstar].averef = n; 291 output[0].starpar[Nstar].objID = output[0].average[n].objID; 292 output[0].starpar[Nstar].catID = output[0].catID; 293 output[0].average[n].Nstarpar ++; 294 Nstar ++; 295 } 296 } 297 272 298 // update the average properties to reflect the incoming entries: 273 299 // if the original value is NAN but the input value is not, accept the input: … … 315 341 REALLOCATE (output[0].lensing, Lensing, NLENS); 316 342 } 343 if (Nstar + input[0].average[N].Nstarpar >= NSTAR) { 344 NSTAR = Nstar + input[0].average[N].Nstarpar + 1000; 345 REALLOCATE (next_star, off_t, NSTAR); 346 REALLOCATE (output[0].starpar, StarPar, NSTAR); 347 } 317 348 if (Nave >= NAVE) { 318 349 NAVE = Nave + 1000; … … 412 443 } 413 444 445 /** add starpar for this input average object **/ 446 if (output[0].starpar) { 447 output[0].average[Nave].starparOffset = Nstar; 448 for (Nin = 0; Nin < input[0].average[N].Nstarpar; Nin ++) { 449 // supply the starpar values from this detection 450 off_t staroff = input[0].average[N].starparOffset + Nin; 451 output[0].starpar[Nstar] = input[0].starpar[staroff]; 452 453 // the following starpar elements cannot be set until here: 454 output[0].starpar[Nstar].averef = Nave; 455 output[0].starpar[Nstar].objID = output[0].average[Nave].objID; 456 output[0].starpar[Nstar].catID = output[0].catID; 457 458 // as we add starpar, update Nstarpar to match 459 output[0].average[Nave].Nstarpar ++; 460 461 /* we set next[Nstar] to -1 here, and update correctly below */ 462 next_star[Nstar] = -1; 463 Nstar ++; 464 } 465 int Ngroup = input[0].average[N].Nstarpar; 466 for (j = 0; j < Ngroup - 1; j++) { 467 next_star[Nstar - Ngroup + j] = Nstar - Ngroup + j + 1; 468 } 469 } 470 414 471 Nave ++; 415 472 } … … 420 477 REALLOCATE (output[0].measure, Measure, Nmeas); 421 478 REALLOCATE (output[0].lensing, Lensing, Nlens); 479 REALLOCATE (output[0].starpar, StarPar, Nstar); 422 480 423 481 # define NOSORT 0 … … 428 486 output[0].measure = sort_measure (output[0].average, Nave, output[0].measure, Nmeas, next_meas); 429 487 output[0].lensing = sort_lensing (output[0].average, Nave, output[0].lensing, Nlens, next_lens); 488 output[0].starpar = sort_starpar (output[0].average, Nave, output[0].starpar, Nstar, next_star); 430 489 } 431 490 … … 444 503 output[0].Nmeasure = Nmeas; 445 504 output[0].Nlensing = Nlens; 505 output[0].Nstarpar = Nstar; 446 506 output[0].Nsecf_mem = Nave*NsecfiltOut; 447 507 if (VERBOSE) fprintf (stderr, "Nstars, Nave, Nmeas, Nlens: "OFF_T_FMT" "OFF_T_FMT" "OFF_T_FMT" "OFF_T_FMT", ("OFF_T_FMT" matches)\n", Nstars, Nave, Nmeas, Nlens, Nmatch); … … 449 509 free (next_meas); 450 510 free (next_lens); 511 free (next_star); 451 512 452 513 free (X2);
Note:
See TracChangeset
for help on using the changeset viewer.
