def from_ep_string(cls, ep_string, location):
        """Initalize from an EnergyPlus string of a SizingPeriod:DesignDay.

        args:
            ep_string: A full string representing a SizingPeriod:DesignDay.
        """
        # format the object into a list of properties
        ep_string = ep_string.strip()
        if '\n' in ep_string:
            ep_lines = ep_string.split('\n')
        else:
            ep_lines = ep_string.split('\r')
        lines = [l.split('!')[0].strip().replace(',', '') for l in ep_lines]

        # check to be sure that we have a valid ddy object
        assert len(lines) == 27 or len(lines) == 26, "Number " \
            "of lines of text [{}] does not correspond" \
            " to an EP Design Day [26 or 27]".format(
                len(lines))
        lines[-1] = lines[-1].split(';')[0]

        # extract primary properties
        name = lines[1]
        day_type = lines[4]

        # extract dry bulb temperatures
        dry_bulb_condition = DryBulbCondition(
            float(lines[5]), float(lines[6]), lines[7], lines[8])

        # extract humidity conditions
        h_type = lines[9]
        h_val = 0 if lines[10] == '' else float(lines[10])
        if h_type == 'HumidityRatio':
            h_val = float(lines[12])
        elif h_type == 'Enthalpy':
            h_val = float(lines[13])
        humidity_condition = HumidityCondition(
            h_type, h_val, float(lines[15]), lines[11])

        # extract wind conditions
        wind_condition = WindCondition(
            float(lines[16]), float(lines[17]), lines[18], lines[19])

        # extract the sky conditions
        sky_model = lines[21]
        if sky_model == 'ASHRAEClearSky':
            sky_condition = OriginalClearSkyCondition(
                int(lines[2]), int(lines[3]), float(lines[26]), lines[20])
        elif sky_model == 'ASHRAETau':
            sky_condition = RevisedClearSkyCondition(
                int(lines[2]), int(lines[3]), float(lines[24]),
                float(lines[25]), lines[20])
        else:
            sky_condition = SkyCondition(
                sky_model, int(lines[2]), int(lines[3]), lines[20])
        if sky_model == 'Schedule':
            sky_condition.beam_shced = lines[22]
            sky_condition.diff_shced = lines[23]

        return cls(name, day_type, location, dry_bulb_condition,
                   humidity_condition, wind_condition, sky_condition)