Code Documentation 3.7
Social Network Visualizer
Loading...
Searching...
No Matches
graph.h
Go to the documentation of this file.
1
15
16#ifndef GRAPH_H
17#define GRAPH_H
18
19#include <QObject>
20#include <QList>
21#include <QQueue>
22#include <QHash>
23#include <QSet>
24#include <QMultiHash>
25#include <QMultiMap>
26#include <QTextStream>
27#include <QThread>
28#include <QStack>
29#include <QLoggingCategory>
30#include <atomic>
31#include <functional>
32
33
34#include "global.h"
38#include "graphvertex.h"
39#include "matrix.h"
40#include "parser.h"
41#include "webcrawler.h"
42
43// WS14: one logging category per src/graph/<domain>/ slice directory (centrality/, clustering/,
44// distances/, layouts/, storage/, etc.), declared here since graph.h is already included by every
45// slice .cpp, defined once in graph.cpp. Coarser than one-per-file (avoids ~60 near-empty categories
46// for small files) but finer than one blanket category (keeps independent toggling per domain via
47// QLoggingCategory::setFilterRules). lcGraph covers graph.cpp itself (the facade's own small file,
48// distinct from the core/ slice). lcMatrix (src/matrix.cpp, unrelated file) is deliberately not
49// reused here to avoid confusion with lcGraphMatrices (src/graph/matrices/).
50Q_DECLARE_LOGGING_CATEGORY(lcGraph)
51Q_DECLARE_LOGGING_CATEGORY(lcGraphCore)
52Q_DECLARE_LOGGING_CATEGORY(lcStorage)
53Q_DECLARE_LOGGING_CATEGORY(lcCentrality)
54Q_DECLARE_LOGGING_CATEGORY(lcClustering)
55Q_DECLARE_LOGGING_CATEGORY(lcDistances)
56Q_DECLARE_LOGGING_CATEGORY(lcProminence)
57Q_DECLARE_LOGGING_CATEGORY(lcReachability)
58Q_DECLARE_LOGGING_CATEGORY(lcSimilarity)
59Q_DECLARE_LOGGING_CATEGORY(lcLayouts)
60Q_DECLARE_LOGGING_CATEGORY(lcGenerators)
61Q_DECLARE_LOGGING_CATEGORY(lcGraphMatrices)
62Q_DECLARE_LOGGING_CATEGORY(lcCohesion)
63Q_DECLARE_LOGGING_CATEGORY(lcReporting)
64Q_DECLARE_LOGGING_CATEGORY(lcFilters)
65Q_DECLARE_LOGGING_CATEGORY(lcRelations)
66Q_DECLARE_LOGGING_CATEGORY(lcGraphCrawler)
67Q_DECLARE_LOGGING_CATEGORY(lcGraphUI)
68Q_DECLARE_LOGGING_CATEGORY(lcGraphIO)
69
70class QDateTime;
71class QPointF;
72class QNetworkReply;
73class QUrl;
74class QAbstractSeries;
75class QAbstractAxis;
76
77using namespace std;
78
80class Chart;
81
82typedef QList<GraphVertex *> VList;
83typedef QHash<QString, int> H_StrToInt;
84typedef QHash<int, int> H_Int;
85typedef QHash<qreal, int> H_f_i;
86typedef QPair<qreal, bool> pair_f_b;
87typedef QPair<int, pair_f_b> pair_i_fb;
88typedef QMultiHash<int, pair_i_fb> H_edges;
89typedef QHash<QString, bool> H_StrToBool;
90typedef QList<int> L_int;
91typedef QList<int> V_int;
92typedef QList<QString> V_str;
93
102class Graph : public QObject
103{
104 Q_OBJECT
107
108 friend class DistanceEngine;
109
110public slots:
111 // ============================================================================
112 // LEGACY/INTERNAL (UI / IO WIRING)
113 // ----------------------------------------------------------------------------
114 // NOTE (WS2/F0):
115 // Slots are part of Graph's coordinator role (signals/threads/UI wiring).
116 // Engines/services should not depend on these directly.
117 // ============================================================================
118
119 int relationCurrent();
120
121 QString relationCurrentName() const;
122
123 void relationCurrentRename(const QString &newName);
124 void relationCurrentRename(const QString &newName, const bool &signalMW);
125
127 void vertexCreate(const int &number,
128 const int &size,
129 const QString &color,
130 const QString &numColor,
131 const int &numSize,
132 const QString &label,
133 const QString &labelColor,
134 const int &labelSize,
135 const QPointF &p,
136 const QString &shape,
137 const QString &iconPath = QString(),
138 const bool &signalMW = false,
139 const QHash<QString, QString> &customAttributes = QHash<QString, QString>());
140
141 void graphFileLoaded(const int &fileType,
142 const QString &fName = QString(),
143 const QString &netName = QString(),
144 const int &totalNodes = 0,
145 const int &totalLinks = 0,
146 const int &edgeDirType = 0,
147 const qint64 &elapsedTime = 0,
148 const QString &message = QString());
149
150 void vertexRemoveDummyNode(int);
151
152 void graphLoadedTerminateParserThreads(QString reason);
153
154 void setSelectionChanged(const QList<int> selectedVertices,
155 const QList<SelectedEdge> selectedEdges);
156
157 void graphClickedEmptySpace(const QPointF &p);
158
160 bool edgeCreate(const int &v1, const int &v2, const qreal &weight,
161 const QString &color,
162 const int &type = 0,
163 const bool &drawArrows = true, const bool &bezier = false,
164 const QString &label = QString(),
165 const bool &signalMW = true,
166 const QHash<QString,QString> &edgeCustomAttributes =
167 QHash<QString,QString>());
168
169 void edgeCreateWebCrawler(const int &source, const int &target);
170
171 // helper vertexCreate functions
172 void vertexCreateAtPos(const QPointF &p);
173
174 void vertexCreateAtPosRandom(const bool &signalMW = false);
175
176 void vertexCreateAtPosRandomWithLabel(const int &i,
177 const QString &label,
178 const bool &signalMW = false);
179
181
182 void relationSet(int relNum = RAND_MAX, const bool &updateUI = true);
183
184 void relationNext();
185
186 void relationPrev();
187
188 void canvasSizeSet(const int &width, const int &height);
189 void canvasSizeSetQuiet(const qreal &width, const qreal &height);
190
191 double canvasMaxRadius() const;
192
193 qreal canvasMinDimension() const;
194
195 double canvasVisibleX(const double &x) const;
196
197 double canvasVisibleY(const double &y) const;
198
199 double canvasRandomX() const;
200
201 double canvasRandomY() const;
202
203 void vertexIsolatedAllToggle(const bool &toggle);
204
205 void vertexClickedSet(const int &v, const QPointF &p);
206
207 void edgeClickedSet(const int &v1, const int &v2, const bool &openMenu = false);
208
209 void vertexFilterByCentrality(const float threshold,
210 const bool overThreshold,
211 const IndexType centralityIndex);
212
213 void vertexFilterByEgoNetwork(const int v1, const int depth = 1);
214 void vertexFilterBySelection(const QList<int> &selectedVertices);
216 void edgeFilterByAttribute(const FilterCondition &cond);
218 void vertexFilterRemoveAt(int stackIndex);
219 QList<FilterSpec> filterSpecList() const;
220 bool visibilityHistoryEmpty() const;
221
222 void vertexFilterByQuery(const GraphQuery &query);
223 void edgeFilterByQuery(const GraphQuery &query);
224
225 void edgeFilterByWeight(const qreal, const bool);
226 void edgeFilterReset();
227
228 void edgeFilterUnilateral(const bool &toggle);
229
230 Graph *subgraphExtract(const QString &name,
231 const bool &includeCustomAttributes = true);
232
233 Graph *subgraphExtractFromSelection(const QString &name,
234 const bool &includeCustomAttributes = true);
235
236 void startWebCrawler(
237 const QUrl &startUrl,
238 const QStringList &urlPatternsIncluded,
239 const QStringList &urlPatternsExcluded,
240 const QStringList &linkClasses,
241 const int &maxNodes,
242 const int &maxLinksPerPage,
243 const bool &intLinks,
244 const bool &childLinks,
245 const bool &parentLinks,
246 const bool &selfLinks,
247 const bool &extLinksIncluded,
248 const bool &extLinksCrawl,
249 const bool &socialLinks,
250 const bool &delayedRequests);
251
253 void webSpider();
254
256
257 QString htmlEscaped(QString str) const;
258
259signals:
260
261 void signalWebCrawlParse(QNetworkReply *reply);
262
263 // ============================================================================
264 // LEGACY/INTERNAL (UI SIGNAL SURFACE)
265 // ----------------------------------------------------------------------------
266 // NOTE (WS2/F0): Signals are a UI orchestration mechanism. Engines/services
267 // must not emit/call UI-facing behavior directly.
268 // ============================================================================
269
271
272 void signalNetworkManagerRequest(const QUrl &currentUrl, const NetworkRequestType &type);
273
274 void signalGraphSavedStatus(const int &status);
275
276 void signalGraphModified(const bool &undirected,
277 const int &vertices,
278 const int &edges,
279 const qreal &density,
280 const bool &notSaved = true);
281
282 void signalGraphLoaded(const int &fileType,
283 const QString &fileName = QString(),
284 const QString &netName = QString(),
285 const int &totalNodes = 0,
286 const int &totalLinks = 0,
287 const qreal &density = 0,
288 const qint64 &elapsedTime = 0,
289 const QString &message = QString());
290
291 void statusMessage(const QString &message);
292
294
295 void signalNodeClickedInfo(const int &number = 0,
296 const QPointF &p = QPointF(),
297 const QString &label = QString(),
298 const int &inDegree = 0,
299 const int &outDegree = 0);
300
301 void signalEdgeClicked(const MyEdge &edge = MyEdge(), const bool &openMenu = false);
302
303 void signalRelationAddToMW(const QString &newRelation);
304
306
307 void signalRelationRenamedToMW(const QString &newRelName);
308
310
311 void signalRelationChangedToMW(const int &relIndex = RAND_MAX);
312
313 void signalGraphDirectedChanged(const bool &directed);
314
315 void signalSelectionChanged(const int &selectedVertices,
316 const int &selectedEdges);
317
318 void signalPromininenceDistributionChartUpdate(QAbstractSeries *series,
319 QAbstractAxis *axisX = Q_NULLPTR,
320 const qreal &min = 0,
321 const qreal &max = 0,
322 QAbstractAxis *axisY = Q_NULLPTR,
323 const qreal &minF = 0,
324 const qreal &maxF = 0);
325
327 void signalDrawNode(const QPointF &p,
328 const int &num,
329 const int &size,
330 const QString &nodeShape,
331 const QString &nodeIconPath,
332 const QString &nodeColor,
333 const QString &numberColor, const int &numSize,
334 const int &numDistance,
335 const QString &label,
336 const QString &labelColor, const int &labelSize,
337 const int &labelDistance);
338
339 // signal to GW to erase a node
341
342 // signal GW to draw an edge
343 void signalDrawEdge(const int &v1,
344 const int &v2,
345 const qreal &weight,
346 const QString &label = "",
347 const QString &color = "black",
348 const int &type = 0,
349 const bool &drawArrows = true,
350 const bool &bezier = false,
351 const bool &weightNumbers = false);
352
353 // signal to GW
354 void signalRemoveEdge(const int &v1, const int &v2, const bool &removeReverse);
355
356 void signalSetEdgeVisibility(const int &relation,
357 const int &source,
358 const int &target,
359 const bool &toggle,
360 const bool &preserveReverseEdge = false,
361 const int &edgeWeight = 1,
362 const int &reverseEdgeWeight = 1); // The last two are used only if we need to draw the edge
363
364 // Bulk counterpart of signalSetEdgeVisibility (WS3 M2): a whole-graph operation like a
365 // relation switch crosses to the GUI thread as one queued dispatch instead of one per edge.
366 void signalSetEdgesVisibilityBatch(const QList<EdgeVisibilityChange> &changes);
367
368 void setVertexVisibility(const int &number, const bool &toggle);
369
370 void setNodePos(const int &, const qreal &, const qreal &);
371
373
374 void signalNodesFound(const QList<int> foundList);
375
376 void setNodeSize(const int &v, const int &size);
377
378 void setNodeShape(const int &v, const QString &shape, const QString &iconPath = QString());
379
380 void setNodeColor(const int &v, const QString &color);
381
382 void setNodeLabel(const int &v, const QString &label);
383
384 void setNodeNumberColor(const int &v, const QString &color);
385
386 void setNodeNumberSize(const int &v, const int &size);
387
388 void setNodeNumberDistance(const int &v, const int &distance);
389
390 void setNodeLabelSize(const int &v, const int &size);
391
392 void setNodeLabelColor(const int &v, const QString &color);
393
394 void setNodeLabelDistance(const int &v, const int &distance);
395
396 void setEdgeWeight(const int &v1, const int &v2, const qreal &weight);
397 void signalEdgeType(const int &v1,
398 const int &v2,
399 const int &type);
400 void setEdgeColor(const int &v1,
401 const int &v2,
402 const QString &color);
403 void setEdgeLabel(const int &v1,
404 const int &v2,
405 const QString &label);
406 void addGuideCircle(const double &, const double &, const double &);
407 void addGuideHLine(const double &y0);
408
409public:
410 // ============================================================================
411 // GRAPH FACADE CONTRACT (WS2 / F0)
412 // ----------------------------------------------------------------------------
413 // This section defines the *supported* API surface that UI and CLI code may
414 // call going forward.
415 //
416 // Rules:
417 // - New UI features MUST use only the "FACADE API (SUPPORTED)" surface.
418 // - Engines/services MUST NOT call UI-oriented slots/signals.
419 // - Anything explicitly marked LEGACY/INTERNAL is not allowed for new code,
420 // even if it remains public for historical reasons.
421 //
422 // ============================================================================
423
437
439 {
440 Single_Linkage = 0, //"single-link" or minimum
441 Complete_Linkage = 1, // "complete-link or maximum
442 Average_Linkage = 2, // mean or "average-linkage" or UPGMA
443
444 };
445
446 // --------------------------------------------------------------------------
447 // FACADE API (SUPPORTED): Visibility snapshot for non-destructive filtering.
448 // Used by the filter system to save/restore vertex and edge visibility state.
449 // Stored as a stack to support future undo/redo.
450 // --------------------------------------------------------------------------
452 {
453 QHash<int, bool> nodeVisible; // vertex number → was enabled
454 QHash<QPair<int, int>, bool> arcVisible; // (source,target)→ was visible
455 bool active = false; // true when this snapshot holds real data
456 FilterSpec spec; // replay descriptor for arbitrary chip removal
457 };
458
459 /* INIT AND CLEAR*/
460 // --------------------------------------------------------------------------
461 // FACADE API (SUPPORTED): Lifecycle
462 // --------------------------------------------------------------------------
463 Graph(const int &reserveVerticesSize = 5000, const int &reserveEdgesPerVertexSize = 500);
464 ~Graph();
465
466 QThread *getThread() const;
467 void moveToThreadFacade(QThread *thread);
468
469 void clear(const QString &reason = "");
470
471 /*FILES (READ AND WRITE)*/
472 // --------------------------------------------------------------------------
473 // FACADE API (SUPPORTED): File identity / load-save
474 // --------------------------------------------------------------------------
475
476 QString getFileName() const;
477
478 void setFileName(const QString &fileName);
479
480 QString getName() const;
481
482 void setName(const QString &graphName);
483
484 bool isSaved() const;
485
486 bool isLoaded() const;
487
488 int getFileFormat() const;
489
490 void setFileFormat(const int &fileFormat);
491
492 bool isFileFormatExportSupported(const int &fileFormat) const;
493
494 void setModStatus(const int &graphNewStatus, const bool &signalMW = true);
495
496 bool isModified() const;
497
498 void loadFile(const QString fileName,
499 const QString codecName,
500 const int format,
501 const QString delimiter = QString(),
502 const int sm_two_mode = 1,
503 const bool sm_has_labels = false);
504
505 void saveToFile(const QString &fileName,
506 const int &fileType,
507 const bool &saveEdgeWeights = true,
508 const bool &saveZeroWeightEdges = false);
509
510 bool saveToPajekFormat(const QString &fileName,
511 QString networkName = "",
512 int maxWidth = 0, int maxHeight = 0);
513
514 bool saveToAdjacencyFormat(const QString &fileName,
515 const bool &saveEdgeWeights = true);
516
517 bool saveToGraphMLFormat(const QString &fileName,
518 const bool &saveZeroWeightEdges = false,
519 QString networkName = "",
520 int maxWidth = 0, int maxHeight = 0);
521
522 bool saveToDotFormat(const QString &fileName);
523
524 bool saveToUCINETDLFormat(const QString &fileName);
525
526 bool saveToEdgeListWeightedFormat(const QString &fileName);
527
528 bool saveToEdgeListSimpleFormat(const QString &fileName);
529
530 QString graphMatrixTypeToString(const int &matrixType) const;
531
532 int graphMatrixStrToType(const QString &matrix) const;
533
534 QString graphMetricTypeToString(const int &metricType) const;
535
536 int graphMetricStrToType(const QString &metricStr) const;
537
538 QString graphClusteringMethodTypeToString(const int &methodType) const;
539
540 int graphClusteringMethodStrToType(const QString &method) const;
541
542 /* RELATIONS */
543 // --------------------------------------------------------------------------
544 // FACADE API (SUPPORTED): Relations
545 // --------------------------------------------------------------------------
546
547 int relations();
548
549 void relationsClear();
550
551 void relationAdd(const QString &relName, const bool &changeRelation = false);
552
553 /* VERTICES */
554 // --------------------------------------------------------------------------
555 // FACADE API (SUPPORTED): Vertex queries + edits
556 // --------------------------------------------------------------------------
557
558 int vertexIndexByNumber(int v) const;
559 // LEGACY/INTERNAL (ENGINE SUPPORT):
560 // Access a vertex by internal storage index (vpos result).
561 // No bounds checks: preserves existing behavior of direct m_graph[idx] usage.
562 GraphVertex *vertexAtIndex(int idx);
563 const GraphVertex *vertexAtIndex(int idx) const;
564
565 VList::const_iterator verticesBegin() const;
566 VList::const_iterator verticesEnd() const;
567
568 int vertexNumberMax();
569
570 int vertexNumberMin();
571
572 int vertexDegreeOut(int);
573
574 int vertexDegreeIn(int);
575
576 QList<int> vertexReciprocalNeighborsList(const int &v1);
577 QSet<int> vertexReciprocalNeighborsSet(const int &v1);
578 QSet<int> vertexOutNeighborsSet(const int &v1, const bool includeInEdges = false);
579
580 bool vertexIsolated(const int &v1) const;
581
582 bool vertexExists(const int &v1);
583 int vertexIndexIfExists(const int &v1);
584
585 bool vertexExists(const QString &label);
586 int vertexIndexIfExists(const QString &label);
587
588 bool vertexFindByNumber(const QStringList &numList);
589
590 bool vertexFindByLabel(const QStringList &labelList);
591
592 bool vertexFindByIndexScore(const int &index,
593 const QStringList &thresholds,
594 const bool &considerWeights,
595 const bool &inverseWeights = false,
596 const bool &dropIsolates = false);
597
598 void vertexRemove(const int &v1);
599
600 void vertexSizeInit(const int);
601
602 void vertexSizeSet(const int &v, const int &newsize);
603
604 int vertexSize(const int &v) const;
605
606 void vertexShapeSetDefault(const QString, const QString &iconPath = QString());
607
608 void vertexShapeSet(const int &v, const QString &shape, const QString &iconPath = QString());
609
610 QString vertexShape(const int &v);
611
612 QString vertexShapeIconPath(const int &v);
613
614 bool graphHasVertexCustomIcons() const;
615
616 QStringList graphHasVertexCustomAttributes() const;
617
618 void vertexColorInit(const QString &color);
619
620 void vertexColorSet(const int &v, const QString &color);
621
622 QColor vertexColor(const int &v) const;
623
624 void vertexNumberColorInit(const QString &color);
625
626 void vertexNumberColorSet(const int &v = 0, const QString &color = "#000000");
627
628 void vertexNumberSizeInit(const int &size);
629
630 void vertexNumberSizeSet(const int &v, const int &newsize);
631
632 void vertexNumberDistanceInit(const int &distance);
633
634 void vertexNumberDistanceSet(const int &v, const int &newDistance);
635
636 void vertexLabelSet(const int &v, const QString &label);
637
638 QString vertexLabel(const int &v) const;
639
640 void vertexLabelsVisibilitySet(bool toggle);
641
642 void vertexLabelSizeInit(int newSize);
643
644 void vertexLabelSizeSet(const int &v, const int &labelSize);
645
646 void vertexLabelColorInit(QString color);
647
648 void vertexLabelColorSet(const int &v1, const QString &color);
649
650 void vertexLabelDistanceInit(const int &distance);
651
652 void vertexLabelDistanceSet(const int &v, const int &newDistance);
653
654 void vertexLabelDistanceAllSet(const int &newDistance);
655
656 void vertexCustomAttributesSet(const int &v1, const QHash<QString, QString> &customAttributes);
657
658 void vertexCustomAttributeSet(const int &v1, const QString &key, const QString &value);
659
660 void vertexCustomAttributeRemove(const int &v1, const QString &key);
661
662 QHash<QString, QString> vertexCustomAttributes(const int &v1) const;
663
664 int vertexAttributesImport(const QStringList &headers,
665 const QVector<QStringList> &rows,
666 int idColumn,
667 bool matchByLabel);
668
669 void vertexPosSet(const int &v, const int &x, const int &y);
670
671 QPointF vertexPos(const int &v1) const;
672
673 int vertexClicked() const;
674
675 int vertices(const bool &dropIsolates = false, const bool &countAll = false, const bool &recount = false);
676
677 int vertexEdgesOutbound(int i);
678
679 int vertexEdgesInbound(int i);
680
682
684
686
687 QList<int> verticesListIsolated();
688
689 QList<int> verticesList();
690
691 QSet<int> verticesSet();
692
693 void verticesCreateSubgraph(QList<int> vList,
694 const int &type = SUBGRAPH_CLIQUE,
695 const int &center = 0);
696
697 // Regression/testing helper: access a vertex object by its number.
698 // Returns nullptr if not found.
699 GraphVertex *vertexPtr(const int v);
700
701 /* EDGES */
702 // --------------------------------------------------------------------------
703 // FACADE API (SUPPORTED): Edge queries + edits
704 // --------------------------------------------------------------------------
705
706 int edgesEnabled();
707
709
710 qreal edgeExists(const int &v1,
711 const int &v2,
712 const bool &checkReciprocal = false);
713
714 qreal edgeExistsVirtual(const int &v1, const int &v2);
715
716 void edgeOutboundStatusSet(const int &source,
717 const int &target,
718 const bool &toggle = false);
719
720 void edgeInboundStatusSet(const int &target,
721 const int &source,
722 const bool &toggle = false);
723
724 // Plain (non-signal) relay points for GraphVertex, a QtCore-only value class holding a
725 // Graph* rather than a QObject connection (WS3 M2). Each just emits the corresponding
726 // signal below - this is what lets GraphVertex notify the UI layer without being a
727 // QObject itself.
728 void notifyEdgeVisibilityChanged(const int &relation, const int &source, const int &target,
729 const bool &toggle, const bool &preserveReverseEdge = false,
730 const int &edgeWeight = 1, const int &reverseEdgeWeight = 1);
731 void notifyEdgesVisibilityBatch(const QList<EdgeVisibilityChange> &changes);
732
733 void edgeRemove(const int &v1,
734 const int &v2,
735 const bool &removeReverse = false);
736
737 void edgeRemoveSelected(SelectedEdge &selectedEdge,
738 const bool &removeReverse);
739
741
742 bool edgeSymmetric(const int &v1, const int &v2);
743
744 void edgeTypeSet(const int &v1,
745 const int &v2,
746 const qreal &w,
747 const int &dirType = EdgeType::Directed);
748
749 void edgeWeightSet(const int &v1,
750 const int &v2,
751 const qreal &w,
752 const bool &undirected = false);
753
754 qreal edgeWeight(const int &v1, const int &v2) const;
755
756 void edgeWeightNumbersVisibilitySet(const bool &toggle);
757
758 void edgeLabelSet(const int &v1, const int &v2, const QString &label);
759
760 QString edgeLabel(const int &v1, const int &v2) const;
761
762 void edgeLabelsVisibilitySet(const bool &toggle);
763
764 void edgeColorInit(const QString &);
765 void edgeColorZeroInit(const QString &); // #30: configurable zero-weight edge color
766 void showZeroWeightEdgesSet(const bool &toggle); // #30: show/hide zero-weight edges
767
768 void edgeColorSet(const int &v1, const int &v2, const QString &color);
769
770 QString edgeColor(const int &v1, const int &v2);
771
772 bool edgeColorAllSet(const QString &color, const int &threshold = RAND_MAX);
773
774 void edgeCustomAttributesSet(const int &v1, const int &v2, const QHash<QString,QString> &attrs);
775
776 QHash<QString,QString> edgeCustomAttributes(const int &v1, const int &v2) const;
777
778 int edgeAttributesImport(const QStringList &headers,
779 const QVector<QStringList> &rows,
780 int srcColumn,
781 int tgtColumn);
782
783 QStringList graphHasEdgeCustomAttributes() const;
784
785 /* GRAPH methods */
786 // --------------------------------------------------------------------------
787 // FACADE API (SUPPORTED): Graph facts + settings used by UI/CLI
788 // --------------------------------------------------------------------------
789
790 bool isEmpty() const;
791
792 QList<int> getSelectedVertices() const;
793
794 int getSelectedVerticesCount() const;
795
796 int getSelectedVerticesMin() const;
797
798 int getSelectedVerticesMax() const;
799
800 QList<SelectedEdge> getSelectedEdges() const;
801
802 int getSelectedEdgesCount() const;
803
804 int getGeodesicsCount();
805
806 qreal graphDensity();
807
808 bool isWeighted();
810
811 void setWeighted(const bool &toggle = true);
812
813 qreal graphReciprocity();
814
815 bool isSymmetric();
816
817 void setSymmetric();
818
819 void addRelationSymmetricStrongTies(const bool &allRelations = false);
820
822
823 void graphDichotomization(const qreal threshold);
824
825 void setDirected(const bool &toggle = true, const bool &signalMW = true);
826
827 void setUndirected(const bool &toggle = true, const bool &signalMW = true);
828
829 bool isDirected();
830
831 bool isUndirected();
832
833 bool isConnected();
834
835 bool isConnectedCached() const;
836
838
840
842
844
845 const QHash<int,int> &vertexComponentId() const { return m_vertexComponentId; }
846
847 // --------------------------------------------------------------------------
848 // FACADE API (SUPPORTED): Vertex connectivity (Menger's theorem via max-flow, #7).
849 // --------------------------------------------------------------------------
851 {
852 Ok, // value holds the local vertex connectivity (>=0; 0 means unreachable)
853 Adjacent, // source and target are directly connected by an edge - no finite vertex
854 // cut exists (Menger's theorem requires non-adjacency); value is meaningless
855 Invalid // source/target don't exist, or source == target
856 };
857
863
864 NodeConnectivityResult graphNodeConnectivity(int source, int target, bool respectDirection);
865
866 int graphConnectivity(bool respectDirection);
867
868 // WS6.7: read-only-by-convention accessors for kernel_matrix_v8's golden coverage.
869 // Non-const because Matrix::item()/rows()/cols() are themselves non-const throughout.
870 Matrix &matrixAdjacency() { return AM; }
872 Matrix &matrixDistances() { return DM; }
874 Matrix &matrixWalks() { return XM; }
877
878 void createMatrixAdjacency(const bool dropIsolates = false,
879 const bool considerWeights = true,
880 const bool inverseWeights = false,
881 const bool symmetrize = false);
882
883 bool createMatrixAdjacencyInverse(const QString &method = "lu");
884
886 Matrix &SEM,
887 const int &measure = METRIC_SIMPLE_MATCHING,
888 const QString &varLocation = "Rows",
889 const bool &diagonal = false,
890 const bool &considerWeights = true);
891
893 Matrix &PCC,
894 const QString &varLocation = "Rows",
895 const bool &diagonal = false);
896
897 void createMatrixDissimilarities(Matrix &INPUT_MATRIX,
898 Matrix &DSM,
899 const int &metric,
900 const QString &varLocation,
901 const bool &diagonal,
902 const bool &considerWeights);
903
904 /* REPORT EXPORTS */
905 void setReportsDataDir(const QString &reportsDir);
906 void setReportsRealNumberPrecision(const int &precision);
907 void setReportsLabelLength(const int &length);
908 void setReportsChartType(const int &type);
909 void setReportsOutputFormat(const int &format);
910
911 void writeDataSetToFile(const QString dir, const QString);
912
913 void writeMatrixAdjacencyTo(QTextStream &os,
914 const bool &saveEdgeWeights = true);
915
916 bool writeReciprocity(const QString fileName,
917 const bool considerWeights = false,
918 const int &format = ReportFormat::Html);
919
920 bool writeMatrix(const QString &fileName,
921 const int &matrix = MATRIX_ADJACENCY,
922 const bool &considerWeights = true,
923 const bool &inverseWeights = false,
924 const bool &dropIsolates = false,
925 const QString &varLocation = "Rows",
926 const bool &simpler = false,
927 const int &format = ReportFormat::Html);
928
929 void writeMatrixHTMLTable(QTextStream &outText, Matrix &M,
930 const bool &markDiag = true,
931 const bool &plain = false,
932 const bool &printInfinity = true,
933 const bool &dropIsolates = false);
934
935 void writeMatrixCSVTable(QTextStream &outText, Matrix &M,
936 const bool &printInfinity = true,
937 const bool &dropIsolates = false);
938
939 bool writeMatrixAdjacency(const QString fileName,
940 const bool &markDiag = true,
941 const int &format = ReportFormat::Html);
942
943 void writeMatrixAdjacencyPlot(const QString fileName,
944 const bool &simpler = false);
945
946 bool writeMatrixDissimilarities(const QString fileName,
947 const QString &metricStr,
948 const QString &varLocation,
949 const bool &diagonal,
950 const bool &considerWeights,
951 const int &format = ReportFormat::Html);
952
953 bool writeMatrixSimilarityMatching(const QString fileName,
954 const QString &measure = "Simple",
955 const QString &matrix = "adjacency",
956 const QString &varLocation = "rows",
957 const bool &diagonal = false,
958 const bool &considerWeights = true,
959 const int &format = ReportFormat::Html);
960
961 bool writeMatrixSimilarityPearson(const QString fileName,
962 const bool considerWeights,
963 const QString &matrix = "adjacency",
964 const QString &varLocation = "rows",
965 const bool &diagonal = false,
966 const int &format = ReportFormat::Html);
967
968 bool writeEccentricity(const QString fileName,
969 const bool considerWeights = false,
970 const bool inverseWeights = false,
971 const bool dropIsolates = false,
972 const int &format = ReportFormat::Html);
973
974 // friend QTextStream& operator << (QTextStream& os, Graph& m);
975
976 // Shared per-node score-table renderer for the centrality/prestige and (WS16 Step 3)
977 // Reciprocity/Clustering Coefficient/Eccentricity report families. "Node" and "Label"
978 // columns are fixed; dataColumnHeaders supplies the rest, in order. rowValues returns
979 // that row's already-computed scores, in the same order as dataColumnHeaders - a value
980 // equal to RAND_MAX renders as the infinity glyph, matching writeMatrixHTMLTable/
981 // writeMatrixCSVTable's existing sentinel convention. isBlanked (optional; null means
982 // "never blank", matching writeCentralityEigenvector's existing behaviour) decides
983 // whether a row's data columns are replaced with a placeholder - e.g. dropped isolates -
984 // preserving each report's current isolate-handling exactly rather than unifying it.
985 // isSkipped (optional) omits the row entirely - distinct from isBlanked - matching
986 // writeEccentricity()'s existing "don't print disabled nodes at all" behaviour.
987 void writeScoreTableHTML(QTextStream &outText,
988 const QStringList &dataColumnHeaders,
989 const std::function<QVector<qreal>(GraphVertex *)> &rowValues,
990 const std::function<bool(GraphVertex *)> &isBlanked = nullptr,
991 const std::function<bool(GraphVertex *)> &isSkipped = nullptr);
992
993 void writeScoreTableCSV(QTextStream &outText,
994 const QStringList &dataColumnHeaders,
995 const std::function<QVector<qreal>(GraphVertex *)> &rowValues,
996 const std::function<bool(GraphVertex *)> &isBlanked = nullptr,
997 const std::function<bool(GraphVertex *)> &isSkipped = nullptr);
998
999 bool writeCentralityDegree(const QString,
1000 const bool weights,
1001 const bool dropIsolates,
1002 const int &format = ReportFormat::Html);
1003
1004 bool writeCentralityCloseness(const QString,
1005 const bool weights,
1006 const bool inverseWeights,
1007 const bool dropIsolates,
1008 const int &format = ReportFormat::Html);
1009
1010 bool writeCentralityClosenessInfluenceRange(const QString,
1011 const bool weights,
1012 const bool inverseWeights,
1013 const bool dropIsolates,
1014 const int &format = ReportFormat::Html);
1015
1016 bool writeCentralityBetweenness(const QString,
1017 const bool weights,
1018 const bool inverseWeights,
1019 const bool dropIsolates,
1020 const int &format = ReportFormat::Html);
1021
1022 bool writeCentralityPower(const QString,
1023 const bool weigths,
1024 const bool inverseWeights,
1025 const bool dropIsolates,
1026 const int &format = ReportFormat::Html);
1027
1028 bool writeCentralityStress(const QString,
1029 const bool weigths,
1030 const bool inverseWeights,
1031 const bool dropIsolates,
1032 const int &format = ReportFormat::Html);
1033
1034 bool writeCentralityEccentricity(const QString,
1035 const bool weigths,
1036 const bool inverseWeights,
1037 const bool dropIsolates,
1038 const int &format = ReportFormat::Html);
1039
1040 bool writeCentralityInformation(const QString,
1041 const bool weigths,
1042 const bool inverseWeights,
1043 const int &format = ReportFormat::Html);
1044
1045 bool writeCentralityEigenvector(const QString,
1046 const bool &weigths = true,
1047 const bool &inverseWeights = false,
1048 const bool &dropIsolates = false,
1049 const int &format = ReportFormat::Html);
1050
1051 bool writeCentralityKatz(const QString,
1052 const qreal &alpha,
1053 const bool &weigths = false,
1054 const bool &inverseWeights = false,
1055 const bool &dropIsolates = false,
1056 const int &format = ReportFormat::Html);
1057
1058 bool writeCentralityBonacich(const QString,
1059 const qreal &alpha,
1060 const qreal &beta,
1061 const bool &weigths = false,
1062 const bool &inverseWeights = false,
1063 const bool &dropIsolates = false,
1064 const int &format = ReportFormat::Html);
1065
1066 bool writePrestigeDegree(const QString, const bool weights,
1067 const bool dropIsolates,
1068 const int &format = ReportFormat::Html);
1069
1070 bool writePrestigeProximity(const QString, const bool weights,
1071 const bool inverseWeights,
1072 const bool dropIsolates,
1073 const int &format = ReportFormat::Html);
1074
1075 bool writePrestigePageRank(const QString, const bool Isolates = false,
1076 const int &format = ReportFormat::Html);
1077
1078 // HTML-only, permanently (WS16 Step 3): produces an equivalence matrix plus a dendrogram,
1079 // neither of which is a single flat table.
1080 bool writeClusteringHierarchical(const QString &fileName,
1081 const QString &varLocation,
1082 const QString &matrix = "Adjacency",
1083 const QString &metric = "Manhattan",
1084 const QString &method = "Complete",
1085 const bool &diagonal = false,
1086 const bool &dendrogram = false,
1087 const bool &considerWeights = true,
1088 const bool &inverseWeights = false,
1089 const bool &dropIsolates = false);
1090
1091 void writeClusteringHierarchicalResultsToStream(QTextStream &outText,
1092 const int N,
1093 const bool &dendrogram = false);
1094
1095 // HTML-only, permanently (WS16 Step 3): writeCliqueCensus() combines 4 heterogeneous
1096 // sub-tables (clique list, actor-by-clique matrix, actor-by-actor co-membership matrix,
1097 // and a full hierarchical-clustering dendrogram sub-report) that don't reduce to one
1098 // flat CSV table.
1099 bool writeCliqueCensus(const QString &fileName,
1100 const bool considerWeights);
1101
1102 bool writeClusteringCoefficient(const QString, const bool,
1103 const int &format = ReportFormat::Html);
1104
1105 bool writeTriadCensus(const QString, const bool,
1106 const int &format = ReportFormat::Html);
1107
1108 /* DISTANCES, CENTRALITIES & PROMINENCE MEASURES */
1109
1110 int graphConnectednessFull(const bool updateProgress = false);
1111
1112 bool graphReachable(const int &v1, const int &v2);
1113
1115
1116 int graphDiameter(const bool considerWeights, const bool inverseWeights);
1117
1118 int graphDiameterCached() const;
1119
1120 qreal graphSumDistanceCached() const;
1121
1122 qreal graphGeodesicsCountCached() const;
1123
1124 int graphDistanceGeodesic(const int &v1,
1125 const int &v2,
1126 const bool &considerWeights = false,
1127 const bool &inverseWeights = true);
1128
1129 // WS5 A2: read-only accessors into m_apspDist/m_apspSigma (the flat-matrix APSP storage
1130 // DistanceEngine populates) for the current relation. Unlike graphDistanceGeodesic() above,
1131 // these never trigger a recompute - callers are expected to have already run
1132 // graphDistancesGeodesic() themselves. Returns RAND_MAX / 0 respectively if either vertex
1133 // number is unknown or nothing has been computed yet for the current relation.
1134 qreal apspDistance(const int &v1, const int &v2);
1135 int apspShortestPaths(const int &v1, const int &v2);
1136
1137 QMap<int, int> graphGeodesicDistanceDistribution(const bool &considerWeights = false,
1138 const bool &inverseWeights = false);
1139
1140 bool writeGeodesicDistribution(const QString &fileName,
1141 const bool &considerWeights = false,
1142 const bool &inverseWeights = false);
1143
1144 QList<int> graphGeodesicShortestPath(const int &v1,
1145 const int &v2,
1146 const bool &considerWeights = false,
1147 const bool &inverseWeights = false);
1148
1149 qreal graphDistanceGeodesicAverage(const bool considerWeights,
1150 const bool inverseWeights,
1151 const bool dropIsolates);
1152
1154
1155 void graphDistancesGeodesic(const bool &computeCentralities = false,
1156 const bool &considerWeights = false,
1157 const bool &inverseWeights = true,
1158 const bool &dropIsolates = false);
1159
1160 // ============================================================================
1161 // --- Connectivity bookkeeping ---
1163 void notConnectedPairsInsert(int from, int to);
1164 int notConnectedPairsSize() const;
1165
1166 // --- Distance centrality cache flags ---
1167 // CLI/benchmark helper: allows repeated runs by clearing the computed flags only.
1168 // Does not modify graph structure or results.
1170
1171 // LEGACY/INTERNAL (ENGINE SUPPORT): cached results written by DistanceEngine
1172 void setSymmetricCached(bool v);
1173 bool symmetricCached() const;
1174
1175 void setConnectedCached(bool v);
1176 void setDiameterCached(int v);
1177
1178 void resetDistanceAggregates(); // sets avg/sum/geodesics/diameter to 0
1179 void addToDistanceSum(qreal delta);
1180 void incGeodesicsCount();
1181 // Bulk-add n to the geodesics count — used by the post-parallel-loop reduction
1182 // so each thread contributes its total in one call instead of n individual increments.
1183 void addGeodesicsCount(int n);
1184 void setAverageDistanceCached(qreal v);
1185
1186 bool graphMatrixDistanceGeodesicCreate(const bool &considerWeights = false,
1187 const bool &inverseWeights = false,
1188 const bool &dropIsolates = false);
1189
1190 void graphMatrixShortestPathsCreate(const bool &considerWeights = false,
1191 const bool &inverseWeights = true,
1192 const bool &dropIsolates = false);
1193
1194 int getProminenceIndexByName(const QString &prominenceIndexName);
1195
1196 void prominenceDistribution(const int &index,
1197 const ChartType &type,
1198 const QString &distImageFileName = QString());
1199
1200 void prominenceDistributionBars(const H_StrToInt &discreteClasses,
1201 const QString &name,
1202 const QString &distImageFileName);
1203
1204 void prominenceDistributionArea(const H_StrToInt &discreteClasses,
1205 const QString &name,
1206 const QString &distImageFileName);
1207
1208 void prominenceDistributionSpline(const H_StrToInt &discreteClasses,
1209 const QString &seriesName,
1210 const QString &distImageFileName);
1211
1212 void centralityDegree(const bool &considerWeights = true,
1213 const bool &dropIsolates = false);
1214
1215 void centralityInformation(const bool considerWeights = false,
1216 const bool inverseWeights = false);
1217
1218 void centralityEigenvector(const bool &considerWeights = false,
1219 const bool &inverseWeights = false,
1220 const bool &dropIsolates = false);
1221
1222 qreal estimateSpectralRadius(const bool &considerWeights = false,
1223 const bool &inverseWeights = false,
1224 const bool &dropIsolates = false);
1225
1226 void centralityKatz(const qreal &alpha,
1227 const bool &considerWeights = false,
1228 const bool &inverseWeights = false,
1229 const bool &dropIsolates = false);
1230
1231 void centralityBonacich(const qreal &alpha,
1232 const qreal &beta,
1233 const bool &considerWeights = false,
1234 const bool &inverseWeights = false,
1235 const bool &dropIsolates = false);
1236
1237 void centralityClosenessIR(const bool considerWeights = false,
1238 const bool inverseWeights = false,
1239 const bool dropIsolates = false);
1240
1241 void prestigeDegree(const bool &considerWeights, const bool &dropIsolates = false);
1242
1243 void prestigePageRank(const bool &dropIsolates = false);
1244
1245 void prestigeProximity(const bool considerWeights = false,
1246 const bool inverseWeights = false,
1247 const bool dropIsolates = false);
1248
1249 bool isCentralityIndexComputed(const IndexType index) const;
1250
1251 /* REACHABILITY AND WALKS */
1252
1253 int walksBetween(int v1, int v2, int length);
1254
1255 void graphWalksMatrixCreate(const int &N = 0,
1256 const int &length = 0,
1257 const bool &dropIsolates = false,
1258 const bool &considerWeights = false,
1259 const bool &inverseWeights = false,
1260 const bool &symmetrize = false);
1261
1262 bool writeMatrixWalks(const QString &fn,
1263 const int &length = 0,
1264 const bool &simpler = false,
1265 const int &format = ReportFormat::Html);
1266
1267 qreal numberOfTriples(int v1);
1268
1269 /* CLIQUES, CLUSTERING, TRIADS */
1270 void graphCliques(QSet<int> R = QSet<int>(), QSet<int> P = QSet<int>(), QSet<int> X = QSet<int>());
1271
1272 void graphCliqueAdd(const QList<int> &clique);
1273
1274 int graphCliquesContaining(const int &actor, const int &size = 0);
1275
1276 int graphCliquesOfSize(const int &size);
1277
1278 bool graphClusteringHierarchical(Matrix &STR_EQUIV,
1279 const QString &varLocation,
1280 const int &metric,
1281 const int &method,
1282 const bool &diagonal = false,
1283 const bool &diagram = false,
1284 const bool &considerWeights = true,
1285 const bool &inverseWeights = false,
1286 const bool &dropIsolates = false);
1287
1288 qreal clusteringCoefficientLocal(const int &v1);
1289
1290 qreal clusteringCoefficient();
1291
1292 bool graphTriadCensus();
1293
1295 // --- Triad census results (read-only access for CLI / reports) ---
1296 const QList<int> &graphTriadTypeFreqs() const { return triadTypeFreqs; }
1298
1299 // void eccentr_JordanCenter(); // TODO
1300
1301 /* LAYOUTS */
1302
1303 void layoutRandom();
1304
1305 void layoutRadialRandom(const bool &guides = true);
1306
1307 void layoutEgoRadial(const int egoVertex);
1308
1309 void layoutCircular(const double &x0,
1310 const double &y0,
1311 const double &newRadius,
1312 const bool &guides = false);
1313
1314 void layoutByProminenceIndex(int prominenceIndex,
1315 int layoutType,
1316 const bool &considerWeights = false,
1317 const bool &inverseWeights = false,
1318 const bool &dropIsolates = false);
1319
1321
1323
1324 void layoutForceDirectedSpringEmbedder(const int maxIterations);
1325
1326 void layoutForceDirectedFruchtermanReingold(const int maxIterations);
1327
1328 void layoutForceDirectedKamadaKawai(const int maxIterations = 500,
1329 const bool considerWeights = false,
1330 const bool inverseWeights = false,
1331 const bool dropIsolates = false,
1332 const QString &initialPositions = "current");
1333
1334 qreal graphDistanceEuclidean(const QPointF &a, const QPointF &b);
1335
1336 qreal graphDistanceEuclidean(const QPointF &a);
1337
1338 int sign(const qreal &D);
1339
1340 qreal layoutForceDirected_F_rep(const QString model,
1341 const qreal &dist,
1342 const qreal &optimalDistance);
1343
1344 qreal layoutForceDirected_F_att(const QString model,
1345 const qreal &dist,
1346 const qreal &optimalDistance);
1347
1348 qreal layoutForceDirected_Eades_moveNodes(const qreal &c4);
1349
1350 qreal layoutForceDirected_FR_moveNodes(const qreal &temperature);
1351
1352 qreal layoutForceDirected_FR_temperature(const int iteration) const;
1353
1354 qreal computeOptimalDistance(const int &V);
1355
1356 void compute_angles(const QPointF &Delta,
1357 const qreal &dist,
1358 qreal &angle1,
1359 qreal &angle2,
1360 qreal &degrees1,
1361 qreal &degrees2);
1362
1363 /* CRAWLER */
1364 void webCrawlTerminateThreads(QString reason);
1365
1367 void randomizeThings();
1368
1369 bool randomNetErdosCreate(const int &N, const QString &model,
1370 const int &m, const qreal &p,
1371 const QString &mode, const bool &diag);
1372
1373 bool randomNetScaleFreeCreate(const int &N, const int &power,
1374 const int &m0, const int &m,
1375 const qreal &alpha, const QString &mode);
1376
1377 bool randomNetSmallWorldCreate(const int &N, const int &degree,
1378 const double &beta, const QString &mode);
1379
1380 bool randomNetRingLatticeCreate(const int &N, const int &degree,
1381 const bool updateProgress = false);
1382
1383 bool randomNetRegularCreate(const int &N, const int &degree,
1384 const QString &mode, const bool &diag);
1385
1386 bool randomNetLatticeCreate(const int &N, const int &length,
1387 const int &dimension, const int &nei,
1388 const QString &mode, const bool &circular);
1389
1390 int factorial(int);
1391
1392 // Progress cancellation query: readable by engines and sinks.
1393 bool progressCanceled() const;
1394 void resetProgressCanceled();
1395
1401 //
1402 // LEGACY/INTERNAL: storage bookkeeping.
1403 // Do not use from UI/engines. (Later WS2 will likely privatize this and
1404 // expose intent-revealing helpers if needed.)
1406
1407 // --------------------------------------------------------------------------
1408 // INTERNAL PROGRESS FACADE (WS2/F4)
1409 // Algorithm slices must not emit signals directly.
1410 // --------------------------------------------------------------------------
1411protected:
1412 void progressStatus(const QString &msg);
1413
1414 void runOnGuiThread(std::function<void()> fn);
1415
1416 void uiProminenceDistributionSpline(const QVector<QPair<qreal, qreal>> &points,
1417 qreal min, qreal max,
1418 qreal minF, qreal maxF,
1419 const QString &seriesName,
1420 const QString &distImageFileName);
1421 void uiProminenceDistributionArea(const QVector<QPair<qreal, qreal>> &points,
1422 const qreal min,
1423 const qreal max,
1424 const qreal minF,
1425 const qreal maxF,
1426 const QString &name,
1427 const QString &distImageFileName);
1428 void uiProminenceDistributionBars(const QStringList &categories,
1429 const QVector<qreal> &frequencies,
1430 const qreal min,
1431 const qreal max,
1432 const qreal minF,
1433 const qreal maxF,
1434 const QString &name,
1435 const QString &distImageFileName);
1436
1437private:
1439
1440 Graph *subgraphFromVertexList(const QList<int> &vertexNums,
1441 const QString &name,
1442 const bool &includeCustomAttributes = true);
1443
1445 void vertexFilterReplaySpec(const FilterSpec &spec);
1446
1447 void edgeAdd(const int &v1,
1448 const int &v2,
1449 const qreal &weight,
1450 const int &type,
1451 const QString &label,
1452 const QString &color);
1453
1455 void dijkstra(const int &s,
1456 const int &si,
1457 const bool &computeCentralities = false,
1458 const bool &inverseWeights = false,
1459 const bool &dropIsolates = false);
1460
1461 void minmax(qreal C,
1462 GraphVertex *v,
1463 qreal &max,
1464 qreal &min,
1465 int &maxNode, int &minNode);
1466
1467 void resolveClasses(qreal C,
1468 H_StrToInt &discreteClasses,
1469 int &classes);
1470
1471 void resolveClasses(qreal C,
1472 H_StrToInt &discreteClasses,
1473 int &classes, int name);
1474
1475 void layoutRandomInMemory();
1476
1477 VList m_graph; // List of pointers to the vertices. Each vertex stores all info: links, colors, etc
1478
1479 Parser *file_parser; // Our file loader threaded class.
1480
1481 WebCrawler *web_crawler; // Our web crawler threaded class. This will parse the downloaded HTML.
1482
1483 QQueue<QUrl> *urlQueue; // A queue where the crawler will put urls for the network manager to download
1484
1485 int m_crawler_max_urls; // maximum urls we'll visit (max nodes in the resulted network)
1486 int m_crawler_visited_urls; // A counter of the urls visited.
1487
1488 QList<QString> m_relationsList;
1490
1492
1493 QList<int> triadTypeFreqs; // stores triad type frequencies
1494
1495 QList<int> m_verticesList;
1497
1499
1500 QSet<int> m_verticesSet;
1501
1502 QList<SelectedEdge> m_selectedEdges;
1503 QStack<GraphVisibilitySnapshot> m_visibilityHistory; // filter undo stack
1504
1505 QMultiHash<int, int> m_vertexPairsNotConnected;
1507
1508 QMultiMap<int, L_int> m_cliques;
1509 QHash<int, QSet<int>> neighboursHash;
1510
1511 QList<qreal> m_clusteringLevel;
1512 QMap<int, V_int> m_clustersPerSequence;
1513
1514 QMap<QString, V_int> m_clustersByName;
1516
1519
1520 // WS5 A2: relation-keyed flat-matrix APSP storage, replacing GraphVertex's per-vertex
1521 // QHash<int, QPair<int,qreal>>. Row = source vertex position, column = target vertex
1522 // position (see Graph::vertexIndexByNumber()/vertexAtIndex()), not vertex number.
1523 QHash<int, Matrix> m_apspDist;
1524 QHash<int, Matrix> m_apspSigma;
1525
1531
1537
1539
1541
1569 qreal m_lastKatzAlpha = -1;
1581
1601
1607 bool order;
1618
1620
1622
1637 // Written by slotCancelComputation() (GUI thread, via Qt::DirectConnection) and read by
1638 // progressCanceled() (graphThread, mid-computation) - see WS15's P1 for why a plain bool and a
1639 // queued connection can't deliver this in time.
1640 std::atomic<bool> m_progressCanceled;
1644 QHash<int,int> m_vertexComponentId;
1645
1647
1653
1655};
1656
1657#endif
Definition chart.h:28
void vertexNumberColorSet(const int &v=0, const QString &color="#000000")
Graph::vertexColorSet Changes the color of vertex v1.
Definition graph_vertex_style.cpp:299
qreal maxIRCC
Definition graph.h:1561
QString initEdgeColorZero
Definition graph.h:1648
void signalSelectionChanged(const int &selectedVertices, const int &selectedEdges)
QHash< int, int > m_vertexPairsUnilaterallyConnected
Definition graph.h:1506
qreal denomIC
Definition graph.h:1566
Matrix XSM
Definition graph.h:1518
int factorial(int)
Definition graph_random_networks.cpp:850
int initVertexNumberSize
Definition graph.h:1605
bool calculatedIC
Definition graph.h:1633
int reciprocalEdgesVert
Definition graph.h:1621
void signalRelationChangedToGW(int)
bool writeMatrixWalks(const QString &fn, const int &length=0, const bool &simpler=false, const int &format=ReportFormat::Html)
Writes the walks of given length matrix to a file in HTML. If length = 0, it writes the Total Walks m...
Definition graph_reports.cpp:3454
void canvasSizeSet(const int &width, const int &height)
Sets the size of the canvas.
Definition graph_canvas.cpp:27
void signalEdgeType(const int &v1, const int &v2, const int &type)
QList< SelectedEdge > getSelectedEdges() const
Returns a QList of user-selected edges in pair<int,int>.
Definition graph_selection.cpp:107
int m_totalVertices
Definition graph.h:1604
qreal estimateSpectralRadius(const bool &considerWeights=false, const bool &inverseWeights=false, const bool &dropIsolates=false)
Estimates the adjacency matrix's spectral radius (dominant eigenvalue magnitude).
Definition graph_centrality.cpp:282
qreal denomPRC
Definition graph.h:1579
bool writeMatrix(const QString &fileName, const int &matrix=MATRIX_ADJACENCY, const bool &considerWeights=true, const bool &inverseWeights=false, const bool &dropIsolates=false, const QString &varLocation="Rows", const bool &simpler=false, const int &format=ReportFormat::Html)
Computes and writes the specified matrix of the social network to an HTML report file.
Definition graph_reports.cpp:5489
QStringList graphHasVertexCustomAttributes() const
Returns true if at least one vertex has a 'custom' attribute.
Definition graph_vertex_style.cpp:186
qreal maxPP
Definition graph.h:1580
qreal minIC
Definition graph.h:1566
qreal varianceSDC
Definition graph.h:1543
void progressStatus(const QString &msg)
Emits a status message to be shown in the UI status bar.
Definition graph_ui_facade.cpp:63
void vertexFilterRemoveAt(int stackIndex)
Removes the filter at stackIndex (0 = oldest) and replays the rest.
Definition graph_node_filters.cpp:749
int classesCLC
Definition graph.h:1596
int getProminenceIndexByName(const QString &prominenceIndexName)
Returns the IndexType of the given prominence index name Called from MW::slotEditNodeFind,...
Definition graph_prominence_distribution.cpp:100
int minNodeSBC
Definition graph.h:1588
void canvasSizeSetQuiet(const qreal &width, const qreal &height)
Sets the canvas size without rescaling node positions.
Definition graph_canvas.cpp:70
QString initVertexShape
Definition graph.h:1651
bool isSymmetric()
Returns TRUE if the adjacency matrix of the current relation is symmetric.
Definition graph_state_flags.cpp:114
qreal sumPRP
Definition graph.h:1579
qreal sumDC
Definition graph.h:1559
void vertexCreateAtPosRandomWithLabel(const int &i, const QString &label, const bool &signalMW=false)
Creates a new randomly positioned vertex with specific number and label. All other values are from th...
Definition graph_vertices.cpp:177
qreal nomSPC
Definition graph.h:1563
int m_reserveEdgesPerVertexSize
Definition graph.h:1603
void signalRemoveEdge(const int &v1, const int &v2, const bool &removeReverse)
void moveToThreadFacade(QThread *thread)
Definition graph_ui_facade.cpp:27
friend class DistanceEngine
Definition graph.h:108
int initVertexNumberDistance
Definition graph.h:1606
void prestigePageRank(const bool &dropIsolates=false)
Calculates the PageRank Prestige of each vertex.
Definition graph_prestige.cpp:406
int graphConnectednessFull(const bool updateProgress=false)
VList::const_iterator verticesEnd() const
Definition graph_vertices.cpp:336
int getSelectedVerticesCount() const
Returns count of user-selected vertices.
Definition graph_selection.cpp:68
void writeMatrixAdjacencyTo(QTextStream &os, const bool &saveEdgeWeights=true)
Definition graph_reports.cpp:6210
GraphVertex * vertexAtIndex(int idx)
Returns the vertex at a given index.
Definition graph_vertices.cpp:312
bool m_verticesCacheDropIsolates
Definition graph.h:1626
bool calculatedBPC
Definition graph.h:1631
qreal maxEC
Definition graph.h:1565
void vertexShapeSetDefault(const QString, const QString &iconPath=QString())
Sets the default vertex shape and iconPath.
Definition graph_vertex_style.cpp:93
qreal sumBC
Definition graph.h:1562
qreal sumSCC
Definition graph.h:1560
int minNodeSCC
Definition graph.h:1586
int classesSCC
Definition graph.h:1586
qreal edgeWeightTemp
Definition graph.h:1542
void edgeCustomAttributesSet(const int &v1, const int &v2, const QHash< QString, QString > &attrs)
Sets all custom attributes on edge v1→v2, replacing any previously stored attributes for that edge.
Definition graph_edge_style.cpp:191
int m_graphReciprocityTiesTotal
Definition graph.h:1615
int m_reportsLabelLength
Definition graph.h:1534
QMap< int, int > graphGeodesicDistanceDistribution(const bool &considerWeights=false, const bool &inverseWeights=false)
Returns a histogram of geodesic distances across all ordered vertex pairs.
Definition graph_distance_facade.cpp:95
int classesSSC
Definition graph.h:1590
Matrix CLQM
Definition graph.h:1518
void setName(const QString &graphName)
Sets the name of the current graph.
Definition graph_metadata.cpp:48
qreal layoutForceDirected_FR_moveNodes(const qreal &temperature)
Moves all vertices to their new positions as computed by the Fruchterman-Reingold model.
Definition graph_layouts_force.cpp:1135
int m_graphStronglyConnectedComponents
Definition graph.h:1643
int initVertexLabelSize
Definition graph.h:1605
qreal m_lastBonacichBeta
Definition graph.h:1578
bool graphClusteringHierarchical(Matrix &STR_EQUIV, const QString &varLocation, const int &metric, const int &method, const bool &diagonal=false, const bool &diagram=false, const bool &considerWeights=true, const bool &inverseWeights=false, const bool &dropIsolates=false)
Performs an hierarchical clustering process (Johnson, 1967) on a given NxN distance/dissimilarity mat...
Definition graph_clustering_hierarchical.cpp:36
qreal sumSSC
Definition graph.h:1564
qreal sumCC
Definition graph.h:1560
bool m_graphIsWeighted
Definition graph.h:1641
WebCrawler * web_crawler
Definition graph.h:1481
qreal maxIndexEC
Definition graph.h:1565
bool m_graphIsSymmetric
Definition graph.h:1641
void vertexLabelDistanceInit(const int &distance)
Changes the default distance of vertex labels.
Definition graph_vertex_style.cpp:599
QString relationCurrentName() const
Gets the current relation name.
Definition graph_relations.cpp:215
void setNodeNumberDistance(const int &v, const int &distance)
int minNodeEC
Definition graph.h:1591
int graphDistanceGeodesic(const int &v1, const int &v2, const bool &considerWeights=false, const bool &inverseWeights=true)
Returns the geodesic distance (length of shortest path) from vertex v1 to vertex v2.
Definition graph_distance_facade.cpp:37
MyEdge edgeClicked()
Returns clicked edge.
Definition graph_selection.cpp:206
void layoutForceDirectedKamadaKawai(const int maxIterations=500, const bool considerWeights=false, const bool inverseWeights=false, const bool dropIsolates=false, const QString &initialPositions="current")
Embeds a Force Directed Placement layout according to the Kamada-Kawai model. In this model,...
Definition graph_layouts_force.cpp:393
int maxNodeEC
Definition graph.h:1591
H_StrToInt discretePPs
Definition graph.h:1529
void prominenceDistributionArea(const H_StrToInt &discreteClasses, const QString &name, const QString &distImageFileName)
Computes prominence distribution data and delegates Area chart rendering.
Definition graph_prominence_distribution.cpp:366
int classesEVC
Definition graph.h:1597
QString vertexLabel(const int &v) const
Returns the label of a vertex v1.
Definition graph_vertex_style.cpp:448
void setFileName(const QString &fileName)
Sets the file name of the current graph.
Definition graph_metadata.cpp:69
void slotHandleCrawlerRequestReply()
Gets the reply of a MW network request made by Web Crawler, and emits that reply as is to the Web Cra...
Definition graph_crawler.cpp:223
void signalNetworkManagerRequest(const QUrl &currentUrl, const NetworkRequestType &type)
int vertices(const bool &dropIsolates=false, const bool &countAll=false, const bool &recount=false)
Gets the number of vertices in the graph.
Definition graph_vertices.cpp:653
MyEdge m_clickedEdge
Definition graph.h:1540
void signalRelationAddToMW(const QString &newRelation)
qreal denomSPC
Definition graph.h:1563
Matrix XM
Definition graph.h:1518
void minmax(qreal C, GraphVertex *v, qreal &max, qreal &min, int &maxNode, int &minNode)
Computes minimum and maximum centralities during graphDistancesGeodesic().
Definition graph_centrality.cpp:824
QList< SelectedEdge > m_selectedEdges
Definition graph.h:1502
void writeMatrixCSVTable(QTextStream &outText, Matrix &M, const bool &printInfinity=true, const bool &dropIsolates=false)
Writes the matrix M as a comma-separated table to the specified text stream outText.
Definition graph_reports.cpp:6126
qreal sumPP
Definition graph.h:1580
qreal nomPP
Definition graph.h:1580
void writeMatrixHTMLTable(QTextStream &outText, Matrix &M, const bool &markDiag=true, const bool &plain=false, const bool &printInfinity=true, const bool &dropIsolates=false)
Writes the matrix M as HTML.
Definition graph_reports.cpp:5972
int vertexClicked() const
Returns the number of the clicked vertex.
Definition graph_selection.cpp:152
bool saveToEdgeListSimpleFormat(const QString &fileName)
Saves the active relation to a simple (unweighted) edge list file.
Definition graph_io.cpp:1369
int m_curRelation
Definition graph.h:1538
void setEdgeWeight(const int &v1, const int &v2, const qreal &weight)
bool calculatedGraphReciprocity
Definition graph.h:1635
QThread webcrawlerThread
Definition graph.h:106
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)
int maxNodeDP
Definition graph.h:1584
void setReportsOutputFormat(const int &format)
Sets the output format (HTML or CSV) new reports are written in.
Definition graph_reports_settings.cpp:79
int minNodePP
Definition graph.h:1595
QString graphMetricTypeToString(const int &metricType) const
Helper method, return the human readable name of metric type.
Definition graph_type_strings.cpp:146
bool randomNetLatticeCreate(const int &N, const int &length, const int &dimension, const int &nei, const QString &mode, const bool &circular)
Creates a lattice (mesh/grid) random network.
Definition graph_random_networks.cpp:684
void graphCliqueAdd(const QList< int > &clique)
Called from Graph::graphCliques to add a new clique (list of vertices) Adds clique info to each cliqu...
Definition graph_cliques.cpp:25
bool randomNetRingLatticeCreate(const int &N, const int &degree, const bool updateProgress=false)
Creates a random ring lattice network.
Definition graph_random_networks.cpp:604
bool writeCentralityEigenvector(const QString, const bool &weigths=true, const bool &inverseWeights=false, const bool &dropIsolates=false, const int &format=ReportFormat::Html)
Writes the eigenvector centralities to a file.
Definition graph_reports.cpp:738
void vertexCustomAttributeRemove(const int &v1, const QString &key)
Removes a single custom attribute key from vertex v1. Does nothing if the key does not exist.
Definition graph_vertex_style.cpp:641
qreal m_graphAverageDistance
Definition graph.h:1609
qreal varianceSDP
Definition graph.h:1554
QList< int > m_graphFileFormatExportSupported
Definition graph.h:1491
bool writeCentralityCloseness(const QString, const bool weights, const bool inverseWeights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes the closeness centralities to a file.
Definition graph_reports.cpp:1577
qreal denomPP
Definition graph.h:1580
bool isSaved() const
Returns true if the graph is saved.
Definition graph_metadata.cpp:263
qreal denomEC
Definition graph.h:1565
qreal minSBC
Definition graph.h:1562
int minNodeIC
Definition graph.h:1593
qreal maxIndexIC
Definition graph.h:1566
bool calculatedGraphDensity
Definition graph.h:1636
qreal sumSC
Definition graph.h:1564
bool createMatrixAdjacencyInverse(const QString &method="lu")
Computes the inverse of the current adjacency matrix.
Definition graph_matrix_adjacency.cpp:138
void edgeColorZeroInit(const QString &)
Definition graph_edge_style.cpp:46
void signalEdgeClicked(const MyEdge &edge=MyEdge(), const bool &openMenu=false)
QMap< int, V_str > m_clusterPairNamesPerSeq
Definition graph.h:1515
QString m_reportsDataDir
Definition graph.h:1532
void edgeWeightNumbersVisibilitySet(const bool &toggle)
Changes the visibility of edge weight numbers.
Definition graph_edge_style.cpp:26
void vertexFilterByQuery(const GraphQuery &query)
Shows only vertices whose custom attributes satisfy ALL conditions in query.
Definition graph_query_filters.cpp:31
void signalRelationsClear()
bool edgeColorAllSet(const QString &color, const int &threshold=RAND_MAX)
Changes the color of all enabled edges.
Definition graph_edge_style.cpp:62
int getSelectedVerticesMin() const
Returns min of user-selected vertices.
Definition graph_selection.cpp:77
qreal graphDistanceGeodesicAverageCached() const
Returns the average geodesic distance of the graph, without recalculating it.
Definition graph_distance_facade.cpp:434
int m_vertexClicked
Definition graph.h:1538
void writeScoreTableCSV(QTextStream &outText, const QStringList &dataColumnHeaders, const std::function< QVector< qreal >(GraphVertex *)> &rowValues, const std::function< bool(GraphVertex *)> &isBlanked=nullptr, const std::function< bool(GraphVertex *)> &isSkipped=nullptr)
CSV sibling of writeScoreTableHTML() - same column shape and semantics, comma-delimited,...
Definition graph_reports.cpp:480
qreal minSSC
Definition graph.h:1564
int notConnectedPairsSize() const
Definition graph_distance_cache.cpp:124
void setSymmetricCached(bool v)
Definition graph_distance_cache.cpp:141
void setDiameterCached(int v)
Definition graph_distance_cache.cpp:148
int relations()
Returns the count of relationships in this Graph.
Definition graph_relations.cpp:278
void graphFileLoaded(const int &fileType, const QString &fName=QString(), const QString &netName=QString(), const int &totalNodes=0, const int &totalLinks=0, const int &edgeDirType=0, const qint64 &elapsedTime=0, const QString &message=QString())
Stores loaded file name, graph name, sets edge direction type and signals MW to update the UI.
Definition graph_io.cpp:133
H_StrToInt discreteBPCs
Definition graph.h:1530
void setNodeLabelColor(const int &v, const QString &color)
const QList< int > & graphTriadTypeFreqs() const
Definition graph.h:1296
qreal edgeReverseWeightTemp
Definition graph.h:1542
int verticesWithReciprocalEdges()
Returns the sum of vertices having reciprocal edges.
Definition graph_structure_metrics.cpp:191
bool saveToGraphMLFormat(const QString &fileName, const bool &saveZeroWeightEdges=false, QString networkName="", int maxWidth=0, int maxHeight=0)
Saves the current graph to a GraphML-formatted file.
Definition graph_io.cpp:701
bool saveToPajekFormat(const QString &fileName, QString networkName="", int maxWidth=0, int maxHeight=0)
Save the current graph to a Pajek (.paj) file.
Definition graph_io.cpp:313
int graphStronglyConnectedComponentsCached() const
Definition graph_distance_cache.cpp:147
void relationAddCocitation()
Creates a new symmetric relation by connecting those actors that are cocitated by others....
Definition graph_relations.cpp:387
QString graphMatrixTypeToString(const int &matrixType) const
Helper method, return the human readable name of matrix type.
Definition graph_type_strings.cpp:23
qreal sumEC
Definition graph.h:1565
qreal variancePRP
Definition graph.h:1556
void setNodeLabelSize(const int &v, const int &size)
bool graphReachable(const int &v1, const int &v2)
Returns true if vertices v1 and v2 are reachable.
Definition graph_reachability_walks.cpp:28
int m_graphDiameter
Definition graph.h:1604
QThread file_parserThread
Definition graph.h:105
bool calculatedPRP
Definition graph.h:1633
H_StrToInt discreteEccentricities
Definition graph.h:1528
void graphCliques(QSet< int > R=QSet< int >(), QSet< int > P=QSet< int >(), QSet< int > X=QSet< int >())
Finds all maximal cliques in the graph using the Bron–Kerbosch algorithm with Tomita et al....
Definition graph_cliques.cpp:113
QString getFileName() const
Returns the file name of the current graph, if any.
Definition graph_metadata.cpp:59
QHash< int, int > m_vertexComponentId
Definition graph.h:1644
bool writeReciprocity(const QString fileName, const bool considerWeights=false, const int &format=ReportFormat::Html)
Writes reciprocity report to filename.
Definition graph_reports.cpp:32
int graphMatrixStrToType(const QString &matrix) const
Helper method, return the matrix type of human readable matrix name .
Definition graph_type_strings.cpp:82
void graphLoadedTerminateParserThreads(QString reason)
Graph::graphLoadedTerminateParserThreads.
Definition graph_io.cpp:103
bool m_verticesCacheCountAll
Definition graph.h:1626
int vertexSize(const int &v) const
Returns the size of vertex v.
Definition graph_vertex_style.cpp:78
void setNodeSize(const int &v, const int &size)
qreal denomSCC
Definition graph.h:1560
int m_graphReciprocityTiesNonSymmetric
Definition graph.h:1614
Matrix & matrixCliqueCoMembership()
Definition graph.h:876
void layoutVertexSizeByOutdegree()
Convenience method Changes the size of all nodes to be proportional to their outDegree (Degree Centra...
Definition graph_layouts_basic.cpp:190
int graphWeaklyConnectedComponents()
Counts weakly connected components using BFS.
Definition graph_distance_facade.cpp:473
qreal t_sumIC
Definition graph.h:1563
QMap< int, V_int > m_clustersPerSequence
Definition graph.h:1512
void edgeLabelSet(const int &v1, const int &v2, const QString &label)
Changes the label of edge v1->v2.
Definition graph_edge_style.cpp:162
void resetProgressCanceled()
Resets the cancellation status.
Definition graph_ui_facade.cpp:70
bool writeCliqueCensus(const QString &fileName, const bool considerWeights)
Calls graphCliques() to compute all cliques (maximal connected subgraphs) of the network....
Definition graph_reports.cpp:3906
void compute_angles(const QPointF &Delta, const qreal &dist, qreal &angle1, qreal &angle2, qreal &degrees1, qreal &degrees2)
Graph::compute_angles Computes the two angles of the orthogonal triangle shaped by two points of diff...
Definition graph_layouts_force.cpp:986
QQueue< QUrl > * urlQueue
Definition graph.h:1483
int sign(const qreal &D)
Graph::sign returns the sign of number D as integer (1 or -1).
Definition graph_layouts_force.cpp:959
QSet< int > m_verticesSet
Definition graph.h:1500
double canvasVisibleY(const double &y) const
Checks if y is visible inside the canvas usable area and if not returns an adjusted y-coordinate.
Definition graph_canvas.cpp:109
QList< int > m_verticesIsolatedList
Definition graph.h:1496
bool writePrestigePageRank(const QString, const bool Isolates=false, const int &format=ReportFormat::Html)
Writes the PageRank scores of vertices to a file.
Definition graph_reports.cpp:3259
void graphWalksMatrixCreate(const int &N=0, const int &length=0, const bool &dropIsolates=false, const bool &considerWeights=false, const bool &inverseWeights=false, const bool &symmetrize=false)
Computes either the "Walks of given length" or the "Total Walks" matrix. If length>0,...
Definition graph_matrix_reachability.cpp:101
bool writeCentralityClosenessInfluenceRange(const QString, const bool weights, const bool inverseWeights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes the "improved" closeness centrality indices to a file.
Definition graph_reports.cpp:1818
void uiProminenceDistributionBars(const QStringList &categories, const QVector< qreal > &frequencies, const qreal min, const qreal max, const qreal minF, const qreal maxF, const QString &name, const QString &distImageFileName)
Definition graph_ui_prominence_distribution.cpp:210
int minNodePRP
Definition graph.h:1594
void vertexCreateAtPos(const QPointF &p)
Creates a new vertex in the given position.
Definition graph_vertices.cpp:125
qreal minBPC
Definition graph.h:1573
bool writeClusteringCoefficient(const QString, const bool, const int &format=ReportFormat::Html)
Writes the clustering coefficients to a file.
Definition graph_reports.cpp:3584
qreal meanIC
Definition graph.h:1550
qreal sumPC
Definition graph.h:1579
void relationPrev()
Changes graph to previous relation.
Definition graph_relations.cpp:142
int classesSPC
Definition graph.h:1589
void layoutRadialRandom(const bool &guides=true)
Repositions all nodes on the periphery of different circles with random radius.
Definition graph_layouts_basic.cpp:62
void addGuideHLine(const double &y0)
qreal groupIRCC
Definition graph.h:1561
bool vertexFindByLabel(const QStringList &labelList)
Finds vertices by their label.
Definition graph_vertices.cpp:832
bool vertexExists(const int &v1)
Checks if the given vertex exists in the graph.
Definition graph_vertices.cpp:707
void prominenceDistribution(const int &index, const ChartType &type, const QString &distImageFileName=QString())
Computes the distribution of a centrality index score. The distribution is stored as Qt Series depend...
Definition graph_prominence_distribution.cpp:178
qreal m_lastBonacichAlpha
Definition graph.h:1574
qreal variancePP
Definition graph.h:1555
qreal minSDP
Definition graph.h:1558
int vertexEdgesOutbound(int i)
Returns the number of outbound edges (arcs) from vertex v1.
Definition graph_edges.cpp:586
bool calculatedVerticesList
Definition graph.h:1625
qreal meanIRCC
Definition graph.h:1545
qreal maxIndexPC
Definition graph.h:1563
void layoutRandomInMemory()
Repositions all vertices at random coordinates without emitting any signals.
Definition graph_layouts_basic.cpp:126
void createMatrixDissimilarities(Matrix &INPUT_MATRIX, Matrix &DSM, const int &metric, const QString &varLocation, const bool &diagonal, const bool &considerWeights)
Calls Matrix:distancesMatrix to compute the dissimilarities matrix DSM of the variables (rows,...
Definition graph_similarity_matrices.cpp:32
H_StrToInt discretePRPs
Definition graph.h:1529
void vertexPosSet(const int &v, const int &x, const int &y)
Changes the position of the given vertex.
Definition graph_vertices.cpp:1243
qreal canvasHeight
Definition graph.h:1623
bool symmetricCached() const
Definition graph_distance_cache.cpp:142
qreal sumSEVC
Definition graph.h:1567
void setNodeLabelDistance(const int &v, const int &distance)
void edgeFilterUnilateral(const bool &toggle)
Enables or disables unilateral edges in current relationship.
Definition graph_edge_filters.cpp:216
void setVertexVisibility(const int &number, const bool &toggle)
int maxNodeSSC
Definition graph.h:1590
qreal maxEccentricity
Definition graph.h:1557
qreal minEVC
Definition graph.h:1567
void createMatrixReachability()
Creates the reachability matrix XRM.
Definition graph_matrix_reachability.cpp:24
void signalRelationChangedToMW(const int &relIndex=RAND_MAX)
qreal maxSPC
Definition graph.h:1563
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)
void prominenceDistributionSpline(const H_StrToInt &discreteClasses, const QString &seriesName, const QString &distImageFileName)
Computes prominence distribution data and delegates Spline chart rendering.
Definition graph_prominence_distribution.cpp:332
Matrix invM
Definition graph.h:1517
qreal sumIC
Definition graph.h:1566
qreal varianceIRCC
Definition graph.h:1545
qreal layoutForceDirected_F_rep(const QString model, const qreal &dist, const qreal &optimalDistance)
Computes the repulsive force between two vertices for force-directed layouts.
Definition graph_layouts_force.cpp:918
int getFileFormat() const
Returns the format of the last file opened.
Definition graph_metadata.cpp:80
qreal canvasWidth
Definition graph.h:1623
void resolveClasses(qreal C, H_StrToInt &discreteClasses, int &classes)
Checks if score C is a new prominence class If yes, it stores that number in a QHash<QString,...
Definition graph_centrality.cpp:848
void centralityKatz(const qreal &alpha, const bool &considerWeights=false, const bool &inverseWeights=false, const bool &dropIsolates=false)
Computes Katz Centrality of each vertex, with attenuation factor alpha.
Definition graph_centrality_katz.cpp:60
void edgeAdd(const int &v1, const int &v2, const qreal &weight, const int &type, const QString &label, const QString &color)
Adds a directed arc from v1 to v2 into the internal graph data structures.
Definition graph_edges.cpp:273
qreal meanEC
Definition graph.h:1548
int m_reportsRealPrecision
Definition graph.h:1533
void vertexColorInit(const QString &color)
Graph::vertexColorInit default vertex color initialization.
Definition graph_vertex_style.cpp:275
int minNodeKC
Definition graph.h:1598
qreal t_sumPRP
Definition graph.h:1579
QMultiHash< int, int > m_vertexPairsNotConnected
Definition graph.h:1505
void vertexLabelColorSet(const int &v1, const QString &color)
Changes the label color of vertex v1 or all vertices if v1 = 0.
Definition graph_vertex_style.cpp:509
int maxNodeSDC
Definition graph.h:1585
int graphCliquesContaining(const int &actor, const int &size=0)
Definition graph_cliques.cpp:295
void setEdgeLabel(const int &v1, const int &v2, const QString &label)
void triadType_examine_MAN_label(int, int, int, GraphVertex *, GraphVertex *, GraphVertex *)
Definition graph_triad_census.cpp:136
void setUndirected(const bool &toggle=true, const bool &signalMW=true)
Makes the graph undirected or directed.
Definition graph_state_flags.cpp:240
QSet< int > vertexOutNeighborsSet(const int &v1, const bool includeInEdges=false)
Returns the set of all 1-hop neighbors of vertex v1 in the current relation.
Definition graph_structure_metrics.cpp:91
void incGeodesicsCount()
Definition graph_distance_cache.cpp:159
bool graphMatrixDistanceGeodesicCreate(const bool &considerWeights=false, const bool &inverseWeights=false, const bool &dropIsolates=false)
Creates the matrix DM of geodesic distances between vertices.
Definition graph_matrix_distances.cpp:131
qreal clusteringCoefficientLocal(const int &v1)
Returns the local clustering coefficient (CLUCOF) of vertex v1.
Definition graph_clustering_coefficients.cpp:59
QString initVertexNumberColor
Definition graph.h:1649
qreal minEccentricity
Definition graph.h:1557
int vertexDegreeIn(int)
Returns the inDegree (sum of inbound edge weights) of vertex v1.
Definition graph_structure_metrics.cpp:37
qreal maxPRP
Definition graph.h:1579
qreal groupDP
Definition graph.h:1558
bool writePrestigeProximity(const QString, const bool weights, const bool inverseWeights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes the proximity prestige indices to a file.
Definition graph_reports.cpp:3076
int maxNodeEVC
Definition graph.h:1597
qreal sumSDP
Definition graph.h:1558
void edgeClickedSet(const int &v1, const int &v2, const bool &openMenu=false)
Sets the clicked edge.
Definition graph_selection.cpp:166
qreal varianceBPC
Definition graph.h:1553
void runOnGuiThread(std::function< void()> fn)
Runs fn on the application's main/GUI thread, regardless of the calling thread.
Definition graph_ui_facade.cpp:53
void signalRemoveNode(int)
void vertexFilterBySelection(const QList< int > &selectedVertices)
Saves current visibility state and shows only the selected vertices and the edges between them.
Definition graph_node_filters.cpp:412
int edgesEnabled()
Returns the number of enabled ties in the current relation.
Definition graph_edges.cpp:556
H_StrToInt discreteSDCs
Definition graph.h:1527
H_StrToInt discreteDPs
Definition graph.h:1527
void edgeColorInit(const QString &)
Saves the default edge color Used by random network creation methods.
Definition graph_edge_style.cpp:40
void addGeodesicsCount(int n)
Definition graph_distance_cache.cpp:160
qreal minPRP
Definition graph.h:1579
NodeConnectivityResult graphNodeConnectivity(int source, int target, bool respectDirection)
Local vertex connectivity kappa(source, target): the minimum number of nodes, other than source and t...
Definition graph_connectivity.cpp:253
qreal m_graphReciprocityDyad
Definition graph.h:1612
qreal groupCC
Definition graph.h:1560
qreal m_lastKatzAlpha
Definition graph.h:1569
int vertexAttributesImport(const QStringList &headers, const QVector< QStringList > &rows, int idColumn, bool matchByLabel)
Imports custom attributes from a parsed table into existing vertices.
Definition graph_vertex_style.cpp:668
void writeMatrixAdjacencyPlot(const QString fileName, const bool &simpler=false)
Writes a visual representation of the adjacency matrix of the graph to the specified file.
Definition graph_reports.cpp:6417
bool writeCentralityInformation(const QString, const bool weigths, const bool inverseWeights, const int &format=ReportFormat::Html)
Writes the information centralities to file.
Definition graph_reports.cpp:524
int csRecDepth
Definition graph.h:1646
qreal sumEVC
Definition graph.h:1567
int maxNodeKC
Definition graph.h:1598
int minNodeBPC
Definition graph.h:1599
QString m_fileName
Definition graph.h:1648
void webCrawlTerminateThreads(QString reason)
called from Graph, when closing network, to terminate all crawler processes Also called indirectly wh...
Definition graph_crawler.cpp:28
void centralityClosenessIR(const bool considerWeights=false, const bool inverseWeights=false, const bool dropIsolates=false)
Computes an "improved" closeness centrality index, IRCC, which can be used on disconnected graphs....
Definition graph_centrality.cpp:697
qreal apspDistance(const int &v1, const int &v2)
Returns the already-computed geodesic distance from vertex v1 to vertex v2, for the current relation,...
Definition graph_distance_facade.cpp:51
QList< bool > m_relationsDirected
Definition graph.h:1489
int minNodeEVC
Definition graph.h:1597
qreal minSPC
Definition graph.h:1563
void uiProminenceDistributionArea(const QVector< QPair< qreal, qreal > > &points, const qreal min, const qreal max, const qreal minF, const qreal maxF, const QString &name, const QString &distImageFileName)
Definition graph_ui_prominence_distribution.cpp:116
void createMatrixAdjacency(const bool dropIsolates=false, const bool considerWeights=true, const bool inverseWeights=false, const bool symmetrize=false)
Creates an adjacency matrix AM where AM(i,j)=1 if i is connected to j and AM(i,j)=0 if i not connecte...
Definition graph_matrix_adjacency.cpp:27
bool edgeSymmetric(const int &v1, const int &v2)
Returns TRUE if edge(v1, v2) is symmetric, i.e. (v1,v2) == (v2,v1).
Definition graph_edges.cpp:514
qreal edgeWeight(const int &v1, const int &v2) const
Returns the weight of the edge v1->v2.
Definition graph_edges.cpp:636
void setNodeShape(const int &v, const QString &shape, const QString &iconPath=QString())
qreal maxIndexCC
Definition graph.h:1560
qreal nomIRCC
Definition graph.h:1561
void vertexFilterReplaySpec(const FilterSpec &spec)
Re-applies one filter from its stored replay parameters.
Definition graph_node_filters.cpp:782
QHash< int, QSet< int > > neighboursHash
Definition graph.h:1509
int minNodeEccentricity
Definition graph.h:1592
void vertexLabelColorInit(QString color)
Graph::vertexLabelColorInit Changes the default vertex label color.
Definition graph_vertex_style.cpp:550
bool calculatedAdjacencyMatrix
Definition graph.h:1627
int vertexIndexByNumber(int v) const
Returns the index of a vertex by its number.
Definition graph_vertices.cpp:302
int getSelectedVerticesMax() const
Returns max of user-selected vertices.
Definition graph_selection.cpp:92
qreal clusteringCoefficient()
Computes local clustering coefficients and returns the network average Clustering Coefficient.
Definition graph_clustering_coefficients.cpp:241
qreal nomPRC
Definition graph.h:1579
bool isModified() const
Returns true of graph is modified (edges/vertices added/removed).
Definition graph_metadata.cpp:233
H_StrToInt discreteBCs
Definition graph.h:1527
void vertexLabelSet(const int &v, const QString &label)
Changes the label of a vertex v1.
Definition graph_vertex_style.cpp:432
ChartType m_reportsChartType
Definition graph.h:1535
QThread * getThread() const
Definition graph_ui_facade.cpp:22
void addToDistanceSum(qreal delta)
Definition graph_distance_cache.cpp:158
ReportFormat m_reportsOutputFormat
Definition graph.h:1536
QString htmlEscaped(QString str) const
Helper method, returns a nice qstring where all html special chars are encoded.
Definition graph_type_strings.cpp:262
int classesSDC
Definition graph.h:1585
void edgeFilterByQuery(const GraphQuery &query)
Shows only edges whose custom attributes satisfy ALL conditions in query.
Definition graph_query_filters.cpp:142
int initVertexSize
Definition graph.h:1604
const QHash< int, int > & vertexComponentId() const
Definition graph.h:845
QList< QString > m_relationsList
Definition graph.h:1488
int getSelectedEdgesCount() const
Returns the count of user-selected edges.
Definition graph_selection.cpp:116
void edgeTypeSet(const int &v1, const int &v2, const qreal &w, const int &dirType=EdgeType::Directed)
Changes the direction type of an existing edge.
Definition graph_edges.cpp:648
void vertexRemoveDummyNode(int)
Deletes a dummy node.
Definition graph_vertices.cpp:282
bool progressCanceled() const
Returns true if the user has requested cancellation via the progress dialog.
Definition graph_ui_facade.cpp:78
qreal m_graphDensity
Definition graph.h:1610
qreal sumBPC
Definition graph.h:1573
int m_graphReciprocityPairsReciprocated
Definition graph.h:1616
bool randomNetSmallWorldCreate(const int &N, const int &degree, const double &beta, const QString &mode)
Creates a Watts–Strogatz small-world random network.
Definition graph_random_networks.cpp:371
bool vertexFindByIndexScore(const int &index, const QStringList &thresholds, const bool &considerWeights, const bool &inverseWeights=false, const bool &dropIsolates=false)
Finds vertices by their index score.
Definition graph_vertices.cpp:880
Graph * subgraphFromVertexList(const QList< int > &vertexNums, const QString &name, const bool &includeCustomAttributes=true)
Core helper: builds an independent Graph copy from an explicit list of vertex numbers.
Definition graph_subgraphs.cpp:41
qreal meanSCC
Definition graph.h:1544
int walksBetween(int v1, int v2, int length)
Calculates and returns the number of walks of a given length between v1 and v2.
Definition graph_reachability_walks.cpp:45
qreal edgeExists(const int &v1, const int &v2, const bool &checkReciprocal=false)
Checks if there is an edge from v1 to v2 and returns the weight, if the edge exists.
Definition graph_edges.cpp:451
QList< int > m_verticesList
Definition graph.h:1495
qreal nomSBC
Definition graph.h:1562
QString initVertexLabelColor
Definition graph.h:1649
void webSpider()
A loop, that takes urls awaiting in front of the urlQueue, and signals to the MW to make the network ...
Definition graph_crawler.cpp:178
int maxNodeSCC
Definition graph.h:1586
void resetDistanceCentralityCacheFlags()
Definition graph_distance_cache.cpp:132
qreal meanSBC
Definition graph.h:1546
QList< int > graphGeodesicShortestPath(const int &v1, const int &v2, const bool &considerWeights=false, const bool &inverseWeights=false)
Reconstructs one shortest path from vertex v1 to vertex v2.
Definition graph_distance_facade.cpp:232
void addRelationSymmetricStrongTies(const bool &allRelations=false)
Creates a new symmetric relation by keeping only strong-ties (mutual links) in the current relation....
Definition graph_relations.cpp:303
QString vertexShapeIconPath(const int &v)
Returns the IconPath of vertex v1.
Definition graph_vertex_style.cpp:153
int classesEccentricity
Definition graph.h:1592
int graphWeaklyConnectedComponentsCached() const
Definition graph_distance_cache.cpp:146
QList< int > getSelectedVertices() const
Returns a QList of user-selected vertices.
Definition graph_selection.cpp:59
void signalGraphModified(const bool &undirected, const int &vertices, const int &edges, const qreal &density, const bool &notSaved=true)
QPointF vertexPos(const int &v1) const
Returns the position of the given vertex.
Definition graph_vertices.cpp:1256
qreal varianceSBC
Definition graph.h:1546
int classesEC
Definition graph.h:1591
void statusMessage(const QString &message)
qreal minKC
Definition graph.h:1568
void createMatrixSimilarityPearson(Matrix &AM, Matrix &PCC, const QString &varLocation="Rows", const bool &diagonal=false)
The Pearson product-moment correlation coefficient (PPMCC, PCC or Pearson's r) is a measure of the li...
Definition graph_similarity_matrices.cpp:99
void createMatrixSimilarityMatching(Matrix &AM, Matrix &SEM, const int &measure=METRIC_SIMPLE_MATCHING, const QString &varLocation="Rows", const bool &diagonal=false, const bool &considerWeights=true)
Calls Matrix:similarityMatrix to compute the similarity matrix SCM of the variables (rows,...
Definition graph_similarity_matrices.cpp:56
void setModStatus(const int &graphNewStatus, const bool &signalMW=true)
Sets the graph modification status.
Definition graph_metadata.cpp:113
Matrix & matrixAdjacencyInverse()
Definition graph.h:871
qreal meanKC
Definition graph.h:1552
QString m_graphName
Definition graph.h:1648
int maxNodeSBC
Definition graph.h:1588
qreal graphDensity()
Gets the graph density (if computed) or computes it again.
Definition graph_structure_metrics.cpp:145
void vertexShapeSet(const int &v, const QString &shape, const QString &iconPath=QString())
Changes the shape and iconPath of vertex v1, or all vertices if v1=-1.
Definition graph_vertex_style.cpp:105
Matrix XRM
Definition graph.h:1518
int initVertexLabelDistance
Definition graph.h:1606
void vertexSizeInit(const int)
Sets the initial vertex size.
Definition graph_vertex_style.cpp:30
void edgeLabelsVisibilitySet(const bool &toggle)
Toggles the visibility of edge labels.
Definition graph_edge_style.cpp:301
int maxNodeSPC
Definition graph.h:1589
bool order
Definition graph.h:1607
void notifyEdgesVisibilityBatch(const QList< EdgeVisibilityChange > &changes)
Plain relay to signalSetEdgesVisibilityBatch, for GraphVertex to notify the UI layer of many edges' v...
Definition graph_edges.cpp:363
QList< int > m_verticesSelected
Definition graph.h:1498
qreal denomEVC
Definition graph.h:1567
int classesKC
Definition graph.h:1598
Matrix & matrixWalks()
Definition graph.h:874
bool initEdgeWeightNumbers
Definition graph.h:1608
void setNodePos(const int &, const qreal &, const qreal &)
void edgeWeightSet(const int &v1, const int &v2, const qreal &w, const bool &undirected=false)
Changes the weight of the edge from vertex v1 to v2 (and optionally of the reverse edge).
Definition graph_edges.cpp:615
void setConnectedCached(bool v)
Definition graph_distance_cache.cpp:144
int apspShortestPaths(const int &v1, const int &v2)
Returns the already-computed number of shortest paths from vertex v1 to vertex v2,...
Definition graph_distance_facade.cpp:68
qreal maxSBC
Definition graph.h:1562
bool edgeCreate(const int &v1, const int &v2, const qreal &weight, const QString &color, const int &type=0, const bool &drawArrows=true, const bool &bezier=false, const QString &label=QString(), const bool &signalMW=true, const QHash< QString, QString > &edgeCustomAttributes=QHash< QString, QString >())
Checks if edge (v1,v2) already exists, then creates it and signals the UI to draw it.
Definition graph_edges.cpp:73
qreal maxIndexBC
Definition graph.h:1562
bool calculatedGraphSymmetry
Definition graph.h:1635
bool randomNetErdosCreate(const int &N, const QString &model, const int &m, const qreal &p, const QString &mode, const bool &diag)
Creates an Erdős–Rényi random network.
Definition graph_random_networks.cpp:46
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())
void notConnectedPairsClear()
Definition graph_distance_cache.cpp:114
H_StrToInt discreteEVCs
Definition graph.h:1529
int m_totalEdges
Definition graph.h:1604
int graphConnectivity(bool respectDirection)
Global vertex connectivity kappa(G): the minimum, over every non-adjacent pair of vertices,...
Definition graph_connectivity.cpp:316
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)
bool writeCentralityBetweenness(const QString, const bool weights, const bool inverseWeights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes Betweenness centralities to file.
Definition graph_reports.cpp:2007
void uiProminenceDistributionSpline(const QVector< QPair< qreal, qreal > > &points, qreal min, qreal max, qreal minF, qreal maxF, const QString &seriesName, const QString &distImageFileName)
Definition graph_ui_prominence_distribution.cpp:34
void vertexFilterByEgoNetwork(const int v1, const int depth=1)
Saves current visibility state and shows only the ego network of vertex v1 at the given depth.
Definition graph_node_filters.cpp:265
qreal varianceSPC
Definition graph.h:1549
void writeClusteringHierarchicalResultsToStream(QTextStream &outText, const int N, const bool &dendrogram=false)
Writes Hierarchical Clustering results to given output stream Before running this method,...
Definition graph_reports.cpp:4429
QMap< QString, V_int > m_clustersByName
Definition graph.h:1514
qreal maxKC
Definition graph.h:1568
void prestigeDegree(const bool &considerWeights, const bool &dropIsolates=false)
Computes the Degree Prestige (in-degree) of each vertex - diagonal included Also the mean value and t...
Definition graph_prestige.cpp:45
qreal varianceEC
Definition graph.h:1548
bool writeCentralityDegree(const QString, const bool weights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes the Degree Centrality to a file.
Definition graph_reports.cpp:1337
bool isFileFormatExportSupported(const int &fileFormat) const
Returns true if the fileFormat is supported for saving.
Definition graph_metadata.cpp:96
qreal nomEC
Definition graph.h:1565
void vertexLabelSizeSet(const int &v, const int &labelSize)
Changes the label size of vertex v1 or all vertices if v1=0.
Definition graph_vertex_style.cpp:468
qreal minEC
Definition graph.h:1565
QString htmlHead
Definition graph.h:1652
~Graph()
Destroys the Graph object.
Definition graph.cpp:284
qreal minSCC
Definition graph.h:1560
void signalLayoutFinished()
int minNodeIRCC
Definition graph.h:1587
qreal sumIRCC
Definition graph.h:1561
void vertexLabelDistanceSet(const int &v, const int &newDistance)
Changes the distance.of vertex v label from the vertex.
Definition graph_vertex_style.cpp:560
int graphDiameter(const bool considerWeights, const bool inverseWeights)
Returns the diameter of the graph, aka the largest geodesic distance between any two vertices.
Definition graph_distance_facade.cpp:359
bool saveToUCINETDLFormat(const QString &fileName)
Saves the current graph to a UCINET DL file (FULLMATRIX format).
Definition graph_io.cpp:1205
H_StrToInt discreteCCs
Definition graph.h:1527
void dijkstra(const int &s, const int &si, const bool &computeCentralities=false, const bool &inverseWeights=false, const bool &dropIsolates=false)
qreal numberOfTriples(int v1)
Definition graph_reachability_walks.cpp:61
int vertexEdgesInbound(int i)
Returns the number of inbound edges (arcs) to vertex v1.
Definition graph_edges.cpp:597
QList< FilterSpec > filterSpecList() const
Returns the FilterSpec list in application order (oldest first).
Definition graph_node_filters.cpp:829
qreal denomSBC
Definition graph.h:1562
void setNodeNumberColor(const int &v, const QString &color)
qreal maxEVC
Definition graph.h:1567
void prestigeProximity(const bool considerWeights=false, const bool inverseWeights=false, const bool dropIsolates=false)
Computes Proximity Prestige of each vertex Also the mean value and the variance of it....
Definition graph_prestige.cpp:248
Graph * subgraphExtractFromSelection(const QString &name, const bool &includeCustomAttributes=true)
Extracts currently selected nodes and their inter-edges into an independent Graph copy.
Definition graph_subgraphs.cpp:194
Matrix AM
Definition graph.h:1517
std::atomic< bool > m_progressCanceled
Definition graph.h:1640
void signalWebCrawlParse(QNetworkReply *reply)
int m_graphModStatus
Definition graph.h:1602
void randomizeThings()
Adds a little universal randomness :).
Definition graph_random_networks.cpp:22
bool calculatedGraphWeighted
Definition graph.h:1636
int relationCurrent()
Gets the current relation number.
Definition graph_relations.cpp:205
qreal minIRCC
Definition graph.h:1561
void setDirected(const bool &toggle=true, const bool &signalMW=true)
Toggles the graph directed or undirected.
Definition graph_state_flags.cpp:215
int edgeAttributesImport(const QStringList &headers, const QVector< QStringList > &rows, int srcColumn, int tgtColumn)
Imports custom attributes from a parsed table into existing edges.
Definition graph_edge_style.cpp:227
QStringList graphHasEdgeCustomAttributes() const
Returns a list of all unique custom attribute keys present across all enabled edges in the current gr...
Definition graph_edge_style.cpp:279
QHash< QString, QString > vertexCustomAttributes(const int &v1) const
Retrieves the vertex at the position specified by the index v1 from the vpos map and calls its custom...
Definition graph_vertex_style.cpp:215
Matrix & matrixReachability()
Definition graph.h:873
qreal maxSSC
Definition graph.h:1564
qreal maxSDP
Definition graph.h:1558
bool isUndirected()
Returns true if graph is undirected.
Definition graph_state_flags.cpp:316
qreal groupEVC
Definition graph.h:1567
void graphDistancesGeodesic(const bool &computeCentralities=false, const bool &considerWeights=false, const bool &inverseWeights=true, const bool &dropIsolates=false)
Computes the geodesic distances between all vertices: In the process, it also computes many other cen...
Definition graph_distance_cache.cpp:96
void setSymmetric()
Transforms the graph to symmetric (all edges reciprocal).
Definition graph_state_flags.cpp:170
int classesSDP
Definition graph.h:1584
void layoutEgoRadial(const int egoVertex)
Ego-centered radial layout.
Definition graph_layouts_basic.cpp:673
qreal varianceSCC
Definition graph.h:1544
qreal graphGeodesicsCountCached() const
Returns the number of geodesics (shortest paths) accumulated by DistanceEngine, without recalculating...
Definition graph_distance_facade.cpp:708
int m_fieldWidth
Definition graph.h:1538
Matrix SIGMA
Definition graph.h:1517
int maxNodePP
Definition graph.h:1595
void vertexLabelSizeInit(int newSize)
Graph::vertexLabelSizeInit Changes the default size of vertex labels.
Definition graph_vertex_style.cpp:458
qreal varianceIC
Definition graph.h:1550
QMultiMap< int, L_int > m_cliques
Definition graph.h:1508
qreal edgeExistsVirtual(const int &v1, const int &v2)
Checks if there is an edge from v1 to v2, even weight = 0 and returns the weight, if the edge exists ...
Definition graph_edges.cpp:482
int m_crawler_max_urls
Definition graph.h:1485
void layoutForceDirectedFruchtermanReingold(const int maxIterations)
Embeds a Force Directed Placement layout according to the Fruchterman-Reingold model....
Definition graph_layouts_force.cpp:239
qreal sumSBC
Definition graph.h:1562
bool calculatedDP
Definition graph.h:1632
void setReportsDataDir(const QString &reportsDir)
Sets the directory where reports are saved This is used when exporting prominence distribution images...
Definition graph_reports_settings.cpp:26
H_Int vpos
Definition graph.h:1405
int verticesWithInboundEdges()
Returns the sum of vertices having edgesInbound.
Definition graph_structure_metrics.cpp:182
void signalSetEdgesVisibilityBatch(const QList< EdgeVisibilityChange > &changes)
Matrix WM
Definition graph.h:1517
bool isEmpty() const
Returns true if the current graph has no vertices at all.
Definition graph_vertices.cpp:696
qreal graphDistanceGeodesicAverage(const bool considerWeights, const bool inverseWeights, const bool dropIsolates)
Returns the average distance of the graph.
Definition graph_distance_facade.cpp:374
void setReportsChartType(const int &type)
Sets the chart type in reports.
Definition graph_reports_settings.cpp:54
qreal varianceEVC
Definition graph.h:1551
qreal canvasMinDimension() const
Gets the min dimensions of the canvas.
Definition graph_canvas.cpp:89
int classesBPC
Definition graph.h:1599
bool writeMatrixSimilarityPearson(const QString fileName, const bool considerWeights, const QString &matrix="adjacency", const QString &varLocation="rows", const bool &diagonal=false, const int &format=ReportFormat::Html)
Calls Graph::createMatrixSimilarityPearson() and writes Pearson Correlation Coefficients to given fil...
Definition graph_reports.cpp:4989
bool m_graphIsDirected
Definition graph.h:1641
bool calculatedDistances
Definition graph.h:1627
int verticesWithOutboundEdges()
Returns the sum of vertices having edgesOutbound.
Definition graph_structure_metrics.cpp:173
QList< int > verticesList()
Returns a list of all vertices numbers inside the graph.
Definition graph_vertices.cpp:377
void setReportsLabelLength(const int &length)
Sets the length of labels in reports.
Definition graph_reports_settings.cpp:45
void setWeighted(const bool &toggle=true)
Sets the graph to be weighted ( valued edges ).
Definition graph_state_flags.cpp:105
void vertexFilterByCentrality(const float threshold, const bool overThreshold, const IndexType centralityIndex)
Filters vertices by their score on the given centrality or prestige index.
Definition graph_node_filters.cpp:52
int maxNodeBPC
Definition graph.h:1599
void notConnectedPairsInsert(int from, int to)
Definition graph_distance_cache.cpp:119
void vertexLabelDistanceAllSet(const int &newDistance)
Changes the distance of all vertex labels from their vertices.
Definition graph_vertex_style.cpp:572
void graphClickedEmptySpace(const QPointF &p)
Resets the clicked edge and node.
Definition graph_selection.cpp:26
qreal maxSDC
Definition graph.h:1559
bool writeClusteringHierarchical(const QString &fileName, const QString &varLocation, const QString &matrix="Adjacency", const QString &metric="Manhattan", const QString &method="Complete", const bool &diagonal=false, const bool &dendrogram=false, const bool &considerWeights=true, const bool &inverseWeights=false, const bool &dropIsolates=false)
Performs Hierarchical Cluster Analysis (HCA) and writes the results to an HTML report file.
Definition graph_reports.cpp:4239
double canvasRandomX() const
Returns a random x-coordinate adjusted to be visible inside the canvas usable area.
Definition graph_canvas.cpp:118
void loadFile(const QString fileName, const QString codecName, const int format, const QString delimiter=QString(), const int sm_two_mode=1, const bool sm_has_labels=false)
Loads a graph from a given file.
Definition graph_io.cpp:43
bool isLoaded() const
Returns true if a graph has been loaded from a file.
Definition graph_metadata.cpp:248
void vertexNumberDistanceSet(const int &v, const int &newDistance)
Changes the distance.of vertex v number from the vertex.
Definition graph_vertex_style.cpp:389
QHash< QString, QString > edgeCustomAttributes(const int &v1, const int &v2) const
Returns the custom attributes stored on edge v1→v2. Returns an empty hash if no attributes have been ...
Definition graph_edge_style.cpp:204
QString initEdgeColor
Definition graph.h:1648
qreal m_graphGeodesicsCount
Definition graph.h:1609
QList< int > triadTypeFreqs
Definition graph.h:1493
bool isWeighted()
Returns true if the current relation has at least one edge with weight other than 0 or 1 (i....
Definition graph_state_flags.cpp:33
qreal groupSBC
Definition graph.h:1562
QHash< int, Matrix > m_apspDist
Definition graph.h:1523
void edgeOutboundStatusSet(const int &source, const int &target, const bool &toggle=false)
Toggles the status of outbound edge source -> target at source vertex.
Definition graph_edges.cpp:328
bool writeCentralityKatz(const QString, const qreal &alpha, const bool &weigths=false, const bool &inverseWeights=false, const bool &dropIsolates=false, const int &format=ReportFormat::Html)
Writes the Katz Centrality report to a file, then displays it.
Definition graph_reports.cpp:953
int graphStronglyConnectedComponents()
Counts strongly connected components using Tarjan's algorithm.
Definition graph_distance_facade.cpp:568
void vertexRemove(const int &v1)
Removes the vertex v1 from the graph First, it removes all edges to doomed from other vertices Then i...
Definition graph_vertices.cpp:200
int graphMetricStrToType(const QString &metricStr) const
Helper method, return the identifier of a metric.
Definition graph_type_strings.cpp:186
bool saveToEdgeListWeightedFormat(const QString &fileName)
Saves the active relation to a weighted edge list file.
Definition graph_io.cpp:1302
bool randomNetRegularCreate(const int &N, const int &degree, const QString &mode, const bool &diag)
Creates a pseudo-random d-regular network.
Definition graph_random_networks.cpp:461
Matrix invAM
Definition graph.h:1517
QString edgeLabel(const int &v1, const int &v2) const
Returns the label of edge v1->v2.
Definition graph_edge_style.cpp:179
bool writeMatrixSimilarityMatching(const QString fileName, const QString &measure="Simple", const QString &matrix="adjacency", const QString &varLocation="rows", const bool &diagonal=false, const bool &considerWeights=true, const int &format=ReportFormat::Html)
Writes similarity matrix based on a matching measure to given html file.
Definition graph_reports.cpp:4798
void signalNodeClickedInfo(const int &number=0, const QPointF &p=QPointF(), const QString &label=QString(), const int &inDegree=0, const int &outDegree=0)
bool saveToAdjacencyFormat(const QString &fileName, const bool &saveEdgeWeights=true)
Saves the active graph to an adjacency-formatted file.
Definition graph_io.cpp:536
qreal graphReciprocity()
Gets the arc reciprocity of the graph.
Definition graph_structure_metrics.cpp:203
VList m_graph
Definition graph.h:1477
void centralityEigenvector(const bool &considerWeights=false, const bool &inverseWeights=false, const bool &dropIsolates=false)
Computes Eigenvector centrality.
Definition graph_centrality.cpp:355
Graph * subgraphExtract(const QString &name, const bool &includeCustomAttributes=true)
Extracts currently visible (non-filtered) nodes and their inter-edges into an independent Graph copy.
Definition graph_subgraphs.cpp:164
qreal meanSPC
Definition graph.h:1549
void vertexCreateAtPosRandom(const bool &signalMW=false)
Creates a new randomly positioned vertex with default values.
Definition graph_vertices.cpp:152
qreal m_graphReciprocityArc
Definition graph.h:1612
QSet< int > vertexReciprocalNeighborsSet(const int &v1)
Returns the set of all vertices reciprocally connected to vertex v1 in the current relation.
Definition graph_structure_metrics.cpp:70
void setNodeLabel(const int &v, const QString &label)
void vertexFilterByAttribute(const FilterCondition &cond)
Shows only vertices whose custom attribute satisfies cond; all other vertices are hidden.
Definition graph_node_filters.cpp:540
void layoutVertexSizeByIndegree()
Convenience method Changes the size of all nodes to be proportional to their InDegree (Degree Prestig...
Definition graph_layouts_basic.cpp:201
qreal m_graphSumDistance
Definition graph.h:1611
void vertexCreate(const int &number, const int &size, const QString &color, const QString &numColor, const int &numSize, const QString &label, const QString &labelColor, const int &labelSize, const QPointF &p, const QString &shape, const QString &iconPath=QString(), const bool &signalMW=false, const QHash< QString, QString > &customAttributes=QHash< QString, QString >())
Creates a new vertex.
Definition graph_vertices.cpp:42
bool writeEccentricity(const QString fileName, const bool considerWeights=false, const bool inverseWeights=false, const bool dropIsolates=false, const int &format=ReportFormat::Html)
Writes the Eccentricity report to file.
Definition graph_reports.cpp:226
Matrix & matrixTotalWalks()
Definition graph.h:875
void setEdgeColor(const int &v1, const int &v2, const QString &color)
void prominenceDistributionBars(const H_StrToInt &discreteClasses, const QString &name, const QString &distImageFileName)
Computes the prominence distribution and delegates Bar chart rendering.
Definition graph_prominence_distribution.cpp:402
qreal d_factor
Definition graph.h:1582
qreal layoutForceDirected_F_att(const QString model, const qreal &dist, const qreal &optimalDistance)
Computes the attractive (spring) force between two adjacent vertices.
Definition graph_layouts_force.cpp:880
QString vertexShape(const int &v)
Returns the shape of this vertex.
Definition graph_vertex_style.cpp:143
H_StrToInt discreteECs
Definition graph.h:1528
int inboundEdgesVert
Definition graph.h:1621
bool writeCentralityPower(const QString, const bool weigths, const bool inverseWeights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes Power Centralities to a file.
Definition graph_reports.cpp:2614
bool isAnyRelationWeighted()
Returns true if any relation in the graph has at least one edge with weight other than 0 or 1.
Definition graph_state_flags.cpp:84
void signalDatasetDescription(QString)
qreal maxIndexSC
Definition graph.h:1564
QSet< int > verticesSet()
Returns a QSet of all vertices numbers inside the graph.
Definition graph_vertices.cpp:400
void edgeFilterByAttribute(const FilterCondition &cond)
Hides all edges whose custom attribute does not satisfy cond.
Definition graph_edge_filters.cpp:242
void setAverageDistanceCached(qreal v)
Definition graph_distance_cache.cpp:161
void vertexCustomAttributesSet(const int &v1, const QHash< QString, QString > &customAttributes)
Sets custom attributes for a specified vertex.
Definition graph_vertex_style.cpp:614
qreal computeOptimalDistance(const int &V)
Computes the optimal inter-vertex distance for force-directed layouts.
Definition graph_layouts_force.cpp:853
int minNodeSDC
Definition graph.h:1585
QString initVertexIconPath
Definition graph.h:1651
H_StrToInt discreteSCs
Definition graph.h:1527
void relationSet(int relNum=RAND_MAX, const bool &updateUI=true)
Changes the current relation, and optionally emits signals to MW/GW (default: true).
Definition graph_relations.cpp:32
qreal meanSSC
Definition graph.h:1547
bool isCentralityIndexComputed(const IndexType index) const
Returns true if the given centrality/prestige index has been computed.
Definition graph_centrality.cpp:896
int m_graphReciprocityTiesReciprocated
Definition graph.h:1613
qreal graphSumDistanceCached() const
Returns the sum of all finite geodesic distances accumulated by DistanceEngine, without recalculating...
Definition graph_distance_facade.cpp:699
void vertexColorSet(const int &v, const QString &color)
Changes the color of vertex v1.
Definition graph_vertex_style.cpp:228
qreal minCLC
Definition graph.h:1582
void showZeroWeightEdgesSet(const bool &toggle)
Definition graph_edge_style.cpp:52
VList::const_iterator verticesBegin() const
iterator helpers
Definition graph_vertices.cpp:334
void applyVisibilitySnapshot(const GraphVisibilitySnapshot &snap)
Restores vertex and edge visibility to the state recorded in snap.
Definition graph_node_filters.cpp:676
H_StrToInt discreteCLCs
Definition graph.h:1530
void setReportsRealNumberPrecision(const int &precision)
Sets the precision (number of fraction digits) the app will use when writing real numbers in reports.
Definition graph_reports_settings.cpp:36
void vertexNumberColorInit(const QString &color)
Changes the initial color of the vertex numbers.
Definition graph_vertex_style.cpp:288
void centralityBonacich(const qreal &alpha, const qreal &beta, const bool &considerWeights=false, const bool &inverseWeights=false, const bool &dropIsolates=false)
Computes Bonacich Power Centrality of each vertex, with parameters alpha and beta.
Definition graph_centrality_bonacich.cpp:55
void edgeCreateWebCrawler(const int &source, const int &target)
Called from WebCrawler when it finds an new link Calls edgeCreate() method with initEdgeColor.
Definition graph_edges.cpp:228
void vertexClickedSet(const int &v, const QPointF &p)
Sets the clicked vertex.
Definition graph_selection.cpp:129
void slotCancelComputation()
Slot called by MainWindow when the user clicks Cancel in the progress dialog.
Definition graph_ui_facade.cpp:86
void edgeFilterByWeight(const qreal, const bool)
Hides edges whose weight does not satisfy the threshold condition.
Definition graph_edge_filters.cpp:32
qreal nomEVC
Definition graph.h:1567
void writeScoreTableHTML(QTextStream &outText, const QStringList &dataColumnHeaders, const std::function< QVector< qreal >(GraphVertex *)> &rowValues, const std::function< bool(GraphVertex *)> &isBlanked=nullptr, const std::function< bool(GraphVertex *)> &isSkipped=nullptr)
Renders a per-node score table as a sortable HTML.
Definition graph_reports.cpp:400
QStack< GraphVisibilitySnapshot > m_visibilityHistory
Definition graph.h:1503
qreal sumKC
Definition graph.h:1568
qreal denomIRCC
Definition graph.h:1561
double canvasRandomY() const
Returns a random y-coordinate adjusted to be visible inside the canvas usable area.
Definition graph_canvas.cpp:128
QList< int > verticesListIsolated()
Returns a list of all isolated vertices inside the graph.
Definition graph_vertices.cpp:343
void saveToFile(const QString &fileName, const int &fileType, const bool &saveEdgeWeights=true, const bool &saveZeroWeightEdges=false)
Saves the current graph to a file.
Definition graph_io.cpp:218
QString graphClusteringMethodTypeToString(const int &methodType) const
Helper method, return the human readable name of clustering method type.
Definition graph_type_strings.cpp:214
qreal meanBPC
Definition graph.h:1553
qreal layoutForceDirected_FR_temperature(const int iteration) const
Reduces the temperature as the layout approaches a better configuration.
Definition graph_layouts_force.cpp:793
int m_crawler_visited_urls
Definition graph.h:1486
int classesIC
Definition graph.h:1593
ModStatus
Definition graph.h:425
@ EdgeMetadata
Definition graph.h:430
@ SavedUnchanged
Definition graph.h:427
@ MinorOptions
Definition graph.h:428
@ VertexPositions
Definition graph.h:431
@ VertexEdgeCount
Definition graph.h:435
@ VertexCount
Definition graph.h:433
@ NewNet
Definition graph.h:426
@ EdgeCount
Definition graph.h:434
@ VertexMetadata
Definition graph.h:429
@ MajorChanges
Definition graph.h:432
bool calculatedIRCC
Definition graph.h:1633
bool m_graphHasVertexCustomIcons
Definition graph.h:1619
void vertexNumberSizeInit(const int &size)
Changes the initial size of vertex numbers.
Definition graph_vertex_style.cpp:332
bool writeCentralityBonacich(const QString, const qreal &alpha, const qreal &beta, const bool &weigths=false, const bool &inverseWeights=false, const bool &dropIsolates=false, const int &format=ReportFormat::Html)
Definition graph_reports.cpp:1132
bool calculatedKC
Definition graph.h:1630
bool graphHasVertexCustomIcons() const
Returns true if at least one vertex has a 'custom' shape (therefore a custom icon).
Definition graph_vertex_style.cpp:162
void layoutRandom()
Repositions all nodes on random positions Emits setNodePos(i, x,y) to tell GW that the node item shou...
Definition graph_layouts_basic.cpp:29
bool writeMatrixDissimilarities(const QString fileName, const QString &metricStr, const QString &varLocation, const bool &diagonal, const bool &considerWeights, const int &format=ReportFormat::Html)
Writes dissimilarity matrix based on a metric/measure to given html file.
Definition graph_reports.cpp:4646
H_StrToInt discreteICs
Definition graph.h:1529
qreal meanSDC
Definition graph.h:1543
void addGuideCircle(const double &, const double &, const double &)
QString initVertexColor
Definition graph.h:1649
QDateTime actualDateTime
Definition graph.h:1654
bool calculatedCentralities
Definition graph.h:1627
void signalGraphSavedStatus(const int &status)
qreal maxCLC
Definition graph.h:1582
qreal graphDistanceEuclidean(const QPointF &a, const QPointF &b)
Computes the euclideian distance between QPointF a and b.
Definition graph_layouts_force.cpp:1016
void edgeFilterReset()
Re-enables all edges in the current relation.
Definition graph_edge_filters.cpp:176
void signalGraphDirectedChanged(const bool &directed)
bool m_graphIsConnected
Definition graph.h:1641
bool calculatedTriad
Definition graph.h:1634
Matrix & matrixDistances()
Definition graph.h:872
qreal groupPP
Definition graph.h:1580
Clustering
Definition graph.h:439
@ Single_Linkage
Definition graph.h:440
@ Complete_Linkage
Definition graph.h:441
@ Average_Linkage
Definition graph.h:442
bool graphTriadCensus()
Conducts a triad census and updates QList::triadTypeFreqs, which is the list carrying all triad type ...
Definition graph_triad_census.cpp:25
NodeConnectivityStatus
Definition graph.h:851
@ Invalid
Definition graph.h:855
@ Adjacent
Definition graph.h:853
@ Ok
Definition graph.h:852
void edgeRemove(const int &v1, const int &v2, const bool &removeReverse=false)
Removes the directed arc v1->v2 or, if the graph is undirected, the edge v1 <->v2.
Definition graph_edges.cpp:379
QString edgeColor(const int &v1, const int &v2)
Returns the color of the directed edge v1->v2.
Definition graph_edge_style.cpp:148
bool writeGeodesicDistribution(const QString &fileName, const bool &considerWeights=false, const bool &inverseWeights=false)
Writes a geodesic distance distribution report to an HTML file.
Definition graph_distance_facade.cpp:143
int classesSBC
Definition graph.h:1588
void graphDichotomization(const qreal threshold)
Creates a new binary relation in a valued network using edge dichotomization according to the thresho...
Definition graph_structure_metrics.cpp:351
Matrix DM
Definition graph.h:1517
bool isConnected()
Checks if the graph is connected, in the sense of a topological space, i.e., there is a path from any...
Definition graph_distance_facade.cpp:410
void relationCurrentRename(const QString &newName)
Overload. Renames current relation to newName, without emitting any signal to MW.
Definition graph_relations.cpp:268
QList< int > vertexReciprocalNeighborsList(const int &v1)
Returns a list of all vertices reciprocally connected to vertex v1 in the current relation.
Definition graph_structure_metrics.cpp:54
qreal groupSPC
Definition graph.h:1563
int maxNodeEccentricity
Definition graph.h:1592
int m_fileFormat
Definition graph.h:1538
bool randomNetScaleFreeCreate(const int &N, const int &power, const int &m0, const int &m, const qreal &alpha, const QString &mode)
Creates a Barabási–Albert scale-free random network.
Definition graph_random_networks.cpp:198
qreal varianceSSC
Definition graph.h:1547
qreal maxSCC
Definition graph.h:1560
void edgeRemoveSelected(SelectedEdge &selectedEdge, const bool &removeReverse)
Removes a SelectedEdge.
Definition graph_edges.cpp:416
Graph(const int &reserveVerticesSize=5000, const int &reserveEdgesPerVertexSize=500)
Constructs a Graph.
Definition graph.cpp:66
void startWebCrawler(const QUrl &startUrl, const QStringList &urlPatternsIncluded, const QStringList &urlPatternsExcluded, const QStringList &linkClasses, const int &maxNodes, const int &maxLinksPerPage, const bool &intLinks, const bool &childLinks, const bool &parentLinks, const bool &selfLinks, const bool &extLinksIncluded, const bool &extLinksCrawl, const bool &socialLinks, const bool &delayedRequests)
Creates a new WebCrawler, that will parse the downloaded HTML code of each webpage we download....
Definition graph_crawler.cpp:65
int outboundEdgesVert
Definition graph.h:1621
QColor vertexColor(const int &v) const
Graph::vertexColor.
Definition graph_vertex_style.cpp:265
bool isConnectedCached() const
Returns true if the graph is connected, without recalculating it.
Definition graph_distance_facade.cpp:451
int graphClusteringMethodStrToType(const QString &method) const
Helper method, return clustering method type from the human readable name of it.
Definition graph_type_strings.cpp:239
qreal groupEC
Definition graph.h:1565
int minNodeSSC
Definition graph.h:1590
void vertexSizeSet(const int &v, const int &newsize)
Changes the size of a vertex v or all vertices if v=0.
Definition graph_vertex_style.cpp:43
int classesPRP
Definition graph.h:1594
int minNodeDP
Definition graph.h:1584
bool vertexFindByNumber(const QStringList &numList)
Finds vertices in strList by their number.
Definition graph_vertices.cpp:777
qreal varianceKC
Definition graph.h:1552
void signalNodesFound(const QList< int > foundList)
bool initEdgeLabels
Definition graph.h:1608
int getGeodesicsCount()
Returns the number of geodesics (shortest-paths) in the graph.
Definition graph_distance_facade.cpp:395
int classesPP
Definition graph.h:1595
qreal sumSPC
Definition graph.h:1563
H_StrToInt discreteKCs
Definition graph.h:1530
QString htmlHeadLight
Definition graph.h:1652
void centralityDegree(const bool &considerWeights=true, const bool &dropIsolates=false)
Calculates the degree (outDegree) centrality of each vertex - diagonal included.
Definition graph_centrality.cpp:520
void notifyEdgeVisibilityChanged(const int &relation, const int &source, const int &target, const bool &toggle, const bool &preserveReverseEdge=false, const int &edgeWeight=1, const int &reverseEdgeWeight=1)
Plain relay to signalSetEdgeVisibility, for GraphVertex (a QtCore-only value class,...
Definition graph_edges.cpp:351
void layoutForceDirectedSpringEmbedder(const int maxIterations)
Embeds a Force Directed Placement layout according to the initial Spring Embedder model proposed by E...
Definition graph_layouts_force.cpp:45
qreal meanSDP
Definition graph.h:1554
void vertexFilterRestoreAll()
Restores vertex and edge visibility from the top snapshot on the history stack.
Definition graph_node_filters.cpp:655
bool vertexIsolated(const int &v1) const
Checks if vertex is isolated.
Definition graph_vertices.cpp:1220
bool calculatedVertices
Definition graph.h:1625
qreal layoutForceDirected_Eades_moveNodes(const qreal &c4)
Moves all vertices to their new positions as computed by the Eades Spring Embedder model.
Definition graph_layouts_force.cpp:1059
Matrix & matrixAdjacency()
Definition graph.h:870
H_StrToInt discreteIRCCs
Definition graph.h:1528
bool calculatedPP
Definition graph.h:1632
bool saveToDotFormat(const QString &fileName)
Saves the active graph (current relation) to a GraphViz DOT file.
Definition graph_io.cpp:582
void setNodeColor(const int &v, const QString &color)
int vertexDegreeOut(int)
Returns the outDegree (sum of outbound edge weights) of vertex v1.
Definition graph_structure_metrics.cpp:25
void verticesCreateSubgraph(QList< int > vList, const int &type=SUBGRAPH_CLIQUE, const int &center=0)
Creates a subgraph (clique, star, cycle, line) with vertices in vList Iff vList is empty,...
Definition graph_vertices.cpp:424
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)
int graphDiameterCached() const
Returns the number of geodesics (shortest paths) in the graph, without recalculating it.
Definition graph_distance_facade.cpp:442
bool hasCalculatedTriadCensus() const
Definition graph.h:1297
bool calculatedVerticesSet
Definition graph.h:1625
void relationsClear()
Clears relationships in this Graph.
Definition graph_relations.cpp:286
qreal meanPP
Definition graph.h:1555
bool writePrestigeDegree(const QString, const bool weights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes the Degree Prestige of each node to a file.
Definition graph_reports.cpp:2839
void vertexNumberDistanceInit(const int &distance)
Changes the initial distance of vertex numbers.
Definition graph_vertex_style.cpp:379
int minNodeCLC
Definition graph.h:1583
int vertexNumberMax()
Returns the number of the last vertex in the graph.
Definition graph_vertices.cpp:613
qreal meanPRP
Definition graph.h:1556
qreal nomIC
Definition graph.h:1566
double canvasMaxRadius() const
Gets the max radius of the canvas.
Definition graph_canvas.cpp:80
H_StrToInt discretePCs
Definition graph.h:1529
double canvasVisibleX(const double &x) const
Checks if x is visible inside the canvas usable area and if not returns an adjusted x-coordinate.
Definition graph_canvas.cpp:99
int m_graphReciprocityPairsTotal
Definition graph.h:1617
bool calculatedEVC
Definition graph.h:1629
void resetDistanceAggregates()
Definition graph_distance_cache.cpp:150
void graphMatrixShortestPathsCreate(const bool &considerWeights=false, const bool &inverseWeights=true, const bool &dropIsolates=false)
Creates the matrix SIGMA of shortest paths (geodesics) between vertices Each SIGMA(i,...
Definition graph_matrix_distances.cpp:28
bool writeTriadCensus(const QString, const bool, const int &format=ReportFormat::Html)
Definition graph_reports.cpp:3745
void edgeInboundStatusSet(const int &target, const int &source, const bool &toggle=false)
Toggles the status of inbound edge target <- source at target vertex.
Definition graph_edges.cpp:341
void edgeRemoveSelectedAll()
Removes all selected edges.
Definition graph_edges.cpp:426
void vertexLabelsVisibilitySet(bool toggle)
qreal maxBPC
Definition graph.h:1573
QString htmlEnd
Definition graph.h:1652
qreal maxIC
Definition graph.h:1566
void signalRelationRenamedToMW(const QString &newRelName)
bool writeCentralityStress(const QString, const bool weigths, const bool inverseWeights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes the Stress centralities to a file.
Definition graph_reports.cpp:2241
int maxNodePRP
Definition graph.h:1594
bool visibilityHistoryEmpty() const
Returns true if the visibility history stack is empty.
Definition graph_node_filters.cpp:851
void relationNext()
Changes graph to next relation.
Definition graph_relations.cpp:157
int vertexIndexIfExists(const int &v1)
Returns the internal position of the given vertex in m_graph, if it exists.
Definition graph_vertices.cpp:720
int maxNodeIC
Definition graph.h:1593
int maxNodeIRCC
Definition graph.h:1587
qreal meanEVC
Definition graph.h:1551
void relationAdd(const QString &relName, const bool &changeRelation=false)
Adds a new relation to the graph.
Definition graph_relations.cpp:178
int m_graphWeaklyConnectedComponents
Definition graph.h:1642
int classesIRCC
Definition graph.h:1587
void setFileFormat(const int &fileFormat)
Definition graph_metadata.cpp:85
void writeDataSetToFile(const QString dir, const QString)
Writes a "famous" dataset to the given file Datasets are hardcoded! They are exported in the given fi...
Definition graph_reports.cpp:5160
bool calculatedEdges
Definition graph.h:1624
bool initShowZeroWeightEdges
Definition graph.h:1650
bool calculatedDC
Definition graph.h:1632
int maxNodeCLC
Definition graph.h:1583
void vertexNumberSizeSet(const int &v, const int &newsize)
Changes the size of vertex v number.
Definition graph_vertex_style.cpp:342
void layoutCircular(const double &x0, const double &y0, const double &newRadius, const bool &guides=false)
Repositions all nodes on the periphery of a circle with given radius.
Definition graph_layouts_basic.cpp:144
qreal groupSC
Definition graph.h:1564
qreal sumSDC
Definition graph.h:1559
QList< qreal > m_clusteringLevel
Definition graph.h:1511
void setSelectionChanged(const QList< int > selectedVertices, const QList< SelectedEdge > selectedEdges)
Sets the user-selected vertices and edges.
Definition graph_selection.cpp:43
bool calculatedIsolates
Definition graph.h:1628
int minNodeSPC
Definition graph.h:1589
qreal minSDC
Definition graph.h:1559
bool writeCentralityEccentricity(const QString, const bool weigths, const bool inverseWeights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes the Eccentricity centralities (aka Harary Graph Centrality) to a file.
Definition graph_reports.cpp:2433
int vertexNumberMin()
Returns the number of the first vertex in the graph.
Definition graph_vertices.cpp:626
void clear(const QString &reason="")
Clears all vertices.
Definition graph.cpp:295
void centralityInformation(const bool considerWeights=false, const bool inverseWeights=false)
Computes the Information centrality of each vertex - diagonal included Note that there is no known ge...
Definition graph_centrality.cpp:53
qreal nomSCC
Definition graph.h:1560
void vertexIsolatedAllToggle(const bool &toggle)
Toggles the status of all isolated vertices (those without links).
Definition graph_vertices.cpp:1191
QHash< int, Matrix > m_apspSigma
Definition graph.h:1524
void layoutByProminenceIndex(int prominenceIndex, int layoutType, const bool &considerWeights=false, const bool &inverseWeights=false, const bool &dropIsolates=false)
Applies a layout according to each actor's prominence index score. The layout type can be radial (0),...
Definition graph_layouts_basic.cpp:220
GraphVertex * vertexPtr(const int v)
Definition graph_vertices.cpp:1261
qreal sumDP
Definition graph.h:1558
void edgeColorSet(const int &v1, const int &v2, const QString &color)
Changes the color of edge v1->v2.
Definition graph_edge_style.cpp:126
bool writeMatrixAdjacency(const QString fileName, const bool &markDiag=true, const int &format=ReportFormat::Html)
Definition graph_reports.cpp:6239
void setNodeNumberSize(const int &v, const int &size)
void vertexCustomAttributeSet(const int &v1, const QString &key, const QString &value)
Sets a single custom attribute key/value on vertex v1, leaving all other attributes untouched.
Definition graph_vertex_style.cpp:627
qreal averageCLC
Definition graph.h:1582
QString getName() const
Returns the name of the current graph.
Definition graph_metadata.cpp:27
int graphCliquesOfSize(const int &size)
Graph::graphCliquesOfSize Returns the number of maximal cliques of a given size.
Definition graph_cliques.cpp:320
qreal groupDC
Definition graph.h:1559
bool isDirected()
Returns true if graph is directed.
Definition graph_state_flags.cpp:305
qreal minPP
Definition graph.h:1580
qreal varianceCLC
Definition graph.h:1582
Parser * file_parser
Definition graph.h:1479
Plain QtCore value class (not a QObject, WS3 M2) representing a vertex and its adjacency....
Definition graphvertex.h:55
General-purpose dense matrix (adjacency, distance, similarity, sociomatrix, etc.),...
Definition matrix.h:71
Lightweight value type representing a directed or undirected edge.
Definition global.h:238
Defines a class for network file loading and parsing.
Definition parser.h:72
The WebCrawler class Parses HTML code it receives, locates urls inside it and puts them into a url qu...
Definition webcrawler.h:34
Defines the FilterCondition struct shared by all attribute-based filters.
Replay descriptor stored alongside each GraphVisibilitySnapshot.
Global definitions, constants, enumerations, and utility types for SocNetV.
NetworkRequestType
Identifies the purpose of an outgoing network request.
Definition global.h:164
IndexType
Centrality / prestige index identifiers.
Definition global.h:118
static const int SUBGRAPH_CLIQUE
Definition global.h:185
static const int MATRIX_ADJACENCY
Definition global.h:194
ReportFormat
Output format for analysis reports: a full HTML document (default), or a lean, table-only CSV file (n...
Definition global.h:154
@ Html
Definition global.h:155
@ Directed
Definition global.h:108
ChartType
Chart style for prominence distribution visualizations.
Definition global.h:141
QPair< int, int > SelectedEdge
Identifies a selected edge by its two endpoint vertex numbers.
Definition global.h:231
#define SOCNETV_USE_NAMESPACE
Definition global.h:28
QHash< int, int > H_Int
Definition graph.h:84
QList< QString > V_str
Definition graph.h:92
QList< int > L_int
Definition graph.h:90
QPair< int, pair_f_b > pair_i_fb
Definition graph.h:87
QHash< QString, bool > H_StrToBool
Definition graph.h:89
QHash< qreal, int > H_f_i
Definition graph.h:85
QList< GraphVertex * > VList
Definition graph.h:82
QMultiHash< int, pair_i_fb > H_edges
Definition graph.h:88
QList< int > V_int
Definition graph.h:91
QPair< qreal, bool > pair_f_b
Definition graph.h:86
QHash< QString, int > H_StrToInt
Definition graph.h:83
Defines GraphQuery — a multi-condition AND filter applied as one chip.
Declares the GraphVertex class for representing and managing vertices in the network graph structure.
Declares the Matrix class for handling adjacency and sociomatrix data structures in network analysis.
static const int METRIC_SIMPLE_MATCHING
Definition matrix.h:39
Declares the Parser class for reading and interpreting various network data formats,...
Describes a single attribute-based filter condition.
Definition filter_condition.h:24
Records how to re-apply one filter operation from scratch.
Definition filter_spec.h:36
Definition graph.h:452
QHash< int, bool > nodeVisible
Definition graph.h:453
bool active
Definition graph.h:455
QHash< QPair< int, int >, bool > arcVisible
Definition graph.h:454
FilterSpec spec
Definition graph.h:456
Definition graph.h:859
int value
Definition graph.h:861
NodeConnectivityStatus status
Definition graph.h:860
A compound AND-logic filter applied in one operation (one snapshot, one chip).
Definition graph_query.h:28
Declares the WebCrawler class for extracting and processing network data from web pages and online re...