Load and Save FileΒΆ

[1]:
import mdapy as mp
import numpy as np
from time import time
mp.__version__
[1]:
'1.0.5a2'
[2]:
import ovito
ovito.version
[2]:
(3, 14, 1)
[3]:
def init():
    system = mp.build_crystal('Cu', 'FCC', 3.615, nx=100, ny=100, nz=100)
    system.set_type_by_element({'Cu':1})
    N = system.N
    print(f'Atom number is {N}.')
    print('Saving to test.data.')
    system.write_data('test.data', element_list=['Cu'])
    print('Saving to test.dump')
    system.write_dump('test.dump')
    print('Saving to test.xyz')
    system.write_xyz('test.xyz')
    print('Saving to test.mp')
    system.write_mp('test.mp')
init()
Atom number is 4000000.
Saving to test.data.
Saving to test.dump
Saving to test.xyz
Saving to test.mp
[4]:
def get_load_time(fmt:str):
    start = time()
    for _ in range(3):
        _ = mp.System(f'test.{fmt}')
    end = time()
    mdapy_time = (end - start)/3
    if fmt == 'mp':
        ovito_time = -1
    else:
        start = time()
        for _ in range(3):
            pipeline = ovito.io.import_file(f'test.{fmt}')
            pipeline.compute()
            del pipeline
        end = time()
        ovito_time = (end - start)/3
    return mdapy_time, ovito_time
[5]:
def get_save_time(fmt:str):
    system = mp.System(f'test.{fmt}')
    start = time()
    for _ in range(1):
        if fmt == 'dump':
            system.write_dump(f'mdapy.{fmt}')
        elif fmt == 'data':
            system.write_data(f'mdapy.{fmt}')
        elif fmt == 'xyz':
            system.write_xyz(f'mdapy.{fmt}')
        elif fmt == 'mp':
            system.write_mp(f'mdapy.{fmt}')
    end = time()
    mdapy_time = (end - start)/3
    if fmt == 'mp':
        ovito_time = -1
    else:
        pipeline = ovito.io.import_file(f'test.{fmt}')
        start = time()
        for _ in range(1):
            if fmt == 'dump':
                ovito.io.export_file(pipeline, f'ovito.{fmt}', format='lammps/dump', columns=["Particle Identifier", "Particle Type", "Position.X", "Position.Y", "Position.Z"])
            elif fmt == 'data':
                ovito.io.export_file(pipeline, f'ovito.{fmt}', format='lammps/data', atom_style='atomic')
            elif fmt == 'xyz':
                ovito.io.export_file(pipeline, f'ovito.{fmt}', format='xyz', columns=["Particle Identifier", "Particle Type", "Position.X", "Position.Y", "Position.Z"])
        end = time()
        ovito_time = (end - start)/3
    return mdapy_time, ovito_time
[6]:
load_time = []
for fmt in ['dump', 'data', 'xyz', 'mp']:
    load_time.append([*get_load_time(fmt)])
load_time = np.array(load_time)
[7]:
save_time = []
for fmt in ['dump', 'data', 'xyz', 'mp']:
    save_time.append([*get_save_time(fmt)])
save_time = np.array(save_time)
[8]:
fig, ax = mp.set_figure(figdpi=150)
x = np.arange(4)*2
ax.bar(x, load_time[:, 0], label = 'mdapy')
ax.bar(x[:-1]+1, load_time[:-1, 1], label='ovito')

ax.legend()
ax.set_xticks(x+0.5)
ax.set_xticklabels(['dump', 'data', 'xyz', 'mp'])
ax.set_ylabel('Time (s)')
ax.set_title('Load data')
[8]:
Text(0.5, 1.0, 'Load data')
../_images/gettingstarted_load_save_8_1.png
[12]:
fig, ax = mp.set_figure(figdpi=150)
x = np.arange(4)*2
ax.bar(x, save_time[:, 0], label = 'mdapy')
ax.bar(x[:-1]+1, save_time[:-1, 1], label='ovito')
ax.set_ylim(0, 5)
ax.legend()
ax.set_xticks(x+0.5)
ax.set_xticklabels(['dump', 'data', 'xyz', 'mp'])
ax.set_ylabel('Time (s)')
ax.set_title('Save data')
[12]:
Text(0.5, 1.0, 'Save data')
../_images/gettingstarted_load_save_9_1.png
[10]:
import os
from glob import glob

for i in glob('mdapy*')+glob('ovito*')+glob('test*'):
    os.remove(i)