示例#1
0
 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 )
示例#2
0
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])
示例#3
0
 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)
示例#4
0
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() ) )
示例#5
0
 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'} )
示例#6
0
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()))
示例#7
0
 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'})
示例#8
0
def main():
    args = parse_command_line_arguments()
    for p, ps in potcar_spec(args.potcar).items():
        print(p, ps)
示例#9
0
def main():
    args = parse_command_line_arguments()
    for p, ps in potcar_spec( args.potcar ).items():
        print( p, ps )
示例#10
0
#! /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 )