octadist.io

octadist.src.io.is_cif(f)[source]

Check if the input file is .cif file format.

Parameters:f (str) – User input filename.
Returns:bool (bool) – If file is CIF file, return True.

See also

get_coord_cif()
Find atomic coordinates of molecule from CIF file.

Notes

More details about CIF file format are provided at https://en.wikipedia.org/wiki/Crystallographic_Information_File.

Examples

>>> # example.cif
>>> # example
>>> # _audit_creation_date              2012-10-26T21:09:50-0400
>>> # _audit_creation_method            fapswitch 2.2
>>> # _symmetry_space_group_name_H-M    P1
>>> # _symmetry_Int_Tables_number       1
>>> # _space_group_crystal_system       triclinic
>>> # _cell_length_a                    16.012374
>>> # _cell_length_b                    14.740457
>>> # _cell_length_c                    19.436146
>>> # _cell_angle_alpha                 89.939227
>>> # _cell_angle_beta                  90.110039
>>> # _cell_angle_gamma                 90.015104
>>> # _cell_volume                      4587.49671393
>>> #
>>> # loop_
>>> # _atom_site_label
>>> # _atom_site_type_symbol
>>> # _atom_type_description
>>> # _atom_site_fract_x
>>> # _atom_site_fract_y
>>> # _atom_site_fract_z
>>> # _atom_type_partial_charge
>>> # C1    C     C_R   0.340882 0.499989 0.500098 0.541130
>>> # C2    C     C_R   0.528123 0.048033 0.558069 0.232589
>>> # C3    C     C_R   0.499931 0.902862 0.500001 -0.063750
>>> # C4    C     C_R   0.500061 0.097137 0.500001 -0.063745
>>> # C5    C     C_1   0.499958 0.802655 0.499991 0.266033
>>> # ...
>>> is_cif("example.cif")
True
octadist.src.io.get_coord_cif(f)[source]

Get coordinate from .cif file.

Parameters:f (str) – User input filename.
Returns:
  • atom (list) – Full atomic labels of complex.
  • coord (array_like) – Full atomic coordinates of complex.

Examples

>>> file = "example.cif"
>>> atom, coord = get_coord_cif(file)
>>> atom
['Fe', 'O', 'O', 'N', 'N', 'N', 'N']
>>> coord
array([[18.268051, 11.28912 ,  2.565804],
       [19.823874, 10.436314,  1.381569],
       [19.074466,  9.706294,  3.743576],
       [17.364238, 10.733354,  0.657318],
       [16.149538, 11.306661,  2.913619],
       [18.599941, 12.116308,  4.528988],
       [18.364987, 13.407634,  2.249608]])
octadist.src.io.is_xyz(f)[source]

Check if the input file is .xyz file format.

Parameters:f (str) – User input filename.
Returns:bool (bool) – If file is XYZ file, return True.

See also

get_coord_xyz()
Find atomic coordinates of molecule from XYZ file.

Examples

>>> # example.xyz
>>> # 20
>>> # Comment: From Excel file
>>> # Fe  6.251705    9.063211    5.914842
>>> # N   8.15961     9.066456    5.463087
>>> # N   6.749414    10.457551   7.179682
>>> # N   5.709997    10.492955   4.658257
>>> # N   4.350474    9.106286    6.356091
>>> # O   5.789096    7.796326    4.611355
>>> # O   6.686381    7.763872    7.209699
>>> # ...
>>> is_xyz("example.xyz")
True
octadist.src.io.get_coord_xyz(f)[source]

Get coordinate from .xyz file.

Parameters:f (str) – User input filename.
Returns:
  • atom (list) – Full atomic labels of complex.
  • coord (array_like) – Full atomic coordinates of complex.

Examples

>>> file = "Fe-distorted-complex.xyz"
>>> atom, coord = get_coord_xyz(file)
>>> atom
['Fe', 'O', 'O', 'N', 'N', 'N', 'N']
>>> coord
array([[18.268051, 11.28912 ,  2.565804],
       [19.823874, 10.436314,  1.381569],
       [19.074466,  9.706294,  3.743576],
       [17.364238, 10.733354,  0.657318],
       [16.149538, 11.306661,  2.913619],
       [18.599941, 12.116308,  4.528988],
       [18.364987, 13.407634,  2.249608]])
octadist.src.io.is_gaussian(f)[source]

Check if the input file is Gaussian file format.

Parameters:f (str) – User input filename.
Returns:bool (bool) – If file is Gaussian output file, return True.

