err.message("{0:,d} sources detected: {1:,d} positive and {2:,d} negative.".format(NRdet, NRdet - NRdetNeg, NRdetNeg)) if Parameters["pipeline"]["trackMemory"]: print_memory_usage(t0) # Set catalogue header if "bunit" in dict_Header: dunits = dict_Header["bunit"] else: dunits = "-" # ------------------------------------- # ---- OUTPUT FOR DEBUGGING (MASK) ---- # ------------------------------------- if Parameters['steps']['doDebug'] and Parameters["steps"]["doMerge"] and NRdet: err.print_progress_message("Writing all-source mask cube for debugging", t0) writemask.writeMask(mask, dict_Header, Parameters, '%s_mask.debug_all.fits' % outroot, Parameters['writeCat']['compress'], Parameters['writeCat']['overwrite']) # ---------------------------------------------------- # ---- ESTIMATE RELIABILITY FROM NEGATIVE SOURCES ---- # ---------------------------------------------------- if Parameters["steps"]["doReliability"] and Parameters["steps"]["doMerge"] and NRdet: if not NRdetNeg: err.print_progress_time(t0) err.error( "You asked SoFiA to calculate the reliability of the detected\n" "sources. Unfortunately, this calculation cannot be done be-\n" "cause there are no negative sources in the catalogue of de-\n" "tections. This could be due to your source-finding and/or\n"
if not NRdet: err.warning("No pixels detected. Exiting pipeline.", fatal=True) else: err.message("{0:,d} out of {1:,d} pixels detected ({2:.4f}%)".format( NRdet, np.array(mask.shape).prod(), 100.0 * float(NRdet) / float(np.array(mask.shape).prod()))) # ------------------------------------- # ---- OUTPUT FOR DEBUGGING (MASK) ---- # ------------------------------------- if Parameters["steps"]["doDebug"] and NRdet: err.print_progress_message("Writing binary mask cube for debugging", t0) writemask.writeMask(mask, dict_Header, Parameters, outputMaskCube.replace('_mask.fits', '_binmask.fits'), Parameters["writeCat"]["compress"], Parameters["writeCat"]["overwrite"]) # ----------------- # ---- MERGING ---- # ----------------- if Parameters["steps"]["doMerge"] and NRdet: err.print_progress_message("Merging detections", t0) objects = [] objects, mask = linker.link_objects( np_Cube, objects, mask, Parameters["merge"]["radiusX"], Parameters["merge"]["radiusY"], Parameters["merge"]["radiusZ"], Parameters["merge"]["minSizeX"], Parameters["merge"]["minSizeY"], Parameters["merge"]["minSizeZ"], Parameters["merge"]["maxSizeX"], Parameters["merge"]["maxSizeY"], Parameters["merge"]["maxSizeZ"],
err.message("{0:,d} sources detected: {1:,d} positive and {2:,d} negative.".format(NRdet, NRdet - NRdetNeg, NRdetNeg)) if Parameters["pipeline"]["trackMemory"]: print_memory_usage(t0) # Set catalogue header if "bunit" in dict_Header: dunits = dict_Header["bunit"] else: dunits = "-" # ------------------------------------- # ---- OUTPUT FOR DEBUGGING (MASK) ---- # ------------------------------------- if Parameters["steps"]["doDebug"] and Parameters["steps"]["doMerge"] and NRdet: err.print_progress_message("Writing all-source mask cube for debugging", t0) writemask.writeMask(mask, dict_Header, Parameters, "%s_mask.debug_all.fits" % outroot, Parameters["writeCat"]["compress"], Parameters["writeCat"]["overwrite"]) # ---------------------------------------------------- # ---- ESTIMATE RELIABILITY FROM NEGATIVE SOURCES ---- # ---------------------------------------------------- if Parameters["steps"]["doReliability"] and Parameters["steps"]["doMerge"] and NRdet: if not NRdetNeg: err.print_progress_time(t0) err.error( "You asked SoFiA to calculate the reliability of the detected\n" "sources. Unfortunately, this calculation cannot be done be-\n" "cause there are no negative sources in the catalogue of de-\n" "tections. This could be due to your source-finding and/or\n"
objects=np.array(objects) objects[:,catParNames.index('snr_min')]/=globalrms objects[:,catParNames.index('snr_max')]/=globalrms objects[:,catParNames.index('snr_sum')]/=globalrms objects=[list(jj) for jj in list(objects)] # ------------------------------------- # ---- OUTPUT FOR DEBUGGING (MASK) ---- # ------------------------------------- if Parameters['steps']['doDebug'] and NRdet: print "\n--- %.3f seconds since start"%(time()-t0) print "\n--- SoFiA: Writing all-source mask cube for debugging ---" sys.stdout.flush() writemask.writeMask(mask, dict_Header, Parameters, '%s_mask.debug_all.fits'%outroot,Parameters['writeCat']['compress']) # ---------------------------------------------------- # ---- ESTIMATE RELIABILITY FROM NEGATIVE SOURCES ---- # ---------------------------------------------------- if Parameters['steps']['doReliability'] and Parameters['steps']['doMerge'] and NRdet: print "\n--- %.3f seconds since start"%(time()-t0) print "\n--- SoFiA: Determining reliability ---" sys.stdout.flush() objects,reliable = addrel.EstimateRel(np.array(objects), outroot, catParNames, **Parameters['reliability']) print 'The following sources have been detected:', reliable print catParNames = tuple(list(catParNames) + ['n_pos', 'n_neg', 'rel'])
sys.stdout.flush() objects, mask = linker.link_objects(np_Cube, mask, **Parameters["merge"]) print "Merging complete" print # ------------------------------------- # ---- OUTPUT FOR DEBUGGING (MASK) ---- # ------------------------------------- if Parameters["steps"]["doDebug"] and NRdet: print "\n--- SoFiA: Writing all-source mask cube for debugging ---" sys.stdout.flush() writemask.writeMask(mask, dict_Header, Parameters, "%s_mask.debug_all.fits" % outroot) # ---------------------------------------------------- # ---- ESTIMATE RELIABILITY FROM NEGATIVE SOURCES ---- # ---------------------------------------------------- if Parameters["steps"]["doReliability"] and Parameters["steps"]["doMerge"] and NRdet: print "\n--- SoFiA: Determining reliability ---" sys.stdout.flush() objects, reliable = addrel.EstimateRel(np.array(objects), outroot, **Parameters["reliability"]) print "The following sources have been detected:", reliable print elif Parameters["steps"]["doMerge"] and NRdet: reliable = list(np.array(objects)[np.array(objects)[:, 16] > 0, 0].astype(int)) # select all positive sources print "The following sources have been detected:", reliable
NRdet = len(objects) NRdetNeg = (np.array(objects)[:,16] < 0).sum() print (str(NRdet) + ' sources detected: ' + str(NRdet - NRdetNeg) + ' positive, ' + str(NRdetNeg) + ' negative.') # Set catalogue header if 'bunit' in dict_Header: dunits = dict_Header['bunit'] else: dunits = '-' # ------------------------------------- # ---- OUTPUT FOR DEBUGGING (MASK) ---- # ------------------------------------- if Parameters['steps']['doDebug'] and NRdet: printProgressMessage("Writing all-source mask cube for debugging") writemask.writeMask(mask, dict_Header, Parameters, '%s_mask.debug_all.fits' % outroot, Parameters['writeCat']['compress'], Parameters['writeCat']['overwrite']) # ---------------------------------------------------- # ---- ESTIMATE RELIABILITY FROM NEGATIVE SOURCES ---- # ---------------------------------------------------- if Parameters['steps']['doReliability'] and Parameters['steps']['doMerge'] and NRdet and not NRdetNeg: printProgressTime() sys.stderr.write("------------------------------------------------------------------------------\n") sys.stderr.write("ERROR: You asked SoFiA to calculate the reliability of the detected sources.\n") sys.stderr.write(" Unfortunately, this calculation cannot be done because there are no\n") sys.stderr.write(" negative sources in the catalogue of detections. This may occur because\n") sys.stderr.write(" of your source-finding and/or filtering settings.\n") sys.stderr.write(" Negative sources are strictly necessary to calculate the reliability.\n") sys.stderr.write(" You can do one of the following:\n")
NRdet, NRdet - NRdetNeg, NRdetNeg)) if Parameters["pipeline"]["trackMemory"]: print_memory_usage(t0) # Set catalogue header if "bunit" in dict_Header: dunits = dict_Header["bunit"] else: dunits = "-" # ------------------------------------- # ---- OUTPUT FOR DEBUGGING (MASK) ---- # ------------------------------------- if Parameters["steps"]["doDebug"] and Parameters["steps"]["doMerge"] and NRdet: err.print_progress_message("Writing all-source mask cube for debugging", t0) writemask.writeMask(mask, dict_Header, Parameters, "%s_mask.debug_all.fits" % outroot, Parameters["writeCat"]["compress"], Parameters["writeCat"]["overwrite"]) # ---------------------------------------------------- # ---- ESTIMATE RELIABILITY FROM NEGATIVE SOURCES ---- # ---------------------------------------------------- if Parameters["steps"]["doReliability"] and Parameters["steps"][ "doMerge"] and NRdet: if not NRdetNeg: err.print_progress_time(t0) err.error( "You asked SoFiA to calculate the reliability of the detected\n" "sources. Unfortunately, this calculation cannot be done be-\n" "cause there are no negative sources in the catalogue of de-\n" "tections. This could be due to your source-finding and/or\n"