<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def experimental_design(self) -> Any: """Return a markdown summary of the samples on this sample sheet. This property supports displaying rendered markdown only when running within an IPython interpreter. If we are not running in an IPython interpreter, then print out a nicely formatted ASCII table. Returns: Markdown, str: A visual table of IDs and names for all samples. """

        if not self.samples:
            raise ValueError('No samples in sample sheet')

        markdown = tabulate(
            [[getattr(s, h, '') for h in DESIGN_HEADER] for s in self.samples],
            headers=DESIGN_HEADER,
            tablefmt='pipe',
        )

        return maybe_render_markdown(markdown)