See also

get_coord_gaussian()
Find atomic coordinates of molecule from Gaussian file.

Examples

>>> # gaussian.log
>>> #                             Standard orientation:
>>> # ---------------------------------------------------------------------
>>> # Center     Atomic      Atomic             Coordinates (Angstroms)
>>> # Number     Number       Type             X           Y           Z
>>> # ---------------------------------------------------------------------
>>> #      1         26           0        0.000163    1.364285   -0.000039
>>> #      2          8           0        0.684192    0.084335   -1.192008
>>> #      3          8           0       -0.683180    0.083251    1.191173
>>> #      4          7           0        1.639959    1.353157    1.006941
>>> #      5          7           0       -0.563377    2.891083    1.435925
>>> # ...
>>> is_gaussian("gaussian.log")
True
octadist.src.io.get_coord_gaussian(f)[source]

Extract XYZ coordinate from Gaussian output file.

Parameters:f (str) – User input filename.
Returns:
  • atom (list) – Full atomic labels of complex.
  • coord (array_like) – Full atomic coordinates of complex.

Examples

>>> file = "Gaussian-Fe-distorted-complex.out"
>>> atom, coord = get_coord_gaussian(file)
>>> atom
['Fe', 'O', 'O', 'N', 'N', 'N', 'N']
>>> coord
array([[18.268051, 11.28912 ,  2.565804],
       [19.823874, 10.436314,  1.381569],
       [19.074466,  9.706294,  3.743576],
       [17.364238, 10.733354,  0.657318],
       [16.149538, 11.306661,  2.913619],
       [18.599941, 12.116308,  4.528988],
       [18.364987, 13.407634,  2.249608]])
octadist.src.io.is_nwchem(f)[source]

Check if the input file is NWChem file format.

Parameters:f (str) – User input filename.
Returns:bool (bool) – If file is NWChem output file, return True.

See also

get_coord_nwchem()
Find atomic coordinates of molecule from NWChem file.

Examples

>>> # nwchem.out
>>> #   ----------------------
>>> #   Optimization converged
>>> #   ----------------------
>>> # ...
>>> # ...
>>> #  No.       Tag          Charge          X              Y              Z
>>> # ---- ---------------- ---------- -------------- -------------- --------------
>>> #    1 Ru(Fragment=1)      44.0000    -3.04059115    -0.08558108    -0.07699482
>>> #    2 C(Fragment=1)        6.0000    -1.62704660     2.40971357     0.63980357
>>> #    3 C(Fragment=1)        6.0000    -0.61467778     0.59634595     1.68841986
>>> #    4 C(Fragment=1)        6.0000     0.31519183     1.41684566     2.30745116
>>> #    5 C(Fragment=1)        6.0000     0.28773462     2.80126911     2.08006241
>>> # ...
>>> is_nwchem("nwchem.out")
True
octadist.src.io.get_coord_nwchem(f)[source]

Extract XYZ coordinate from NWChem output file.

Parameters:f (str) – User input filename.
Returns:
  • atom (list) – Full atomic labels of complex.
  • coord (array_like) – Full atomic coordinates of complex.

Examples

>>> file = "NWChem-Fe-distorted-complex.out"
>>> atom, coord = get_coord_nwchem(file)
>>> atom
['Fe', 'O', 'O', 'N', 'N', 'N', 'N']
>>> coord
array([[18.268051, 11.28912 ,  2.565804],
       [19.823874, 10.436314,  1.381569],
       [19.074466,  9.706294,  3.743576],
       [17.364238, 10.733354,  0.657318],
       [16.149538, 11.306661,  2.913619],
       [18.599941, 12.116308,  4.528988],
       [18.364987, 13.407634,  2.249608]])
octadist.src.io.is_orca(f)[source]

Check if the input file is ORCA file format.

Parameters:f (str) – User input filename.
Returns:bool (bool) – If file is ORCA output file, return True.

See also

get_coord_orca()
Find atomic coordinates of molecule from ORCA file.

Examples

>>> # orca.out
>>> # ---------------------------------
>>> # CARTESIAN COORDINATES (ANGSTROEM)
>>> # ---------------------------------
>>> #   C      0.009657    0.000000    0.005576
>>> #   C      0.009657   -0.000000    1.394424
>>> #   C      1.212436   -0.000000    2.088849
>>> #   C      2.415214    0.000000    1.394425
>>> #   C      2.415214   -0.000000    0.005575
>>> # ...
>>> is_orca("orca.out")
True
octadist.src.io.get_coord_orca(f)[source]

