# How to input data in SAGE and deal with them

I wish to calculate the width of the certain polytopes, the data for these polytopes can be found here (please click "K3/3d" on the left, and then click "list of all 4319" on the top of new page, for some reason, I could not cite the exact URL).

For example, the first one is

3 4 M:5 4 N:35 4 Pic:19 Cor:0

1    0    0   -1
0    1    0   -1
0    0    1   -1

However, only the number in the matrix will be used in the calculation. My questions are:

(1) How to input these data in SAGE (I use a windows system, and run Virtualbox for SAGE)?

(2) How to use sage to deal with each matrix?

For each of matrix, I have a program as the follows

sage: m = matrix(ZZ, [[1,0,0,-1],
....:        [0,1,0,-1],
....:        [0,0,1,-1]])
sage: p = LatticePolytope(m)
sage: d = p.distances()
sage: l = p.nfacets()
sage: for i in range(l):
....:     max(d.row(i))

After input the data, how to let sage use the same program deal with each matrix?

Thank you very much for your help!!!

edit retag close merge delete

Maybe also the answers in this (http://ask.sagemath.org/question/1842/how-to-plot-data-from-a-file#2705) related questions are helpful.

( 2013-11-03 11:23:21 +0200 )edit

Sort by ยป oldest newest most voted

Copy and paste the data from "K3/3d" to a text file. Upload that file to your worksheet (I use Sage Notebook). (I name the file 'k3_d3_data.txt')

Open the file in your worksheet. Now you can iterate through the lines and convert the appropriate lines to matrices.

data_file = file(DATA+'k3_d3_data.txt','r')
matrix_list = []
while True:
try:
data_file.next()
except StopIteration:
break
row1 = [int(z) for z in data_file.next().split()]
row2 = [int(z) for z in data_file.next().split()]
row3 = [int(z) for z in data_file.next().split()]
matrix_list.append(matrix(ZZ,[row1,row2,row3]))

for M in matrix_list:
print M
more

@ndomes, Thank you very very much!!! You answer is fabulous, I know how to do it now!!!

( 2013-11-03 13:59:04 +0200 )edit