Coverage for pesummary/gw/webpage/public.py: 0.0%
62 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-12-09 22:34 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2024-12-09 22:34 +0000
1# Licensed under an MIT style license -- see LICENSE.md
3import os
4from .main import _WebpageGeneration as _GWWebpageGeneration
5from pesummary.core.webpage import webpage
7__author__ = ["Charlie Hoy <charlie.hoy@ligo.org>"]
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 )
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.
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
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
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)
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
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()