Skip to main content

lammps data process tools.

Project description

# lammps-tools
This python tools provide a ease way to process the data associated with lammps. You can use this series of tools to create polymer model, extract data and get data draft plot(TO-DO)
## install
```
pip install lammps_tools
```

## use guide
```
lammps_tools/
data_processing/
dump.py
fix.py
log.py
model_builder/
polymer_generator.py
GP_generator.py
```



## data-processing
This package contains of models to extract data and format by a pythonic way
### dump
**Usage**:
1. Initiate Dump class. It will automatically search target dump file and store where it is.

``` d = Dump(FilePath)```

2. Interate this Instance. Every call will drive it to read a snapshot and return a dict including properties and raw data.

```
for snap in d:
```

**API**:
*Dump(fpath)*
* parameters:

* *fpath*: Note that you must give a str which is a relative path or absoluate path and relative path up to where you run this script not where this script in. Remember Windows platform must convert '/' into '//'.
* *every*: default 0. It specifies the frequency to read snap. If you assign every is n, that means return 0, n, 2n...

* return:

* Dump return a instance but do nothing. Every function takes effect only after you iterate this instance. The reason is once your dump file is very big, this design can save memory.

* Iterate instance will return a dict:
```
snap := {
'TIMESTEP': 1000
'NUMBER_OF_ATOM': 10000
'BOUNDARY_CONDITION': ['pp', 'PP', 'PP']
'BOUNDARY_X': [0.00, 81.24]
'BOUNDARY_Y': [0.00, 81.24]
'BOUNDARY_Z': [0.00, 81.24]
'HEADER': ['id', 'mol', 'type', 'x', 'y', 'z', ....]
'DATA':[
[1, 1, 1, 10.23, 12.32, 13.14],
[2, 1, 1, 16.23, 13.32, 12.87],
[3, 1, 1, 13.23, 17.32, 19.11],
...
]
}
```

### Fix
**Usage**
1. Initiate Fix class as Dump, also need to provide file path.
```
f = Fix(fpath)
```
2. Generally Fix only contains one stage data, so iterate it is unnecessary. But due to lazy function design, you still need read data manually.
```
f.read_data()
```

**API**
*Fix(fpath)*
* parameters:

* *fpath*: Aformentioned

* return:

* Fix return a instance but do nothing. Every function takes effect only after you iterate this instance.

* method:
* Fix.get_col(index)
give a index of fix column and return a list of this.
* Fix.read_data()
return a dict:
```
stage = f.read_data()
stage := {
'NUMBER_OF_DATA': 1234
'DATA':[
[123,234,345,654...],
[234,345,456,567...]
]
}

### Log
**Usage**
1. Initiate Log class as Fix, also need to provide file path.
```
l = Log(fpath)
```
2. Interate this Instance. Every call will drive it to read a stage and return a dict including properties and raw data.
```
for stage in l:
```
**API**
*Log(fpath, summary)*
* parameters:

* *fpath*: Aformentioned
* *summary*: default False. before use .get_col() you must set this to True

* return:

* Log return a instance but do nothing. Every function takes effect only after you iterate this instance.
* Iterate instance will return a dict:
```
stage := {
'STAGE' : 0,
'HEADER' : [Step, Temp, Press,...],
'DATA' : [
[0, 487.3, 1631.12],
...
]
}

* method:

* Log.get_col(item, *stage):
This can return whole item column in log file. Before use this, set *summary* to True.
Or if you pass a single stage as arg, then return this stage' column of item.


## model-builder
### 功能:
* 生成单链
* 生成支化链
* 生成石墨烯片(蜂窝状)(未经测试,使用方法同polymer_generator)

### 更新日志
1. 03/23:
* 逻辑重写, 修改了行走模式, 重构了折返算法 --> 增大了链与链间间隔
2. 04/22:
× 添加了生成石墨烯的脚本,增加了生成lt模板的方法

### 选项:
[DEFAULT]
* 简易名字 := simple_name (yes/no).
```
指定yes文件名为'polymer.lt', 分子名'Polymer';
no则文件名为: 'polymer-{main_chain_length}-{branch_length}\_{branch_number}.lt' , 分子名为 'Polymer-{main_chain_length}-{branch_length}_{(branch_number)}'
```

* 盒子尺寸 := box_*
* 单体文件 := monomer.ltname

[BACKBONE]
* 主链长 := c_chain_length
* 主链键长 := c_bond_length
* 主链元原子 := C_atom
* 主链原子ID := C_ID #当单体为多原子时起作用
* 是否有支链 := isBranch
```
C_atom inherits Forcefield{

write("Data Atoms"){ ###保持元原子坐标在原点不变###
$atom:C_ID $mol:... @atom:C 0 0 0 0
}}
```
[BRANCH]

* 支链长度 := b_chain_length
* 支链键长 := b_bond_length
* 支化点 := b_point = p1, p2, p3...
* 支链元原子 := b_atom
* 支链原子ID := b_ID

```
b_atom inherits Forcefield{

write("Data Atoms"){
$atom:B_ID $mol:... @atom:B 0 0 0 0
}
}
```


### 使用方法
1. 准备分子链单元的文件, 其中包含主链原子及支链原子(如果有的话)的信息, 名称与monomer_ltname一致
或者生成模板:
```
from lammps_tools.model_builder import polymer_generator
polymer_generator.generate_lt()
```
2. 使用记事本或者vim打开polymer_init.ini文件, 修改参数
3. 新建python文件,导入模块
```
polymer_generator.run()
```
4. 得到单个分子链文件. 同时输出这个链所占据的矩体尺寸, 方便在system.lt中移动生成
5. 写system.lt文件, 使用```moltemplate.sh system.lt ```生成文件

### API
× .run() 配置好ini之后, 使用此开始生成
* .generate_lt() 生成moltemplate模板

### 编译树

monomer.lt -> polymer.lt --(fieldforce.lt)--> system.lt

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lammps-tools-1.0.5.tar.gz (11.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page