<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def rmsd(df1, df2, heavy_only=True):
 """Compute the Root Mean Square Deviation between molecules Parameters df1 : pandas.DataFrame DataFrame with HETATM, ATOM, and/or ANISOU entries df2 : pandas.DataFrame Second DataFrame for RMSD computation against df1. Must have the same number of entries as df1 heavy_only : bool (default: True) Which atoms to compare to compute the RMSD. If `True` (default), computes the RMSD between non-hydrogen atoms only. Returns --------- rmsd : float Root Mean Square Deviation between df1 and df2 """

        if df1.shape[0] != df2.shape[0]:
            raise AttributeError('DataFrames have unequal lengths')

        if heavy_only:
            d1 = df1[df1['atom_type'] != 'H']
            d2 = df2[df2['atom_type'] != 'H']
        else:
            d1, d2 = df1, df2

        total = ((d1['x'].values - d2['x'].values)**2 +
                 (d1['y'].values - d2['y'].values)**2 +
                 (d1['z'].values - d2['z'].values)**2)
        rmsd = round((total.sum() / df1.shape[0])**0.5, 4)
        return rmsd