mirror of
https://github.com/arcan1s/moldyn.git
synced 2025-07-05 01:55:47 +00:00
Added mol2rtp
This commit is contained in:
24
mol2rtp/README
Normal file
24
mol2rtp/README
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
mol2rtp
|
||||||
|
Version: 1.0
|
||||||
|
Author: Evgeniy Alexeev aka arcanis
|
||||||
|
Email: esalexeev@gmail.com
|
||||||
|
|
||||||
|
|
||||||
|
mol2rtp convert *.mol2 file in GROMACS topology
|
||||||
|
file (*.rtp).
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
mol2rtp [MOL2.FILE] [RTP.FILE]
|
||||||
|
For example:
|
||||||
|
mol2rtp exmpl.mol2 exmpl.rtp
|
||||||
|
|
||||||
|
NOTE: You must edit molecular mechanics atom types
|
||||||
|
in output *.rtp-file, because atom types in *.mol2
|
||||||
|
file don't match GROMACS atom types.
|
||||||
|
|
||||||
|
|
||||||
|
Compile:
|
||||||
|
gcc mol2rtp.c -o mol2rtp
|
||||||
|
Dependence:
|
||||||
|
* gcc
|
||||||
|
* lib: string.h, stdlib.c, stdio.h
|
88
mol2rtp/mol2rtp.c
Normal file
88
mol2rtp/mol2rtp.c
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#include<stdio.h>
|
||||||
|
#include<stdlib.h>
|
||||||
|
#include<string.h>
|
||||||
|
|
||||||
|
|
||||||
|
void main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int i, j, n_bonds, n_angles, num[2];
|
||||||
|
char q[256], label[512][4], type[4];
|
||||||
|
double charge;
|
||||||
|
FILE *inp, *out;
|
||||||
|
|
||||||
|
|
||||||
|
if (argc == 1)
|
||||||
|
{
|
||||||
|
printf ("Error: Parametrs is not enable!\n");
|
||||||
|
printf ("Usage --help or -h for help\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
if ((argv[1][0] == '-' && argv[1][1] == '-' && argv[1][2] == 'h' && argv[1][3] == 'e' && argv[1][4] == 'l', argv[1][5] == 'p') || (argv[1][0] == '-' && argv[1][1] == 'h'))
|
||||||
|
{
|
||||||
|
printf ("mol2rtp convert *.mol2 file in GROMACS topology file *.rtp\n");
|
||||||
|
printf ("NOTE: You must edit MM atom type in *.rtp file\n");
|
||||||
|
printf ("Usage: mol2rtp [MOL2.FILE] [RTP.FILE]\n");
|
||||||
|
printf ("Evgeniy Alexeev aka arcanis\n");
|
||||||
|
printf ("email: esalexeev@gmail.com\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (argc == 2)
|
||||||
|
{
|
||||||
|
printf ("Error: Parametrs is not enable!\n");
|
||||||
|
printf ("Usage --help or -h for help\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
printf ("mol2rtp V.1.0\n");
|
||||||
|
inp = fopen (argv[1], "r+");
|
||||||
|
if (inp == NULL)
|
||||||
|
{
|
||||||
|
printf ("File %s is not found!\n", argv[1]);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
out = fopen (argv[2], "w+");
|
||||||
|
|
||||||
|
|
||||||
|
fgets (q, 255, inp);
|
||||||
|
fgets (q, 255, inp);
|
||||||
|
fscanf (inp, "%i", &n_bonds);
|
||||||
|
fscanf (inp, "%i", &n_angles);
|
||||||
|
for (i=0; i<5; i++)
|
||||||
|
fgets (q, 255, inp);
|
||||||
|
|
||||||
|
|
||||||
|
printf ("Enter molecule name: ");
|
||||||
|
scanf ("%s", q);
|
||||||
|
fprintf (out, "[ %s ]\n [ atoms ]\n", q);
|
||||||
|
for (i=0; i<n_bonds; i++)
|
||||||
|
{
|
||||||
|
fgets( q, 255, inp);
|
||||||
|
charge = atof (&q[69]);
|
||||||
|
for (j=0; j<4; j++)
|
||||||
|
{
|
||||||
|
type[j] = q[j+47];
|
||||||
|
label[i][j] = q[j+8];
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (out, " %c%c%c%c %c%c%c%c %5.2f%5i\n", label[i][0], label[i][1], label[i][2], label[i][3], type[0], type[1], type[2], type[3], charge, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fprintf (out, " [ bonds ]\n");
|
||||||
|
fgets (q, 255, inp);
|
||||||
|
for (i=0; i<n_angles; i++)
|
||||||
|
{
|
||||||
|
fscanf (inp, "%i", &j);
|
||||||
|
fscanf (inp, "%i", &num[0]);
|
||||||
|
fscanf (inp, "%i", &num[1]);
|
||||||
|
fscanf (inp, "%i", &j);
|
||||||
|
|
||||||
|
fprintf (out, " %c%c%c%c %c%c%c%c\n", label[num[0]-1][0], label[num[0]-1][1], label[num[0]-1][2], label[num[0]-1][3], label[num[1]-1][0], label[num[1]-1][1], label[num[1]-1][2], label[num[1]-1][3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fclose (inp);
|
||||||
|
fclose (out);
|
||||||
|
}
|
Reference in New Issue
Block a user