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