Short communication: A semiautomated method for bulk fault slip analysis from topographic scarp profiles

Manual approaches for analyzing fault scarps in the field or with existing software can be tedious and time-consuming. Here, we introduce an open-source, semiautomated, Python-based graphical user interface (GUI) called the Monte Carlo Slip Statistics Toolkit (MCSST) for estimating dip slip on individual or bulk fault datasets that (1) makes the analysis of a large number of profiles much faster, (2) allows users with little or no coding skills to implement the necessary statistical techniques, (3) and provides geologists with a platform to incorporate their observations or expertise into the process. Using this toolkit, profiles are defined across fault scarps in high-resolution digital elevation models (DEMs), and then relevant fault scarp components are interactively identified (e.g., footwall, hanging wall, and scarp). Displacement statistics are calculated automatically using Monte Carlo simulation and can be conveniently visualized in geographic information systems (GISs) for spatial analysis. Fault slip rates can also be calculated when ages of footwall and hanging wall surfaces are known, allowing for temporal analysis. This method allows for the analysis of tens to hundreds of faults in rapid succession within GIS and a Python coding environment. Application of this method may contribute to a wide range of regional and local earthquake geology studies with adequate high-resolution DEM coverage, enabling both regional fault source characterization for seismic hazard and/or estimating geologic slip and strain rates, including creating long-term deformation maps. ArcGIS versions of these functions are available, as well as ones that utilize free, open-source Quantum GIS (QGIS) and Jupyter Notebook Python software.


Table of Contents
Using this toolkit, profiles are defined across fault scarps in high-resolution digital elevation models (DEMs) and then relevant fault scarp components are interactively identified (e.g., footwall, hanging wall, and scarp). We reference hanging wall and footwall throughout because this code was developed for use in a rift setting; however, upthrown and downthrown are equally viable terms considering the underlying math should be consistent for reverse faults as well.
Displacement statistics are calculated automatically using Monte Carlo simulation (Thompson et al., 2002) and can be conveniently visualized in Geographic Information Systems (GIS) for spatial analysis. Fault slip rates can also be calculated when ages of footwall and hanging wall surfaces are known, allowing for temporal analysis. This method allows for rapid analysis of tens to hundreds of faults in rapid succession within GIS and a Python coding environment. Application of this method may contribute to a wide range of regional and local earthquake geology studies with adequate highresolution DEM coverage, both regional fault source characterization for seismic hazard and/or estimating geologic slip and strain rates, including creating long-term deformation maps. An ArcGIS version of these functions are available, as well ones that utilize free, open source Quantum GIS (QGIS) and Jupyter Notebook Python software.
This manual provides step by step directions for implementing the workflow. Whether using a QGIS or ArcGIS interphase, instructions are provided on how to extract data from profiles drawn across fault scarps imaged in high resolution digital elevation data. Next, instructions on how to implement the MCSST to rapidly calculate slip statistics for the faults in question. Lastly, instructions are provided on how to visualize the results in the QGIS and ArcGIS interphases.
All of these scripts and notebooks are available for download at the GitHub repository. The scripts were developed in Python 2.7.13 (to be compatible with ArcGIS). ArcGIS v 10.5.1 was used for testing but it might work in other 10 versions

Profile Selection
The first step is to define profiles across fault scarps imaged in digital elevation data.

A) QGIS
• Create a new Shapefile Layer o Layer -> Create Layer -> New Shapefile Layer o Geometry Type -> Line • The newly-created Shapefile layer show up in the Layers inventory.
• To draw a profile and assign it to this layer, Toggle Editing on this layer. o Add Line Feature to draw your profile. Both Toggle Editing and Add Line Feature can be found in the banner of icons at the top of the program (see image below). o You may want to edit the Style of the lines so that they will have greater visibility. • Next, Save Layer Edits to permanently create your profile lines within the Shapefile layer. • The Section Line Feature Class must have a "id" field. This is a field that may need to be added manually to the attribute table. To do this, open the attribute table, add field titled "id", and then run an operator on the new "id" field to populate this field with the values of the "ObjectID" field. The operator tool is called the "Field Calculator" tool. You will see that when you open this tool, a blank dialogue box appears. You also see the beginning of a calculation right above. Fill in the rest of the calculation as "= ObjectID". Next hit OK. You will only be able to undo your edits if you are in an edit session, so to be cautious, do this before you "stop editing".

