Changeset 4468


Ignore:
Timestamp:
May 21, 2007, 11:04:04 AM (18 years ago)
Author:
nick
Message:

add store_parameter which writes meta data to a file

Location:
anuga_core/source/anuga/abstract_2d_finite_volumes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • anuga_core/source/anuga/abstract_2d_finite_volumes/test_util.py

    r4341 r4468  
    12871287       
    12881288        assert allclose(x[:,0], [1.3, 0.0,4.5, 1.0])
     1289       
     1290    def test_store_parameters(self):
     1291       
     1292        from os import sep, getenv
     1293       
     1294        home = getenv('INUNDATIONHOME')
     1295        output_dir=home+sep+'data'
     1296       
     1297        kwargs = {'file_name':'new2.txt','output_dir':output_dir,'who':'me', 'what':'detail', 'how':2, 'why':241,'Completed':'yes'}
     1298#        {'data_origin': data_georef.get_origin(),
     1299#                  'mesh_origin': mesh_georef.get_origin(),
     1300#                  'alpha': alpha,
     1301#                  'verbose': verbose}
     1302       
     1303#        fileName = tempfile.mktemp(".csv")
     1304#        store_parameters(kwargs,fileName)
     1305#        file_name='temp.csv'
     1306        store_parameters(**kwargs)
     1307#        store_parameters(file_name=file_name, scenario_name='dampier',\
     1308#                         who="me", time_thining=12,tide=2.6)
     1309
     1310       
     1311        fid = open(str(kwargs.pop('file_name')))
     1312        header = fid.readline()
     1313        line = fid.readline()
     1314        fid.close()
     1315        print'header',header,'lines',line
     1316       
     1317        #file exists
     1318#        assert access(file_name,F_OK)
     1319        a=['who,time']
     1320#        assert allclose(header, a)
     1321#        assert allclose(header, [who,time])
     1322#        assert header=='who,time1
     1323#        assert allclose(line,['me',12])
     1324       
    12891325
    12901326     
     
    12941330if __name__ == "__main__":
    12951331    suite = unittest.makeSuite(Test_Util,'test')
    1296     #suite = unittest.makeSuite(Test_Util,'test_get_data_from_file')
     1332#    suite = unittest.makeSuite(Test_Util,'test_store_parameters')
    12971333    runner = unittest.TextTestRunner()
    12981334    runner.run(suite)
  • anuga_core/source/anuga/abstract_2d_finite_volumes/util.py

    r4412 r4468  
    13831383def copy_code_files(dir_name, filename1, filename2):
    13841384    """Copies "filename1" and "filename2" to "dir_name". Very useful for
    1385     information management """
     1385    information management
     1386    filename1 and filename2 are both absolute pathnames   
     1387    """
    13861388
    13871389    if access(dir_name,F_OK) == 0:
     
    14511453    return header_fields, data
    14521454
    1453 
    1454 
     1455def store_parameters(verbose=False,**kwargs):
     1456    """
     1457    Must have a file_name keyword arg, this is what is writing to.
     1458    might be a better way to do this using CSV module Writer and writeDict
     1459   
     1460    writes file to "output_dir" unless "completed" is in kwargs, then it writes to
     1461    "file_name" kwargs
     1462     Returns a object which is a subset of the original
     1463        and the data points and attributes in this new object refer to
     1464        the indices provided
     1465       
     1466        Input
     1467            indices- a list of integers that represent the new object
     1468        Output
     1469            New geospatial data object representing points specified by
     1470            the indices
     1471    """
     1472    import types
     1473    import os
     1474
     1475    # Check that kwargs is a dictionary
     1476    if type(kwargs) != types.DictType:
     1477        raise TypeError
     1478   
     1479    try:
     1480        kwargs['completed']
     1481        completed=True
     1482    except:
     1483        completed=False
     1484
     1485    # assert that a file_name exists
     1486   
     1487    #get file name and removes from dict
     1488    if completed:
     1489        try:
     1490            file = str(kwargs.pop('file_name'))
     1491        except:
     1492            raise 'kwargs must have file_name'
     1493    else:
     1494        try:
     1495            file = str(kwargs.pop('output_dir'))+'detail_temp.csv'
     1496        except:
     1497            raise 'kwargs must have output_dir'
     1498       
     1499   
     1500#    print kwargs
     1501    #extracts the header info and the new line info
     1502    line=''
     1503    header=''
     1504    count=0
     1505    keys = kwargs.keys()
     1506#    print 'keys',keys
     1507    keys.sort()
     1508#    print 'keys',keys
     1509   
     1510#    for k in kwargs.keys():
     1511    #used the sorted keys to create the header and line data
     1512    for k in keys:
     1513        print "%s = %s" %(k, kwargs[k])
     1514        header = header+str(k)
     1515        line = line+str(kwargs[k])
     1516        count+=1
     1517        if count <len(kwargs):
     1518            header = header+','
     1519            line = line+','
     1520
     1521
     1522    # checks the header info, if the same, then write, if not create a new file
     1523    #try to open!
     1524#    print'file name',file
     1525    try:
     1526        fid = open(file,"r")
     1527        file_header=fid.readline()
     1528        fid.close()
     1529        if verbose: print 'read file header %s' %file_header
     1530       
     1531    except:
     1532        msg = 'try to create new file',file
     1533        if verbose: print msg
     1534        #tries to open file, maybe directory is bad
     1535        try:
     1536            fid = open(file,"w")
     1537            fid.writelines(header+'\n')
     1538            fid.close()
     1539            file_header=header
     1540        except:
     1541            msg = 'cannot create new file',file
     1542            raise msg
     1543           
     1544    #if header is same or this is a new file
     1545    if file_header.strip('\n')==header:
     1546        fid=open(file,"a")
     1547        #write new line
     1548        fid.writelines(line+'\n')
     1549        fid.close()
     1550    else:
     1551        #backup plan, if header is different and has completed will append info to
     1552        #end of details_temp.cvs file in output directory
     1553        file = str(kwargs['output_dir'])+'detail_temp.csv'
     1554        fid=open(file,"a")
     1555        fid.writelines(header+'\n')
     1556        fid.writelines(line+'\n')
     1557        fid.close()
     1558        msg = 'file header does not match input info, the input variables have changed, change file name'
     1559        raise msg
     1560
     1561     
     1562   
     1563   
     1564       
     1565   
     1566   
     1567     
     1568
     1569
Note: See TracChangeset for help on using the changeset viewer.