|
600 | 600 | +f"{job_COMOUT_image_name}")
|
601 | 601 | gda_util.copy_file(job_work_image_name,
|
602 | 602 | job_COMOUT_image_name)
|
603 |
| - elif plot == 'lead_by_date': |
604 |
| - import global_ens_chem_plots_lead_by_date as gdap_lbd |
605 |
| - for lbd_info in list(itertools.product(valid_hrs, var_info)): |
606 |
| - date_info_dict['valid_hr_start'] = str(lbd_info[0]) |
607 |
| - date_info_dict['valid_hr_end'] = str(lbd_info[0]) |
608 |
| - date_info_dict['valid_hr_inc'] = '24' |
609 |
| - date_info_dict['forecast_hours'] = fhrs |
610 |
| - plot_info_dict['fcst_var_name'] = lbd_info[1][0][0] |
611 |
| - plot_info_dict['fcst_var_level'] = lbd_info[1][0][1] |
612 |
| - plot_info_dict['fcst_var_thresh'] = lbd_info[1][0][2] |
613 |
| - plot_info_dict['obs_var_name'] = lbd_info[1][1][0] |
614 |
| - plot_info_dict['obs_var_level'] = lbd_info[1][1][1] |
615 |
| - plot_info_dict['obs_var_thresh'] = lbd_info[1][1][2] |
616 |
| - job_work_image_name = plot_specs.get_savefig_name( |
617 |
| - job_work_dir, plot_info_dict, date_info_dict |
618 |
| - ) |
619 |
| - job_COMOUT_image_name = job_work_image_name.replace( |
620 |
| - job_work_dir, job_COMOUT_dir |
621 |
| - ) |
622 |
| - job_DATA_image_name = job_work_image_name.replace( |
623 |
| - job_work_dir, job_DATA_dir |
624 |
| - ) |
625 |
| - if SENDCOM == 'YES': |
626 |
| - check_job_image_name = job_COMOUT_image_name |
627 |
| - job_input_dir = job_COMOUT_dir |
628 |
| - else: |
629 |
| - check_job_image_name = job_DATA_image_name |
630 |
| - job_input_dir = job_DATA_dir |
631 |
| - if not os.path.exists(job_work_image_name) \ |
632 |
| - and plot_info_dict['stat'] != 'FBAR_OBAR': |
633 |
| - if len(date_info_dict['forecast_hours']) <= 1: |
634 |
| - logger.warning("No span of forecast hours to plot, " |
635 |
| - +"given 1 forecast hour, skipping " |
636 |
| - +"lead_by_date plots") |
637 |
| - make_lbd = False |
638 |
| - else: |
639 |
| - make_lbd = True |
640 |
| - else: |
641 |
| - make_lbd = False |
642 |
| - if make_lbd: |
643 |
| - plot_lbd = gdap_lbd.LeadByDate(logger, job_input_dir+'/..', |
644 |
| - job_work_dir, model_info_dict, |
645 |
| - date_info_dict, plot_info_dict, |
646 |
| - met_info_dict, logo_dir) |
647 |
| - plot_lbd.make_lead_by_date() |
648 |
| - if SENDCOM == 'YES' and os.path.exists(job_work_image_name): |
649 |
| - logger.info(f"Copying {job_work_image_name} to " |
650 |
| - +f"{job_COMOUT_image_name}") |
651 |
| - gda_util.copy_file(job_work_image_name, |
652 |
| - job_COMOUT_image_name) |
653 |
| - elif plot == 'stat_by_level': |
654 |
| - import global_ens_chem_plots_stat_by_level as gdap_sbl |
655 |
| - vert_profiles = [os.environ['vert_profile']] |
656 |
| - for sbl_info in \ |
657 |
| - list(itertools.product(valid_hrs, fhrs, vert_profiles)): |
658 |
| - date_info_dict['valid_hr_start'] = str(sbl_info[0]) |
659 |
| - date_info_dict['valid_hr_end'] = str(sbl_info[0]) |
660 |
| - date_info_dict['valid_hr_inc'] = '24' |
661 |
| - date_info_dict['forecast_hour'] = str(sbl_info[1]) |
662 |
| - plot_info_dict['fcst_var_name'] = fcst_var_name |
663 |
| - plot_info_dict['obs_var_name'] = obs_var_name |
664 |
| - plot_info_dict['vert_profile'] = sbl_info[2] |
665 |
| - plot_info_dict['fcst_var_level'] = sbl_info[2] |
666 |
| - plot_info_dict['obs_var_level'] = sbl_info[2] |
667 |
| - init_hr = gda_util.get_init_hour( |
668 |
| - int(date_info_dict['valid_hr_start']), |
669 |
| - int(date_info_dict['forecast_hour']) |
670 |
| - ) |
671 |
| - for t in range(len(fcst_var_thresh_list)): |
672 |
| - plot_info_dict['fcst_var_thresh'] = fcst_var_thresh_list[t] |
673 |
| - plot_info_dict['obs_var_thresh'] = obs_var_thresh_list[t] |
674 |
| - job_work_image_name = plot_specs.get_savefig_name( |
675 |
| - job_work_dir, plot_info_dict, date_info_dict |
676 |
| - ) |
677 |
| - job_COMOUT_image_name = job_work_image_name.replace( |
678 |
| - job_work_dir, job_COMOUT_dir |
679 |
| - ) |
680 |
| - job_DATA_image_name = job_work_image_name.replace( |
681 |
| - job_work_dir, job_DATA_dir |
682 |
| - ) |
683 |
| - if SENDCOM == 'YES': |
684 |
| - check_job_image_name = job_COMOUT_image_name |
685 |
| - job_input_dir = job_COMOUT_dir |
686 |
| - else: |
687 |
| - check_job_image_name = job_DATA_image_name |
688 |
| - job_input_dir = job_DATA_dir |
689 |
| - if init_hr in init_hrs \ |
690 |
| - and not os.path.exists(check_job_image_name) \ |
691 |
| - and plot_info_dict['stat'] != 'FBAR_OBAR': |
692 |
| - make_sbl = True |
693 |
| - else: |
694 |
| - make_sbl = False |
695 |
| - del plot_info_dict['fcst_var_level'] |
696 |
| - del plot_info_dict['obs_var_level'] |
697 |
| - if make_sbl: |
698 |
| - plot_sbl = gdap_sbl.StatByLevel(logger, |
699 |
| - job_input_dir+'/..', |
700 |
| - job_work_dir, |
701 |
| - model_info_dict, |
702 |
| - date_info_dict, |
703 |
| - plot_info_dict, |
704 |
| - met_info_dict, logo_dir) |
705 |
| - plot_sbl.make_stat_by_level() |
706 |
| - if SENDCOM == 'YES' \ |
707 |
| - and os.path.exists(job_work_image_name): |
708 |
| - logger.info(f"Copying {job_work_image_name} to " |
709 |
| - +f"{job_COMOUT_image_name}") |
710 |
| - gda_util.copy_file(job_work_image_name, |
711 |
| - job_COMOUT_image_name) |
712 |
| - elif plot == 'lead_by_level': |
713 |
| - import global_ens_chem_plots_lead_by_level as gdap_lbl |
714 |
| - if evs_run_mode == 'production': |
715 |
| - fhrs_lbl = [] |
716 |
| - for fhr in fhrs: |
717 |
| - if fhr % 24 == 0: |
718 |
| - fhrs_lbl.append(fhr) |
719 |
| - else: |
720 |
| - fhrs_lbl = fhrs |
721 |
| - vert_profiles = [os.environ['vert_profile']] |
722 |
| - for lbl_info in list(itertools.product(valid_hrs, vert_profiles)): |
723 |
| - date_info_dict['valid_hr_start'] = str(lbl_info[0]) |
724 |
| - date_info_dict['valid_hr_end'] = str(lbl_info[0]) |
725 |
| - date_info_dict['valid_hr_inc'] = '24' |
726 |
| - date_info_dict['forecast_hours'] = fhrs_lbl |
727 |
| - plot_info_dict['fcst_var_name'] = fcst_var_name |
728 |
| - plot_info_dict['obs_var_name'] = obs_var_name |
729 |
| - plot_info_dict['vert_profile'] = lbl_info[1] |
730 |
| - plot_info_dict['fcst_var_level'] = lbl_info[1] |
731 |
| - plot_info_dict['obs_var_level'] = lbl_info[1] |
732 |
| - for t in range(len(fcst_var_thresh_list)): |
733 |
| - plot_info_dict['fcst_var_thresh'] = fcst_var_thresh_list[t] |
734 |
| - plot_info_dict['obs_var_thresh'] = obs_var_thresh_list[t] |
735 |
| - job_work_image_name = plot_specs.get_savefig_name( |
736 |
| - job_work_dir, plot_info_dict, date_info_dict |
737 |
| - ) |
738 |
| - job_COMOUT_image_name = job_work_image_name.replace( |
739 |
| - job_work_dir, job_COMOUT_dir |
740 |
| - ) |
741 |
| - job_DATA_image_name = job_work_image_name.replace( |
742 |
| - job_work_dir, job_DATA_dir |
743 |
| - ) |
744 |
| - if SENDCOM == 'YES': |
745 |
| - check_job_image_name = job_COMOUT_image_name |
746 |
| - job_input_dir = job_COMOUT_dir |
747 |
| - else: |
748 |
| - check_job_image_name = job_DATA_image_name |
749 |
| - job_input_dir = job_DATA_dir |
750 |
| - if not os.path.exists(check_job_image_name) \ |
751 |
| - and plot_info_dict['stat'] != 'FBAR_OBAR': |
752 |
| - if len(date_info_dict['forecast_hours']) <= 1: |
753 |
| - logger.warning("No span of forecast hours to plot, " |
754 |
| - +"given 1 forecast hour, skipping " |
755 |
| - +"lead_by_level plots") |
756 |
| - make_lbl = False |
757 |
| - else: |
758 |
| - make_lbl = True |
759 |
| - else: |
760 |
| - make_lbl = False |
761 |
| - del plot_info_dict['fcst_var_level'] |
762 |
| - del plot_info_dict['obs_var_level'] |
763 |
| - if make_lbl: |
764 |
| - plot_lbl = gdap_lbl.LeadByLevel(logger, |
765 |
| - job_input_dir+'/..', |
766 |
| - job_work_dir, |
767 |
| - model_info_dict, |
768 |
| - date_info_dict, |
769 |
| - plot_info_dict, |
770 |
| - met_info_dict, logo_dir) |
771 |
| - plot_lbl.make_lead_by_level() |
772 |
| - if SENDCOM == 'YES' \ |
773 |
| - and os.path.exists(job_work_image_name): |
774 |
| - logger.info(f"Copying {job_work_image_name} to " |
775 |
| - +f"{job_COMOUT_image_name}") |
776 |
| - gda_util.copy_file(job_work_image_name, |
777 |
| - job_COMOUT_image_name) |
778 |
| - elif plot == 'nohrsc_spatial_map': |
779 |
| - import global_ens_chem_plots_nohrsc_spatial_map as gdap_nsm |
780 |
| - nohrsc_data_dir = os.path.join(VERIF_CASE_STEP_dir, 'data', 'nohrsc') |
781 |
| - date_info_dict['valid_hr_start'] = str(valid_hrs[0]) |
782 |
| - date_info_dict['valid_hr_end'] = str(valid_hrs[0]) |
783 |
| - date_info_dict['valid_hr_inc'] = '24' |
784 |
| - plot_info_dict['obs_var_name'] = obs_var_name |
785 |
| - plot_info_dict['obs_var_level'] = obs_var_level_list[0] |
786 |
| - if SENDCOM == 'YES': |
787 |
| - job_final_output_dir = job_COMOUT_dir |
788 |
| - else: |
789 |
| - job_final_output_dir = job_DATA_dir |
790 |
| - plot_nsm = gdap_nsm.NOHRSCSpatialMap(logger, nohrsc_data_dir, |
791 |
| - job_work_dir, |
792 |
| - job_final_output_dir, |
793 |
| - date_info_dict, plot_info_dict, |
794 |
| - logo_dir) |
795 |
| - plot_nsm.make_nohrsc_spatial_map() |
796 |
| - elif plot == 'precip_spatial_map': |
797 |
| - model_info_dict['obs'] = {'name': 'ccpa', |
798 |
| - 'plot_name': 'ccpa', |
799 |
| - 'obs_name': '24hrCCPA'} |
800 |
| - pcp_combine_base_dir = os.path.join(VERIF_CASE_STEP_dir, 'data') |
801 |
| - import global_ens_chem_plots_precip_spatial_map as gdap_psm |
802 |
| - for psm_info in \ |
803 |
| - list(itertools.product(valid_hrs, fhrs)): |
804 |
| - date_info_dict['valid_hr_start'] = str(psm_info[0]) |
805 |
| - date_info_dict['valid_hr_end'] = str(psm_info[0]) |
806 |
| - date_info_dict['valid_hr_inc'] = '24' |
807 |
| - date_info_dict['forecast_hour'] = str(psm_info[1]) |
808 |
| - plot_info_dict['fcst_var_name'] = fcst_var_name |
809 |
| - plot_info_dict['fcst_var_level'] = fcst_var_level_list[0] |
810 |
| - plot_info_dict['fcst_var_thresh'] = 'NA' |
811 |
| - plot_info_dict['obs_var_name'] = obs_var_name |
812 |
| - plot_info_dict['obs_var_level'] = obs_var_level_list[0] |
813 |
| - plot_info_dict['obs_var_thresh'] = 'NA' |
814 |
| - plot_info_dict['interp_points'] = 'NA' |
815 |
| - if SENDCOM == 'YES': |
816 |
| - job_final_output_dir = job_COMOUT_dir |
817 |
| - else: |
818 |
| - job_final_output_dir = job_DATA_dir |
819 |
| - plot_psm = gdap_psm.PrecipSpatialMap(logger, pcp_combine_base_dir, |
820 |
| - job_work_dir, |
821 |
| - job_final_output_dir, |
822 |
| - model_info_dict, |
823 |
| - date_info_dict, |
824 |
| - plot_info_dict, |
825 |
| - met_info_dict, logo_dir) |
826 |
| - plot_psm.make_precip_spatial_map() |
827 | 603 | elif plot == 'performance_diagram':
|
828 | 604 | import global_ens_chem_plots_performance_diagram as gdap_pd
|
829 | 605 | for pd_info in list(itertools.product(valid_hrs, fhrs)):
|
|
0 commit comments