<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_chain(self, group_name, component_map):
 """ Adds the component chain to ``group_name`` in the fast5. These are added as attributes to the group. :param group_name: The group name you wish to add chaining data to, e.g. ``Test_000`` :param component_map: The set of components and corresponding group names or group paths that contribute data to the analysis. If group names are provided, these will be converted into group paths. If ``Test_000`` uses data from the results of ``first_component`` stored at ``Analyses/First_000/`` the component_map could be ``{'first_component': 'First_000'}`` or ``{'first_component': 'Analyses/First_000'}``. """

        self.assert_writeable()

        for component, path in component_map.items():
            if not path.startswith('Analyses/'):
                path = 'Analyses/{}'.format(path)
            component_map[component] = path

        self.add_analysis_attributes(group_name, component_map)