Main Page   Compound List   File List   Compound Members   File Members   Related Pages  

readholegraph.cpp

Go to the documentation of this file.
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;//nb MT clusters
00037         fscanf(ifp,"%d",&auxRead);
00038         nb_dim=auxRead;//nb dimension FS
00039         fscanf(ifp,"%d",&auxRead);
00040         nb_images=auxRead;//nb images samples
00041         
00042         //Time delays between samples
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         //Dynamic classe objects allocation
00054          TmpClass=new DynaClass[nb_TimelessClasses];
00055         for (int kMT=0;kMT<nb_TimelessClasses;kMT++){TmpClass[kMT].InitRead(nb_images,nb_dim);}
00056         
00057         //for each MT class
00058         for (int kMT=0;kMT<nb_TimelessClasses;kMT++){
00059             fscanf(ifp,"%d",&auxRead);//MT index
00060             fscanf(ifp,"%f",&weightMT);//MT weight   
00061             //for each TL window
00062             for(int t=0;t<nb_images;t++){
00063                 fscanf(ifp,"%d",&auxRead);//time sample
00064                 TmpClass[kMT].MTAlloc(t);
00065                 TmpClass[kMT].MTWeight[t][0]=(unsigned long int)weightMT;
00066                 //mean and cov kMT
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;//number of assigned  TLs
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                 //for each TL_t class
00080                 for (int kTL=0;kTL<(int)length;kTL++){ 
00081                         fscanf(ifp,"%d",&auxRead);
00082                         TmpClass[kMT].AssignedTimelessClass[t][kTL]=auxRead;//TL_t cluster index
00083                         fscanf(ifp,"%f",&auxReadF);
00084                         TmpClass[kMT].Weight[t][kTL]=(unsigned long int)auxReadF;//pixel quantity belonging to classes kTL_t & kMT
00085                         fscanf(ifp,"%e",&auxReadF);
00086                         TmpClass[kMT].DivergenceValue[t][kTL]=(float)auxReadF/(float)TmpClass[kMT].MTWeight[t][0];//divergence between classes kTL_t & kMT
00087                         //mean and cov TL_t
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                            //for each assigne TL_(t-1)class
00100                            for (int kTLpre=0;kTLpre<(int)TmpClass[kMT].AssignedTimelessClass[t-1].size();kTLpre++){
00101                                 fscanf(ifp,"%d",&auxRead);//TL_(t-1) cluster index
00102                                 fscanf(ifp,"%f",&auxReadF);
00103                                 TmpClass[kMT].flow[t][kTLpre][kTL]=auxReadF;//pixel quantity belonging to classes kTL_t&kTL_(t-1)&kMT : flow
00104                                 fscanf(ifp,"%f",&auxReadF);
00105                                 TmpClass[kMT].div[t][kTLpre][kTL]=auxReadF;//div TL(t-1) TLt
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;}// Mutual information of MT class between t(t-1)
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 }

Generated on Thu Feb 17 11:03:19 2005 for Interactive Learning of Sub-Graphs Semantics by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002