graph.h
Go to the documentation of this file.
1 /***************************************************************************
2  SocNetV: Social Network Visualizer
3  version: 3.0.2
4  Written in Qt
5 
6  graph.h - description
7  -------------------
8  copyright : (C) 2005-2021 by Dimitris B. Kalamaras
9  project site : https://socnetv.org
10 
11  ***************************************************************************/
12 
13 /*******************************************************************************
14 * This program is free software: you can redistribute it and/or modify *
15 * it under the terms of the GNU General Public License as published by *
16 * the Free Software Foundation, either version 3 of the License, or *
17 * (at your option) any later version. *
18 * *
19 * This program is distributed in the hope that it will be useful, *
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
22 * GNU General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU General Public License *
25 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
26 ********************************************************************************/
27 
28 #ifndef GRAPH_H
29 #define GRAPH_H
30 
31 
32 #include <QObject>
33 #include <QList>
34 #include <QQueue>
35 #include <QUrl>
36 #include <QHash>
37 #include <QSet>
38 #include <QMultiHash>
39 #include <QMultiMap>
40 #include <QTextStream>
41 #include <QThread>
42 
43 // Allows to use QT_CHARTS namespace directives (see below)
44 #include <QtCharts/QChartGlobal>
45 
46 
47 //FYI: stack is a wrapper around <deque> in C++, see: www.cplusplus.com/reference/stl/stack
48 #include <stack>
49 #include <map>
50 
51 #include "global.h"
52 #include "graphvertex.h"
53 #include "matrix.h"
54 #include "parser.h"
55 #include "webcrawler.h"
56 #include "graphicswidget.h"
57 
58 QT_BEGIN_NAMESPACE
59 class QDateTime;
60 class QPointF;
61 class QNetworkReply;
62 QT_END_NAMESPACE
63 
64 
65 QT_CHARTS_BEGIN_NAMESPACE
66 class QAbstractSeries;
67 class QAbstractAxis;
68 class QSplineSeries;
69 class QBarSeries;
70 class QAreaSeries;
71 class QBarSet;
72 class QBarCategoryAxis;
73 QT_CHARTS_END_NAMESPACE
74 
75 QT_CHARTS_USE_NAMESPACE
76 
77 
78 using namespace std;
79 
80 
82 class Chart;
83 
84 typedef QList<GraphVertex*> VList;
85 typedef QHash <QString, int> H_StrToInt;
86 typedef QHash <int, int> H_Int;
87 typedef QHash <qreal, int> H_f_i;
88 typedef QPair <qreal, bool> pair_f_b;
89 typedef QPair <int, pair_f_b > pair_i_fb;
90 typedef QMultiHash <int, pair_i_fb > H_edges;
91 typedef QHash<QString, bool> H_StrToBool;
92 typedef QList<int> L_int;
93 typedef QVector<int> V_int;
94 typedef QVector<QString> V_str;
95 
96 
121 class Graph: public QObject{
122  Q_OBJECT
125 
126 public slots:
127 
128  int relationCurrent();
129 
130  QString relationCurrentName() const;
131 
132  void relationCurrentRename(const QString &newName);
133  void relationCurrentRename(const QString &newName, const bool &signalMW);
134 
136  void vertexCreate (const int &number,
137  const int &size,
138  const QString &color,
139  const QString &numColor,
140  const int &numSize,
141  const QString &label,
142  const QString &labelColor,
143  const int &labelSize,
144  const QPointF &p,
145  const QString &shape,
146  const QString &iconPath = QString(),
147  const bool &signalMW = false
148  );
149 
150  void graphFileLoaded(const int &fileType,
151  const QString &fName=QString(),
152  const QString &netName=QString(),
153  const int &totalNodes=0,
154  const int &totalLinks=0,
155  const int &edgeDirType=0,
156  const QString &message=QString());
157 
158  void vertexRemoveDummyNode(int);
159 
160  void graphLoadedTerminateParserThreads (QString reason);
161 
162  void graphSelectionChanged(const QList<int> selectedVertices,
163  const QList<SelectedEdge> selectedEdges);
164 
165  void graphClickedEmptySpace( const QPointF &p);
166 
168  void edgeCreate (const int &v1, const int &v2, const qreal &weight,
169  const QString &color ,
170  const int &type=0,
171  const bool &drawArrows=true, const bool &bezier=false,
172  const QString &label=QString(),
173  const bool &signalMW=true);
174 
175  void edgeCreateWebCrawler (const int &source, const int &target);
176 
177  void edgeVisibilitySet(const int &relation, const int &source, const int &target, const bool &status);
178 
179  //auxiliary vertexCreate functions
180  void vertexCreateAtPos(const QPointF &p);
181 
182  void vertexCreateAtPosRandom(const bool &signalMW=false);
183 
184  void vertexCreateAtPosRandomWithLabel(const int &i,
185  const QString &label,
186  const bool &signalMW=false) ;
187 
188 
191  void relationSet(int relNum=RAND_MAX, const bool updateUI=true);
192 
193  void relationNext();
194 
195  void relationPrev();
196 
197  void canvasSizeSet(const int w, const int h);
198 
199  double canvasMaxRadius() const;
200 
201  qreal canvasMinDimension() const;
202 
203  double canvasVisibleX(const double &x) const ;
204 
205  double canvasVisibleY(const double &y) const ;
206 
207  double canvasRandomX() const;
208 
209  double canvasRandomY() const;
210 
211 
212  void vertexIsolatedAllToggle ( const bool &toggle);
213 
214  void vertexClickedSet(const int &v, const QPointF &p);
215 
216  void edgeClickedSet(const int &v1, const int &v2, const bool &openMenu=false) ;
217 
218 
219  void edgeFilterByWeight (qreal, bool);
220 
221  void edgeFilterByRelation(int relation, bool status);
222 
223  void edgeFilterUnilateral(const bool &toggle);
224 
225  void startWebCrawler(
226  const QUrl &startUrl,
227  const QStringList &urlPatternsIncluded,
228  const QStringList &urlPatternsExcluded,
229  const QStringList &linkClasses,
230  const int &maxNodes,
231  const int &maxLinksPerPage,
232  const bool &intLinks,
233  const bool &childLinks,
234  const bool &parentLinks,
235  const bool &selfLinks,
236  const bool &extLinksIncluded,
237  const bool &extLinksCrawl,
238  const bool &socialLinks,
239  const bool &delayedRequests);
240 
241  void slotHandleCrawlerRequestReply();
242  void webSpider();
243 
244  QString htmlEscaped (QString str) const;
245 
246 
247 signals:
248 
249  void signalWebCrawlParse(QNetworkReply *reply);
250 
253  void signalNetworkManagerRequest(const QUrl &currentUrl, const NetworkRequestType &type);
254 
255  void signalProgressBoxCreate(const int max=0, const QString msg="Please wait");
256 
257  void signalProgressBoxKill(const int max=0);
258 
259  void signalProgressBoxUpdate(const int &count=0 );
260 
261  void signalGraphSavedStatus(const int &status);
262 
263  void signalGraphModified(const bool &undirected,
264  const int &vertices,
265  const int &edges,
266  const qreal &density);
267 
268  void signalGraphLoaded (const int &fileType,
269  const QString &fileName=QString(),
270  const QString &netName=QString(),
271  const int &totalNodes=0,
272  const int &totalLinks=0,
273  const QString &message=QString() );
274 
275 
276 
277  void statusMessage (const QString &message);
278 
279  void signalDatasetDescription(QString);
280 
281  void signalNodeClickedInfo(const int &number=0,
282  const QPointF &p=QPointF(),
283  const QString &label=QString(),
284  const int &inDegree=0,
285  const int &outDegree=0);
286 
287 // void signalEdgeClicked (const int &v1=0,
288 // const int &v2=0,
289 // const qreal &weight=0,
290 // const int &type=0,
291 // const bool &openMenu=false);
292 
293  void signalEdgeClicked (const MyEdge &edge=MyEdge(), const bool &openMenu=false);
294 
295  void signalRelationAddToMW(const QString &newRelation);
296 
297  void signalRelationsClear();
298 
299  void signalRelationRenamedToMW(const QString &newRelName);
300 
301  void signalRelationChangedToGW(int);
302 
303  void signalRelationChangedToMW(const int &relIndex=RAND_MAX);
304 
305  void signalSelectionChanged(const int &selectedVertices,
306  const int &selectedEdges);
307 
308 
309  void signalPromininenceDistributionChartUpdate(QAbstractSeries *series,
310  QAbstractAxis *axisX=Q_NULLPTR,
311  const qreal &min=0,
312  const qreal &max=0,
313  QAbstractAxis *axisY=Q_NULLPTR,
314  const qreal &minF=0,
315  const qreal &maxF=0);
316 
318  void signalDrawNode( const QPointF &p,
319  const int &num,
320  const int &size,
321  const QString &nodeShape,
322  const QString &nodeIconPath,
323  const QString &nodeColor,
324  const QString &numberColor, const int &numSize,
325  const int &numDistance,
326  const QString &label,
327  const QString &labelColor, const int &labelSize,
328  const int &labelDistance
329  );
330 
331  //signal to GW to erase a node
332  void signalRemoveNode (int );
333 
334  //signal GW to draw an edge
335  void signalDrawEdge ( const int &v1,
336  const int &v2,
337  const qreal &weight,
338  const QString &label="",
339  const QString &color="black",
340  const int &type=0,
341  const bool &drawArrows=true,
342  const bool &bezier=false,
343  const bool &weightNumbers=false);
344 
345  //signal to GW
346  void signalRemoveEdge(const int &v1, const int &v2, const bool &removeOpposite);
347 
348  void setEdgeVisibility (const int &relation, const int &source, const int &target, const bool &toggle);
349 
350  void setVertexVisibility(const int &number, const bool &toggle);
351 
352  void setNodePos(const int &, const qreal &, const qreal &);
353 
354  void signalNodesFound(const QList<int> foundList);
355 
356  void setNodeSize(const int &v, const int &size);
357 
358  void setNodeShape(const int &v, const QString &shape, const QString &iconPath=QString());
359 
360  void setNodeColor(const int &v, const QString &color);
361 
362  void setNodeLabel(const int &v, const QString &label);
363 
364  void setNodeNumberColor(const int &v, const QString &color);
365 
366  void setNodeNumberSize(const int &v, const int &size);
367 
368  void setNodeNumberDistance(const int &v, const int &distance);
369 
370  void setNodeLabelSize(const int &v, const int &size);
371 
372  void setNodeLabelColor(const int &v, const QString &color);
373 
374  void setNodeLabelDistance(const int &v, const int &distance);
375 
376 
377  void setEdgeWeight (const int &v1, const int &v2, const qreal &weight);
378  void signalEdgeType(const int &v1,
379  const int &v2,
380  const int &type);
381  void setEdgeColor(const int &v1,
382  const int &v2,
383  const QString &color);
384  void setEdgeLabel (const int &v1,
385  const int &v2,
386  const QString &label);
387  void addGuideCircle(const double&, const double&, const double&);
388  void addGuideHLine (const double &y0);
389 
390 
391 
392 public:
393 
394  enum GraphChange {
395  ChangedNone = 0,
396  ChangedMinorOptions = 1,
397  ChangedVerticesMetadata = 2,
398  ChangedEdgesMetadata = 3,
399  ChangedPositions = 4,
400  ChangedMajor = 10,
401  ChangedVertices = 11,
402  ChangedEdges = 12,
403  ChangedVerticesEdges = 13,
404  ChangedNew = 14,
405  };
406 
407 
408 
409  enum Clustering {
410  Single_Linkage = 0, //"single-link" or minimum
411  Complete_Linkage = 1, // "complete-link or maximum
412  Average_Linkage = 2, //mean or "average-linkage" or UPGMA
413 
414  };
415 
416  /* INIT AND CLEAR*/
417  Graph();
418  ~Graph();
419 
420 
421  void clear(const QString &reason="");
422 
423  /*FILES (READ AND WRITE)*/
424  QString graphName() const;
425 
426  void graphLoad (const QString m_fileName,
427  const QString m_codecName,
428  const int format,
429  const int two_sm_mode,
430  const QString delimiter=QString());
431 
432  void graphSave(const QString &fileName,
433  const int &fileType,
434  const bool &saveEdgeWeights=true);
435 
436  bool graphSaveToPajekFormat (const QString &fileName,
437  QString networkName="",
438  int maxWidth=0, int maxHeight=0);
439 
440  bool graphSaveToAdjacencyFormat (const QString &fileName,
441  const bool &saveEdgeWeights=true);
442 
443  bool graphSaveToGraphMLFormat (const QString &fileName,
444  QString networkName="",
445  int maxWidth=0, int maxHeight=0);
446 
447  bool graphSaveToDotFormat (QString fileName);
448 
449  int graphFileFormat() const;
450 
451  bool graphFileFormatExportSupported(const int &fileFormat) const;
452 
453  QString graphMatrixTypeToString(const int &matrixType) const;
454 
455  int graphMatrixStrToType(const QString &matrix) const;
456 
457  QString graphMetricTypeToString(const int &metricType) const;
458 
459  int graphMetricStrToType(const QString &metricStr) const;
460 
461  QString graphClusteringMethodTypeToString(const int &methodType) const;
462 
463  int graphClusteringMethodStrToType(const QString &method) const;
464 
465 
466  /* RELATIONS */
467  int relations();
468 
469  void relationsClear();
470 
471  void relationAdd(const QString &relName, const bool &changeRelation=false);
472 
473 
474  /* VERTICES */
475  int vertexNumberMax();
476 
477  int vertexNumberMin();
478 
479  int vertexDegreeOut(int);
480 
481  int vertexDegreeIn(int);
482 
483  QList<int> vertexNeighborhoodList(const int &v1);
484 
485  // Only in Qt 5.15
486 // QSet<int> vertexNeighborhoodSet(const int &v1);
487 
488 
489  bool vertexIsolated(const int &v1) const;
490 
491  int vertexExists(const int &v1 );
492 
493  int vertexExists(const QString &label);
494 
495  bool vertexFindByNumber (const QStringList &numList);
496 
497  bool vertexFindByLabel (const QStringList &labelList);
498 
499  bool vertexFindByIndexScore(const int &index, const QStringList &thresholds);
500 
501  void vertexRemove (const int &v1);
502 
503  void vertexSizeInit (const int);
504 
505  void vertexSizeSet(const int &v, const int &newsize);
506 
507  int vertexSize(const int &v) const;
508 
509  void vertexShapeSetDefault (const QString, const QString &iconPath=QString());
510 
511  void vertexShapeSet(const int &v, const QString &shape, const QString &iconPath=QString());
512 
513  QString vertexShape(const int &v);
514 
515  QString vertexShapeIconPath(const int &v);
516 
517  bool graphHasVertexCustomIcons () const { return m_graphHasVertexCustomIcons; }
518 
519  void vertexColorInit (const QString &color);
520 
521  void vertexColorSet(const int &v, const QString &color);
522 
523  QColor vertexColor(const int &v) const;
524 
525  void vertexNumberColorInit (const QString &color);
526 
527  void vertexNumberColorSet(const int &v=0, const QString &color = "#000000" );
528 
529  void vertexNumberSizeInit (const int &size);
530 
531  void vertexNumberSizeSet(const int &v, const int &newsize );
532 
533  void vertexNumberDistanceInit (const int &distance);
534 
535  void vertexNumberDistanceSet(const int &v, const int &newDistance );
536 
537  void vertexLabelSet(const int &v, const QString &label);
538 
539  QString vertexLabel(const int &v) const;
540 
541  void vertexLabelsVisibilitySet(bool toggle);
542 
543  void vertexLabelSizeInit(int newSize);
544 
545  void vertexLabelSizeSet(const int &v, const int &labelSize );
546 
547  void vertexLabelColorInit(QString color);
548 
549  void vertexLabelColorSet(const int &v1, const QString &color);
550 
551  void vertexLabelDistanceInit (const int &distance);
552 
553  void vertexLabelDistanceSet(const int &v, const int &newDistance );
554 
555  void vertexLabelDistanceAllSet (const int &newDistance);
556 
557 
558  void vertexPosSet(const int &v, const int &x, const int &y);
559 
560  QPointF vertexPos(const int &v1) const;
561 
562  int vertexClicked() const;
563 
564  int vertices(const bool &dropIsolates=false, const bool &countAll=false, const bool &recount=false) ;
565 
566  int vertexEdgesOutbound (int i) ;
567 
568  int vertexEdgesInbound (int i) ;
569 
570 
571  int verticesWithOutboundEdges();
572 
573  int verticesWithInboundEdges();
574 
575  int verticesWithReciprocalEdges();
576 
577 
578  QList<int> verticesListIsolated();
579 
580  QList<int> verticesList();
581 
582  QSet<int> verticesSet();
583 
584 
585 
586  void verticesCreateSubgraph(QList<int> vList,
587  const int &type = SUBGRAPH_CLIQUE,
588  const int &center = 0);
589 
590 
591 
592 
593  /* EDGES */
594 
595  int edgesEnabled();
596 
597  MyEdge edgeClicked();
598 
599  qreal edgeExists(const int &v1,
600  const int &v2,
601  const bool &checkReciprocal=false);
602 
603  void edgeRemove (const int &v1,
604  const int &v2,
605  const bool &removeOpposite=false);
606 
607  void edgeRemoveSelected (SelectedEdge &selectedEdge,
608  const bool &removeOpposite);
609 
610  void edgeRemoveSelectedAll();
611 
612  bool edgeSymmetric(const int &v1, const int &v2);
613 
614  void edgeTypeSet(const int &v1,
615  const int &v2,
616  const qreal &w,
617  const int &dirType=EdgeType::Directed);
618 
619  void edgeWeightSet (const int &v1,
620  const int &v2,
621  const qreal &w,
622  const bool &undirected=false);
623 
624  qreal edgeWeight(const int &v1, const int &v2) const;
625 
626  void edgeWeightNumbersVisibilitySet (const bool &toggle);
627 
628  void edgeLabelSet(const int &v1, const int &v2, const QString &label);
629 
630  QString edgeLabel (const int &v1, const int &v2) const;
631 
632  void edgeLabelsVisibilitySet (const bool &toggle);
633 
634  void edgeColorInit(const QString &);
635 
636  void edgeColorSet(const int &v1, const int &v2, const QString &color);
637 
638  QString edgeColor (const int &v1, const int &v2);
639 
640  bool edgeColorAllSet(const QString &color, const int &threshold=RAND_MAX);
641 
642 
643  /* GRAPH methods */
644 
645  void graphSetModified(const int &graphNewStatus, const bool&signalMW=true);
646 
647  bool graphIsModified() const ;
648 
649  bool graphSaved() const;
650 
651  bool graphLoaded() const;
652 
653  QList<int> graphSelectedVertices() const;
654 
655  int graphSelectedVerticesCount() const;
656 
657  int graphSelectedVerticesMin() const;
658 
659  int graphSelectedVerticesMax() const;
660 
661  QList<SelectedEdge> graphSelectedEdges() const;
662 
663  int graphSelectedEdgesCount() const;
664 
665  int graphGeodesics();
666 
667  qreal graphDensity();
668 
669  bool graphIsWeighted();
670 
671  void graphSetWeighted(const bool &toggle=true);
672 
673  qreal graphReciprocity();
674 
675  bool graphIsSymmetric();
676 
677  void graphSymmetrize();
678 
679  void graphSymmetrizeStrongTies(const bool &allRelations=false);
680 
681  void graphCocitation();
682 
683  void graphDichotomization(const qreal threshold);
684 
685  void graphSetDirected(const bool &toggle=true, const bool &signalMW=true);
686 
687  void graphSetUndirected(const bool &toggle=true, const bool &signalMW=true);
688 
689  bool graphIsDirected();
690 
691  bool graphIsUndirected();
692 
693  bool graphIsConnected();
694 
695  void graphMatrixAdjacencyCreate(const bool dropIsolates=false,
696  const bool considerWeights=true,
697  const bool inverseWeights=false,
698  const bool symmetrize=false );
699 
700  bool graphMatrixAdjacencyInvert(const QString &method="lu");
701 
702 
703  void graphMatrixSimilarityMatchingCreate(Matrix &AM,
704  Matrix &SEM,
705  const int &measure=METRIC_SIMPLE_MATCHING,
706  const QString &varLocation="Rows",
707  const bool &diagonal=false,
708  const bool &considerWeights=true);
709 
710  void graphMatrixSimilarityPearsonCreate (Matrix &AM,
711  Matrix &PCC,
712  const QString &varLocation="Rows",
713  const bool &diagonal=false);
714 
715  void graphMatrixDissimilaritiesCreate(Matrix &INPUT_MATRIX,
716  Matrix &DSM,
717  const int &metric,
718  const QString &varLocation,
719  const bool &diagonal,
720  const bool &considerWeights);
721 
722  /* REPORT EXPORTS */
723  void setReportsDataDir(const QString &reportsDir);
724  void setReportsRealNumberPrecision (const int & precision);
725  void setReportsLabelLength(const int &length);
726  void setReportsChartType(const int &type);
727 
728  void writeDataSetToFile(const QString dir, const QString );
729 
730  void writeMatrixAdjacencyTo(QTextStream& os,
731  const bool &saveEdgeWeights=true);
732 
733  void writeReciprocity( const QString fileName,
734  const bool considerWeights=false);
735 
736  void writeMatrix(const QString &fileName,
737  const int &matrix=MATRIX_ADJACENCY,
738  const bool &considerWeights=true,
739  const bool &inverseWeights=false,
740  const bool &dropIsolates=false,
741  const QString &varLocation="Rows",
742  const bool &simpler=false);
743 
744  void writeMatrixHTMLTable(QTextStream &outText, Matrix &M,
745  const bool &markDiag=true,
746  const bool &plain=false,
747  const bool &printInfinity=true,
748  const bool &dropIsolates=false);
749 
750  void writeMatrixAdjacency(const QString fileName,
751  const bool &markDiag=true);
752 
753  void writeMatrixAdjacencyPlot(const QString fileName,
754  const bool &simpler=false);
755 
756  void writeMatrixAdjacencyInvert(const QString &filename,
757  const QString &method);
758 
759  void writeMatrixLaplacianPlainText(const QString &filename);
760  void writeMatrixDegreeText(const QString &filename);
761 
762  void writeMatrixDistancesPlainText(const QString &fn,
763  const bool &considerWeights,
764  const bool &inverseWeights,
765  const bool &dropIsolates);
766 
767  void writeMatrixShortestPathsPlainText(const QString &fn,
768  const bool &considerWeights,
769  const bool &inverseWeights);
770 
771  void writeMatrixDissimilarities(const QString fileName,
772  const QString &metricStr,
773  const QString &varLocation,
774  const bool &diagonal,
775  const bool &considerWeights) ;
776 
777  void writeMatrixSimilarityMatchingPlain(const QString fileName,
778  const int &measure=METRIC_SIMPLE_MATCHING,
779  const QString &matrix = "adjacency",
780  const QString &varLocation="rows",
781  const bool &diagonal=false,
782  const bool &considerWeights=true);
783 
784  void writeMatrixSimilarityMatching(const QString fileName,
785  const QString &measure="Simple",
786  const QString &matrix = "adjacency",
787  const QString &varLocation="rows",
788  const bool &diagonal=false,
789  const bool &considerWeights=true);
790 
791 
792  void writeMatrixSimilarityPearson(const QString fileName,
793  const bool considerWeights,
794  const QString &matrix = "adjacency",
795  const QString &varLocation="rows",
796  const bool &diagonal=false);
797 
798  void writeMatrixSimilarityPearsonPlainText(const QString fileName,
799  const bool considerWeights,
800  const QString &matrix = "adjacency",
801  const QString &varLocation="rows",
802  const bool &diagonal=false);
803 
804  void writeEccentricity( const QString fileName,
805  const bool considerWeights=false,
806  const bool inverseWeights=false,
807  const bool dropIsolates=false);
808 
809  // friend QTextStream& operator << (QTextStream& os, Graph& m);
810 
811  void writeCentralityDegree(const QString,
812  const bool weights,
813  const bool dropIsolates);
814 
815  void writeCentralityCloseness(const QString,
816  const bool weights,
817  const bool inverseWeights,
818  const bool dropIsolates);
819 
820  void writeCentralityClosenessInfluenceRange(const QString,
821  const bool weights,
822  const bool inverseWeights,
823  const bool dropIsolates);
824 
825  void writeCentralityBetweenness(const QString,
826  const bool weights,
827  const bool inverseWeights,
828  const bool dropIsolates);
829 
830  void writeCentralityPower(const QString,
831  const bool weigths,
832  const bool inverseWeights,
833  const bool dropIsolates);
834 
835  void writeCentralityStress(const QString,
836  const bool weigths,
837  const bool inverseWeights,
838  const bool dropIsolates);
839 
840  void writeCentralityEccentricity(const QString,
841  const bool weigths,
842  const bool inverseWeights,
843  const bool dropIsolates);
844 
845  void writeCentralityInformation(const QString,
846  const bool weigths,
847  const bool inverseWeights);
848 
849  void writeCentralityEigenvector(const QString,
850  const bool &weigths=true,
851  const bool &inverseWeights = false,
852  const bool &dropIsolates=false);
853 
854  void writePrestigeDegree(const QString, const bool weights,
855  const bool dropIsolates);
856 
857  void writePrestigeProximity(const QString, const bool weights,
858  const bool inverseWeights,
859  const bool dropIsolates);
860 
861  void writePrestigePageRank(const QString, const bool Isolates=false);
862 
863 
864  bool writeClusteringHierarchical(const QString &fileName,
865  const QString &varLocation,
866  const QString &matrix = "Adjacency",
867  const QString &metric = "Manhattan",
868  const QString &method = "Complete",
869  const bool &diagonal = false,
870  const bool &dendrogram = false,
871  const bool &considerWeights=true,
872  const bool &inverseWeights=false,
873  const bool &dropIsolates=false);
874 
875  void writeClusteringHierarchicalResultsToStream(QTextStream& outText,
876  const int N,
877  const bool &dendrogram = false);
878 
879  bool writeCliqueCensus( const QString &fileName,
880  const bool considerWeights);
881 
882  void writeClusteringCoefficient(const QString, const bool);
883 
884  void writeTriadCensus(const QString, const bool);
885 
886 
887 
888  /* DISTANCES, CENTRALITIES & PROMINENCE MEASURES */
889 
890  int graphConnectednessFull (const bool updateProgress=false) ;
891 
892  bool graphReachable(const int &v1, const int &v2) ;
893 
894  void graphMatrixReachabilityCreate() ;
895 
896  int graphDiameter(const bool considerWeights, const bool inverseWeights);
897 
898  int graphDistanceGeodesic(const int &v1,
899  const int &v2,
900  const bool &considerWeights=false,
901  const bool &inverseWeights=true);
902 
903  qreal graphDistanceGeodesicAverage(const bool considerWeights,
904  const bool inverseWeights,
905  const bool dropIsolates);
906 
907  void graphDistancesGeodesic(const bool &computeCentralities=false,
908  const bool &considerWeights=false,
909  const bool &inverseWeights=true,
910  const bool &dropIsolates=false);
911 
912  void graphMatrixDistanceGeodesicCreate(const bool &considerWeights=false,
913  const bool &inverseWeights=true,
914  const bool &dropIsolates=false);
915 
916  void graphMatrixShortestPathsCreate(const bool &considerWeights=false,
917  const bool &inverseWeights=true,
918  const bool &dropIsolates=false) ;
919 
920  int getProminenceIndexByName(const QString &prominenceIndexName);
921 
922  void prominenceDistribution(const int &index,
923  const ChartType &type,
924  const QString &distImageFileName=QString());
925 
926  void prominenceDistributionBars(const H_StrToInt &discreteClasses,
927  const QString &name,
928  const QString &distImageFileName);
929 
930  void prominenceDistributionArea(const H_StrToInt &discreteClasses,
931  const QString &name,
932  const QString &distImageFileName);
933 
934  void prominenceDistributionSpline(const H_StrToInt &discreteClasses,
935  const QString &seriesName,
936  const QString &distImageFileName);
937 
938  void centralityDegree(const bool &weights=true,
939  const bool &dropIsolates=false);
940 
941  void centralityInformation(const bool considerWeights=false,
942  const bool inverseWeights=false);
943 
944  void centralityEigenvector(const bool &considerWeights=false,
945  const bool &inverseWeights=false,
946  const bool &dropIsolates=false);
947 
948  void centralityClosenessIR(const bool considerWeights=false,
949  const bool inverseWeights=false,
950  const bool dropIsolates=false);
951 
952  void prestigeDegree(const bool &weights, const bool &dropIsolates=false);
953 
954  void prestigePageRank(const bool &dropIsolates=false);
955 
956  void prestigeProximity(const bool considerWeights=false,
957  const bool inverseWeights=false,
958  const bool dropIsolates=false);
959 
960 
961  /* REACHABILITY AND WALKS */
962 
963  int walksBetween(int v1, int v2,int length);
964 
965  void graphWalksMatrixCreate(const int &N=0,
966  const int &length=0,
967  const bool &updateProgress=false);
968 
969  void writeWalksTotalMatrixPlainText(const QString &fn);
970 
971  void writeWalksOfLengthMatrixPlainText(const QString &fn, const int &length);
972 
973  void writeMatrixWalks (const QString &fn,
974  const int &length=0,
975  const bool &simpler=false);
976 
977  QList<int> vertexinfluenceRange(int v1);
978 
979  QList<int> vertexinfluenceDomain(int v2);
980 
981  void writeReachabilityMatrixPlainText( const QString &fn,
982  const bool &dropIsolates=false);
983 
984 
985  qreal numberOfTriples(int v1);
986 
987  /* CLIQUES, CLUSTERING, TRIADS */
988  void graphCliques(QSet<int> R=QSet<int>(), QSet<int> P=QSet<int>(), QSet<int> X=QSet<int>() );
989 
990  void graphCliqueAdd (const QList<int> &clique);
991 
992  int graphCliquesContaining(const int &actor, const int &size=0);
993 
994  int graphCliquesOfSize(const int &size );
995 
996  bool graphClusteringHierarchical(Matrix &STR_EQUIV,
997  const QString &varLocation,
998  const int &metric,
999  const int &method,
1000  const bool &diagonal=false,
1001  const bool &diagram=false,
1002  const bool &considerWeights=true,
1003  const bool &inverseWeights=false,
1004  const bool &dropIsolates=false);
1005 
1006  qreal clusteringCoefficientLocal(const int &v1);
1007 
1008  qreal clusteringCoefficient (const bool updateProgress=false);
1009 
1010  bool graphTriadCensus();
1011 
1012  void triadType_examine_MAN_label(int, int, int, GraphVertex*, GraphVertex*, GraphVertex* );
1013  // void eccentr_JordanCenter(); // TODO
1014 
1015 
1016 
1017  /* LAYOUTS */
1018 
1019  void layoutRandom();
1020 
1021  void layoutRadialRandom(const bool &guides=true);
1022 
1023  void layoutCircular(const double &x0,
1024  const double &y0,
1025  const double &newRadius,
1026  const bool &guides=false);
1027 
1028 
1029  void layoutByProminenceIndex ( int prominenceIndex,
1030  int layoutType,
1031  const bool considerWeights=false,
1032  const bool inverseWeights=false,
1033  const bool dropIsolates=false);
1034 
1035 
1036  void layoutVertexSizeByIndegree();
1037 
1038  void layoutVertexSizeByOutdegree();
1039 
1040 
1041  void layoutForceDirectedSpringEmbedder(const int maxIterations);
1042 
1043  void layoutForceDirectedFruchtermanReingold(const int maxIterations);
1044 
1045  void layoutForceDirectedKamadaKawai(const int maxIterations=500,
1046  const bool considerWeights=false,
1047  const bool inverseWeights=false,
1048  const bool dropIsolates=false,
1049  const QString &initialPositions="current");
1050 
1051  qreal graphDistanceEuclidean(const QPointF &a, const QPointF &b);
1052 
1053  qreal graphDistanceEuclidean(const QPointF &a);
1054 
1055  int sign(const qreal &D);
1056 
1057  qreal layoutForceDirected_F_rep(const QString model,
1058  const qreal &dist,
1059  const qreal &optimalDistance);
1060 
1061  qreal layoutForceDirected_F_att(const QString model,
1062  const qreal &dist,
1063  const qreal &optimalDistance) ;
1064 
1065  void layoutForceDirected_Eades_moveNodes(const qreal &c4);
1066 
1067  void layoutForceDirected_FR_moveNodes(const qreal &temperature) ;
1068 
1069  qreal layoutForceDirected_FR_temperature(const int iteration) const;
1070 
1071  qreal computeOptimalDistance(const int &V);
1072 
1073  void compute_angles( const QPointF &Delta,
1074  const qreal &dist,
1075  qreal &angle1,
1076  qreal &angle2,
1077  qreal &degrees1,
1078  qreal &degrees2 );
1079 
1080 
1081 
1082  /* CRAWLER */
1083  void webCrawlTerminateThreads (QString reason);
1084 
1085 
1086 
1088  void randomizeThings();
1089 
1090  void randomNetErdosCreate ( const int &N,
1091  const QString &model,
1092  const int &m,
1093  const qreal &p,
1094  const QString &mode,
1095  const bool &diag);
1096 
1097  void randomNetScaleFreeCreate (const int &N,
1098  const int &power,
1099  const int &m0,
1100  const int &m,
1101  const qreal &alpha,
1102  const QString &mode);
1103 
1104  void randomNetSmallWorldCreate(const int &N, const int &degree,
1105  const double &beta, const QString &mode);
1106 
1107  void randomNetRingLatticeCreate (const int &N, const int &degree,
1108  const bool updateProgress=false);
1109 
1110  void randomNetRegularCreate (const int &N,
1111  const int &degree,
1112  const QString &mode,
1113  const bool &diag);
1114 
1115  void randomNetLatticeCreate(const int &N,
1116  const int &length,
1117  const int &dimension,
1118  const int &neighborhoodLength,
1119  const QString &mode,
1120  const bool &circular=false);
1121 
1122  int factorial (int);
1123 
1124 
1131 
1132  // Stores the number of vertices at distance n from a given vertex
1134 
1135  /* maps have O(logN) lookup complexity */
1136  /* Consider using tr1::hashmap which has O(1) lookup, but this is not ISO C++ yet :( */
1137 
1138 
1139 protected:
1140  // Called from nodeMovement when a timerEvent occurs
1141  //void timerEvent(QTimerEvent *event);
1142 
1143 
1144 private:
1145 
1148  void edgeAdd (const int &v1,
1149  const int &v2,
1150  const qreal &weight,
1151  const int &type,
1152  const QString &label,
1153  const QString &color
1154  );
1155 
1157  void BFS(const int &s,
1158  const int &si,
1159  const bool &computeCentralities=false,
1160  const bool &dropIsolates=false);
1161 
1162  void dijkstra(const int &s,
1163  const int &si,
1164  const bool &computeCentralities=false,
1165  const bool &inverseWeights=false,
1166  const bool &dropIsolates=false);
1167 
1168  void minmax(qreal C,
1169  GraphVertex *v,
1170  qreal &max,
1171  qreal &min,
1172  int &maxNode, int &minNode
1173  );
1174 
1175  void resolveClasses ( qreal C,
1176  H_StrToInt &discreteClasses,
1177  int &classes);
1178 
1179  void resolveClasses ( qreal C,
1180  H_StrToInt &discreteClasses,
1181  int &classes, int name);
1182 
1183 
1184  VList m_graph; // List of pointers to the vertices. Each vertex stores all info: links, colors, etc
1185 
1186  Parser *file_parser; // Our file loader threaded class.
1187 
1188  WebCrawler *web_crawler; // Our web crawler threaded class. This will parse the downloaded HTML.
1189 
1190  QQueue<QUrl> *urlQueue; // A queue where the crawler will put urls for the network manager to download
1191 
1192  int m_crawler_max_urls; // maximum urls we'll visit (max nodes in the resulted network)
1193  int m_crawler_visited_urls; // A counter of the urls visited.
1194 
1195 
1196  QList<QString> m_relationsList;
1197 
1199 
1200  QList<int> triadTypeFreqs; //stores triad type frequencies
1201 
1202  QList<int> m_verticesList;
1204 
1206 
1207  QSet<int> m_verticesSet;
1208 
1209  QList<SelectedEdge> m_selectedEdges;
1210 
1211  QMultiHash <int, int> influenceRanges, influenceDomains;
1212 
1213  QMultiHash <int, int> m_vertexPairsNotConnected;
1215 
1216  QMultiMap <int, L_int > m_cliques;
1217  QHash <int, QSet<int> > neighboursHash;
1218 
1219  QList <qreal> m_clusteringLevel;
1220  QMap <int, V_int> m_clustersPerSequence;
1221 
1222  QMap<QString, V_int> m_clustersByName;
1223  QMap<int, V_str> m_clusterPairNamesPerSeq;
1224 
1225  Matrix SIGMA, DM, sumM, invAM, AM, invM, WM;
1226  Matrix XM, XSM, XRM, CLQM;
1227 
1228  stack<int> Stack;
1229 
1231  H_StrToInt discreteDPs, discreteSDCs, discreteCCs, discreteBCs, discreteSCs;
1232  H_StrToInt discreteIRCCs, discreteECs, discreteEccentricities;
1233  H_StrToInt discretePCs, discreteICs, discretePRPs, discretePPs, discreteEVCs;
1234 
1239 
1240  int m_fieldWidth, m_curRelation, m_fileFormat, m_vertexClicked;
1241 
1243 
1244  qreal edgeWeightTemp, edgeReverseWeightTemp;
1245  qreal meanSDC, varianceSDC;
1246  qreal meanSCC, varianceSCC;
1247  qreal meanIRCC, varianceIRCC;
1248  qreal meanSBC, varianceSBC;
1249  qreal meanSSC, varianceSSC;
1250  qreal meanEC, varianceEC;
1251  qreal meanSPC, varianceSPC;
1252  qreal meanIC, varianceIC;
1253  qreal meanEVC, varianceEVC;
1254  qreal meanSDP, varianceSDP;
1255  qreal meanPP, variancePP;
1256  qreal meanPRP, variancePRP;
1257  qreal minEccentricity, maxEccentricity;
1258  qreal minSDP, maxSDP, sumDP, sumSDP, groupDP;
1259  qreal minSDC, maxSDC, sumDC, sumSDC, groupDC;
1260  qreal minSCC, maxSCC, nomSCC, denomSCC, sumCC, sumSCC, groupCC, maxIndexCC;
1261  qreal minIRCC, maxIRCC, nomIRCC, denomIRCC, sumIRCC, groupIRCC;
1262  qreal minSBC, maxSBC, nomSBC, denomSBC, sumBC, sumSBC, groupSBC, maxIndexBC;
1263  qreal minSPC, maxSPC, nomSPC, denomSPC, t_sumIC, sumSPC, groupSPC, maxIndexPC;
1264  qreal minSSC, maxSSC, sumSC, sumSSC, groupSC, maxIndexSC;
1265  qreal minEC, maxEC, nomEC, denomEC, sumEC, groupEC, maxIndexEC;
1266  qreal minIC, maxIC, nomIC, denomIC, sumIC, maxIndexIC;
1267  qreal minEVC, maxEVC, nomEVC, denomEVC, sumEVC, sumSEVC, groupEVC;
1268  qreal minPRP, maxPRP, nomPRC, denomPRC, sumPC, t_sumPRP, sumPRP;
1269  qreal minPP, maxPP, nomPP, denomPP, sumPP, groupPP;
1270 
1271  qreal minCLC, maxCLC, averageCLC,varianceCLC, d_factor;
1272  int maxNodeCLC, minNodeCLC;
1273  int classesSDP, maxNodeDP, minNodeDP;
1274  int classesSDC, maxNodeSDC, minNodeSDC;
1275  int classesSCC, maxNodeSCC, minNodeSCC;
1276  int classesIRCC, maxNodeIRCC, minNodeIRCC;
1277  int classesSBC, maxNodeSBC, minNodeSBC;
1278  int classesSPC, maxNodeSPC, minNodeSPC;
1279  int classesSSC, maxNodeSSC, minNodeSSC;
1280  int classesEC, maxNodeEC, minNodeEC;
1281  int classesEccentricity, maxNodeEccentricity, minNodeEccentricity;
1282  int classesIC, maxNodeIC, minNodeIC;
1283  int classesPRP, maxNodePRP, minNodePRP;
1284  int classesPP, maxNodePP, minNodePP;
1285  int classesEVC, maxNodeEVC, minNodeEVC;
1287 
1291  int m_totalVertices, m_totalEdges, m_graphDiameter, initVertexSize;
1292  int initVertexLabelSize, initVertexNumberSize;
1293  int initVertexNumberDistance, initVertexLabelDistance;
1294  bool order;
1295  bool initEdgeWeightNumbers, initEdgeLabels;
1296  qreal m_graphAverageDistance, m_graphGeodesicsCount;
1299  qreal m_graphReciprocityArc, m_graphReciprocityDyad;
1305 
1307 
1308  int outboundEdgesVert, inboundEdgesVert, reciprocalEdgesVert;
1309  //int timerId;
1310  qreal canvasWidth, canvasHeight;
1312  bool calculatedVertices, calculatedVerticesList, calculatedVerticesSet;
1313  bool calculatedAdjacencyMatrix, calculatedDistances, calculatedCentralities;
1316  bool calculatedDP, calculatedDC, calculatedPP;
1317  bool calculatedIRCC, calculatedIC, calculatedPRP;
1319  bool calculatedGraphSymmetry, calculatedGraphReciprocity;
1320  bool calculatedGraphDensity, calculatedGraphWeighted;
1321  bool m_graphIsDirected, m_graphIsSymmetric, m_graphIsWeighted, m_graphIsConnected;
1322 
1324 
1325  QString fileName, m_graphName, initEdgeColor, initVertexColor,
1326  initVertexNumberColor, initVertexLabelColor;
1327  QString initVertexShape, initVertexIconPath;
1328  QString htmlHead, htmlHeadLight, htmlEnd;
1329 
1330  QDateTime actualDateTime;
1331 };
1332 
1333 #endif
1334 
Definition: matrix.h:127
bool m_graphHasVertexCustomIcons
Definition: graph.h:1306
static const int MATRIX_ADJACENCY
Definition: global.h:119
qreal sumSDP
Definition: graph.h:1258
int m_graphReciprocityTiesNonSymmetric
Definition: graph.h:1301
QHash< int, int > m_vertexPairsUnilaterallyConnected
Definition: graph.h:1214
H_f_i sizeOfNthOrderNeighborhood
Definition: graph.h:1133
int m_graphReciprocityPairsTotal
Definition: graph.h:1304
qreal t_sumPRP
Definition: graph.h:1268
qreal varianceIC
Definition: graph.h:1252
Matrix XSM
Definition: graph.h:1226
int m_reportsRealPrecision
Definition: graph.h:1236
qreal varianceSSC
Definition: graph.h:1249
QVector< QString > V_str
Definition: graph.h:94
QHash< int, int > H_Int
Definition: graph.h:86
QMultiHash< int, int > influenceRanges
Definition: graph.h:1211
QMap< int, V_int > m_clustersPerSequence
Definition: graph.h:1220
QList< int > triadTypeFreqs
Definition: graph.h:1200
QPair< qreal, bool > pair_f_b
Definition: graph.h:88
bool calculatedEVC
Definition: graph.h:1315
bool calculatedDistances
Definition: graph.h:1313
QHash< QString, bool > H_StrToBool
Definition: graph.h:91
int minNodeDP
Definition: graph.h:1273
QPair< int, pair_f_b > pair_i_fb
Definition: graph.h:89
QPair< int, int > SelectedEdge
Definition: global.h:147
int minNodeSSC
Definition: graph.h:1279
H_StrToInt discretePRPs
Definition: graph.h:1233
bool initEdgeWeightNumbers
Definition: graph.h:1295
qreal variancePRP
Definition: graph.h:1256
QList< int > m_verticesIsolatedList
Definition: graph.h:1203
qreal sumSSC
Definition: graph.h:1264
bool calculatedVerticesSet
Definition: graph.h:1312
int minNodePRP
Definition: graph.h:1283
bool calculatedGraphWeighted
Definition: graph.h:1320
QList< int > m_verticesSelected
Definition: graph.h:1205
QString htmlHeadLight
Definition: graph.h:1328
bool graphHasVertexCustomIcons() const
Definition: graph.h:517
qreal varianceSDP
Definition: graph.h:1254
QVector< int > V_int
Definition: graph.h:93
int m_totalVertices
Definition: graph.h:1291
int m_reportsLabelLength
Definition: graph.h:1237
qreal canvasWidth
Definition: graph.h:1310
int minNodeSCC
Definition: graph.h:1275
int minNodeEC
Definition: graph.h:1280
qreal edgeWeightTemp
Definition: graph.h:1244
Definition: graphvertex.h:63
qreal variancePP
Definition: graph.h:1255
QDateTime actualDateTime
Definition: graph.h:1330
QHash< int, QSet< int > > neighboursHash
Definition: graph.h:1217
QList< QString > m_relationsList
Definition: graph.h:1196
int minNodeSDC
Definition: graph.h:1274
bool calculatedTriad
Definition: graph.h:1318
qreal m_graphReciprocityDyad
Definition: graph.h:1299
QList< qreal > m_clusteringLevel
Definition: graph.h:1219
QThread file_parserThread
Definition: graph.h:123
QString m_reportsDataDir
Definition: graph.h:1235
QList< int > m_verticesList
Definition: graph.h:1202
QString initVertexShape
Definition: graph.h:1327
H_StrToInt discreteSDCs
Definition: graph.h:1231
qreal sumSEVC
Definition: graph.h:1267
QMultiHash< int, int > m_vertexPairsNotConnected
Definition: graph.h:1213
stack< int > Stack
Definition: graph.h:1228
qreal sumIRCC
Definition: graph.h:1261
#define SOCNETV_USE_NAMESPACE
Definition: global.h:11
qreal varianceEC
Definition: graph.h:1250
QString initVertexNumberColor
Definition: graph.h:1326
qreal sumSDC
Definition: graph.h:1259
qreal sizeOfComponent
Definition: graph.h:1286
bool m_graphIsWeighted
Definition: graph.h:1321
Parser * file_parser
Definition: graph.h:1186
QMultiHash< int, pair_i_fb > H_edges
Definition: graph.h:90
qreal sumSCC
Definition: graph.h:1260
qreal sumEC
Definition: graph.h:1265
NetworkRequestType
Definition: global.h:97
H_StrToInt discreteIRCCs
Definition: graph.h:1232
MyEdge m_clickedEdge
Definition: graph.h:1242
qreal varianceEVC
Definition: graph.h:1253
qreal varianceCLC
Definition: graph.h:1271
Matrix WM
Definition: graph.h:1225
QHash< qreal, int > H_f_i
Definition: graph.h:87
qreal sumPP
Definition: graph.h:1269
WebCrawler * web_crawler
Definition: graph.h:1188
H_Int vpos
Definition: graph.h:1130
qreal t_sumIC
Definition: graph.h:1263
bool order
Definition: graph.h:1294
qreal sumSBC
Definition: graph.h:1262
qreal varianceSBC
Definition: graph.h:1248
qreal m_graphDensity
Definition: graph.h:1297
int minNodeEccentricity
Definition: graph.h:1281
QSet< int > m_verticesSet
Definition: graph.h:1207
int minNodeEVC
Definition: graph.h:1285
static const int SUBGRAPH_CLIQUE
Definition: global.h:114
int m_crawler_max_urls
Definition: graph.h:1192
Clustering
Definition: graph.h:409
bool calculatedGraphSymmetry
Definition: graph.h:1319
Definition: global.h:150
bool calculatedPP
Definition: graph.h:1316
int m_graphHasChanged
Definition: graph.h:1290
int minNodeIC
Definition: graph.h:1282
int minNodeSBC
Definition: graph.h:1277
QHash< QString, int > H_StrToInt
Definition: graph.h:85
ChartType
Definition: global.h:90
QList< SelectedEdge > m_selectedEdges
Definition: graph.h:1209
@ Directed
Definition: global.h:68
Definition: chart.h:50
The WebCrawler class Parses HTML code it receives, locates urls inside it and puts them into a url qu...
Definition: webcrawler.h:45
The Parser class Main class for network file parsing and loading Supports GraphML,...
Definition: parser.h:78
int reciprocalEdgesVert
Definition: graph.h:1308
GraphChange
Definition: graph.h:394
qreal m_graphGeodesicsCount
Definition: graph.h:1296
QList< int > L_int
Definition: graph.h:92
qreal varianceSDC
Definition: graph.h:1245
qreal varianceSPC
Definition: graph.h:1251
int m_graphReciprocityTiesReciprocated
Definition: graph.h:1300
int minNodeSPC
Definition: graph.h:1278
QString m_graphName
Definition: graph.h:1325
qreal sumIC
Definition: graph.h:1266
QQueue< QUrl > * urlQueue
Definition: graph.h:1190
bool calculatedEdges
Definition: graph.h:1311
ChartType m_reportsChartType
Definition: graph.h:1238
QList< GraphVertex * > VList
Definition: graph.h:82
int initVertexNumberSize
Definition: graph.h:1292
int minNodeIRCC
Definition: graph.h:1276
int m_graphReciprocityTiesTotal
Definition: graph.h:1302
QList< int > m_graphFileFormatExportSupported
Definition: graph.h:1198
QMap< QString, V_int > m_clustersByName
Definition: graph.h:1222
int csRecDepth
Definition: graph.h:1323
QMap< int, V_str > m_clusterPairNamesPerSeq
Definition: graph.h:1223
int m_crawler_visited_urls
Definition: graph.h:1193
The Graph class This is the main class for a Graph, used in conjuction with GraphVertex,...
Definition: graph.h:121
qreal varianceIRCC
Definition: graph.h:1247
int m_graphReciprocityPairsReciprocated
Definition: graph.h:1303
static const int METRIC_SIMPLE_MATCHING
Definition: matrix.h:50
int minNodePP
Definition: graph.h:1284
qreal m_graphSumDistance
Definition: graph.h:1298
qreal minEccentricity
Definition: graph.h:1257
qreal varianceSCC
Definition: graph.h:1246
QMultiMap< int, L_int > m_cliques
Definition: graph.h:1216
int initVertexNumberDistance
Definition: graph.h:1293
VList m_graph
Definition: graph.h:1184
bool calculatedPRP
Definition: graph.h:1317
int m_vertexClicked
Definition: graph.h:1240
int minNodeCLC
Definition: graph.h:1272
bool calculatedIsolates
Definition: graph.h:1314
QThread webcrawlerThread
Definition: graph.h:124