コード例 #1
0
ファイル: search.py プロジェクト: CJ-Wright/simdb
def find_atomic_config_document(**kwargs):
    atomic_configs = AtomicConfig.objects(__raw__=kwargs).order_by('-_id').all()
    ret = []
    for atomic_config in atomic_configs:
        # may need 'ase' in here somewhere
        atomic_config.file_payload = fsc.retrieve(atomic_config.file_uid)
        yield atomic_config
コード例 #2
0
ファイル: test_write.py プロジェクト: CJ-Wright/filestore
def test_custom():
    test_path = os.path.join(BASE_PATH, str(uuid.uuid4()) + '.npy')
    dd = np.random.rand(500, 500)
    with fs_write.NpyWriter(test_path, resource_kwargs={'mmap_mode': 'r'}) as f:
        eid = f.add_data(dd)
    with fsr.handler_context({'npy': fs_read.NpyHandler}):
        ret = fsc.retrieve(eid)

    assert_array_equal(dd, ret)
コード例 #3
0
ファイル: search.py プロジェクト: ZhouHUB/simdb
def find_pdf_data_document(**kwargs):
    pdf_data_sets = PDFData.objects(__raw__=kwargs).order_by('-_id').all()
    for data_set in pdf_data_sets:
        data_set.file_payload = fsc.retrieve(data_set.file_uid)
        yield data_set
コード例 #4
0
ファイル: search.py プロジェクト: ZhouHUB/simdb
def find_atomic_config_document(**kwargs):
    atomic_configs = AtomicConfig.objects(__raw__=kwargs).order_by(
        '-_id').all()
    for atomic_config in atomic_configs:
        atomic_config.file_payload = fsc.retrieve(atomic_config.file_uid)
        yield atomic_config
コード例 #5
0
def run_simulation(sim):
    # Load info from simulation request
    sim_params, = find_simulation_parameter_document(_id=sim.params.id)

    # TODO: Throw in some statments about timeouts, acceptable U(q), etc.
    iterations = sim_params.iterations
    target_acceptance = sim_params.target_acceptance
    ensemble_temp = sim_params.temperature

    # Load Starting Atoms
    starting_atoms_entry, = find_atomic_config_document(
        _id=sim.starting_atoms.id)
    starting_atoms = starting_atoms_entry.file_payload
    try:
        traj_entry, = find_atomic_config_document(_id=sim.starting_atoms.id)
        traj = traj_entry.file_payload
    except:
        traj_entry = None
        traj = None

    # We want to continue this simulation
    if isinstance(traj, list):
        # Give back the final configuration
        atoms = traj[-1]
        # Search filestore and get the file_location
        with handler_context({'ase': FileLocation}):
            atoms_file_location = fsc.retrieve(starting_atoms_entry.file_uid)
        wtraj = PickleTrajectory(atoms_file_location, 'a')

    # This is a new sim with a new trajectory
    elif traj is None:
        # Give back the initial config
        atoms = starting_atoms
        # Generate new file location and save it to filestore
        new_atoms_entry = insert_atom_document(
            starting_atoms_entry.name + '_' + sim.name, atoms)

        with handler_context({'ase': FileLocation}):
            new_file_location = fsc.retrieve(new_atoms_entry.file_uid)
        wtraj = PickleTrajectory(new_file_location, 'w')
        sim.simulation_atoms = new_atoms_entry
        sim.save()

    # Create Calculators
    pes, = find_pes_document(_id=sim.pes.id)
    master_calc = pes.payload

    # Attach MulitCalc to atoms
    atoms.set_calculator(master_calc)

    sim.start_total_energy.append(atoms.get_total_energy())
    sim.start_potential_energy.append(atoms.get_potential_energy())
    sim.start_kinetic_energy.append(atoms.get_kinetic_energy())
    sim.start_time.append(ttime.time())
    sim.ran = True
    sim.save()

    # Simulate
    # TODO: eventually support different simulation engines
    out_traj, samples, l_p_i, seed = nuts(atoms, target_acceptance, iterations,
                                          ensemble_temp, wtraj)
    sim.end_time.append(ttime.time())
    sim.total_iterations.append(sim.params.iterations)
    sim.total_samples.append(samples)
    sim.leapfrog_per_iter.append(l_p_i)
    sim.finished = True
    sim.seed.append(seed)
    sim.save()
    # Write info to DB
    sim.final_potential_energy.append(out_traj[-1].get_potential_energy())
    sim.final_kinetic_energy.append(out_traj[-1].get_kinetic_energy())
    sim.final_kinetic_energy.append(out_traj[-1].get_total_energy())
    sim.save()