Extract XYZ coordinate from ORCA output file.

Parameters:f (str) – User input filename.
Returns:
  • atom (list) – Full atomic labels of complex.
  • coord (array_like) – Full atomic coordinates of complex.

Examples

>>> file = "ORCA-Fe-distorted-complex.out"
>>> atom, coord = get_coord_orca(file)
>>> atom
['Fe', 'O', 'O', 'N', 'N', 'N', 'N']
>>> coord
array([[18.268051, 11.28912 ,  2.565804],
       [19.823874, 10.436314,  1.381569],
       [19.074466,  9.706294,  3.743576],
       [17.364238, 10.733354,  0.657318],
       [16.149538, 11.306661,  2.913619],
       [18.599941, 12.116308,  4.528988],
       [18.364987, 13.407634,  2.249608]])
octadist.src.io.is_qchem(f)[source]

Check if the input file is Q-Chem file format.

Parameters:f (str) – User input filename.
Returns:bool (bool) – If file is Q-Chem output file, return True.

See also

get_coord_qchem()
Find atomic coordinates of molecule from Q-Chem file.

Examples

>>> # qchem.out
>>> # ******************************
>>> # **  OPTIMIZATION CONVERGED  **
>>> # ******************************
>>> #                            Coordinates (Angstroms)
>>> #     ATOM                X               Y               Z
>>> #      1  C         0.2681746845   -0.8206222796   -0.3704019386
>>> #      2  C        -1.1809302341   -0.5901746612   -0.6772716414
>>> #      3  H        -1.6636318262   -1.5373167851   -0.9496501352
>>> #      4  H        -1.2829834971    0.0829227646   -1.5389938241
>>> #      5  C        -1.9678565203    0.0191922768    0.5346693165
>>> # ...
>>> is_qchem("qchem.out")
True
octadist.src.io.get_coord_qchem(f)[source]

Extract XYZ coordinate from Q-Chem output file.

Parameters:f (str) – User input filename.
Returns:
  • atom (list) – Full atomic labels of complex.
  • coord (array_like) – Full atomic coordinates of complex.

Examples

>>> file = "Qchem-Fe-distorted-complex.out"
>>> atom, coord = get_coord_qchem(file)
>>> atom
['Fe', 'O', 'O', 'N', 'N', 'N', 'N']
>>> coord
array([[18.268051, 11.28912 ,  2.565804],
       [19.823874, 10.436314,  1.381569],
       [19.074466,  9.706294,  3.743576],
       [17.364238, 10.733354,  0.657318],
       [16.149538, 11.306661,  2.913619],
       [18.599941, 12.116308,  4.528988],
       [18.364987, 13.407634,  2.249608]])
octadist.src.io.count_line(file=None)[source]

Count lines in an input file.

Parameters:file (str) – Absolute or full path of input file.
Returns:i + 1 (int) – Number of line in file.

Examples

>>> file = "[Fe(1-bpp)2][BF4]2-HS.xyz"
>>> count_line(file)
27
octadist.src.io.extract_coord(file=None)[source]

Check file type, read data, extract atomic symbols and cartesian coordinate from a structure input file provided by the user. This function can efficiently manupulate I/O process. File types currently supported are listed in notes below. Other file formats can also be implemented easily within this module.

Parameters:file (str) – User input filename.
Returns:
  • atom (list) – Full atomic labels of complex.
  • coord (array_like) – Full atomic coordinates of complex.

See also

octadist.main.OctaDist.open_file()
Open file dialog and to browse input file.
octadist.main.OctaDist.search_coord()
Search octahedral structure in complex.

Notes

The following are file types supported by the current virsion of OctaDist:

  • CIF
  • XYZ
  • Gaussian
  • NWChem
  • ORCA
  • Q-Chem

Examples

>>> file = "[Fe(1-bpp)2][BF4]2-HS.xyz"
>>> atom, coord = extract_coord(file)
>>> atom
['Fe', 'N', 'N', 'N', 'N', 'N', 'N', 'C', 'C']
>>> coord
array([[-1.95348286e+00,  4.51770478e+00,  1.47855811e+01],
       [-1.87618286e+00,  4.48070478e+00,  1.26484811e+01],
       [-2.18698286e+00,  4.34540478e+00,  1.69060811e+01],
       [-4.88286000e-03,  3.69060478e+00,  1.42392811e+01],
       [-1.17538286e+00,  6.38340478e+00,  1.56457811e+01],
       [-2.75078286e+00,  2.50260478e+00,  1.51806811e+01],
       [-3.90128286e+00,  5.27750478e+00,  1.40814811e+01],
       [-6.14953418e+00,  8.30666180e+00,  2.91361978e+01],
       [-8.59995241e+00,  7.11630815e+00,  4.52898814e+01]])
