Changeset 24836 for trunk/psModules/src/detrend/pmFringeStats.c
- Timestamp:
- Jul 17, 2009, 1:13:04 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/detrend/pmFringeStats.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/detrend/pmFringeStats.c
r24095 r24836 464 464 for (long i = 0; i < fringes->n; i++) { 465 465 pmFringeStats *fringe = fringes->data[i]; // The fringe of interest 466 if (!fringe) { 467 psWarning ("skipping empty fringe stats for entry %ld -- video cell?\n", i); 468 continue; 469 } 466 470 pmFringeRegions *regions = fringe->regions; // The fringe regions 467 471 if (numPoints == 0) { … … 496 500 for (long i = 0; i < fringes->n; i++) { 497 501 pmFringeStats *fringe = fringes->data[i]; // The fringe of interest 502 if (!fringe) { 503 psWarning ("skipping empty fringe stats for entry %ld -- video cell?\n", i); 504 continue; 505 } 498 506 pmFringeRegions *regions = fringe->regions; // The fringe regions 499 507 // Copy the data over … … 520 528 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 521 529 522 bool pmFringesFormat(pmCell *cell,psMetadata *header, const psArray *fringes)523 { 524 PS_ASSERT_PTR_NON_NULL( cell, false);530 psArray *pmFringesFormatTable(psMetadata *header, const psArray *fringes) 531 { 532 PS_ASSERT_PTR_NON_NULL(header, false); 525 533 PS_ASSERT_ARRAY_NON_NULL(fringes, false); 526 534 … … 531 539 if (stats->regions != regions) { 532 540 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Regions for fringe statistics are not identical.\n"); 533 return false;541 return NULL; 534 542 } 535 543 } … … 557 565 // Vectors: x, y, mask, f, df 558 566 559 psMetadata *scalars = psMemIncrRefCounter(header); // Metadata to hold the scalars; will be the header 560 if (!scalars) { 561 scalars = psMetadataAlloc(); 562 } 563 psMetadataAddS32(scalars, PS_LIST_TAIL, "PSFRNGDX", PS_META_REPLACE, "Median box half-width", 564 regions->dX); 565 psMetadataAddS32(scalars, PS_LIST_TAIL, "PSFRNGDY", PS_META_REPLACE, "Median box half-height", 566 regions->dY); 567 psMetadataAddS32(scalars, PS_LIST_TAIL, "PSFRNGNX", PS_META_REPLACE, "Large-scale smoothing in x", 568 regions->nX); 569 psMetadataAddS32(scalars, PS_LIST_TAIL, "PSFRNGNY", PS_META_REPLACE, "Large-scale smoothing in y", 570 regions->nY); 571 psMetadataAdd(cell->analysis, PS_LIST_TAIL, "FRINGE.HEADER", PS_DATA_METADATA, 572 "Header for fringe data", scalars); 573 psFree(scalars); 574 567 psMetadataAddS32(header, PS_LIST_TAIL, "PSFRNGDX", PS_META_REPLACE, "Median box half-width", regions->dX); 568 psMetadataAddS32(header, PS_LIST_TAIL, "PSFRNGDY", PS_META_REPLACE, "Median box half-height", regions->dY); 569 psMetadataAddS32(header, PS_LIST_TAIL, "PSFRNGNX", PS_META_REPLACE, "Large-scale smoothing in x", regions->nX); 570 psMetadataAddS32(header, PS_LIST_TAIL, "PSFRNGNY", PS_META_REPLACE, "Large-scale smoothing in y", regions->nY); 575 571 576 572 psArray *table = psArrayAlloc(numRows); // The table … … 605 601 } 606 602 607 psMetadataAdd(cell->analysis, PS_LIST_TAIL, "FRINGE", PS_DATA_ARRAY, "Fringe data", table); 608 609 return true; 610 } 611 612 613 psArray *pmFringesParse(pmCell *cell) 614 { 615 PS_ASSERT_PTR_NON_NULL(cell, NULL); 603 return table; 604 } 605 606 psArray *pmFringesParseTable(psArray *table, psMetadata *header) 607 { 608 PS_ASSERT_PTR_NON_NULL(table, NULL); 609 PS_ASSERT_PTR_NON_NULL(header, NULL); 616 610 617 611 bool mdok; // Status of MD lookup 618 psMetadata *header = psMetadataLookupMetadata(&mdok, cell->analysis, "FRINGE.HEADER"); // Header619 if (!mdok || !header) {620 psError(PS_ERR_UNKNOWN, false, "Unable to find header for fringe data.\n");621 return NULL;622 }623 624 psArray *table = psMetadataLookupPtr(NULL, cell->analysis, "FRINGE"); // FITS table625 if (!table) {626 psError(PS_ERR_UNKNOWN, false, "Unable to find table for fringe data.\n");627 return NULL;628 }629 630 612 631 613 // Read the scalars from the header … … 722 704 } 723 705 706 bool pmFringesFormat(pmCell *cell, psMetadata *inHeader, const psArray *fringes) 707 { 708 PS_ASSERT_PTR_NON_NULL(cell, false); 709 PS_ASSERT_ARRAY_NON_NULL(fringes, false); 710 711 psMetadata *header = psMemIncrRefCounter(inHeader); // Metadata to hold the scalars; will be the header 712 if (!inHeader) { 713 inHeader = psMetadataAlloc(); 714 } 715 716 psArray *table = pmFringesFormatTable(header, fringes); 717 if (!table) { 718 psError (PS_ERR_UNKNOWN, false, "unable to generate table from fringes"); 719 psFree(header); 720 return NULL; 721 } 722 723 psMetadataAdd(cell->analysis, PS_LIST_TAIL, "FRINGE.HEADER", PS_DATA_METADATA, "Header for fringe data", header); 724 psFree(header); 725 726 psMetadataAdd(cell->analysis, PS_LIST_TAIL, "FRINGE.TABLE", PS_DATA_ARRAY, "Fringe data", table); 727 psFree(table); 728 729 return true; 730 } 731 732 psArray *pmFringesParse(pmCell *cell) 733 { 734 PS_ASSERT_PTR_NON_NULL(cell, NULL); 735 736 bool mdok; // Status of MD lookup 737 psMetadata *header = psMetadataLookupMetadata(&mdok, cell->analysis, "FRINGE.HEADER"); // Header 738 if (!mdok || !header) { 739 psError(PS_ERR_UNKNOWN, false, "Unable to find header for fringe data.\n"); 740 return NULL; 741 } 742 743 psArray *table = psMetadataLookupPtr(NULL, cell->analysis, "FRINGE.TABLE"); // FITS table 744 if (!table) { 745 psError(PS_ERR_UNKNOWN, false, "Unable to find table for fringe data.\n"); 746 return NULL; 747 } 748 749 psArray *fringes = pmFringesParseTable(table, header); 750 if (!fringes) { 751 psError(PS_ERR_UNKNOWN, false, "Unable to add parse the fringe table data"); 752 return NULL; 753 } 754 755 return fringes; 756 } 724 757 725 758 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
Note:
See TracChangeset
for help on using the changeset viewer.
