00001
00010
00011 #include <iostream>
00012 #include <string>
00013 #include <vector>
00014 #include <fstream>
00015
00016 #include <cstdio>
00017 #include <cstdlib>
00018 #include <cmath>
00019 #include <cassert>
00020
00021
00022 #include "graphCharac+.hh"
00023
00024
00025 using namespace std;
00026
00027 void GraphManipulator::ReadGraphVersion3(char * path,char *pathTime)
00028 {
00029
00030 FILE *ifp;
00031 ifp=NULL;
00032 assert (ifp=fopen(path,"r"));
00033 int auxRead;int length;float auxReadF;float weightMT;
00034
00035 fscanf(ifp,"%d",&auxRead);
00036 nb_TimelessClasses=auxRead;
00037 fscanf(ifp,"%d",&auxRead);
00038 nb_dim=auxRead;
00039 fscanf(ifp,"%d",&auxRead);
00040 nb_images=auxRead;
00041
00042
00043 TimeDelay=new float[nb_images];
00044 FILE *ifpTime;
00045 ifpTime=NULL;
00046 assert (ifpTime=fopen(pathTime,"r"));
00047 for (int i=0;i<nb_images-1;i++){
00048 fscanf(ifpTime,"%d",&auxRead);
00049 TimeDelay[i+1]=auxRead;
00050 }
00051
00052
00053
00054 TmpClass=new DynaClass[nb_TimelessClasses];
00055 for (int kMT=0;kMT<nb_TimelessClasses;kMT++){TmpClass[kMT].InitRead(nb_images,nb_dim);}
00056
00057
00058 for (int kMT=0;kMT<nb_TimelessClasses;kMT++){
00059 fscanf(ifp,"%d",&auxRead);
00060 fscanf(ifp,"%f",&weightMT);
00061
00062 for(int t=0;t<nb_images;t++){
00063 fscanf(ifp,"%d",&auxRead);
00064 TmpClass[kMT].MTAlloc(t);
00065 TmpClass[kMT].MTWeight[t][0]=(unsigned long int)weightMT;
00066
00067 for (int j=0;j<nb_dim;j++){fscanf(ifp,"%f",&auxReadF);TmpClass[kMT].MTCentroids[t][0][j]=auxReadF;}
00068 for (int j=0;j<nb_dim;j++){
00069 for (int l=0;l<nb_dim;l++){
00070 fscanf(ifp,"%f",&auxReadF);
00071 TmpClass[kMT].MTCovariances[t][0][j][l]=auxReadF;
00072 }
00073 }
00074 fscanf(ifp,"%d",&auxRead);
00075 length=auxRead;
00076 if (kMT==0){TmpClass[kMT].TLAllocCenterCov(t,length);}
00077 TmpClass[kMT].TLAlloc2(t,length);
00078 if (t>0){TmpClass[kMT].flowDivAlloc(t,(int)TmpClass[kMT].AssignedTimelessClass[t-1].size(),length);}
00079
00080 for (int kTL=0;kTL<(int)length;kTL++){
00081 fscanf(ifp,"%d",&auxRead);
00082 TmpClass[kMT].AssignedTimelessClass[t][kTL]=auxRead;
00083 fscanf(ifp,"%f",&auxReadF);
00084 TmpClass[kMT].Weight[t][kTL]=(unsigned long int)auxReadF;
00085 fscanf(ifp,"%e",&auxReadF);
00086 TmpClass[kMT].DivergenceValue[t][kTL]=(float)auxReadF/(float)TmpClass[kMT].MTWeight[t][0];
00087
00088 for (int i=0;i<nb_dim;i++){
00089 fscanf(ifp,"%f",&auxReadF);
00090 TmpClass[0].Centroids[t][TmpClass[kMT].AssignedTimelessClass[t][kTL]][i]=auxReadF;
00091 }
00092 for (int i=0;i<nb_dim;i++){
00093 for (int j=0;j<nb_dim;j++){
00094 fscanf(ifp,"%f",&auxReadF);
00095 TmpClass[0].Covariances[t][TmpClass[kMT].AssignedTimelessClass[t][kTL]][i][j]=auxReadF;
00096 }
00097 }
00098 if (t>0){
00099
00100 for (int kTLpre=0;kTLpre<(int)TmpClass[kMT].AssignedTimelessClass[t-1].size();kTLpre++){
00101 fscanf(ifp,"%d",&auxRead);
00102 fscanf(ifp,"%f",&auxReadF);
00103 TmpClass[kMT].flow[t][kTLpre][kTL]=auxReadF;
00104 fscanf(ifp,"%f",&auxReadF);
00105 TmpClass[kMT].div[t][kTLpre][kTL]=auxReadF;
00106 if (TmpClass[kMT].div[t][kTLpre][kTL]<0){TmpClass[kMT].div[t][kTLpre][kTL]=0;cout<<"neg div"<<endl;}
00107 if (TmpClass[kMT].div[t][kTLpre][kTL]>1e5){TmpClass[kMT].div[t][kTLpre][kTL]=1e10;}
00108 }
00109 }
00110 }
00111
00112 if (t>0){ fscanf(ifp,"%f",&auxReadF);TmpClass[kMT].MutualInfo[t-1]=auxReadF;}
00113
00114 }
00115 }
00116 dim=0;
00117 for (int kMT=0;kMT<nb_TimelessClasses;kMT++){dim+=TmpClass[kMT].MTWeight[0][0];}
00118
00119 assert (EOF!=fclose(ifp));
00120
00121
00122 }