Coverage for pesummary/gw/webpage/public.py: 0.0%

62 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-05-02 08:42 +0000

1# Licensed under an MIT style license -- see LICENSE.md 

2 

3import os 

4from .main import _WebpageGeneration as _GWWebpageGeneration 

5from pesummary.core.webpage import webpage 

6 

7__author__ = ["Charlie Hoy <charlie.hoy@ligo.org>"] 

8 

9 

10class _PublicWebpageGeneration(_GWWebpageGeneration): 

11 """ 

12 """ 

13 def __init__( 

14 self, webdir=None, samples=None, labels=None, publication=None, 

15 user=None, config=None, same_parameters=None, base_url=None, 

16 file_versions=None, hdf5=None, colors=None, custom_plotting=None, 

17 pepredicates_probs=None, gracedb=None, approximant=None, key_data=None, 

18 file_kwargs=None, existing_labels=None, existing_config=None, 

19 existing_file_version=None, existing_injection_data=None, 

20 existing_samples=None, existing_metafile=None, add_to_existing=False, 

21 existing_file_kwargs=None, existing_weights=None, result_files=None, 

22 notes=None, disable_comparison=False, pastro_probs=None, gwdata=None, 

23 disable_interactive=False, publication_kwargs={}, no_ligo_skymap=False, 

24 psd=None, priors=None, package_information={"packages": []}, 

25 mcmc_samples=False, external_hdf5_links=False, 

26 preliminary_pages=False, existing_plot=None, disable_expert=False, 

27 analytic_priors=None 

28 ): 

29 super(_PublicWebpageGeneration, self).__init__( 

30 webdir=webdir, samples=samples, labels=labels, 

31 publication=publication, user=user, config=config, 

32 same_parameters=same_parameters, base_url=base_url, 

33 file_versions=file_versions, hdf5=hdf5, colors=colors, 

34 custom_plotting=custom_plotting, 

35 pepredicates_probs=pepredicates_probs, gracedb=gracedb, 

36 approximant=approximant, key_data=key_data, file_kwargs=file_kwargs, 

37 existing_labels=existing_labels, existing_config=existing_config, 

38 existing_file_version=existing_file_version, 

39 existing_injection_data=existing_injection_data, 

40 existing_samples=existing_samples, 

41 existing_metafile=existing_metafile, 

42 add_to_existing=add_to_existing, 

43 existing_file_kwargs=existing_file_kwargs, 

44 existing_weights=existing_weights, result_files=result_files, 

45 notes=notes, disable_comparison=disable_comparison, 

46 pastro_probs=pastro_probs, gwdata=gwdata, 

47 disable_interactive=disable_interactive, 

48 publication_kwargs=publication_kwargs, 

49 no_ligo_skymap=no_ligo_skymap, psd=psd, priors=priors, 

50 package_information=package_information, 

51 mcmc_samples=mcmc_samples, external_hdf5_links=external_hdf5_links, 

52 preliminary_pages=preliminary_pages, existing_plot=existing_plot, 

53 disable_expert=disable_expert, analytic_priors=analytic_priors 

54 ) 

55 

56 def setup_page( 

57 self, html_page, links, label=None, title=None, approximant=None, 

58 background_colour=None, histogram_download=False 

59 ): 

60 """Set up each webpage with a header and navigation bar. 

61 

62 Parameters 

63 ---------- 

64 html_page: str 

65 String containing the html page that you would like to set up 

66 links: list 

67 List containing the navbar structure that you would like to include 

68 label: str, optional 

69 The label that prepends your webpage name 

70 title: str, optional 

71 String that you would like to include in your header 

72 approximant: str, optional 

73 The approximant that you would like associated with your html_page 

74 background_colour: str, optional 

75 String containing the background colour of your header 

76 histogram_download: bool, optional 

77 If true, a download link for the each histogram is displayed in 

78 the navbar 

79 """ 

80 html_file = webpage.open_html( 

81 web_dir=self.webdir, base_url=self.base_url, html_page=html_page, 

82 label=label 

83 ) 

84 html_file.make_header(approximant=approximant) 

85 if html_page == "home" or html_page == "home.html": 

86 html_file.make_navbar( 

87 links=links, samples_path=self.results_path["home"], 

88 background_color=background_colour, 

89 hdf5=self.hdf5, about=False 

90 ) 

91 elif histogram_download: 

92 html_file.make_navbar( 

93 links=links, samples_path=self.results_path["other"], 

94 histogram_download=os.path.join( 

95 "..", "samples", "dat", label, "{}_{}_samples.dat".format( 

96 label, html_page 

97 ) 

98 ), background_color=background_colour, hdf5=self.hdf5, 

99 about=False 

100 ) 

101 else: 

102 html_file.make_navbar( 

103 links=links, samples_path=self.results_path["home"], 

104 background_color=background_colour, hdf5=self.hdf5, 

105 about=False 

106 ) 

107 return html_file 

108 

109 def make_navbar_for_homepage(self): 

110 """Make a navbar for the homepage 

111 """ 

112 links = [ 

113 "home", ["Result Pages", self._result_page_links()], "Version" 

114 ] 

115 if len(self.samples) > 1: 

116 links[1][1] += ["Comparison"] 

117 if self.publication: 

118 links.insert(2, "Publication") 

119 if self.gwdata is not None: 

120 links.append(["Detchar", [i for i in self.gwdata.keys()]]) 

121 if self.notes is not None: 

122 links.append("Notes") 

123 return links 

124 

125 def make_navbar_for_result_page(self): 

126 """Make a navbar for the result page homepage 

127 """ 

128 links = { 

129 i: ["1d Histograms", [{"Custom": i}, {"All": i}]] for i in self.labels 

130 } 

131 for num, label in enumerate(self.labels): 

132 for j in self.categorize_parameters(self.samples[label].keys()): 

133 j = [j[0], [{k: label} for k in j[1]]] 

134 links[label].append(j) 

135 

136 final_links = { 

137 i: [ 

138 "home", ["Result Pages", self._result_page_links()], 

139 {"Corner": i}, {"Config": i}, links[i] 

140 ] for i in self.labels 

141 } 

142 if len(self.samples) > 1: 

143 for i in self.labels: 

144 final_links[i][1][1] += ["Comparison"] 

145 if self.make_interactive: 

146 for label in self.labels: 

147 final_links[label].append( 

148 ["Interactive", [{"Interactive_Corner": label}]] 

149 ) 

150 return final_links 

151 

152 def generate_webpages(self): 

153 """Generate all webpages for all result files passed 

154 """ 

155 if self.add_to_existing: 

156 self.add_existing_data() 

157 self.make_home_pages() 

158 self.make_1d_histogram_pages() 

159 self.make_corner_pages() 

160 self.make_config_pages() 

161 if self.make_comparison: 

162 self.make_comparison_pages() 

163 if self.make_interactive: 

164 self.make_interactive_pages() 

165 if self.publication: 

166 self.make_publication_pages() 

167 if self.gwdata is not None: 

168 self.make_detector_pages() 

169 self.make_error_page() 

170 self.make_version_page() 

171 if self.notes is not None: 

172 self.make_notes_page() 

173 self.make_downloads_page() 

174 self.generate_specific_javascript()