octadist.src.io.find_metal(atom=None, coord=None)[source]

Count the number of metal center atom in complex.

Parameters:
  • atom (list or None) – Full atomic labels of complex. Default is None.
  • coord (array_like or None) – Full atomic coordinates of complex. Default is None.
Returns:

  • total_metal (int) – The total number of metal center atom.
  • atom_metal (list) – Atomic labels of metal center atom.
  • coord_metal (array_like) – Atomic coordinates of metal center atom.

See also

octadist.src.elements.check_atom()
Convert atomic number to atomic symbol and vice versa.

Examples

>>> atom = ['Fe', 'N', 'N', 'N', 'N', 'N', 'N']
>>> coord = [[-1.95348286e+00,  4.51770478e+00,  1.47855811e+01],
             [-1.87618286e+00,  4.48070478e+00,  1.26484811e+01],
             [-3.90128286e+00,  5.27750478e+00,  1.40814811e+01],
             [-4.88286000e-03,  3.69060478e+00,  1.42392811e+01],
             [-2.18698286e+00,  4.34540478e+00,  1.69060811e+01],
             [-1.17538286e+00,  6.38340478e+00,  1.56457811e+01],
             [-2.75078286e+00,  2.50260478e+00,  1.51806811e+01]]
>>> total_metal, atom_metal, coord_metal = find_metal(atom, coord)
>>> total_metal
1
>>> atom_metal
['Fe']
>>> coord_metal
array([[-1.95348286,  4.51770478, 14.7855811 ]])
octadist.src.io.extract_octa(atom=None, coord=None, metal=1, cutoff_metal_ligand=2.8)[source]

Search the octahedral structure in complex and return atoms and coordinates.

Parameters:
  • atom (list) – Full atomic labels of complex.
  • coord (array_like) – Full atomic coordinates of complex.
  • metal (int) – Number of metal atom that will be taken as center atom for finding atomic coordinates of octahedral structure of interest. Default is 1.
  • cutoff_metal_ligand (float, optional) – Cutoff distance for screening metal-ligand bond. Default is 2.8.
Returns:

  • atom_octa (list) – Atomic labels of octahedral structure.
  • coord_octa (array_like) – Atomic coordinates of octahedral structure.

See also

find_metal()
Find metals in complex.
octadist.main.OctaDist.search_coord()
Search octahedral structure in complex.

Examples

>>> atom = ['Fe', 'N', 'N', 'N', 'N', 'N', 'N', 'C', 'C']
>>> coord = [[-1.95348286e+00,  4.51770478e+00,  1.47855811e+01],
             [-1.87618286e+00,  4.48070478e+00,  1.26484811e+01],
             [-3.90128286e+00,  5.27750478e+00,  1.40814811e+01],
             [-4.88286000e-03,  3.69060478e+00,  1.42392811e+01],
             [-2.18698286e+00,  4.34540478e+00,  1.69060811e+01],
             [-1.17538286e+00,  6.38340478e+00,  1.56457811e+01],
             [-2.75078286e+00,  2.50260478e+00,  1.51806811e+01],
             [-6.14953418e+00,  8.30666180e+00,  2.91361978e+01],
             [-8.59995241e+00,  7.11630815e+00,  4.52898814e+01]]
>>> atom_octa, coord_octa = extract_octa(atom, coord)
>>> atom_octa
['Fe', 'N', 'N', 'N', 'N', 'N', 'N']
>>> coord_octa
array([[-1.95348286e+00,  4.51770478e+00,  1.47855811e+01],
       [-1.87618286e+00,  4.48070478e+00,  1.26484811e+01],
       [-2.18698286e+00,  4.34540478e+00,  1.69060811e+01],
       [-4.88286000e-03,  3.69060478e+00,  1.42392811e+01],
       [-1.17538286e+00,  6.38340478e+00,  1.56457811e+01],
       [-2.75078286e+00,  2.50260478e+00,  1.51806811e+01],
       [-3.90128286e+00,  5.27750478e+00,  1.40814811e+01]])