コード例 #6
0
ファイル: test_write.py プロジェクト: CJ-Wright/filestore
def _npsave_helper(dd, base_path):
    eid = fs_write.save_ndarray(dd, base_path)
    with fsr.handler_context({'npy': fs_read.NpyHandler}):
        ret = fsc.retrieve(eid)

    assert_array_equal(dd, ret)
コード例 #7
0
def run_simulation(sim):
    # Load info from simulation request
    sim_params, = find_simulation_parameter_document(_id=sim.params.id)

    # TODO: Throw in some statments about timeouts, acceptable U(q), etc.
    iterations = sim_params.iterations
    target_acceptance = sim_params.target_acceptance
    ensemble_temp = sim_params.temperature

    # Load Starting Atoms
    starting_atoms_entry, = find_atomic_config_document(_id=sim.starting_atoms.id)
    starting_atoms = starting_atoms_entry.file_payload
    try:
        traj_entry, = find_atomic_config_document(_id=sim.starting_atoms.id)
        traj = traj_entry.file_payload
    except:
        traj_entry = None
        traj = None

    # We want to continue this simulation
    if isinstance(traj, list):
        # Give back the final configuration
        atoms = traj[-1]
        # Search filestore and get the file_location
        with handler_context({'ase': FileLocation}):
            atoms_file_location = fsc.retrieve(starting_atoms_entry.file_uid)
        wtraj = PickleTrajectory(atoms_file_location, 'a')

    # This is a new sim with a new trajectory
    elif traj is None:
        # Give back the initial config
        atoms = starting_atoms
        # Generate new file location and save it to filestore
        new_atoms_entry = insert_atom_document(
            starting_atoms_entry.name + '_' + sim.name, atoms)

        with handler_context({'ase': FileLocation}):
            new_file_location = fsc.retrieve(new_atoms_entry.file_uid)
        wtraj = PickleTrajectory(new_file_location, 'w')
        sim.simulation_atoms = new_atoms_entry
        sim.save()

    # Create Calculators
    pes, = find_pes_document(_id=sim.pes.id)
    master_calc = pes.payload

    # Attach MulitCalc to atoms
    atoms.set_calculator(master_calc)

    sim.start_total_energy.append(atoms.get_total_energy())
    sim.start_potential_energy.append(atoms.get_potential_energy())
    sim.start_kinetic_energy.append(atoms.get_kinetic_energy())
    sim.start_time.append(ttime.time())
    sim.ran = True
    sim.save()

    # Simulate
    # TODO: eventually support different simulation engines
    out_traj, samples, l_p_i, seed = nuts(atoms, target_acceptance, iterations,
                                    ensemble_temp, wtraj)
    sim.end_time.append(ttime.time())
    sim.total_iterations.append(sim.params.iterations)
    sim.total_samples.append(samples)
    sim.leapfrog_per_iter.append(l_p_i)
    sim.finished = True
    sim.seed.append(seed)
    sim.save()
    # Write info to DB
    sim.final_potential_energy.append(out_traj[-1].get_potential_energy())
    sim.final_kinetic_energy.append(out_traj[-1].get_kinetic_energy())
    sim.final_kinetic_energy.append(out_traj[-1].get_total_energy())
    sim.save()