I have a question regarding nested tables. The populating a nested table example in the PyTables UserManual (pp. 44-45) only deals with a nested table that is called once and really doesn't subdivide. However, what if my data structure looks something like:
MotorName ExpSet Load Efficiency | | |__ 25%____|____80%___| | | Set #1 | 50% | 85% | | 2313 |-------------------|-------------------|-------------------| | | Set #2 |___25%____|____81%___| |_______________ |___________|___50%____|____87%___| | | | 2314 | <continuation> |_______________ | I'm not sure how to use the row.append() for such a situation. For example, I first populate MotorName, then Set#1, then 25% and 80%. Next I want to proceed to the next "subrow", so do I do a row.append() now? If so does it append that "subrow" only, or does it automatically jump to the next MotorName row (2314)? Or is there another preferred method of filling such nested tables? Any help would be greatly appreciated, K Christman import cPickle import re from tables import * f=open('a.dat') a=cPickle.load(f) f.close() f=open('b.dat') b=cPickle.load(f) f.close() f=open('c.dat') c=cPickle.load(f) f.close() f=open('d.dat') d=cPickle.load(f) f.close() class MotorData(IsDescription): MotorCompany = StringCol(16,pos=0) MotorType = StringCol(8,pos=1) CatalogNum = StringCol(16,pos=2) SpecNum = StringCol(16,pos=3) N_RatedHP = UInt16Col(pos=4) N_Voltage = StringCol(16,pos=5) N_Hertz = UInt8Col(pos=6) N_Phase = UInt8Col(pos=7) N_FullLoadAmps = StringCol(16,pos=8) UsableAt208Volts = Float32Col(pos=9) N_SyncSpeed = UInt16Col(pos=10) FrameSize = StringCol(8,pos=11) N_ServiceFactor = Float32Col(pos=12) N_Rating = StringCol(16,pos=13) N_LockedRotorCode = StringCol(1,pos=14) N_NEMA_DesignCode = StringCol(1,pos=15) InsulationClass = StringCol(1,pos=16) N_NominalEfficiency = Float32Col(pos=17) #this should be decimal N_NominalPowerFactor = Float32Col(pos=18) Enclosure = StringCol(8,pos=19) BaldorType = StringCol(8,pos=20) DE_Bearing = StringCol(8,pos=21) #this could be a Int once we confirm they are all integers ODE_Bearing = StringCol(8,pos=22) ElectricalSpecNum = StringCol(16,pos=23) MechanicalSpecNum = StringCol(16,pos=24) Base = StringCol(8,pos=25) Mounting = StringCol(8,pos=26) #ExpSet = MotorDataExpSets() class ExpSets(IsDescription): #many of these should be converted to number formats #_v_pos = 1 FullLoadTorque = Float32Col(pos=0) StartConfig = StringCol(8,pos=1) BreakDownTorque = Float32Col(pos=2) PullUpTorque = Float32Col(pos=3) LockedRotorTorque = Float32Col(pos=4) StartingCurrent = Float32Col(pos=5) NoLoadCurrent = Float32Col(pos=6) LineLineResistance = Float32Col(pos=7) TempRiseatFL = UInt8Col(pos=8) TempRiseatSF = UInt8Col(pos=9) #ExpSets2 = MotorLoadTest() class ExpSets2(IsDescription): #_v_pos = 2 pLoad = Float32Col(pos=0) PowerFactor = Float32Col(pos=1) Efficiency = Float32Col(pos=2) Speed = UInt16Col(pos=3) LineAmps = Float32Col(pos=4) fileh = openFile('data2.h5', 'w') DryExp = fileh.createTable(fileh.root, 'DryExp', MotorData) row = DryExp.row def returnNum(string): reg_ex = re.compile(r'([0-9.]*)') #regular expression return float(reg_ex.search(string).group(1)) for i in range(10): row['N_RatedHP'] = returnNum(b[0][i]) row['N_Hertz'] = int(b[1][i]) row['N_NominalEfficiency'] = float(b[2][i])/100 row['N_Voltage'] = b[3][i] row['N_Phase'] = int(b[4][i]) row['N_NominalPowerFactor'] = float(b[5][i])/100 row['N_FullLoadAmps'] = b[6][i] row['N_NEMA_DesignCode'] = b[7][i] row['N_ServiceFactor'] = float(b[8][i]) row['N_SyncSpeed'] = int(b[9][i]) row['N_LockedRotorCode'] = b[10][i] row['N_Rating'] = b[11][i] row['ExpSets/FullLoadTorque'] = float(returnNum(b[12][i])) row['ExpSets/StartingCurrent'] = float(returnNum(b[13][i])) row['ExpSets/StartConfig'] = b[14][i] row['ExpSets/NoLoadCurrent'] = float(returnNum(b[15][i])) row['ExpSets/BreakDownTorque'] = float(returnNum(b[16][i])) row['ExpSets/LineLineResistance'] = float(returnNum(b[17][i])) row['ExpSets/PullUpTorque'] = float(returnNum(b[18][i])) row['ExpSets/TempRiseatFL'] = int(b[19][i]) row['ExpSets/LockedRotorTorque'] = float(returnNum(b[20][i])) row['ExpSets/TempRiseatSF'] = int(b[21][i]) for j in range(2): row['ExpSets/ExpSets2/pLoad'] = float(b[22+j][i])/100 row['ExpSets/ExpSets2/PowerFactor'] = float(b[29+j][i])/100 row['ExpSets/ExpSets2/Efficiency']= float(b[36+j][i])/100 row['ExpSets/ExpSets2/Speed'] = int(b[43+j][i]) row['ExpSets/ExpSets2/LineAmps'] = float(b[50+j][i]) row.append() #this should be for the subrow only row.append() DryExp.flush() fileh.close() ____________________________________________________________________________________ Looking for last minute shopping deals? Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Pytables-users mailing list Pytables-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pytables-users