Profile Data Extraction
Once you have defined your profiles, the next step is to generate data along the profile. Plug-ins for ArcGIS and QGIS can be utilized for this process.
If you do not have geologic data (e.g., age, formation name, etc.) you will need to quickly generate this data by following this workaround for ArcGIS and QGIS.

A) ArcGIS
The goal of this workflow is to create a new polygon feature class to contain user-generated geologic data so that the toolbox will function in the following step to extract data.

C) QGIS
Previously compiled GUIs can be employed to extract distance, elevation, and geologic age data along the fault profiles at variable spacing. The user will employ the Points Along Geometry and Point Sampling Tool plugins, which are within the QGIS environment.
The Points Along Geometry Tool plugin creates points at regular intervals along line or polygon geometries. Created points have new attributes added for the distance along the geometry and the angle of the line at the point. An optional start and end offset can be specified, which controls how far from the start and end of the geometry the points should be created. This can be useful if you do not want to include the entire fault scarp profile; however, it is often simplest to start and end at the terminal points of the profile.
If you do not see these tools, you can find them in the Manage and Install Plugins feature of QGIS.
• Within the Toolbox, navigate to and open the Points Along Geometry Tool.
• Set your density of points along the profile. Here I have set it to 1 meter.
• Add a file path and new file name to create a new file for the points in the final dialogue box.
• You can now see that the profile is composed of many points spaced at 1 meter.
The Point Sampling Tool plugin collects polygon attributes and raster values from multiple layers at the specified sampling points created using the Points Along Geometry Tool plugin. The user needs a point layer (our newly created points) with locations of the sampling points and at least one polygon or raster layer from which to probe values (the elevation and geologic age data). The plugin creates a new point layer with locations given by the sampling points and attributes taken from the underlying polygon or/and raster cells, which represent the data that can be extracted from the high-resolution DEM and geologic map.
• You may need to install the Point Sampling Tool from the Manage and Install Plugins function • Make active all layers you wish to extract data from (e.g., Geology and Elevation Data).
• Designate name for output file and save it as a Shapefile. The default is Geopackage.
• The above photo is the output of the process. You can see that at each point, geologic age and elevation data have been extracted.

Point Sampling Tool
The user has two options to complete this process with ArcGIS. The first is with an ArcToolbox and the second is with a Stand Alone Python script. Both of these were developed for this study. Please note: The scripts were developed in Python 2.7.13 (to be compatible with ArcGIS), ArcGIS v 10.5.1 was used for testing but it might work in other 10 versions, and the user will require the ArcGIS (for both) and Spatial Analyst (for createProfileCSV.py only) licenses to run these scripts

ArcToolbox Approach
• The ArcGIS_Toolbox folder contains the ArcGIS Toolbox together with the scripts that are called from it. The user will have to copy the whole folder to their machine (to maintain relative paths within the toolbox) and add the toolbox to their ArcMap project or ArcCatalog. The scripts could be run from there and ArcGIS has an interface for entering inputs (see below). • Within ArcGIS, the user must navigate to their ArcToolbox, right click, and select Add Toolbox. • Add the FaultProfile Toolbox to the working environment through this process.
• Double click on the 'createProfileCSV' tool within this newly added toolbox.
• Fill in the dialogue boxes as appropriate o The Working folder is the location to output your soon to be created profile data. It would make sense to make the output folder the working directory for your Jupyter Notebook environment so that you can easily navigate to the newly created profiles in the fault scarp analysis step. o The DEM is the elevation file from which you wish to extract the elevation data o The Geology layer is the shapefile layer that contains the age and unit name information o Select the age fields and unit name fields from the drop-down menus. These are headers within the Geology layer chosen. o The Profile layer is the shapefile layer created in the previous step that contains profiles drawn across fault scarps. o Select the unique id field for each profile of the Profile layer. o Select the point sampling density from which you would like to extract data along the profiles. • The resulting profile data will be stored in a new folder within the Working folder assigned in the previous step. Each profile will be saved as a separate CSV. The name of the folder will be "outputs_" + the name of your profile shapefile.