Code Documentation 3.8
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 <QAtomicInteger>
21#include <QList>
22#include <QQueue>
23#include <QHash>
24#include <QSet>
25#include <QMultiHash>
26#include <QMultiMap>
27#include <QTextStream>
28#include <QThread>
29#include <QStack>
30#include <QVector>
31#include <QLoggingCategory>
32#include <atomic>
33#include <functional>
34
35
36#include "global.h"
40#include "graphvertex.h"
41#include "matrix.h"
42#include "parser.h"
43#include "webcrawler.h"
44
45// WS14: one logging category per src/graph/<domain>/ slice directory (centrality/, clustering/,
46// distances/, layouts/, storage/, etc.), declared here since graph.h is already included by every
47// slice .cpp, defined once in graph.cpp. Coarser than one-per-file (avoids ~60 near-empty categories
48// for small files) but finer than one blanket category (keeps independent toggling per domain via
49// QLoggingCategory::setFilterRules). lcGraph covers graph.cpp itself (the facade's own small file,
50// distinct from the core/ slice). lcMatrix (src/matrix.cpp, unrelated file) is deliberately not
51// reused here to avoid confusion with lcGraphMatrices (src/graph/matrices/).
52Q_DECLARE_LOGGING_CATEGORY(lcGraph)
53Q_DECLARE_LOGGING_CATEGORY(lcGraphCore)
54Q_DECLARE_LOGGING_CATEGORY(lcStorage)
55Q_DECLARE_LOGGING_CATEGORY(lcCentrality)
56Q_DECLARE_LOGGING_CATEGORY(lcClustering)
57Q_DECLARE_LOGGING_CATEGORY(lcDistances)
58Q_DECLARE_LOGGING_CATEGORY(lcProminence)
59Q_DECLARE_LOGGING_CATEGORY(lcReachability)
60Q_DECLARE_LOGGING_CATEGORY(lcSimilarity)
61Q_DECLARE_LOGGING_CATEGORY(lcLayouts)
62Q_DECLARE_LOGGING_CATEGORY(lcGenerators)
63Q_DECLARE_LOGGING_CATEGORY(lcGraphMatrices)
64Q_DECLARE_LOGGING_CATEGORY(lcCohesion)
65Q_DECLARE_LOGGING_CATEGORY(lcReporting)
66Q_DECLARE_LOGGING_CATEGORY(lcFilters)
67Q_DECLARE_LOGGING_CATEGORY(lcRelations)
68Q_DECLARE_LOGGING_CATEGORY(lcGraphCrawler)
69Q_DECLARE_LOGGING_CATEGORY(lcGraphUI)
70Q_DECLARE_LOGGING_CATEGORY(lcGraphIO)
71
72class QDateTime;
73class QPointF;
74class QNetworkReply;
75class QUrl;
76class QAbstractSeries;
77class QAbstractAxis;
78
79using namespace std;
80
82class Chart;
83
84typedef QList<GraphVertex *> VList;
85typedef QHash<QString, int> H_StrToInt;
86typedef QHash<int, int> H_Int;
87typedef QHash<qreal, int> H_f_i;
88typedef QPair<qreal, bool> pair_f_b;
89typedef QPair<int, pair_f_b> pair_i_fb;
90typedef QMultiHash<int, pair_i_fb> H_edges;
91typedef QHash<QString, bool> H_StrToBool;
92typedef QList<int> L_int;
93typedef QList<int> V_int;
94typedef QList<QString> V_str;
95
104class Graph : public QObject
105{
106 Q_OBJECT
109
110 friend class DistanceEngine;
111
112public slots:
113 // ============================================================================
114 // LEGACY/INTERNAL (UI / IO WIRING)
115 // ----------------------------------------------------------------------------
116 // NOTE (WS2/F0):
117 // Slots are part of Graph's coordinator role (signals/threads/UI wiring).
118 // Engines/services should not depend on these directly.
119 // ============================================================================
120
121 int relationCurrent();
122
123 QString relationCurrentName() const;
124
125 void relationCurrentRename(const QString &newName);
126 void relationCurrentRename(const QString &newName, const bool &signalMW);
127
129 void vertexCreate(const int &number,
130 const int &size,
131 const QString &color,
132 const QString &numColor,
133 const int &numSize,
134 const QString &label,
135 const QString &labelColor,
136 const int &labelSize,
137 const QPointF &p,
138 const QString &shape,
139 const QString &iconPath = QString(),
140 const bool &signalMW = false,
141 const QHash<QString, QString> &customAttributes = QHash<QString, QString>());
142
143 void graphFileLoaded(const int &fileType,
144 const QString &fName = QString(),
145 const QString &netName = QString(),
146 const int &totalNodes = 0,
147 const int &totalLinks = 0,
148 const int &edgeDirType = 0,
149 const qint64 &elapsedTime = 0,
150 const QString &message = QString());
151
152 void vertexRemoveDummyNode(int);
153
154 void graphLoadedTerminateParserThreads(QString reason);
155
156 void setSelectionChanged(const QList<int> selectedVertices,
157 const QList<SelectedEdge> selectedEdges);
158
159 void graphClickedEmptySpace(const QPointF &p);
160
162 bool edgeCreate(const int &v1, const int &v2, const qreal &weight,
163 const QString &color,
164 const int &type = 0,
165 const bool &drawArrows = true, const bool &bezier = false,
166 const QString &label = QString(),
167 const bool &signalMW = true,
168 const QHash<QString,QString> &edgeCustomAttributes =
169 QHash<QString,QString>());
170
171 void edgeCreateWebCrawler(const int &source, const int &target);
172
173 // helper vertexCreate functions
174 void vertexCreateAtPos(const QPointF &p);
175
176 void vertexCreateAtPosRandom(const bool &signalMW = false);
177
178 void vertexCreateAtPosRandomWithLabel(const int &i,
179 const QString &label,
180 const bool &signalMW = false);
181
183
184 void relationSet(int relNum = RAND_MAX, const bool &updateUI = true);
185
186 void relationNext();
187
188 void relationPrev();
189
190 void canvasSizeSet(const int &width, const int &height);
191 void canvasSizeSetQuiet(const qreal &width, const qreal &height);
192
193 double canvasMaxRadius() const;
194
195 qreal canvasMinDimension() const;
196
197 double canvasVisibleX(const double &x) const;
198
199 double canvasVisibleY(const double &y) const;
200
201 double canvasRandomX() const;
202
203 double canvasRandomY() const;
204
205 void vertexIsolatedAllToggle(const bool &toggle);
206
207 void vertexClickedSet(const int &v, const QPointF &p);
208
209 void edgeClickedSet(const int &v1, const int &v2, const bool &openMenu = false);
210
211 void vertexFilterByCentrality(const float threshold,
212 const bool overThreshold,
213 const IndexType centralityIndex);
214
215 void vertexFilterByEgoNetwork(const int v1, const int depth = 1);
216 void vertexFilterBySelection(const QList<int> &selectedVertices);
218 void edgeFilterByAttribute(const FilterCondition &cond);
220 void vertexFilterRemoveAt(int stackIndex);
221 QList<FilterSpec> filterSpecList() const;
222 bool visibilityHistoryEmpty() const;
223
224 void vertexFilterByQuery(const GraphQuery &query);
225 void edgeFilterByQuery(const GraphQuery &query);
226
227 void edgeFilterByWeight(const qreal, const bool);
228 void edgeFilterReset();
229
230 void edgeFilterUnilateral(const bool &toggle);
231
232 Graph *subgraphExtract(const QString &name,
233 const bool &includeCustomAttributes = true);
234
235 Graph *subgraphExtractFromSelection(const QString &name,
236 const bool &includeCustomAttributes = true);
237
238 void startWebCrawler(
239 const QUrl &startUrl,
240 const QStringList &urlPatternsIncluded,
241 const QStringList &urlPatternsExcluded,
242 const QStringList &linkClasses,
243 const int &maxNodes,
244 const int &maxLinksPerPage,
245 const bool &intLinks,
246 const bool &childLinks,
247 const bool &parentLinks,
248 const bool &selfLinks,
249 const bool &extLinksIncluded,
250 const bool &extLinksCrawl,
251 const bool &socialLinks,
252 const bool &delayedRequests);
253
255 void webSpider();
256
258
259 QString htmlEscaped(QString str) const;
260
261signals:
262
263 void signalWebCrawlParse(QNetworkReply *reply);
264
265 // ============================================================================
266 // LEGACY/INTERNAL (UI SIGNAL SURFACE)
267 // ----------------------------------------------------------------------------
268 // NOTE (WS2/F0): Signals are a UI orchestration mechanism. Engines/services
269 // must not emit/call UI-facing behavior directly.
270 // ============================================================================
271
273
274 void signalNetworkManagerRequest(const QUrl &currentUrl, const NetworkRequestType &type);
275
276 void signalGraphSavedStatus(const int &status);
277
278 void signalGraphModified(const bool &undirected,
279 const int &vertices,
280 const int &edges,
281 const qreal &density,
282 const bool &notSaved = true);
283
284 void signalGraphLoaded(const int &fileType,
285 const QString &fileName = QString(),
286 const QString &netName = QString(),
287 const int &totalNodes = 0,
288 const int &totalLinks = 0,
289 const qreal &density = 0,
290 const qint64 &elapsedTime = 0,
291 const QString &message = QString());
292
293 void statusMessage(const QString &message);
294
296
297 void signalNodeClickedInfo(const int &number = 0,
298 const QPointF &p = QPointF(),
299 const QString &label = QString(),
300 const int &inDegree = 0,
301 const int &outDegree = 0);
302
303 void signalEdgeClicked(const MyEdge &edge = MyEdge(), const bool &openMenu = false);
304
305 void signalRelationAddToMW(const QString &newRelation);
306
308
309 void signalRelationRenamedToMW(const QString &newRelName);
310
312
313 void signalRelationChangedToMW(const int &relIndex = RAND_MAX);
314
315 void signalGraphDirectedChanged(const bool &directed);
316
317 void signalSelectionChanged(const int &selectedVertices,
318 const int &selectedEdges);
319
320 void signalPromininenceDistributionChartUpdate(QAbstractSeries *series,
321 QAbstractAxis *axisX = Q_NULLPTR,
322 const qreal &min = 0,
323 const qreal &max = 0,
324 QAbstractAxis *axisY = Q_NULLPTR,
325 const qreal &minF = 0,
326 const qreal &maxF = 0);
327
329 void signalDrawNode(const QPointF &p,
330 const int &num,
331 const int &size,
332 const QString &nodeShape,
333 const QString &nodeIconPath,
334 const QString &nodeColor,
335 const QString &numberColor, const int &numSize,
336 const int &numDistance,
337 const QString &label,
338 const QString &labelColor, const int &labelSize,
339 const int &labelDistance);
340
341 // signal to GW to erase a node
343
344 // signal GW to draw an edge
345 void signalDrawEdge(const int &v1,
346 const int &v2,
347 const qreal &weight,
348 const QString &label = "",
349 const QString &color = "black",
350 const int &type = 0,
351 const bool &drawArrows = true,
352 const bool &bezier = false,
353 const bool &weightNumbers = false);
354
355 // signal to GW
356 void signalRemoveEdge(const int &v1, const int &v2, const bool &removeReverse);
357
358 void signalSetEdgeVisibility(const int &relation,
359 const int &source,
360 const int &target,
361 const bool &toggle,
362 const bool &preserveReverseEdge = false,
363 const int &edgeWeight = 1,
364 const int &reverseEdgeWeight = 1); // The last two are used only if we need to draw the edge
365
366 // Bulk counterpart of signalSetEdgeVisibility (WS3 M2): a whole-graph operation like a
367 // relation switch crosses to the GUI thread as one queued dispatch instead of one per edge.
368 void signalSetEdgesVisibilityBatch(const QList<EdgeVisibilityChange> &changes);
369
370 void setVertexVisibility(const int &number, const bool &toggle);
371
372 void setNodePos(const int &, const qreal &, const qreal &);
373
375
376 void signalNodesFound(const QList<int> foundList);
377
378 void setNodeSize(const int &v, const int &size);
379
380 void setNodeShape(const int &v, const QString &shape, const QString &iconPath = QString());
381
382 void setNodeColor(const int &v, const QString &color);
383
384 void setNodeLabel(const int &v, const QString &label);
385
386 void setNodeNumberColor(const int &v, const QString &color);
387
388 void setNodeNumberSize(const int &v, const int &size);
389
390 void setNodeNumberDistance(const int &v, const int &distance);
391
392 void setNodeLabelSize(const int &v, const int &size);
393
394 void setNodeLabelColor(const int &v, const QString &color);
395
396 void setNodeLabelDistance(const int &v, const int &distance);
397
398 void setEdgeWeight(const int &v1, const int &v2, const qreal &weight);
399 void signalEdgeType(const int &v1,
400 const int &v2,
401 const int &type);
402 void setEdgeColor(const int &v1,
403 const int &v2,
404 const QString &color);
405 void setEdgeLabel(const int &v1,
406 const int &v2,
407 const QString &label);
408 void addGuideCircle(const double &, const double &, const double &);
409 void addGuideHLine(const double &y0);
410
411public:
412 // ============================================================================
413 // GRAPH FACADE CONTRACT (WS2 / F0)
414 // ----------------------------------------------------------------------------
415 // This section defines the *supported* API surface that UI and CLI code may
416 // call going forward.
417 //
418 // Rules:
419 // - New UI features MUST use only the "FACADE API (SUPPORTED)" surface.
420 // - Engines/services MUST NOT call UI-oriented slots/signals.
421 // - Anything explicitly marked LEGACY/INTERNAL is not allowed for new code,
422 // even if it remains public for historical reasons.
423 //
424 // ============================================================================
425
439
440 // Linkage methods for graphClusteringHierarchical() - how the distance from a newly
441 // merged cluster to each remaining cluster is derived from the two prior distances.
443 {
444 // Single-link/"minimum"/"connectedness": distance to the nearest member of the
445 // merged cluster, i.e. min(dist to old cluster A, dist to old cluster B).
447 // Complete-link/"maximum"/"diameter": distance to the farthest member of the
448 // merged cluster, i.e. max(dist to old cluster A, dist to old cluster B).
450 // Average-link, WPGMA (Weighted Pair Group Method with Arithmetic mean - the
451 // "weighted" here refers to the algorithm's own historical name, not to weighting
452 // by cluster size): unweighted mean of the two prior cluster distances, (dA+dB)/2.
453 // Matches true UPGMA only when the two merging clusters happen to be equal-sized.
455 // Average-link, UPGMA (Unweighted Pair Group Method with Arithmetic mean - despite
456 // the name, this is the one that size-weights): mean of the two prior cluster
457 // distances weighted by each old cluster's member count, equivalent to averaging
458 // every raw pairwise distance between the two merging clusters.
460 };
461
462 // --------------------------------------------------------------------------
463 // FACADE API (SUPPORTED): Visibility snapshot for non-destructive filtering.
464 // Used by the filter system to save/restore vertex and edge visibility state.
465 // Stored as a stack to support future undo/redo.
466 // --------------------------------------------------------------------------
468 {
469 QHash<int, bool> nodeVisible; // vertex number → was enabled
470 QHash<QPair<int, int>, bool> arcVisible; // (source,target)→ was visible
471 bool active = false; // true when this snapshot holds real data
472 FilterSpec spec; // replay descriptor for arbitrary chip removal
473 };
474
475 /* INIT AND CLEAR*/
476 // --------------------------------------------------------------------------
477 // FACADE API (SUPPORTED): Lifecycle
478 // --------------------------------------------------------------------------
479 Graph(const int &reserveVerticesSize = 5000, const int &reserveEdgesPerVertexSize = 500);
480 ~Graph();
481
482 QThread *getThread() const;
483 void moveToThreadFacade(QThread *thread);
484
485 void clear(const QString &reason = "");
486
487 /*FILES (READ AND WRITE)*/
488 // --------------------------------------------------------------------------
489 // FACADE API (SUPPORTED): File identity / load-save
490 // --------------------------------------------------------------------------
491
492 QString getFileName() const;
493
494 void setFileName(const QString &fileName);
495
496 QString getName() const;
497
498 void setName(const QString &graphName);
499
500 bool isSaved() const;
501
502 bool isLoaded() const;
503
504 int getFileFormat() const;
505
506 void setFileFormat(const int &fileFormat);
507
508 bool isFileFormatExportSupported(const int &fileFormat) const;
509
510 void setModStatus(const int &graphNewStatus, const bool &signalMW = true);
511
512 bool isModified() const;
513
514 void loadFile(const QString fileName,
515 const QString codecName,
516 const int format,
517 const QString delimiter = QString(),
518 const int sm_two_mode = 1,
519 const bool sm_has_labels = false);
520
521 void saveToFile(const QString &fileName,
522 const int &fileType,
523 const bool &saveEdgeWeights = true,
524 const bool &saveZeroWeightEdges = false);
525
526 bool saveToPajekFormat(const QString &fileName,
527 QString networkName = "",
528 int maxWidth = 0, int maxHeight = 0);
529
530 bool saveToAdjacencyFormat(const QString &fileName,
531 const bool &saveEdgeWeights = true);
532
533 bool saveToGraphMLFormat(const QString &fileName,
534 const bool &saveZeroWeightEdges = false,
535 QString networkName = "",
536 int maxWidth = 0, int maxHeight = 0);
537
538 bool saveToDotFormat(const QString &fileName);
539
540 bool saveToUCINETDLFormat(const QString &fileName);
541
542 bool saveToEdgeListWeightedFormat(const QString &fileName);
543
544 bool saveToEdgeListSimpleFormat(const QString &fileName);
545
546 QString graphMatrixTypeToString(const int &matrixType) const;
547
548 int graphMatrixStrToType(const QString &matrix) const;
549
550 QString graphMetricTypeToString(const int &metricType) const;
551
552 int graphMetricStrToType(const QString &metricStr) const;
553
554 QString graphClusteringMethodTypeToString(const int &methodType) const;
555
556 int graphClusteringMethodStrToType(const QString &method) const;
557
558 /* RELATIONS */
559 // --------------------------------------------------------------------------
560 // FACADE API (SUPPORTED): Relations
561 // --------------------------------------------------------------------------
562
563 int relations();
564
565 void relationsClear();
566
567 void relationAdd(const QString &relName, const bool &changeRelation = false);
568
569 /* VERTICES */
570 // --------------------------------------------------------------------------
571 // FACADE API (SUPPORTED): Vertex queries + edits
572 // --------------------------------------------------------------------------
573
574 int vertexIndexByNumber(int v) const;
575 // LEGACY/INTERNAL (ENGINE SUPPORT):
576 // Access a vertex by internal storage index (vpos result).
577 // No bounds checks: preserves existing behavior of direct m_graph[idx] usage.
578 GraphVertex *vertexAtIndex(int idx);
579 const GraphVertex *vertexAtIndex(int idx) const;
580
581 VList::const_iterator verticesBegin() const;
582 VList::const_iterator verticesEnd() const;
583
584 int vertexNumberMax();
585
586 int vertexNumberMin();
587
588 int vertexDegreeOut(int);
589
590 int vertexDegreeIn(int);
591
592 QList<int> vertexReciprocalNeighborsList(const int &v1);
593 QSet<int> vertexReciprocalNeighborsSet(const int &v1);
594 QSet<int> vertexOutNeighborsSet(const int &v1, const bool includeInEdges = false);
595
596 bool vertexIsolated(const int &v1) const;
597
598 bool vertexExists(const int &v1);
599 int vertexIndexIfExists(const int &v1);
600
601 bool vertexExists(const QString &label);
602 int vertexIndexIfExists(const QString &label);
603
604 bool vertexFindByNumber(const QStringList &numList);
605
606 bool vertexFindByLabel(const QStringList &labelList);
607
608 bool vertexFindByIndexScore(const int &index,
609 const QStringList &thresholds,
610 const bool &considerWeights,
611 const bool &inverseWeights = false,
612 const bool &dropIsolates = false);
613
614 void vertexRemove(const int &v1);
615
616 void vertexSizeInit(const int);
617
618 void vertexSizeSet(const int &v, const int &newsize);
619
620 int vertexSize(const int &v) const;
621
622 void vertexShapeSetDefault(const QString, const QString &iconPath = QString());
623
624 void vertexShapeSet(const int &v, const QString &shape, const QString &iconPath = QString());
625
626 QString vertexShape(const int &v);
627
628 QString vertexShapeIconPath(const int &v);
629
630 bool graphHasVertexCustomIcons() const;
631
632 QStringList graphHasVertexCustomAttributes() const;
633
634 void vertexColorInit(const QString &color);
635
636 void vertexColorSet(const int &v, const QString &color);
637
638 QColor vertexColor(const int &v) const;
639
640 void vertexNumberColorInit(const QString &color);
641
642 void vertexNumberColorSet(const int &v = 0, const QString &color = "#000000");
643
644 void vertexNumberSizeInit(const int &size);
645
646 void vertexNumberSizeSet(const int &v, const int &newsize);
647
648 void vertexNumberDistanceInit(const int &distance);
649
650 void vertexNumberDistanceSet(const int &v, const int &newDistance);
651
652 void vertexLabelSet(const int &v, const QString &label);
653
654 QString vertexLabel(const int &v) const;
655
656 void vertexLabelsVisibilitySet(bool toggle);
657
658 void vertexLabelSizeInit(int newSize);
659
660 void vertexLabelSizeSet(const int &v, const int &labelSize);
661
662 void vertexLabelColorInit(QString color);
663
664 void vertexLabelColorSet(const int &v1, const QString &color);
665
666 void vertexLabelDistanceInit(const int &distance);
667
668 void vertexLabelDistanceSet(const int &v, const int &newDistance);
669
670 void vertexLabelDistanceAllSet(const int &newDistance);
671
672 void vertexCustomAttributesSet(const int &v1, const QHash<QString, QString> &customAttributes);
673
674 void vertexCustomAttributeSet(const int &v1, const QString &key, const QString &value);
675
676 void vertexCustomAttributeRemove(const int &v1, const QString &key);
677
678 QHash<QString, QString> vertexCustomAttributes(const int &v1) const;
679
680 int vertexAttributesImport(const QStringList &headers,
681 const QVector<QStringList> &rows,
682 int idColumn,
683 bool matchByLabel);
684
685 void vertexPosSet(const int &v, const int &x, const int &y);
686
687 QPointF vertexPos(const int &v1) const;
688
689 int vertexClicked() const;
690
691 int vertices(const bool &dropIsolates = false, const bool &countAll = false, const bool &recount = false);
692
693 int vertexEdgesOutbound(int i);
694
695 int vertexEdgesInbound(int i);
696
698
700
702
703 QList<int> verticesListIsolated();
704
705 QList<int> verticesList();
706
707 QSet<int> verticesSet();
708
709 void verticesCreateSubgraph(QList<int> vList,
710 const int &type = SUBGRAPH_CLIQUE,
711 const int &center = 0);
712
713 // Regression/testing helper: access a vertex object by its number.
714 // Returns nullptr if not found.
715 GraphVertex *vertexPtr(const int v);
716
717 /* EDGES */
718 // --------------------------------------------------------------------------
719 // FACADE API (SUPPORTED): Edge queries + edits
720 // --------------------------------------------------------------------------
721
722 int edgesEnabled();
723
725
726 qreal edgeExists(const int &v1,
727 const int &v2,
728 const bool &checkReciprocal = false);
729
730 qreal edgeExistsVirtual(const int &v1, const int &v2);
731
732 void edgeOutboundStatusSet(const int &source,
733 const int &target,
734 const bool &toggle = false);
735
736 void edgeInboundStatusSet(const int &target,
737 const int &source,
738 const bool &toggle = false);
739
740 // Plain (non-signal) relay points for GraphVertex, a QtCore-only value class holding a
741 // Graph* rather than a QObject connection (WS3 M2). Each just emits the corresponding
742 // signal below - this is what lets GraphVertex notify the UI layer without being a
743 // QObject itself.
744 void notifyEdgeVisibilityChanged(const int &relation, const int &source, const int &target,
745 const bool &toggle, const bool &preserveReverseEdge = false,
746 const int &edgeWeight = 1, const int &reverseEdgeWeight = 1);
747 void notifyEdgesVisibilityBatch(const QList<EdgeVisibilityChange> &changes);
748
749 void edgeRemove(const int &v1,
750 const int &v2,
751 const bool &removeReverse = false);
752
753 void edgeRemoveSelected(SelectedEdge &selectedEdge,
754 const bool &removeReverse);
755
757
758 bool edgeSymmetric(const int &v1, const int &v2);
759
760 void edgeTypeSet(const int &v1,
761 const int &v2,
762 const qreal &w,
763 const int &dirType = EdgeType::Directed);
764
765 void edgeWeightSet(const int &v1,
766 const int &v2,
767 const qreal &w,
768 const bool &undirected = false);
769
770 qreal edgeWeight(const int &v1, const int &v2) const;
771
772 void edgeWeightNumbersVisibilitySet(const bool &toggle);
773
774 void edgeLabelSet(const int &v1, const int &v2, const QString &label);
775
776 QString edgeLabel(const int &v1, const int &v2) const;
777
778 void edgeLabelsVisibilitySet(const bool &toggle);
779
780 void edgeColorInit(const QString &);
781 void edgeColorZeroInit(const QString &); // #30: configurable zero-weight edge color
782 void showZeroWeightEdgesSet(const bool &toggle); // #30: show/hide zero-weight edges
783
784 void edgeColorSet(const int &v1, const int &v2, const QString &color);
785
786 QString edgeColor(const int &v1, const int &v2);
787
788 bool edgeColorAllSet(const QString &color, const int &threshold = RAND_MAX);
789
790 void edgeCustomAttributesSet(const int &v1, const int &v2, const QHash<QString,QString> &attrs);
791
792 QHash<QString,QString> edgeCustomAttributes(const int &v1, const int &v2) const;
793
794 int edgeAttributesImport(const QStringList &headers,
795 const QVector<QStringList> &rows,
796 int srcColumn,
797 int tgtColumn);
798
799 QStringList graphHasEdgeCustomAttributes() const;
800
801 /* GRAPH methods */
802 // --------------------------------------------------------------------------
803 // FACADE API (SUPPORTED): Graph facts + settings used by UI/CLI
804 // --------------------------------------------------------------------------
805
806 bool isEmpty() const;
807
808 QList<int> getSelectedVertices() const;
809
810 int getSelectedVerticesCount() const;
811
812 int getSelectedVerticesMin() const;
813
814 int getSelectedVerticesMax() const;
815
816 QList<SelectedEdge> getSelectedEdges() const;
817
818 int getSelectedEdgesCount() const;
819
820 int getGeodesicsCount();
821
822 qreal graphDensity();
823
824 bool isWeighted();
826 bool hasNegativeWeight();
827
828 void setWeighted(const bool &toggle = true);
829
830 qreal graphReciprocity();
831
832 // Cached alongside graphReciprocity() (a single call computes all of these); dyad reciprocity
833 // is a distinct pair-level ratio from the tie-level arc ratio graphReciprocity() itself
834 // returns - both are meaningful, independently reported quantities (see writeReciprocity()).
835 qreal graphReciprocityDyad() const;
837 int graphReciprocityTiesTotal() const;
839 int graphReciprocityPairsTotal() const;
840
841 bool isSymmetric();
842
843 void setSymmetric();
844
845 void addRelationSymmetricStrongTies(const bool &allRelations = false);
846
848
849 void graphDichotomization(const qreal threshold);
850
851 void setDirected(const bool &toggle = true, const bool &signalMW = true);
852
853 void setUndirected(const bool &toggle = true, const bool &signalMW = true);
854
855 bool isDirected();
856
857 bool isUndirected();
858
859 bool isConnected();
860
861 bool isConnectedCached() const;
862
864
866
868
870
871 const QHash<int,int> &vertexComponentId() const { return m_vertexComponentId; }
872
873 // --------------------------------------------------------------------------
874 // FACADE API (SUPPORTED): Vertex connectivity (Menger's theorem via max-flow, #7).
875 // --------------------------------------------------------------------------
877 {
878 Ok, // value holds the local vertex connectivity (>=0; 0 means unreachable)
879 Adjacent, // source and target are directly connected by an edge - no finite vertex
880 // cut exists (Menger's theorem requires non-adjacency); value is meaningless
881 Invalid // source/target don't exist, or source == target
882 };
883
889
890 NodeConnectivityResult graphNodeConnectivity(int source, int target, bool respectDirection);
891
893 {
894 Ok, // value holds kappa(G), the true minimum over every pair actually tested
895 Canceled // value holds the best (lowest) local connectivity found among pairs tested
896 // before cancellation - a valid upper bound on kappa(G), not necessarily exact
897 };
898
904
905 GraphConnectivityResult graphConnectivity(bool respectDirection);
906 GraphConnectivityResult graphConnectivityNaive(bool respectDirection);
907
908 // WS6.7: read-only-by-convention accessors for kernel_matrix_v8's golden coverage.
909 // Non-const because Matrix::item()/rows()/cols() are themselves non-const throughout.
910 Matrix &matrixAdjacency() { return AM; }
912 Matrix &matrixDistances() { return DM; }
915 Matrix &matrixWalks() { return XM; }
918 Matrix &matrixSignedPN() { return PNM; }
919
920 void createMatrixAdjacency(const bool dropIsolates = false,
921 const bool considerWeights = true,
922 const bool inverseWeights = false,
923 const bool symmetrize = false);
924
925 bool createMatrixAdjacencyInverse(const QString &method = "lu");
926
927 void createMatrixSignedPN(const bool dropIsolates = false);
928
930 Matrix &SEM,
931 const int &measure = METRIC_SIMPLE_MATCHING,
932 const QString &varLocation = "Rows",
933 const bool &diagonal = false,
934 const bool &considerWeights = true);
935
937 Matrix &PCC,
938 const QString &varLocation = "Rows",
939 const bool &diagonal = false);
940
941 void createMatrixDissimilarities(Matrix &INPUT_MATRIX,
942 Matrix &DSM,
943 const int &metric,
944 const QString &varLocation,
945 const bool &diagonal,
946 const bool &considerWeights);
947
948 /* REPORT EXPORTS */
949 void setReportsDataDir(const QString &reportsDir);
950 void setReportsRealNumberPrecision(const int &precision);
951 void setReportsLabelLength(const int &length);
952 void setReportsChartType(const int &type);
953 void setReportsOutputFormat(const int &format);
954
955 void writeDataSetToFile(const QString dir, const QString);
956
957 void writeMatrixAdjacencyTo(QTextStream &os,
958 const bool &saveEdgeWeights = true);
959
960 bool writeReciprocity(const QString fileName,
961 const bool considerWeights = false,
962 const int &format = ReportFormat::Html);
963
964 bool writeMatrix(const QString &fileName,
965 const int &matrix = MATRIX_ADJACENCY,
966 const bool &considerWeights = true,
967 const bool &inverseWeights = false,
968 const bool &dropIsolates = false,
969 const QString &varLocation = "Rows",
970 const bool &simpler = false,
971 const int &format = ReportFormat::Html,
972 const bool &allowNegativeWeights = false);
973
974 void writeMatrixHTMLTable(QTextStream &outText, Matrix &M,
975 const bool &markDiag = true,
976 const bool &plain = false,
977 const bool &printInfinity = true,
978 const bool &dropIsolates = false);
979
980 void writeMatrixCSVTable(QTextStream &outText, Matrix &M,
981 const bool &printInfinity = true,
982 const bool &dropIsolates = false);
983
984 bool writeMatrixAdjacency(const QString fileName,
985 const bool &markDiag = true,
986 const int &format = ReportFormat::Html);
987
988 void writeMatrixAdjacencyPlot(const QString fileName,
989 const bool &simpler = false);
990
991 bool writeMatrixDissimilarities(const QString fileName,
992 const QString &metricStr,
993 const QString &varLocation,
994 const bool &diagonal,
995 const bool &considerWeights,
996 const int &format = ReportFormat::Html);
997
998 bool writeMatrixSimilarityMatching(const QString fileName,
999 const QString &measure = "Simple",
1000 const QString &matrix = "adjacency",
1001 const QString &varLocation = "rows",
1002 const bool &diagonal = false,
1003 const bool &considerWeights = true,
1004 const int &format = ReportFormat::Html);
1005
1006 bool writeMatrixSimilarityPearson(const QString fileName,
1007 const bool considerWeights,
1008 const QString &matrix = "adjacency",
1009 const QString &varLocation = "rows",
1010 const bool &diagonal = false,
1011 const int &format = ReportFormat::Html);
1012
1013 bool writeEccentricity(const QString fileName,
1014 const bool considerWeights = false,
1015 const bool inverseWeights = false,
1016 const bool dropIsolates = false,
1017 const int &format = ReportFormat::Html);
1018
1019 // friend QTextStream& operator << (QTextStream& os, Graph& m);
1020
1021 // Shared per-node score-table renderer for the centrality/prestige and (WS16 Step 3)
1022 // Reciprocity/Clustering Coefficient/Eccentricity report families. "Node" and "Label"
1023 // columns are fixed; dataColumnHeaders supplies the rest, in order. rowValues returns
1024 // that row's already-computed scores, in the same order as dataColumnHeaders - a value
1025 // equal to RAND_MAX renders as the infinity glyph, matching writeMatrixHTMLTable/
1026 // writeMatrixCSVTable's existing sentinel convention. isBlanked (optional; null means
1027 // "never blank", matching writeCentralityEigenvector's existing behaviour) decides
1028 // whether a row's data columns are replaced with a placeholder - e.g. dropped isolates -
1029 // preserving each report's current isolate-handling exactly rather than unifying it.
1030 // isSkipped (optional) omits the row entirely - distinct from isBlanked - matching
1031 // writeEccentricity()'s existing "don't print disabled nodes at all" behaviour.
1032 void writeScoreTableHTML(QTextStream &outText,
1033 const QStringList &dataColumnHeaders,
1034 const std::function<QVector<qreal>(GraphVertex *)> &rowValues,
1035 const std::function<bool(GraphVertex *)> &isBlanked = nullptr,
1036 const std::function<bool(GraphVertex *)> &isSkipped = nullptr);
1037
1038 void writeScoreTableCSV(QTextStream &outText,
1039 const QStringList &dataColumnHeaders,
1040 const std::function<QVector<qreal>(GraphVertex *)> &rowValues,
1041 const std::function<bool(GraphVertex *)> &isBlanked = nullptr,
1042 const std::function<bool(GraphVertex *)> &isSkipped = nullptr);
1043
1044 bool writeCentralityDegree(const QString,
1045 const bool weights,
1046 const bool dropIsolates,
1047 const int &format = ReportFormat::Html);
1048
1049 bool writeCentralitySignedDegree(const QString,
1050 const bool weights,
1051 const bool dropIsolates,
1052 const int &format = ReportFormat::Html);
1053
1054 bool writeCentralityCloseness(const QString,
1055 const bool weights,
1056 const bool inverseWeights,
1057 const bool dropIsolates,
1058 const int &format = ReportFormat::Html);
1059
1060 bool writeCentralityClosenessInfluenceRange(const QString,
1061 const bool weights,
1062 const bool inverseWeights,
1063 const bool dropIsolates,
1064 const int &format = ReportFormat::Html);
1065
1066 bool writeCentralityBetweenness(const QString,
1067 const bool weights,
1068 const bool inverseWeights,
1069 const bool dropIsolates,
1070 const int &format = ReportFormat::Html);
1071
1072 bool writeCentralityPower(const QString,
1073 const bool weigths,
1074 const bool inverseWeights,
1075 const bool dropIsolates,
1076 const int &format = ReportFormat::Html);
1077
1078 bool writeCentralityStress(const QString,
1079 const bool weigths,
1080 const bool inverseWeights,
1081 const bool dropIsolates,
1082 const int &format = ReportFormat::Html);
1083
1084 bool writeCentralityEccentricity(const QString,
1085 const bool weigths,
1086 const bool inverseWeights,
1087 const bool dropIsolates,
1088 const int &format = ReportFormat::Html);
1089
1090 bool writeCentralityInformation(const QString,
1091 const bool weigths,
1092 const bool inverseWeights,
1093 const int &format = ReportFormat::Html);
1094
1095 bool writeCentralityEigenvector(const QString,
1096 const bool &weigths = true,
1097 const bool &inverseWeights = false,
1098 const bool &dropIsolates = false,
1099 const int &format = ReportFormat::Html);
1100
1101 bool writeCentralityKatz(const QString,
1102 const qreal &alpha,
1103 const bool &weigths = false,
1104 const bool &inverseWeights = false,
1105 const bool &dropIsolates = false,
1106 const int &format = ReportFormat::Html);
1107
1108 bool writeCentralityBonacich(const QString,
1109 const qreal &alpha,
1110 const qreal &beta,
1111 const bool &weigths = false,
1112 const bool &inverseWeights = false,
1113 const bool &dropIsolates = false,
1114 const int &format = ReportFormat::Html);
1115
1116 bool writeCentralityPN(const QString,
1117 const PNMode mode = PNMode::All,
1118 const bool &dropIsolates = false,
1119 const int &format = ReportFormat::Html);
1120
1121 bool writePrestigeDegree(const QString, const bool weights,
1122 const bool dropIsolates,
1123 const int &format = ReportFormat::Html);
1124
1125 bool writePrestigeProximity(const QString, const bool weights,
1126 const bool inverseWeights,
1127 const bool dropIsolates,
1128 const int &format = ReportFormat::Html);
1129
1130 bool writePrestigePageRank(const QString, const bool Isolates = false,
1131 const int &format = ReportFormat::Html);
1132
1133 // HTML-only, permanently (WS16 Step 3): produces an equivalence matrix plus a dendrogram,
1134 // neither of which is a single flat table.
1135 bool writeClusteringHierarchical(const QString &fileName,
1136 const QString &varLocation,
1137 const QString &matrix = "Adjacency",
1138 const QString &metric = "Manhattan",
1139 const QString &method = "Complete",
1140 const bool &diagonal = false,
1141 const bool &dendrogram = false,
1142 const bool &considerWeights = true,
1143 const bool &inverseWeights = false,
1144 const bool &dropIsolates = false);
1145
1146 void writeClusteringHierarchicalResultsToStream(QTextStream &outText,
1147 const int N,
1148 const bool &dendrogram = false);
1149
1150 // HTML-only, permanently (WS16 Step 3): writeCliqueCensus() combines 4 heterogeneous
1151 // sub-tables (clique list, actor-by-clique matrix, actor-by-actor co-membership matrix,
1152 // and a full hierarchical-clustering dendrogram sub-report) that don't reduce to one
1153 // flat CSV table.
1154 bool writeCliqueCensus(const QString &fileName,
1155 const bool considerWeights);
1156
1157 bool writeClusteringCoefficient(const QString, const bool,
1158 const int &format = ReportFormat::Html);
1159
1160 bool writeTriadCensus(const QString, const bool,
1161 const int &format = ReportFormat::Html);
1162
1163 /* DISTANCES, CENTRALITIES & PROMINENCE MEASURES */
1164
1165 int graphConnectednessFull(const bool updateProgress = false);
1166
1167 bool graphReachable(const int &v1, const int &v2);
1168
1170
1171 qreal graphDiameter(const bool considerWeights, const bool inverseWeights);
1172
1173 qreal graphDiameterSigned(const bool inverseWeights);
1174
1175 qreal graphDiameterCached() const;
1176
1177 qreal graphSumDistanceCached() const;
1178
1179 qreal graphGeodesicsCountCached() const;
1180
1181 qreal graphDistanceGeodesic(const int &v1,
1182 const int &v2,
1183 const bool &considerWeights = false,
1184 const bool &inverseWeights = true);
1185
1186 qreal graphDistanceGeodesicSigned(const int &v1,
1187 const int &v2,
1188 const bool &inverseWeights = true);
1189
1190 // WS5 A2: read-only accessors into m_apspDist/m_apspSigma (the flat-matrix APSP storage
1191 // DistanceEngine populates) for the current relation. Unlike graphDistanceGeodesic() above,
1192 // these never trigger a recompute - callers are expected to have already run
1193 // graphDistancesGeodesic() themselves. Returns RAND_MAX / 0 respectively if either vertex
1194 // number is unknown or nothing has been computed yet for the current relation.
1195 qreal apspDistance(const int &v1, const int &v2);
1196 int apspShortestPaths(const int &v1, const int &v2);
1197
1198 QMap<int, int> graphGeodesicDistanceDistribution(const bool &considerWeights = false,
1199 const bool &inverseWeights = false);
1200
1201 bool writeGeodesicDistribution(const QString &fileName,
1202 const bool &considerWeights = false,
1203 const bool &inverseWeights = false);
1204
1205 QList<int> graphGeodesicShortestPath(const int &v1,
1206 const int &v2,
1207 const bool &considerWeights = false,
1208 const bool &inverseWeights = false);
1209
1210 qreal graphDistanceGeodesicAverage(const bool considerWeights,
1211 const bool inverseWeights,
1212 const bool dropIsolates);
1213
1214 qreal graphDistanceGeodesicAverageSigned(const bool inverseWeights,
1215 const bool dropIsolates);
1216
1218
1219 void graphDistancesGeodesic(const bool &computeCentralities = false,
1220 const bool &considerWeights = false,
1221 const bool &inverseWeights = true,
1222 const bool &dropIsolates = false);
1223
1224 void graphDistancesGeodesicSigned(const bool &computeCentralities = false,
1225 const bool &inverseWeights = true,
1226 const bool &dropIsolates = false);
1227
1228 bool graphBellmanFordPotentials(const bool inverseWeights, QVector<qreal> &outPotentials);
1229
1230 // ============================================================================
1231 // --- Connectivity bookkeeping ---
1233 void notConnectedPairsInsert(int from, int to);
1234 int notConnectedPairsSize() const;
1235
1236 // --- Distance centrality cache flags ---
1237 // CLI/benchmark helper: allows repeated runs by clearing the computed flags only.
1238 // Does not modify graph structure or results.
1240
1241 // LEGACY/INTERNAL (ENGINE SUPPORT): cached results written by DistanceEngine
1242 void setSymmetricCached(bool v);
1243 bool symmetricCached() const;
1244
1245 void setConnectedCached(bool v);
1246 void setDiameterCached(qreal v);
1247
1248 void resetDistanceAggregates(); // sets avg/sum/geodesics/diameter to 0
1249 void addToDistanceSum(qreal delta);
1250 void incGeodesicsCount();
1251 // Bulk-add n to the geodesics count — used by the post-parallel-loop reduction
1252 // so each thread contributes its total in one call instead of n individual increments.
1253 void addGeodesicsCount(int n);
1254 void setAverageDistanceCached(qreal v);
1255
1256 bool graphMatrixDistanceGeodesicCreate(const bool &considerWeights = false,
1257 const bool &inverseWeights = false,
1258 const bool &dropIsolates = false,
1259 const bool &allowNegativeWeights = false);
1260
1261 void graphMatrixShortestPathsCreate(const bool &considerWeights = false,
1262 const bool &inverseWeights = true,
1263 const bool &dropIsolates = false);
1264
1265 int getProminenceIndexByName(const QString &prominenceIndexName);
1266
1267 void prominenceDistribution(const int &index,
1268 const ChartType &type,
1269 const QString &distImageFileName = QString());
1270
1271 void prominenceDistributionBars(const H_StrToInt &discreteClasses,
1272 const QString &name,
1273 const QString &distImageFileName);
1274
1275 void prominenceDistributionArea(const H_StrToInt &discreteClasses,
1276 const QString &name,
1277 const QString &distImageFileName);
1278
1279 void prominenceDistributionSpline(const H_StrToInt &discreteClasses,
1280 const QString &seriesName,
1281 const QString &distImageFileName);
1282
1283 void centralityDegree(const bool &considerWeights = true,
1284 const bool &dropIsolates = false);
1285
1286 void centralitySignedDegree(const bool &considerWeights = true,
1287 const bool &dropIsolates = false);
1288
1289 void centralityInformation(const bool considerWeights = false,
1290 const bool inverseWeights = false);
1291
1292 void centralityEigenvector(const bool &considerWeights = false,
1293 const bool &inverseWeights = false,
1294 const bool &dropIsolates = false);
1295
1296 qreal estimateSpectralRadius(const bool &considerWeights = false,
1297 const bool &inverseWeights = false,
1298 const bool &dropIsolates = false);
1299
1300 void centralityKatz(const qreal &alpha,
1301 const bool &considerWeights = false,
1302 const bool &inverseWeights = false,
1303 const bool &dropIsolates = false);
1304
1305 void centralityBonacich(const qreal &alpha,
1306 const qreal &beta,
1307 const bool &considerWeights = false,
1308 const bool &inverseWeights = false,
1309 const bool &dropIsolates = false);
1310
1311 void centralityPN(const PNMode mode = PNMode::All,
1312 const bool &dropIsolates = false);
1313
1314 void centralityClosenessIR(const bool considerWeights = false,
1315 const bool inverseWeights = false,
1316 const bool dropIsolates = false);
1317
1318 void prestigeDegree(const bool &considerWeights, const bool &dropIsolates = false);
1319
1320 void prestigePageRank(const bool &dropIsolates = false);
1321
1322 void prestigeProximity(const bool considerWeights = false,
1323 const bool inverseWeights = false,
1324 const bool dropIsolates = false);
1325
1326 bool isCentralityIndexComputed(const IndexType index) const;
1327
1328 /* REACHABILITY AND WALKS */
1329
1330 int walksBetween(int v1, int v2, int length);
1331
1332 void graphWalksMatrixCreate(const int &N = 0,
1333 const int &length = 0,
1334 const bool &dropIsolates = false,
1335 const bool &considerWeights = false,
1336 const bool &inverseWeights = false,
1337 const bool &symmetrize = false);
1338
1339 bool writeMatrixWalks(const QString &fn,
1340 const int &length = 0,
1341 const bool &simpler = false,
1342 const int &format = ReportFormat::Html);
1343
1344 qreal numberOfTriples(int v1);
1345
1346 /* CLIQUES, CLUSTERING, TRIADS */
1347 void graphCliques(QSet<int> R = QSet<int>(), QSet<int> P = QSet<int>(), QSet<int> X = QSet<int>());
1348
1349 void graphCliqueAdd(const QList<int> &clique);
1350
1351 int graphCliquesContaining(const int &actor, const int &size = 0);
1352
1353 int graphCliquesOfSize(const int &size);
1354
1355 bool graphClusteringHierarchical(Matrix &STR_EQUIV,
1356 const QString &varLocation,
1357 const int &metric,
1358 const int &method,
1359 const bool &diagonal = false,
1360 const bool &diagram = false,
1361 const bool &considerWeights = true,
1362 const bool &inverseWeights = false,
1363 const bool &dropIsolates = false);
1364
1365 // --- Hierarchical clustering results (read-only access for CLI / reports) ---
1366 // Populated by graphClusteringHierarchical(); keyed by clustering stage/level sequence
1367 // number (1-based). m_clustersPerSequence[seq] is the full member list of the cluster
1368 // formed at that stage; m_clusteringLevel[seq-1] is the dissimilarity/distance value at
1369 // which that merge happened.
1370 const QMap<int, V_int> &graphClustersPerSequence() const { return m_clustersPerSequence; }
1371 const QList<qreal> &graphClusteringLevels() const { return m_clusteringLevel; }
1372
1373 qreal clusteringCoefficientLocal(const int &v1, const bool &isSymmetric);
1374
1375 qreal clusteringCoefficient();
1376
1377 bool graphTriadCensus();
1378
1380 QVector<QAtomicInteger<int>> &);
1381 // --- Triad census results (read-only access for CLI / reports) ---
1382 const QList<int> &graphTriadTypeFreqs() const { return triadTypeFreqs; }
1384
1385 // void eccentr_JordanCenter(); // TODO
1386
1387 /* LAYOUTS */
1388
1389 void layoutRandom();
1390
1391 void layoutRadialRandom(const bool &guides = true);
1392
1393 void layoutEgoRadial(const int egoVertex);
1394
1395 void layoutCircular(const double &x0,
1396 const double &y0,
1397 const double &newRadius,
1398 const bool &guides = false);
1399
1400 void layoutByProminenceIndex(int prominenceIndex,
1401 int layoutType,
1402 const bool &considerWeights = false,
1403 const bool &inverseWeights = false,
1404 const bool &dropIsolates = false);
1405
1407
1409
1410 void layoutForceDirectedSpringEmbedder(const int maxIterations);
1411
1412 void layoutForceDirectedFruchtermanReingold(const int maxIterations);
1413
1414 void layoutForceDirectedKamadaKawai(const int maxIterations = 500,
1415 const bool considerWeights = false,
1416 const bool inverseWeights = false,
1417 const bool dropIsolates = false,
1418 const QString &initialPositions = "current");
1419
1420 qreal graphDistanceEuclidean(const QPointF &a, const QPointF &b);
1421
1422 qreal graphDistanceEuclidean(const QPointF &a);
1423
1424 int sign(const qreal &D);
1425
1426 qreal layoutForceDirected_F_rep(const QString model,
1427 const qreal &dist,
1428 const qreal &optimalDistance);
1429
1430 qreal layoutForceDirected_F_att(const QString model,
1431 const qreal &dist,
1432 const qreal &optimalDistance);
1433
1434 qreal layoutForceDirected_Eades_moveNodes(const qreal &c4);
1435
1436 qreal layoutForceDirected_FR_moveNodes(const qreal &temperature);
1437
1438 qreal layoutForceDirected_FR_temperature(const int iteration) const;
1439
1440 qreal computeOptimalDistance(const int &V);
1441
1442 void compute_angles(const QPointF &Delta,
1443 const qreal &dist,
1444 qreal &angle1,
1445 qreal &angle2,
1446 qreal &degrees1,
1447 qreal &degrees2);
1448
1449 /* CRAWLER */
1450 void webCrawlTerminateThreads(QString reason);
1451
1453 void randomizeThings();
1454
1455 bool randomNetErdosCreate(const int &N, const QString &model,
1456 const int &m, const qreal &p,
1457 const QString &mode, const bool &diag);
1458
1459 bool randomNetScaleFreeCreate(const int &N, const int &power,
1460 const int &m0, const int &m,
1461 const qreal &alpha, const QString &mode);
1462
1463 bool randomNetSmallWorldCreate(const int &N, const int &degree,
1464 const double &beta, const QString &mode);
1465
1466 bool randomNetRingLatticeCreate(const int &N, const int &degree,
1467 const bool updateProgress = false);
1468
1469 bool randomNetRegularCreate(const int &N, const int &degree,
1470 const QString &mode, const bool &diag);
1471
1472 bool randomNetLatticeCreate(const int &N, const int &length,
1473 const int &dimension, const int &nei,
1474 const QString &mode, const bool &circular);
1475
1476 int factorial(int);
1477
1478 // Progress cancellation query: readable by engines and sinks.
1479 bool progressCanceled() const;
1480 void resetProgressCanceled();
1481
1482 // Set by DistanceEngine (via GraphDistanceProgressSink) when the default (Dijkstra) distance
1483 // computation refuses to run because the network contains a negative edge weight - Dijkstra
1484 // is undefined for those. See #277/WS18 P1. Does not fire for a negative-weight-safe
1485 // computation (see negativeCycleDetected() below for that path's own refusal). Same
1486 // read/reset shape as progressCanceled() above.
1487 bool negativeWeightsDetected() const;
1490
1491 // Set by DistanceEngine when a negative-weight-safe (Johnson's algorithm) computation finds
1492 // a reachable negative cycle, which makes shortest paths undefined. Distinct from
1493 // negativeWeightsDetected() above: that flag means "negative weight, wrong algorithm
1494 // (Dijkstra)"; this one means "no algorithm can answer this, the graph itself has no
1495 // well-defined shortest paths." Same read/reset shape as progressCanceled() above.
1496 bool negativeCycleDetected() const;
1499
1505 //
1506 // LEGACY/INTERNAL: storage bookkeeping.
1507 // Do not use from UI/engines. (Later WS2 will likely privatize this and
1508 // expose intent-revealing helpers if needed.)
1510
1511 // --------------------------------------------------------------------------
1512 // INTERNAL PROGRESS FACADE (WS2/F4)
1513 // Algorithm slices must not emit signals directly.
1514 // --------------------------------------------------------------------------
1515protected:
1516 void progressStatus(const QString &msg);
1517
1518 void runOnGuiThread(std::function<void()> fn);
1519
1520 void uiProminenceDistributionSpline(const QVector<QPair<qreal, qreal>> &points,
1521 qreal min, qreal max,
1522 qreal minF, qreal maxF,
1523 const QString &seriesName,
1524 const QString &distImageFileName);
1525 void uiProminenceDistributionArea(const QVector<QPair<qreal, qreal>> &points,
1526 const qreal min,
1527 const qreal max,
1528 const qreal minF,
1529 const qreal maxF,
1530 const QString &name,
1531 const QString &distImageFileName);
1532 void uiProminenceDistributionBars(const QStringList &categories,
1533 const QVector<qreal> &frequencies,
1534 const qreal min,
1535 const qreal max,
1536 const qreal minF,
1537 const qreal maxF,
1538 const QString &name,
1539 const QString &distImageFileName);
1540
1541private:
1543
1544 Graph *subgraphFromVertexList(const QList<int> &vertexNums,
1545 const QString &name,
1546 const bool &includeCustomAttributes = true);
1547
1549 void vertexFilterReplaySpec(const FilterSpec &spec);
1550
1551 void edgeAdd(const int &v1,
1552 const int &v2,
1553 const qreal &weight,
1554 const int &type,
1555 const QString &label,
1556 const QString &color);
1557
1559 void dijkstra(const int &s,
1560 const int &si,
1561 const bool &computeCentralities = false,
1562 const bool &inverseWeights = false,
1563 const bool &dropIsolates = false);
1564
1565 void minmax(qreal C,
1566 GraphVertex *v,
1567 qreal &max,
1568 qreal &min,
1569 int &maxNode, int &minNode);
1570
1571 void resolveClasses(qreal C,
1572 H_StrToInt &discreteClasses,
1573 int &classes);
1574
1575 void resolveClasses(qreal C,
1576 H_StrToInt &discreteClasses,
1577 int &classes, int name);
1578
1579 QVector<int> compactedMatrixIndex(const bool &dropIsolates) const;
1580
1581 void layoutRandomInMemory();
1582
1583 VList m_graph; // List of pointers to the vertices. Each vertex stores all info: links, colors, etc
1584
1585 Parser *file_parser; // Our file loader threaded class.
1586
1587 WebCrawler *web_crawler; // Our web crawler threaded class. This will parse the downloaded HTML.
1588
1589 QQueue<QUrl> *urlQueue; // A queue where the crawler will put urls for the network manager to download
1590
1591 int m_crawler_max_urls; // maximum urls we'll visit (max nodes in the resulted network)
1592 int m_crawler_visited_urls; // A counter of the urls visited.
1593
1594 QList<QString> m_relationsList;
1596
1598
1599 QList<int> triadTypeFreqs; // stores triad type frequencies
1600
1601 QList<int> m_verticesList;
1603
1605
1606 QSet<int> m_verticesSet;
1607
1608 QList<SelectedEdge> m_selectedEdges;
1609 QStack<GraphVisibilitySnapshot> m_visibilityHistory; // filter undo stack
1610
1611 QMultiHash<int, int> m_vertexPairsNotConnected;
1613
1614 QMultiMap<int, L_int> m_cliques;
1615 QHash<int, QSet<int>> neighboursHash;
1616
1617 QList<qreal> m_clusteringLevel;
1618 QMap<int, V_int> m_clustersPerSequence;
1619
1620 QMap<QString, V_int> m_clustersByName;
1622
1626
1627 // WS5 A2: relation-keyed flat-matrix APSP storage, replacing GraphVertex's per-vertex
1628 // QHash<int, QPair<int,qreal>>. Row = source vertex position, column = target vertex
1629 // position (see Graph::vertexIndexByNumber()/vertexAtIndex()), not vertex number.
1630 QHash<int, Matrix> m_apspDist;
1631 QHash<int, Matrix> m_apspSigma;
1632
1638
1644
1646
1648
1675 qreal m_lastKatzAlpha = -1;
1691
1711
1718 bool order;
1729
1731
1733
1739 // Which mode populated the calculatedDistances/calculatedCentralities cache above - a plain
1740 // negative-weight-unsafe Dijkstra/BFS result, or an allowNegativeWeights (Johnson's
1741 // algorithm) one. compute()'s early-return cache hit is only valid when the caller's
1742 // requested mode matches this - switching modes on the same graph must force a fresh
1743 // recompute, since the two modes can (and on a negative-weight graph, do) produce different
1744 // results and different negativeWeightsDetected()/negativeCycleDetected() outcomes.
1758 // Written by slotCancelComputation() (GUI thread, via Qt::DirectConnection) and read by
1759 // progressCanceled() (graphThread, mid-computation) - see WS15's P1 for why a plain bool and a
1760 // queued connection can't deliver this in time.
1761 std::atomic<bool> m_progressCanceled;
1762 // Written by DistanceEngine::initRun() (graphThread) via GraphDistanceProgressSink, read by
1763 // negativeWeightsDetected() from whichever thread issued the computation - same cross-thread
1764 // shape as m_progressCanceled above, so same atomic-bool treatment.
1765 std::atomic<bool> m_negativeWeightsRefused;
1766 // Written by DistanceEngine::compute() (graphThread) when its negative-weight-safe path finds
1767 // a reachable negative cycle, read by negativeCycleDetected() - same cross-thread shape as
1768 // m_negativeWeightsRefused above.
1769 std::atomic<bool> m_negativeCycleDetected;
1774 QHash<int,int> m_vertexComponentId;
1775
1777
1783
1785};
1786
1787#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:1667
QString initEdgeColorZero
Definition graph.h:1778
void signalSelectionChanged(const int &selectedVertices, const int &selectedEdges)
QHash< int, int > m_vertexPairsUnilaterallyConnected
Definition graph.h:1612
qreal denomIC
Definition graph.h:1672
Matrix XSM
Definition graph.h:1624
int factorial(int)
Definition graph_random_networks.cpp:850
int initVertexNumberSize
Definition graph.h:1716
bool calculatedIC
Definition graph.h:1753
int reciprocalEdgesVert
Definition graph.h:1732
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:3720
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:1714
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:285
qreal denomPRC
Definition graph.h:1689
bool m_graphHasNegativeWeight
Definition graph.h:1771
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:1690
qreal minIC
Definition graph.h:1672
qreal varianceSDC
Definition graph.h:1649
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:1706
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:1698
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:1781
bool isSymmetric()
Returns TRUE if the adjacency matrix of the current relation is symmetric.
Definition graph_state_flags.cpp:181
qreal sumPRP
Definition graph.h:1689
qreal sumDC
Definition graph.h:1665
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:1669
int m_reserveEdgesPerVertexSize
Definition graph.h:1713
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:110
int initVertexNumberDistance
Definition graph.h:1717
void prestigePageRank(const bool &dropIsolates=false)
Calculates the PageRank Prestige of each vertex.
Definition graph_prestige.cpp:443
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:6478
GraphVertex * vertexAtIndex(int idx)
Returns the vertex at a given index.
Definition graph_vertices.cpp:312
bool m_verticesCacheDropIsolates
Definition graph.h:1737
void setNegativeWeightsDetected()
Set by DistanceEngine (via GraphDistanceProgressSink) when it detects a negative edge weight and refu...
Definition graph_ui_facade.cpp:104
bool calculatedBPC
Definition graph.h:1749
qreal maxEC
Definition graph.h:1671
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:1668
qreal 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
qreal sumSCC
Definition graph.h:1666
int minNodeSCC
Definition graph.h:1696
int classesSCC
Definition graph.h:1696
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:1726
int m_reportsLabelLength
Definition graph.h:1641
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:121
int classesSSC
Definition graph.h:1700
Matrix CLQM
Definition graph.h:1624
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:1773
int initVertexLabelSize
Definition graph.h:1716
qreal m_lastBonacichBeta
Definition graph.h:1684
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 agglomerative hierarchical clustering (Johnson, 1967) on a given NxN distance/dissimilarity ...
Definition graph_clustering_hierarchical.cpp:44
qreal sumSSC
Definition graph.h:1670
qreal sumCC
Definition graph.h:1666
bool m_graphIsWeighted
Definition graph.h:1770
WebCrawler * web_crawler
Definition graph.h:1587
qreal maxIndexEC
Definition graph.h:1671
int graphReciprocityPairsTotal() const
Definition graph_structure_metrics.cpp:366
bool m_graphIsSymmetric
Definition graph.h:1770
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:220
void setNodeNumberDistance(const int &v, const int &distance)
int minNodeEC
Definition graph.h:1701
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:1701
H_StrToInt discretePPs
Definition graph.h:1636
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:1707
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:1647
void signalRelationAddToMW(const QString &newRelation)
qreal denomSPC
Definition graph.h:1669
Matrix XM
Definition graph.h:1624
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:843
QList< SelectedEdge > m_selectedEdges
Definition graph.h:1608
PNMode m_lastPNMode
Definition graph.h:1685
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:6394
qreal sumPP
Definition graph.h:1690
qreal nomPP
Definition graph.h:1690
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:6240
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:1645
void setEdgeWeight(const int &v1, const int &v2, const qreal &weight)
bool calculatedGraphReciprocity
Definition graph.h:1755
QThread webcrawlerThread
Definition graph.h:108
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:1694
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:1705
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:745
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:1720
qreal varianceSDP
Definition graph.h:1660
QList< int > m_graphFileFormatExportSupported
Definition graph.h:1597
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:1808
qreal denomPP
Definition graph.h:1690
bool isSaved() const
Returns true if the graph is saved.
Definition graph_metadata.cpp:266
qreal denomEC
Definition graph.h:1671
qreal minSBC
Definition graph.h:1668
int minNodeIC
Definition graph.h:1703
qreal maxIndexIC
Definition graph.h:1672
bool calculatedGraphDensity
Definition graph.h:1756
qreal sumSC
Definition graph.h:1670
bool createMatrixAdjacencyInverse(const QString &method="lu")
Computes the inverse of the current adjacency matrix.
Definition graph_matrix_adjacency.cpp:209
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:1621
QString m_reportsDataDir
Definition graph.h:1639
std::atomic< bool > m_negativeWeightsRefused
Definition graph.h:1765
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:507
int m_vertexClicked
Definition graph.h:1645
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:487
qreal minSSC
Definition graph.h:1670
int notConnectedPairsSize() const
Definition graph_distance_cache.cpp:158
void setSymmetricCached(bool v)
Definition graph_distance_cache.cpp:175
int relations()
Returns the count of relationships in this Graph.
Definition graph_relations.cpp:283
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:1637
void setNodeLabelColor(const int &v, const QString &color)
const QList< int > & graphTriadTypeFreqs() const
Definition graph.h:1382
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:181
void relationAddCocitation()
Creates a new symmetric relation by connecting those actors that are cocitated by others....
Definition graph_relations.cpp:392
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:1671
void triadType_examine_MAN_label(int, int, int, GraphVertex *, GraphVertex *, GraphVertex *, QVector< QAtomicInteger< int > > &)
Definition graph_triad_census.cpp:189
qreal variancePRP
Definition graph.h:1662
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
QThread file_parserThread
Definition graph.h:107
bool calculatedSignedDegree
Definition graph.h:1752
bool calculatedPRP
Definition graph.h:1753
H_StrToInt discreteEccentricities
Definition graph.h:1635
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:1774
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
Matrix PNM
Definition graph.h:1625
bool m_verticesCacheCountAll
Definition graph.h:1737
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:1666
int m_graphReciprocityTiesNonSymmetric
Definition graph.h:1725
Matrix & matrixCliqueCoMembership()
Definition graph.h:917
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:546
qreal t_sumIC
Definition graph.h:1669
QMap< int, V_int > m_clustersPerSequence
Definition graph.h:1618
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:4172
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:1589
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:1606
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:1602
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:3525
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:95
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:2056
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:1704
void vertexCreateAtPos(const QPointF &p)
Creates a new vertex in the given position.
Definition graph_vertices.cpp:125
qreal minBPC
Definition graph.h:1679
bool writeClusteringCoefficient(const QString, const bool, const int &format=ReportFormat::Html)
Writes the clustering coefficients to a file.
Definition graph_reports.cpp:3850
qreal meanIC
Definition graph.h:1656
qreal sumPC
Definition graph.h:1689
void relationPrev()
Changes graph to previous relation.
Definition graph_relations.cpp:147
qreal graphDistanceGeodesicSigned(const int &v1, const int &v2, const bool &inverseWeights=true)
Negative-weight-safe variant of graphDistanceGeodesic(), via Johnson's algorithm instead of refusing ...
Definition graph_distance_facade.cpp:60
int classesSPC
Definition graph.h:1699
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:1667
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:1680
qreal variancePP
Definition graph.h:1661
qreal minSDP
Definition graph.h:1664
int vertexEdgesOutbound(int i)
Returns the number of outbound edges (arcs) from vertex v1.
Definition graph_edges.cpp:591
bool calculatedVerticesList
Definition graph.h:1736
qreal meanIRCC
Definition graph.h:1651
qreal maxIndexPC
Definition graph.h:1669
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
bool hasNegativeWeight()
Returns true if the current relation has at least one edge with a negative weight.
Definition graph_state_flags.cpp:94
H_StrToInt discretePRPs
Definition graph.h:1636
void vertexPosSet(const int &v, const int &x, const int &y)
Changes the position of the given vertex.
Definition graph_vertices.cpp:1268
qreal canvasHeight
Definition graph.h:1734
bool symmetricCached() const
Definition graph_distance_cache.cpp:176
bool graphMatrixDistanceGeodesicCreate(const bool &considerWeights=false, const bool &inverseWeights=false, const bool &dropIsolates=false, const bool &allowNegativeWeights=false)
Creates the matrix DM of geodesic distances between vertices.
Definition graph_matrix_distances.cpp:153
qreal sumSEVC
Definition graph.h:1673
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:1700
qreal maxEccentricity
Definition graph.h:1663
qreal minEVC
Definition graph.h:1673
void createMatrixReachability()
Creates the reachability matrix XRM.
Definition graph_matrix_reachability.cpp:31
void signalRelationChangedToMW(const int &relIndex=RAND_MAX)
qreal maxSPC
Definition graph.h:1669
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:1623
qreal sumIC
Definition graph.h:1672
qreal varianceIRCC
Definition graph.h:1651
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:1734
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:867
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:1654
int m_reportsRealPrecision
Definition graph.h:1640
void vertexColorInit(const QString &color)
Graph::vertexColorInit default vertex color initialization.
Definition graph_vertex_style.cpp:275
int minNodeKC
Definition graph.h:1708
qreal t_sumPRP
Definition graph.h:1689
QMultiHash< int, int > m_vertexPairsNotConnected
Definition graph.h:1611
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:1695
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 setUndirected(const bool &toggle=true, const bool &signalMW=true)
Makes the graph undirected or directed.
Definition graph_state_flags.cpp:299
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:193
void resetNegativeCycleDetected()
Resets the negative-cycle refusal flag at the start of a distance computation.
Definition graph_ui_facade.cpp:112
QString initVertexNumberColor
Definition graph.h:1779
qreal minEccentricity
Definition graph.h:1663
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:1689
qreal groupDP
Definition graph.h:1664
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:3342
int maxNodeEVC
Definition graph.h:1707
qreal sumSDP
Definition graph.h:1664
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:1659
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:561
H_StrToInt discreteSDCs
Definition graph.h:1634
H_StrToInt discreteDPs
Definition graph.h:1634
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:194
int graphReciprocityTiesTotal() const
Definition graph_structure_metrics.cpp:362
qreal minPRP
Definition graph.h:1689
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:316
qreal m_graphReciprocityDyad
Definition graph.h:1723
qreal groupCC
Definition graph.h:1666
qreal m_lastKatzAlpha
Definition graph.h:1675
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:6685
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:531
int csRecDepth
Definition graph.h:1776
qreal sumEVC
Definition graph.h:1673
int maxNodeKC
Definition graph.h:1708
int minNodeBPC
Definition graph.h:1709
QString m_fileName
Definition graph.h:1778
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:712
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:77
QList< bool > m_relationsDirected
Definition graph.h:1595
int minNodeEVC
Definition graph.h:1707
qreal minSPC
Definition graph.h:1669
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:40
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:519
qreal edgeWeight(const int &v1, const int &v2) const
Returns the weight of the edge v1->v2.
Definition graph_edges.cpp:641
void setNodeShape(const int &v, const QString &shape, const QString &iconPath=QString())
qreal maxIndexCC
Definition graph.h:1666
qreal nomIRCC
Definition graph.h:1667
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:1615
int minNodeEccentricity
Definition graph.h:1702
void vertexLabelColorInit(QString color)
Graph::vertexLabelColorInit Changes the default vertex label color.
Definition graph_vertex_style.cpp:550
bool calculatedAdjacencyMatrix
Definition graph.h:1738
GraphConnectivityResult graphConnectivity(bool respectDirection)
Global vertex connectivity kappa(G), computed via Esfahanian & Hakimi's (1984) reduced-pair-set algor...
Definition graph_connectivity.cpp:431
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:265
qreal nomPRC
Definition graph.h:1689
bool isModified() const
Returns true of graph is modified (edges/vertices added/removed).
Definition graph_metadata.cpp:236
H_StrToInt discreteBCs
Definition graph.h:1634
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:1642
QThread * getThread() const
Definition graph_ui_facade.cpp:22
void addToDistanceSum(qreal delta)
Definition graph_distance_cache.cpp:192
ReportFormat m_reportsOutputFormat
Definition graph.h:1643
QString htmlEscaped(QString str) const
Helper method, returns a nice qstring where all html special chars are encoded.
Definition graph_type_strings.cpp:269
int classesSDC
Definition graph.h:1695
void edgeFilterByQuery(const GraphQuery &query)
Shows only edges whose custom attributes satisfy ALL conditions in query.
Definition graph_query_filters.cpp:142
const QMap< int, V_int > & graphClustersPerSequence() const
Definition graph.h:1370
int initVertexSize
Definition graph.h:1714
const QHash< int, int > & vertexComponentId() const
Definition graph.h:871
QList< QString > m_relationsList
Definition graph.h:1594
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:653
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:1721
qreal sumBPC
Definition graph.h:1679
int m_graphReciprocityPairsReciprocated
Definition graph.h:1727
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:1650
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:457
QList< int > m_verticesList
Definition graph.h:1601
qreal nomSBC
Definition graph.h:1668
QString initVertexLabelColor
Definition graph.h:1779
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:1696
void resetDistanceCentralityCacheFlags()
Definition graph_distance_cache.cpp:166
qreal meanSBC
Definition graph.h:1652
bool calculatedPN
Definition graph.h:1750
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:265
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:308
QString vertexShapeIconPath(const int &v)
Returns the IconPath of vertex v1.
Definition graph_vertex_style.cpp:153
int classesEccentricity
Definition graph.h:1702
int graphWeaklyConnectedComponentsCached() const
Definition graph_distance_cache.cpp:180
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:1281
qreal varianceSBC
Definition graph.h:1652
int classesEC
Definition graph.h:1701
void statusMessage(const QString &message)
qreal minKC
Definition graph.h:1674
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
qreal 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:395
Matrix & matrixAdjacencyInverse()
Definition graph.h:911
qreal meanKC
Definition graph.h:1658
QString m_graphName
Definition graph.h:1778
int maxNodeSBC
Definition graph.h:1698
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:1624
int initVertexLabelDistance
Definition graph.h:1717
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
bool negativeCycleDetected() const
Returns true if the most recent negative-weight-safe distance computation refused to run because the ...
Definition graph_ui_facade.cpp:120
int maxNodeSPC
Definition graph.h:1699
bool order
Definition graph.h:1718
void resetNegativeWeightsDetected()
Resets the negative-edge-weight refusal flag at the start of a distance computation.
Definition graph_ui_facade.cpp:86
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:1604
qreal denomEVC
Definition graph.h:1673
qreal m_graphDiameter
Definition graph.h:1715
int classesKC
Definition graph.h:1708
Matrix & matrixWalks()
Definition graph.h:915
bool initEdgeWeightNumbers
Definition graph.h:1719
qreal graphReciprocityDyad() const
Dyad reciprocity: fraction of tied actor pairs whose connection is reciprocated. Distinct from graphR...
Definition graph_structure_metrics.cpp:358
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:620
void setConnectedCached(bool v)
Definition graph_distance_cache.cpp:178
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:94
qreal maxSBC
Definition graph.h:1668
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:1668
bool calculatedGraphSymmetry
Definition graph.h:1755
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:148
H_StrToInt discreteEVCs
Definition graph.h:1636
int m_totalEdges
Definition graph.h:1714
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)
QVector< int > compactedMatrixIndex(const bool &dropIsolates) const
Maps each vertex's position in m_graph to its compacted row/column index in an N-by-N Matrix,...
Definition graph_matrix_distances.cpp:39
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:2245
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
qreal graphDiameterSigned(const bool inverseWeights)
Negative-weight-safe variant of graphDiameter(), via Johnson's algorithm instead of refusing on a neg...
Definition graph_distance_facade.cpp:408
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
Matrix & matrixShortestPaths()
Definition graph.h:913
qreal varianceSPC
Definition graph.h:1655
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:4695
QMap< QString, V_int > m_clustersByName
Definition graph.h:1620
void setNegativeCycleDetected()
Set by DistanceEngine when its negative-weight-safe path finds a reachable negative cycle.
Definition graph_ui_facade.cpp:128
qreal maxKC
Definition graph.h:1674
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:56
qreal varianceEC
Definition graph.h:1654
void setDiameterCached(qreal v)
Definition graph_distance_cache.cpp:182
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:1344
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:1671
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:1671
QString htmlHead
Definition graph.h:1782
~Graph()
Destroys the Graph object.
Definition graph.cpp:290
qreal minSCC
Definition graph.h:1666
void signalLayoutFinished()
int minNodeIRCC
Definition graph.h:1697
void createMatrixSignedPN(const bool dropIsolates=false)
Builds the signed-network matrix A = P - 2N (WS18 P3, PN centrality) into PNM, where P/N are the posi...
Definition graph_matrix_adjacency.cpp:147
qreal sumIRCC
Definition graph.h:1667
void vertexLabelDistanceSet(const int &v, const int &newDistance)
Changes the distance.of vertex v label from the vertex.
Definition graph_vertex_style.cpp:560
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:1634
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:602
QList< FilterSpec > filterSpecList() const
Returns the FilterSpec list in application order (oldest first).
Definition graph_node_filters.cpp:829
qreal denomSBC
Definition graph.h:1668
void setNodeNumberColor(const int &v, const QString &color)
qreal maxEVC
Definition graph.h:1673
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:281
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:1623
std::atomic< bool > m_progressCanceled
Definition graph.h:1761
bool negativeWeightsDetected() const
Returns true if the most recent default (Dijkstra) distance computation refused to run because the ne...
Definition graph_ui_facade.cpp:96
void signalWebCrawlParse(QNetworkReply *reply)
int m_graphModStatus
Definition graph.h:1712
void randomizeThings()
Adds a little universal randomness :).
Definition graph_random_networks.cpp:22
bool calculatedGraphWeighted
Definition graph.h:1756
int relationCurrent()
Gets the current relation number.
Definition graph_relations.cpp:210
qreal minIRCC
Definition graph.h:1667
void setDirected(const bool &toggle=true, const bool &signalMW=true)
Toggles the graph directed or undirected.
Definition graph_state_flags.cpp:274
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:914
qreal maxSSC
Definition graph.h:1670
qreal maxSDP
Definition graph.h:1664
bool isUndirected()
Returns true if graph is undirected.
Definition graph_state_flags.cpp:375
qreal groupEVC
Definition graph.h:1673
GraphConnectivityResult graphConnectivityNaive(bool respectDirection)
Global vertex connectivity kappa(G), computed via the naive full-pairwise-minimum sweep: iterate ever...
Definition graph_connectivity.cpp:560
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:229
int classesSDP
Definition graph.h:1694
void layoutEgoRadial(const int egoVertex)
Ego-centered radial layout.
Definition graph_layouts_basic.cpp:688
qreal varianceSCC
Definition graph.h:1650
qreal graphGeodesicsCountCached() const
Returns the number of geodesics (shortest paths) accumulated by DistanceEngine, without recalculating...
Definition graph_distance_facade.cpp:781
int m_fieldWidth
Definition graph.h:1645
Matrix SIGMA
Definition graph.h:1623
int maxNodePP
Definition graph.h:1705
void vertexLabelSizeInit(int newSize)
Graph::vertexLabelSizeInit Changes the default size of vertex labels.
Definition graph_vertex_style.cpp:458
qreal varianceIC
Definition graph.h:1656
QMultiMap< int, L_int > m_cliques
Definition graph.h:1614
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:487
int m_crawler_max_urls
Definition graph.h:1591
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:1668
bool calculatedDP
Definition graph.h:1751
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:1509
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:1623
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:422
void setReportsChartType(const int &type)
Sets the chart type in reports.
Definition graph_reports_settings.cpp:54
qreal varianceEVC
Definition graph.h:1657
qreal canvasMinDimension() const
Gets the min dimensions of the canvas.
Definition graph_canvas.cpp:89
int classesBPC
Definition graph.h:1709
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:5255
bool m_graphIsDirected
Definition graph.h:1770
bool calculatedDistances
Definition graph.h:1738
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:162
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:1709
void notConnectedPairsInsert(int from, int to)
Definition graph_distance_cache.cpp:153
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
int graphReciprocityTiesReciprocated() const
Definition graph_structure_metrics.cpp:360
qreal maxSDC
Definition graph.h:1665
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:4505
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:251
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:1778
qreal m_graphGeodesicsCount
Definition graph.h:1720
QList< int > triadTypeFreqs
Definition graph.h:1599
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:35
qreal groupSBC
Definition graph.h:1668
QHash< int, Matrix > m_apspDist
Definition graph.h:1630
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:960
int graphStronglyConnectedComponents()
Counts strongly connected components using Tarjan's algorithm.
Definition graph_distance_facade.cpp:641
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
void centralitySignedDegree(const bool &considerWeights=true, const bool &dropIsolates=false)
Calculates signed degree centrality: out-degree split by tie sign, in four variants.
Definition graph_centrality_signed_degree.cpp:56
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
void centralityPN(const PNMode mode=PNMode::All, const bool &dropIsolates=false)
Computes PN Centrality (Everett & Borgatti 2014) of each vertex.
Definition graph_centrality_pn.cpp:54
Matrix invAM
Definition graph.h:1623
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:5064
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()
Computes the graph's reciprocity and returns the arc (tie-level) ratio.
Definition graph_structure_metrics.cpp:209
VList m_graph
Definition graph.h:1583
void centralityEigenvector(const bool &considerWeights=false, const bool &inverseWeights=false, const bool &dropIsolates=false)
Computes Eigenvector centrality.
Definition graph_centrality.cpp:340
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:1655
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:1723
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:1722
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
GraphConnectivityStatus
Definition graph.h:893
@ Canceled
Definition graph.h:895
@ Ok
Definition graph.h:894
Matrix & matrixTotalWalks()
Definition graph.h:916
void setEdgeColor(const int &v1, const int &v2, const QString &color)
qreal graphDiameterCached() const
Returns the diameter of the graph, without recalculating it.
Definition graph_distance_facade.cpp:515
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:1692
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:1635
bool m_lastComputeWasNegativeWeightSafe
Definition graph.h:1745
int inboundEdgesVert
Definition graph.h:1732
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:2873
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:141
void signalDatasetDescription(QString)
qreal maxIndexSC
Definition graph.h:1670
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:195
void vertexCustomAttributesSet(const int &v1, const QHash< QString, QString > &customAttributes)
Sets custom attributes for a specified vertex.
Definition graph_vertex_style.cpp:614
qreal clusteringCoefficientLocal(const int &v1, const bool &isSymmetric)
Returns the local clustering coefficient (CLUCOF) of vertex v1.
Definition graph_clustering_coefficients.cpp:76
qreal computeOptimalDistance(const int &V)
Computes the optimal inter-vertex distance for force-directed layouts.
Definition graph_layouts_force.cpp:853
bool writeCentralitySignedDegree(const QString, const bool weights, const bool dropIsolates, const int &format=ReportFormat::Html)
Writes the Signed Degree Centrality (WS18 P3) to a file.
Definition graph_reports.cpp:1590
int minNodeSDC
Definition graph.h:1695
const QList< qreal > & graphClusteringLevels() const
Definition graph.h:1371
QString initVertexIconPath
Definition graph.h:1781
H_StrToInt discreteSCs
Definition graph.h:1634
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:1653
bool isCentralityIndexComputed(const IndexType index) const
Returns true if the given centrality/prestige index has been computed.
Definition graph_centrality.cpp:915
bool writeCentralityPN(const QString, const PNMode mode=PNMode::All, const bool &dropIsolates=false, const int &format=ReportFormat::Html)
Writes PN Centrality (WS18 P3, Everett & Borgatti 2014) to a file.
Definition graph_reports.cpp:1698
int m_graphReciprocityTiesReciprocated
Definition graph.h:1724
qreal graphSumDistanceCached() const
Returns the sum of all finite geodesic distances accumulated by DistanceEngine, without recalculating...
Definition graph_distance_facade.cpp:772
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:1692
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:1637
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:136
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:1673
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:407
int graphReciprocityPairsReciprocated() const
Definition graph_structure_metrics.cpp:364
QStack< GraphVisibilitySnapshot > m_visibilityHistory
Definition graph.h:1609
qreal graphDistanceGeodesicAverageSigned(const bool inverseWeights, const bool dropIsolates)
Negative-weight-safe variant of graphDistanceGeodesicAverage(), via Johnson's algorithm instead of re...
Definition graph_distance_facade.cpp:444
qreal sumKC
Definition graph.h:1674
qreal denomIRCC
Definition graph.h:1667
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:1659
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:1592
int classesIC
Definition graph.h:1703
ModStatus
Definition graph.h:427
@ EdgeMetadata
Definition graph.h:432
@ SavedUnchanged
Definition graph.h:429
@ MinorOptions
Definition graph.h:430
@ VertexPositions
Definition graph.h:433
@ VertexEdgeCount
Definition graph.h:437
@ VertexCount
Definition graph.h:435
@ NewNet
Definition graph.h:428
@ EdgeCount
Definition graph.h:436
@ VertexMetadata
Definition graph.h:431
@ MajorChanges
Definition graph.h:434
bool calculatedIRCC
Definition graph.h:1753
bool m_graphHasVertexCustomIcons
Definition graph.h:1730
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:1139
bool calculatedKC
Definition graph.h:1748
bool graphHasVertexCustomIcons() const
Returns true if at least one vertex has a 'custom' shape (therefore a custom icon).
Definition graph_vertex_style.cpp:162
bool calculatedGraphHasNegativeWeight
Definition graph.h:1757
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:4912
H_StrToInt discreteICs
Definition graph.h:1636
qreal meanSDC
Definition graph.h:1649
void addGuideCircle(const double &, const double &, const double &)
QString initVertexColor
Definition graph.h:1779
QDateTime actualDateTime
Definition graph.h:1784
bool calculatedCentralities
Definition graph.h:1738
void signalGraphSavedStatus(const int &status)
qreal maxCLC
Definition graph.h:1692
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:1770
bool calculatedTriad
Definition graph.h:1754
Matrix & matrixDistances()
Definition graph.h:912
qreal groupPP
Definition graph.h:1690
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, const bool &allowNegativeWeights=false)
Computes and writes the specified matrix of the social network to an HTML report file.
Definition graph_reports.cpp:5755
Clustering
Definition graph.h:443
@ Single_Linkage
Definition graph.h:446
@ Average_Linkage_UPGMA
Definition graph.h:459
@ Complete_Linkage
Definition graph.h:449
@ Average_Linkage
Definition graph.h:454
bool graphTriadCensus()
Conducts a triad census and updates QList::triadTypeFreqs, which is the list carrying all triad type ...
Definition graph_triad_census.cpp:42
NodeConnectivityStatus
Definition graph.h:877
@ Invalid
Definition graph.h:881
@ Adjacent
Definition graph.h:879
@ Ok
Definition graph.h:878
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:176
int classesSBC
Definition graph.h:1698
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:373
Matrix DM
Definition graph.h:1623
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:483
void relationCurrentRename(const QString &newName)
Overload. Renames current relation to newName, without emitting any signal to MW.
Definition graph_relations.cpp:273
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:1669
int maxNodeEccentricity
Definition graph.h:1702
int m_fileFormat
Definition graph.h:1645
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
std::atomic< bool > m_negativeCycleDetected
Definition graph.h:1769
qreal varianceSSC
Definition graph.h:1653
qreal maxSCC
Definition graph.h:1666
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:1732
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:524
int graphClusteringMethodStrToType(const QString &method) const
Helper method, return clustering method type from the human readable name of it.
Definition graph_type_strings.cpp:242
qreal groupEC
Definition graph.h:1671
int minNodeSSC
Definition graph.h:1700
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:1704
int minNodeDP
Definition graph.h:1694
bool vertexFindByNumber(const QStringList &numList)
Finds vertices in strList by their number.
Definition graph_vertices.cpp:777
qreal varianceKC
Definition graph.h:1658
void signalNodesFound(const QList< int > foundList)
bool initEdgeLabels
Definition graph.h:1719
int getGeodesicsCount()
Returns the number of geodesics (shortest-paths) in the graph.
Definition graph_distance_facade.cpp:468
int classesPP
Definition graph.h:1705
bool graphBellmanFordPotentials(const bool inverseWeights, QVector< qreal > &outPotentials)
Computes Johnson's-algorithm potentials h(v) for every vertex - a standalone probe,...
Definition graph_distance_cache.cpp:136
qreal sumSPC
Definition graph.h:1669
H_StrToInt discreteKCs
Definition graph.h:1637
QString htmlHeadLight
Definition graph.h:1782
void centralityDegree(const bool &considerWeights=true, const bool &dropIsolates=false)
Calculates the degree (outDegree) centrality of each vertex - diagonal included.
Definition graph_centrality.cpp:510
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:1660
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:1245
bool calculatedVertices
Definition graph.h:1736
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:910
H_StrToInt discreteIRCCs
Definition graph.h:1635
bool calculatedPP
Definition graph.h:1751
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)
bool hasCalculatedTriadCensus() const
Definition graph.h:1383
bool calculatedVerticesSet
Definition graph.h:1736
void relationsClear()
Clears relationships in this Graph.
Definition graph_relations.cpp:291
qreal meanPP
Definition graph.h:1661
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:3105
void vertexNumberDistanceInit(const int &distance)
Changes the initial distance of vertex numbers.
Definition graph_vertex_style.cpp:379
int minNodeCLC
Definition graph.h:1693
int vertexNumberMax()
Returns the number of the last vertex in the graph.
Definition graph_vertices.cpp:613
qreal meanPRP
Definition graph.h:1662
qreal nomIC
Definition graph.h:1672
double canvasMaxRadius() const
Gets the max radius of the canvas.
Definition graph_canvas.cpp:80
H_StrToInt discretePCs
Definition graph.h:1636
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:1728
bool calculatedEVC
Definition graph.h:1747
void resetDistanceAggregates()
Definition graph_distance_cache.cpp:184
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:69
bool writeTriadCensus(const QString, const bool, const int &format=ReportFormat::Html)
Definition graph_reports.cpp:4011
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
Matrix & matrixSignedPN()
Definition graph.h:918
void vertexLabelsVisibilitySet(bool toggle)
qreal maxBPC
Definition graph.h:1679
QString htmlEnd
Definition graph.h:1782
qreal maxIC
Definition graph.h:1672
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:2486
int maxNodePRP
Definition graph.h:1704
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:162
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:1703
int maxNodeIRCC
Definition graph.h:1697
qreal meanEVC
Definition graph.h:1657
void relationAdd(const QString &relName, const bool &changeRelation=false)
Adds a new relation to the graph.
Definition graph_relations.cpp:183
int m_graphWeaklyConnectedComponents
Definition graph.h:1772
int classesIRCC
Definition graph.h:1697
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:5426
bool calculatedEdges
Definition graph.h:1735
bool initShowZeroWeightEdges
Definition graph.h:1780
bool calculatedDC
Definition graph.h:1751
int maxNodeCLC
Definition graph.h:1693
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:1670
qreal sumSDC
Definition graph.h:1665
void graphDistancesGeodesicSigned(const bool &computeCentralities=false, const bool &inverseWeights=true, const bool &dropIsolates=false)
Negative-weight-safe variant of graphDistancesGeodesic(), via Johnson's algorithm (DistanceEngine::be...
Definition graph_distance_cache.cpp:117
QList< qreal > m_clusteringLevel
Definition graph.h:1617
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:1746
int minNodeSPC
Definition graph.h:1699
qreal minSDC
Definition graph.h:1665
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:2685
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:301
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:55
qreal nomSCC
Definition graph.h:1666
void vertexIsolatedAllToggle(const bool &toggle)
Toggles the status of all isolated vertices (those without links).
Definition graph_vertices.cpp:1216
QHash< int, Matrix > m_apspSigma
Definition graph.h:1631
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:1286
qreal sumDP
Definition graph.h:1664
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:6507
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:1692
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:1665
bool isDirected()
Returns true if graph is directed.
Definition graph_state_flags.cpp:364
qreal minPP
Definition graph.h:1690
qreal varianceCLC
Definition graph.h:1692
Parser * file_parser
Definition graph.h:1585
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:263
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:189
IndexType
Centrality / prestige index identifiers.
Definition global.h:118
static const int SUBGRAPH_CLIQUE
Definition global.h:210
static const int MATRIX_ADJACENCY
Definition global.h:219
ReportFormat
Output format for analysis reports: a full HTML document (default), or a lean, table-only CSV file (n...
Definition global.h:179
@ Html
Definition global.h:180
@ Directed
Definition global.h:108
PNMode
Directedness mode for PN Centrality (WS18 P3, Everett & Borgatti 2014). An undirected graph is only e...
Definition global.h:155
@ All
Undirected graphs only.
Definition global.h:156
ChartType
Chart style for prominence distribution visualizations.
Definition global.h:166
QPair< int, int > SelectedEdge
Identifies a selected edge by its two endpoint vertex numbers.
Definition global.h:256
#define SOCNETV_USE_NAMESPACE
Definition global.h:28
QHash< int, int > H_Int
Definition graph.h:86
QList< QString > V_str
Definition graph.h:94
QList< int > L_int
Definition graph.h:92
QPair< int, pair_f_b > pair_i_fb
Definition graph.h:89
QHash< QString, bool > H_StrToBool
Definition graph.h:91
QHash< qreal, int > H_f_i
Definition graph.h:87
QList< GraphVertex * > VList
Definition graph.h:84
QMultiHash< int, pair_i_fb > H_edges
Definition graph.h:90
QList< int > V_int
Definition graph.h:93
QPair< qreal, bool > pair_f_b
Definition graph.h:88
QHash< QString, int > H_StrToInt
Definition graph.h:85
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:900
GraphConnectivityStatus status
Definition graph.h:901
int value
Definition graph.h:902
Definition graph.h:468
QHash< int, bool > nodeVisible
Definition graph.h:469
bool active
Definition graph.h:471
QHash< QPair< int, int >, bool > arcVisible
Definition graph.h:470
FilterSpec spec
Definition graph.h:472
Definition graph.h:885
int value
Definition graph.h:887
NodeConnectivityStatus status
Definition graph.h:886
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...