Repository navigation
Expand file tree
/
Copy pathcolldetection.h
More file actions
76 lines (68 loc) · 2.48 KB
/
Copy pathcolldetection.h
File metadata and controls
76 lines (68 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#ifndef COLLDETECTION_H
#define COLLDETECTION_H
#include <vector>
#include <set>
#include <unordered_set>
#include "utils.h"
#include "basic_c_fun/basic_surf_objs.h"
#include "neuron_editing/neuron_format_converter.h"
#include <QNetworkRequest>
#include <QEventLoop>
#include <QNetworkReply>
#include <QHttpMultiPart>
#include <QFile>
#include "json.hpp"
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <algorithm>
#include <cmath>
class CollServer;
class CollDetection : public QObject
{
Q_OBJECT
private:
CollServer* myServer;
QNetworkAccessManager* accessManager;
QString SuperUserHostAddress;
QString BrainTellHostAddress;
unordered_set<string> detectedTipPoints;
set<set<string>> detectedCrossingPoints;
vector<NeuronSWC> tipPoints;
public:
static XYZ maxRes;
static XYZ subMaxRes;
QTimer *timerForFilterTip;
explicit CollDetection(CollServer* curServer, QObject* parent=nullptr);
~CollDetection(){}
XYZ getSomaCoordinate(QString apoPath);
vector<NeuronSWC> specStructsDetection(V_NeuronSWC_list& inputSegList, double dist_thresh=1.5);
vector<NeuronSWC> loopDetection(V_NeuronSWC_list& inputSegList, double dist_thresh=8);
vector<NeuronSWC> tipDetection(V_NeuronSWC_list inputSegList, bool removeFlag, map<string, set<size_t>> allPoint2SegIdMap, double dist_thresh=30);
QJsonArray crossingDetection();
void handleMulFurcation(vector<NeuronSWC>& outputSpecialPoints, int& count, double dist_thre=8);
void handleLoop(vector<NeuronSWC>& outputSpecialPoints, int& count);
void handleNearBifurcation(vector<NeuronSWC>& bifurPoints, int& count);
void handleTip(vector<NeuronSWC>& tipPoints);
void filterTip(vector<NeuronSWC>& markpoints);
void handleCrossing(QJsonArray& json);
void sortSWC(QString fileOpenName, QString fileSaveName, double thres=1000000000, V3DLONG rootid=1000000000);
void setSWCRadius(QString filePath, int r);
void getImageRES();
void getImageMaxRES();
void getApoForCrop(QString fileSaveName, vector<NeuronSWC> tipPoints);
void removeShortSegs(V_NeuronSWC_list inputSegList, double dist_thre=8);
void removeOverlapSegs(V_NeuronSWC_list inputSegList);
signals:
void removeErrorSegsDone();
public slots:
void detectWholeAtStart();
void detectOthers();
void detectLoops();
void detectTips();
void detectTipsWhole();
void detectCrossings();
void detectOthersWhole();
void removeErrorSegs(bool);
};
#endif // COLLDETECTION_H