"""Theses functions read the legacy DISCUS stru file format in ASE Atoms."""

from __future__ import absolute_import
from ase.atoms import Atoms
from javelin.utils import unit_cell_to_vectors


def read_stru(filename):
    f = open(filename)
    lines = f.readlines()
    f.close()

    a = b = c = alpha = beta = gamma = 0

    reading_atom_list = False

    symbols = []
    positions = []

    for l in lines:
        line = l.replace(',', ' ').split()
        if not reading_atom_list:  # Wait for 'atoms' line before reading atoms
            if line[0] == 'cell':
                a, b, c, alpha, beta, gamma = [float(x) for x in line[1:7]]
                cell = unit_cell_to_vectors(a, b, c, alpha, beta, gamma)
            if line[0] == 'atoms':
                if a == 0:
                    print("Cell not found")
                    cell = None
                reading_atom_list = True
        else:
            symbol, x, y, z = line[:4]
            symbol = symbol.capitalize()
            symbols.append(symbol)
            positions.append([float(x), float(y), float(z)])

    # Return ASE Atoms object
    return Atoms(symbols=symbols, scaled_positions=positions, cell=cell)

"""Theses functions read the legacy DISCUS stru file format in ASE Atoms."""

from __future__ import absolute_import
from ase.atoms import Atoms
from javelin.utils import unit_cell_to_vectors


def read_stru(filename):
    with open(filename) as f:
        lines = f.readlines()

    a = b = c = alpha = beta = gamma = 0

    reading_atom_list = False

    symbols = []
    positions = []

    for l in lines:
        line = l.replace(',', ' ').split()
        if not reading_atom_list:  # Wait for 'atoms' line before reading atoms
            if line[0] == 'cell':
                a, b, c, alpha, beta, gamma = [float(x) for x in line[1:7]]
                cell = unit_cell_to_vectors(a, b, c, alpha, beta, gamma)
            if line[0] == 'atoms':
                if a == 0:
                    print("Cell not found")
                    cell = None
                reading_atom_list = True
        else:
            symbol, x, y, z = line[:4]
            symbol = symbol.capitalize()
            symbols.append(symbol)
            positions.append([float(x), float(y), float(z)])

    # Return ASE Atoms object
    return Atoms(symbols=symbols, scaled_positions=positions, cell=cell)

Use with to open file in read_stru
Use with to open file in read_stru

  """Theses functions read the legacy DISCUS stru file format in ASE Atoms."""
  
  from __future__ import absolute_import
  from ase.atoms import Atoms
  from javelin.utils import unit_cell_to_vectors
  
  
  def read_stru(filename):
-     f = open(filename)
+     with open(filename) as f:
-     lines = f.readlines()
+         lines = f.readlines()
-     f.close()
  
      a = b = c = alpha = beta = gamma = 0
  
      reading_atom_list = False
  
      symbols = []
      positions = []
  
      for l in lines:
          line = l.replace(',', ' ').split()
          if not reading_atom_list:  # Wait for 'atoms' line before reading atoms
              if line[0] == 'cell':
                  a, b, c, alpha, beta, gamma = [float(x) for x in line[1:7]]
                  cell = unit_cell_to_vectors(a, b, c, alpha, beta, gamma)
              if line[0] == 'atoms':
                  if a == 0:
                      print("Cell not found")
                      cell = None
                  reading_atom_list = True
          else:
              symbol, x, y, z = line[:4]
              symbol = symbol.capitalize()
              symbols.append(symbol)
              positions.append([float(x), float(y), float(z)])
  
      # Return ASE Atoms object
      return Atoms(symbols=symbols, scaled_positions=positions, cell=cell)
  
Use with to open file in read_stru
## Code Before:
"""Theses functions read the legacy DISCUS stru file format in ASE Atoms."""

from __future__ import absolute_import
from ase.atoms import Atoms
from javelin.utils import unit_cell_to_vectors


def read_stru(filename):
    f = open(filename)
    lines = f.readlines()
    f.close()

    a = b = c = alpha = beta = gamma = 0

    reading_atom_list = False

    symbols = []
    positions = []

    for l in lines:
        line = l.replace(',', ' ').split()
        if not reading_atom_list:  # Wait for 'atoms' line before reading atoms
            if line[0] == 'cell':
                a, b, c, alpha, beta, gamma = [float(x) for x in line[1:7]]
                cell = unit_cell_to_vectors(a, b, c, alpha, beta, gamma)
            if line[0] == 'atoms':
                if a == 0:
                    print("Cell not found")
                    cell = None
                reading_atom_list = True
        else:
            symbol, x, y, z = line[:4]
            symbol = symbol.capitalize()
            symbols.append(symbol)
            positions.append([float(x), float(y), float(z)])

    # Return ASE Atoms object
    return Atoms(symbols=symbols, scaled_positions=positions, cell=cell)

## Instruction:
Use with to open file in read_stru
## Code After:
"""Theses functions read the legacy DISCUS stru file format in ASE Atoms."""

from __future__ import absolute_import
from ase.atoms import Atoms
from javelin.utils import unit_cell_to_vectors


def read_stru(filename):
    with open(filename) as f:
        lines = f.readlines()

    a = b = c = alpha = beta = gamma = 0

    reading_atom_list = False

    symbols = []
    positions = []

    for l in lines:
        line = l.replace(',', ' ').split()
        if not reading_atom_list:  # Wait for 'atoms' line before reading atoms
            if line[0] == 'cell':
                a, b, c, alpha, beta, gamma = [float(x) for x in line[1:7]]
                cell = unit_cell_to_vectors(a, b, c, alpha, beta, gamma)
            if line[0] == 'atoms':
                if a == 0:
                    print("Cell not found")
                    cell = None
                reading_atom_list = True
        else:
            symbol, x, y, z = line[:4]
            symbol = symbol.capitalize()
            symbols.append(symbol)
            positions.append([float(x), float(y), float(z)])

    # Return ASE Atoms object
    return Atoms(symbols=symbols, scaled_positions=positions, cell=cell)
