def test_potcar_spec_raises_valueerror_if_md5sum_not_matched( self ): mock_potcar_filename = 'POTCAR' md5sum_return_values = ( '12', '56', '90' ) with patch('builtins.open', return_value=io.StringIO(mock_potcar_string)) as mock_open: with patch('vasppy.summary.md5sum', side_effect=md5sum_return_values ) as mock_md5sum: with patch.dict('vasppy.data.potcar_data.potcar_md5sum_data', mock_potcar_data, clear=True ): with self.assertRaises( ValueError ): potcar_spec( mock_potcar_filename )
def main(): args = parse_command_line_arguments() if args.hash: hashes = {} for p, md5hash in potcar_spec(args.potcar, return_hashes=True).items(): hashes[p] = md5hash for p, ps in potcar_spec(args.potcar).items(): if args.hash: print(p, ps, hashes[p]) else: print(p, ps, hashes[p])
def test_potcar_spec_raises_valueerror_if_md5sum_not_matched(self): mock_potcar_filename = 'POTCAR' md5sum_return_values = ('12', '56', '90') with patch('builtins.open', return_value=io.StringIO(mock_potcar_string)) as mock_open: with patch('vasppy.summary.md5sum', side_effect=md5sum_return_values) as mock_md5sum: with patch.dict('vasppy.data.potcar_data.potcar_md5sum_data', mock_potcar_data, clear=True): with self.assertRaises(ValueError): potcar_spec(mock_potcar_filename)
def main(): args = parse_command_line_arguments() poscar = Poscar.from_file( args.poscar ) potcars = potcar_spec( args.potcar ) for i, ( species, potcar ) in enumerate( zip( poscar.atoms, potcars ), 1 ): matching_potcar = potcar.startswith( species ) if not matching_potcar: raise AttributeError( 'Species {} mismatch:\nPOSCAR contains {}\nPOTCAR contains {}'.format( i, species, potcar ) ) if args.ppset: this_ppset = potcars[potcar] if args.ppset != this_ppset: raise AttributeError( 'Pseudopotential set mismatch: {}'.format( potcars.values() ) )
def test_potcar_spec( self ): mock_potcar_filename = 'POTCAR' md5sum_return_values = ( '12', '56', '23' ) with patch('builtins.open', return_value=io.StringIO(mock_potcar_string)) as mock_open: with patch('vasppy.summary.md5sum', side_effect=md5sum_return_values ) as mock_md5sum: with patch.dict('vasppy.data.potcar_data.potcar_md5sum_data', mock_potcar_data, clear=True ): p_spec = potcar_spec( mock_potcar_filename ) mock_open.assert_called_with( mock_potcar_filename, 'r' ) mock_md5sum.assert_has_calls( [ call('foo\nEnd of Dataset\n'), call('bar\nEnd of Dataset\n'), call('sds\nEnd of Dataset\n') ] ) self.assertEqual( p_spec, {'A': 'PBE', 'E': 'PBE_54', 'D': 'PBE_52'} )
def main(): args = parse_command_line_arguments() poscar = Poscar.from_file(args.poscar) potcars = potcar_spec(args.potcar) for i, (species, potcar) in enumerate(zip(poscar.atoms, potcars), 1): matching_potcar = potcar.startswith(species) if not matching_potcar: raise AttributeError( 'Species {} mismatch:\nPOSCAR contains {}\nPOTCAR contains {}'. format(i, species, potcar)) if args.ppset: this_ppset = potcars[potcar] if args.ppset != this_ppset: raise AttributeError('Pseudopotential set mismatch: {}'.format( potcars.values()))
def test_potcar_spec(self): mock_potcar_filename = 'POTCAR' md5sum_return_values = ('12', '56', '23') with patch('builtins.open', return_value=io.StringIO(mock_potcar_string)) as mock_open: with patch('vasppy.summary.md5sum', side_effect=md5sum_return_values) as mock_md5sum: with patch.dict('vasppy.data.potcar_data.potcar_md5sum_data', mock_potcar_data, clear=True): p_spec = potcar_spec(mock_potcar_filename) mock_open.assert_called_with(mock_potcar_filename, 'r') mock_md5sum.assert_has_calls([ call('foo\nEnd of Dataset\n'), call('bar\nEnd of Dataset\n'), call('sds\nEnd of Dataset\n') ]) self.assertEqual(p_spec, {'A': 'PBE', 'E': 'PBE_54', 'D': 'PBE_52'})
def main(): args = parse_command_line_arguments() for p, ps in potcar_spec(args.potcar).items(): print(p, ps)
def main(): args = parse_command_line_arguments() for p, ps in potcar_spec( args.potcar ).items(): print( p, ps )
#! /usr/bin/env python3 from vasppy.summary import potcar_spec import argparse def parse_command_line_arguments(): parser = argparse.ArgumentParser( description='Generate POTCAR specification based on hashing individual pseudopotential strings' ) parser.add_argument( 'potcar', help="filename of the VASP POTCAR to be processed", nargs='?', default='POTCAR' ) args = parser.parse_args() return args if __name__ == '__main__': args = parse_command_line_arguments() for p, ps in potcar_spec( args.potcar ).items(): print( p, ps )