Photon extractor

Photon extractor#

Visit the invrs-gym docs for the photon extractor challenge.

The metalens challenge is based on “Inverse-designed photon extractors for optically addressable defect qubits” by Chakravarthi et al., and entails the design of a patterned GaP layer that enhances the power collected from a nitrogen vacancy defect buried at a depth of 100 nm within a diamond substrate.

The photon extractor eval metric is defined as follows:

Hide code cell source
from invrs_gym import challenges

challenge = challenges.photon_extractor()
docstring = challenge.eval_metric.__doc__
print("\n".join([s[8:] for s in docstring.split("Args")[0].split("\n")[2:-2]]))
The evaluation metric is the enhancement in collected power, summing over all
wavelengths and dipole polarizations.
Hide code cell content
import os
import plotly.express as px
from IPython import display
from invrs_leaderboard import data

df = data.leaderboard_dataframe(base_path="../../../")
grid_spacing_nm = challenge.component.spec.grid_spacing * 1000
df["minimum_width_nm"] = df["minimum_width"] * grid_spacing_nm
df["minimum_spacing_nm"] = df["minimum_spacing"] * grid_spacing_nm
df["minimum_length_scale_nm"] = df["minimum_length_scale"] * grid_spacing_nm

def _trim_filename(name):
    return name if len(name) < 40 else name[:25] + "..." + name[-12:]

df["file"] = [_trim_filename(f) for f in df["file"]]

def plot_challenge_metrics(challenge_name: str) -> display.DisplayHandle:
    challenge_df = df[df["challenge"] == challenge_name]
    fig = px.scatter(
        challenge_df,
        x="minimum_length_scale_nm",
        y="eval_metric",
        color="file_prefix",
        hover_data=["file", "minimum_width_nm", "minimum_spacing_nm", "binarization_degree"],
    )
    if not os.path.exists("_plots/"):
        os.mkdir("_plots/")
    filename = f"_plots/eval_metric_{challenge_name}.html"
    fig.write_html(filename)
    return display.display(display.HTML(filename))
plot_challenge_metrics("photon_extractor")