示例#1
0
    def __init__(self,
                 sac_files,
                 lat_min=-90,
                 lat_max=90,
                 lon_min=-180,
                 lon_max=180,
                 dep_min=0,
                 dep_max=800,
                 Mw_min=0,
                 Mw_max=10,
                 dist_min=0,
                 dist_max=180,
                 n_within_dist=10,
                 start_date=datetime(1970, 1, 1),
                 end_date=datetime(2050, 1, 1)):
        self.sac_files = sac_files
        self.lat_min = lat_min
        self.lat_max = lat_max
        self.lon_min = lon_min
        self.lon_max = lon_max
        self.dep_min = dep_min
        self.dep_max = dep_max
        self.Mw_min = Mw_min
        self.Mw_max = Mw_max
        self.dist_min = dist_min
        self.dist_max = dist_max
        self.n_within_dist = n_within_dist
        self.start_date = start_date
        self.end_date = end_date

        self.dataset = Dataset.dataset_from_sac(sac_files, headonly=True)
示例#2
0
文件: main.py 项目: afeborgeaud/dsmpy
def main(path):
    """Compute synthetics in parallel.

    Args:
        path (str): path to an input file.

    """
    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()

    # open log file
    log = open('log', 'w', buffering=1)

    if rank == 0:
        input_file = PyDSMInputFile(path)
        params = input_file.read()
        seismic_model = SeismicModel.model_from_name(params['seismic_model'])
        tlen = params['tlen']
        nspc = params['nspc']
        sampling_hz = params['sampling_hz']
        mode = params['mode']
        verbose = params['verbose']

        start_time = time.time()
        dataset = Dataset.dataset_from_sac(params['sac_files'],
                                           verbose=verbose)
        end_time = time.time()
        if verbose >= 1:
            log.write(
                'Initalizing dataset finished in {} s\n'.format(end_time -
                                                                start_time))
    else:
        params = None
        dataset = None
        seismic_model = None
        tlen = None
        nspc = None
        sampling_hz = None
        mode = None
        verbose = None

    # run pydsm
    start_time = time.time()
    outputs = dsm.compute_dataset_parallel(dataset,
                                           seismic_model,
                                           tlen,
                                           nspc,
                                           sampling_hz,
                                           mode=mode,
                                           verbose=verbose,
                                           log=log)
    end_time = time.time()
    log.write('rank {}: DSM finished in {} s\n'.format(rank,
                                                       end_time - start_time))

    if rank == 0:
        start_time = time.time()
        for output in outputs:
            output.set_source_time_function(None)
            output.to_time_domain()
            output.write(params['output_folder'], format='sac')
        end_time = time.time()
        log.write('finished FFT and writing in {} s\n'.format(
            rank, end_time - start_time))

    log.close()

    return "Done!"
import dsmpy.utils.scardec as scardec
from dsmpy.utils.cmtcatalog import read_catalog
from dsmpy.dataset import Dataset
import glob

if __name__ == '__main__':
    sac_files = glob.glob('/mnt/doremi/anpan/inversion/MTZ_JAPAN/DATA/2*/*Z')
    dataset = Dataset.dataset_from_sac(sac_files)

    for event in dataset.events:
        print(event)
        duration_scardec = scardec.get_duration(event)
        if duration_scardec is None:
            print('Scardec STF not found for {}'.format(event))
        print('scardec_duration, gcmt_duration:  {} {}'.format(
            duration_scardec, 2 * event.source_time_function.half_duration))
示例#4
0
    distance_min = 10.
    distance_max = 90.
    dir_syn = '.'
    t_before = 10.
    t_after = 20.
    buffer = 10.
    catalog_path = 'stf_catalog.txt'
    n_distinct_comp_phase = 1

    for sac_files in sac_files_iterator(
            '/home/anselme/Dropbox/Kenji/MTZ_JAPAN/DATA/20*/*T'):
        logging.info('{} num sacs = {}\n'.format(rank, len(sac_files)))

        if rank == 0:
            logging.info('{} reading dataset\n'.format(rank))
            dataset = Dataset.dataset_from_sac(sac_files, headonly=False)

            logging.info('{} computing time windows\n'.format(rank))
            windows_S = WindowMaker.windows_from_dataset(dataset,
                                                         'prem', ['S'],
                                                         [Component.T],
                                                         t_before=t_before,
                                                         t_after=t_after)
            windows = windows_S
            windows = [
                window for window in windows
                if (distance_min <= window.get_epicentral_distance() <=
                    distance_max)
            ]
        else:
            dataset = None