Beispiel #1
0
    def test_no_empty_dist(self):
        # an empty distribution is not supported by the schema
        writer = DmgDistPerAssetXMLWriter("output.xml",
                "ebl1", self.damage_states)

        self.assertRaises(RuntimeError, writer.serialize, [])
        self.assertFalse(os.path.exists("output.xml"))

        self.assertRaises(RuntimeError, writer.serialize, None)
        self.assertFalse(os.path.exists("output.xml"))
    def test_serialize(self):
        expected_file = helpers.get_data_path(
            "expected-dmg-dist-per-asset.xml")

        expected_text = open(expected_file, "r").readlines()

        self.make_dist()
        asset_1, asset_2, asset_3 = self.make_assets()

        self.make_data(asset_1, "no_damage", 1.0, 1.6)
        self.make_data(asset_1, "slight", 34.8, 18.3)
        self.make_data(asset_1, "moderate", 64.2, 19.8)
        self.make_data(asset_1, "extensive", 64.3, 19.7)
        self.make_data(asset_1, "complete", 64.3, 19.7)

        self.make_data(asset_2, "no_damage", 1.0, 1.6)
        self.make_data(asset_2, "slight", 34.8, 18.3)
        self.make_data(asset_2, "moderate", 64.2, 19.8)
        self.make_data(asset_2, "extensive", 64.3, 19.7)
        self.make_data(asset_2, "complete", 64.3, 19.7)

        self.make_data(asset_3, "no_damage", 1.1, 1.7)
        self.make_data(asset_3, "slight", 34.9, 18.4)
        self.make_data(asset_3, "moderate", 64.3, 19.7)
        self.make_data(asset_3, "extensive", 64.3, 19.7)
        self.make_data(asset_3, "complete", 64.3, 19.7)

        try:
            _, result_xml = tempfile.mkstemp()

            writer = DmgDistPerAssetXMLWriter(result_xml,
                    "ebl1", self.damage_states)

            writer.serialize(self.data)
            actual_text = open(result_xml, "r").readlines()

            self.assertEqual(expected_text, actual_text)

            self.assertTrue(xml.validates_against_xml_schema(
                    result_xml))
        finally:
            os.unlink(result_xml)
Beispiel #3
0
    def test_serialize(self):
        expected_file = helpers.get_data_path(
            "expected-dmg-dist-per-asset.xml")

        expected_text = open(expected_file, "r").readlines()

        self.make_dist()
        asset_1, asset_2, asset_3 = self.make_assets()

        self.make_data(asset_1, "no_damage", 1.0, 1.6)
        self.make_data(asset_1, "slight", 34.8, 18.3)
        self.make_data(asset_1, "moderate", 64.2, 19.8)
        self.make_data(asset_1, "extensive", 64.3, 19.7)
        self.make_data(asset_1, "complete", 64.3, 19.7)

        self.make_data(asset_2, "no_damage", 1.0, 1.6)
        self.make_data(asset_2, "slight", 34.8, 18.3)
        self.make_data(asset_2, "moderate", 64.2, 19.8)
        self.make_data(asset_2, "extensive", 64.3, 19.7)
        self.make_data(asset_2, "complete", 64.3, 19.7)

        self.make_data(asset_3, "no_damage", 1.1, 1.7)
        self.make_data(asset_3, "slight", 34.9, 18.4)
        self.make_data(asset_3, "moderate", 64.3, 19.7)
        self.make_data(asset_3, "extensive", 64.3, 19.7)
        self.make_data(asset_3, "complete", 64.3, 19.7)

        try:
            _, result_xml = tempfile.mkstemp()

            writer = DmgDistPerAssetXMLWriter(result_xml,
                    "ebl1", self.damage_states)

            writer.serialize(self.data)
            actual_text = open(result_xml, "r").readlines()

            self.assertEqual(expected_text, actual_text)

            self.assertTrue(xml.validates_against_xml_schema(
                    result_xml))
        finally:
            os.unlink(result_xml)
Beispiel #4
0
def export_dmg_dist_per_asset(output, target_dir):
    """
    Export the damage distribution per asset identified
    by the given output to the `target_dir`.

    :param output: db output record which identifies the distribution.
    :type output: :py:class:`openquake.db.models.Output`
    :param target_dir: destination directory of the exported file.
    :type target_dir: string
    """

    file_name = "dmg-dist-asset-%s.xml" % output.oq_job.id
    file_path = os.path.join(target_dir, file_name)

    dda = models.DmgDistPerAsset.objects.get(output=output)
    writer = DmgDistPerAssetXMLWriter(
        file_path, dda.end_branch_label, dda.dmg_states)

    data = models.DmgDistPerAssetData.objects.filter(dmg_dist_per_asset=dda)
    writer.serialize(data)

    return [file_path]
Beispiel #5
0
def export_dmg_dist_per_asset(output, target_dir):
    """
    Export the damage distribution per asset identified
    by the given output to the `target_dir`.

    :param output: db output record which identifies the distribution.
    :type output: :py:class:`openquake.db.models.Output`
    :param target_dir: destination directory of the exported file.
    :type target_dir: string
    """

    file_name = "dmg-dist-asset-%s.xml" % output.oq_job.id
    file_path = os.path.join(target_dir, file_name)

    dda = models.DmgDistPerAsset.objects.get(output=output)
    writer = DmgDistPerAssetXMLWriter(
        file_path, dda.end_branch_label, dda.dmg_states)

    data = models.DmgDistPerAssetData.objects.filter(dmg_dist_per_asset=dda)
    writer.serialize(data)

    return [file_path]