def grab_project_data(prj):
if not prj:<EOL><INDENT>return {}<EOL><DEDENT>data = {}<EOL>for section in SAMPLE_INDEPENDENT_PROJECT_SECTIONS:<EOL><INDENT>try:<EOL><INDENT>data[section] = getattr(prj, section)<EOL><DEDENT>except AttributeError:<EOL><INDENT>_LOGGER.debug("<STR_LIT>", section)<EOL><DEDENT><DEDENT>return data<EOL>
From the given Project, grab Sample-independent data.

There are some aspects of a Project of which it's beneficial for a Sample
to be aware, particularly for post-hoc analysis. Since Sample objects
within a Project are mutually independent, though, each doesn't need to
know about any of the others. A Project manages its, Sample instances,
so for each Sample knowledge of Project data is limited. This method
facilitates adoption of that conceptual model.

:param Project prj: Project from which to grab data
:return Mapping: Sample-independent data sections from given Project