Ejemplo n.º 1
0
        public static List <Matrix> ReadMatrixFromMultipleDyadicFile(string filename, int networkId)
        {
            BufferedFileReader reader = BufferedFileTable.GetFile(filename);

            lock (reader)
            {
                networkId = reader.JumpToNetworkId(networkId, true);

                Dictionary <string, int> labels = reader.GetDyadicLabels(networkId);
                int rows = labels.Count;

                // initialize the matrices
                List <Matrix> multipleMatrices = new List <Matrix>();

                string[] topLabels = reader.TopLine.Split(',');
                //string[] labels = new string[reader.CountVarsInDyadicFile()];

                for (int var = 0; var < reader.CountVarsInDyadicFile(); var++)
                {
                    Matrix matrix = new Matrix(rows, rows);
                    matrix.NetworkId = networkId;
                    matrix.Name      = topLabels[var + 3];
                    matrix.RowLabels.SetLabels(labels.Keys);
                    matrix.ColLabels.SetLabels(labels.Keys);

                    multipleMatrices.Add(matrix);
                }

                int totalLines = reader.CountLines(networkId);

                for (int i = 0; i < totalLines; ++i)
                {
                    string   s     = reader.ReadLine();
                    string[] parts = s.Split(',');

                    //if (parts.Length < 3 + reader.CountVarsInDyadicFile())
                    //  throw new FileLoadException("Missing value for line: " + s);

                    for (int var = 0; var < reader.CountVarsInDyadicFile(); var++)
                    {
                        multipleMatrices[var][labels[parts[1]], labels[parts[2]]] = ExtractDouble(parts[3 + var]);
                    }
                }

                /*
                 * if (networkId < 1000)
                 *  networkId = int.Parse("1" + networkId);
                 * else
                 *  networkId = int.Parse("2" + networkId);
                 */


                return(multipleMatrices);
            }
        }
Ejemplo n.º 2
0
        private static Matrix ReadMatrixFromDyadicFile(BufferedFileReader reader, int networkId, int dyadicVariable)
        {
            networkId = reader.JumpToNetworkId(networkId, true);

            Dictionary <string, int> labels = reader.GetDyadicLabels(networkId);
            int rows = labels.Count;

            Matrix matrix = new Matrix(rows, rows);

            //matrix.NetworkId = networkId;
            //matrix.NetworkId = int.Parse("1" + matrix.NetworkId); // new
            matrix.RowLabels.SetLabels(labels.Keys);
            matrix.ColLabels.SetLabels(labels.Keys);

            int totalLines = reader.CountLines(networkId);

            for (int i = 0; i < totalLines; ++i)
            {
                string s = reader.ReadLine();

                string[] parts = s.Split(',');

                if (parts.Length < 3 + dyadicVariable)
                {
                    throw new FileLoadException("Missing value for line: " + s);
                }

                matrix[labels[parts[1]], labels[parts[2]]] = ExtractDouble(parts[3 + dyadicVariable]);
            }

            /*
             * if (networkId < 1000)
             *  networkId = int.Parse("1" + networkId);
             * else
             *  networkId = int.Parse("2" + networkId);
             */
            matrix.NetworkId = networkId;


            return(matrix);
        }
Ejemplo n.º 3
0
        private static Matrix ReadMatrixFromDyadicFile(BufferedFileReader reader, int networkId, int dyadicVariable)
        {
            networkId = reader.JumpToNetworkId(networkId, true);

            Dictionary<string, int> labels = reader.GetDyadicLabels(networkId);
            int rows = labels.Count;

            Matrix matrix = new Matrix(rows, rows);
            //matrix.NetworkId = networkId;
            //matrix.NetworkId = int.Parse("1" + matrix.NetworkId); // new
            matrix.RowLabels.SetLabels(labels.Keys);
            matrix.ColLabels.SetLabels(labels.Keys);

            int totalLines = reader.CountLines(networkId);
            for (int i = 0; i < totalLines; ++i)
            {
                string s = reader.ReadLine();

                string[] parts = s.Split(',');

                if (parts.Length < 3 + dyadicVariable)
                    throw new FileLoadException("Missing value for line: " + s);

                matrix[labels[parts[1]], labels[parts[2]]] = ExtractDouble(parts[3 + dyadicVariable]);
            }
            /*
            if (networkId < 1000)
                networkId = int.Parse("1" + networkId);
            else
                networkId = int.Parse("2" + networkId);
            */
            matrix.NetworkId = networkId;

            return matrix;
        }