-
Notifications
You must be signed in to change notification settings - Fork 2
/
Comet.java
123 lines (111 loc) · 3.66 KB
/
Comet.java
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/**
* Comet.java
* Created in 2012 by Benjamin Gyori
* National University of Singapore
* e-mail: [email protected]
*
* Comet.java defines the Comet class used to represent a
* comet with its parameters and status flag.
*
* This plugin is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3
* as published by the Free Software Foundation.
*
* This work is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* When you use this plugin for your work, please cite
* Gyori BM, Venkatachalam G, et al. OpenComet: An automated tool for
* comet assay image analysis
* You should have received a copy of the GNU General Public License
* along with this plugin; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
import ij.gui.Roi;
public class Comet {
public Comet(Roi roi){
this.cometRoi = (Roi)roi.clone();
this.status = Comet.VALID;
}
public int id;
public int status;
public static final int VALID = 1;
public static final int INVALID = 2;
public static final int OUTLIER = 4;
public static final int DELETED = 8;
public Roi cometRoi;
public Roi headRoi;
public Roi oldRoi;
// Position in image
public int x,y, height, width;
// Profiles
public double[] cometProfile;
public double[] bgProfile;
public double[] headProfile;
public double[] tailProfile;
public double profileMax;
// Output measurements
public double cometArea;
public double cometIntensity;
public double cometLength;
public double cometDNA;
public double headArea;
public double headIntensity;
public double headLength;
public double headDNA;
public double headDNAPercent;
public int headCentroid;
public double tailArea;
public double tailLength;
public double tailIntensity;
public double tailDNA;
public double tailDNApercent;
public int tailCentroid;
public double tailMoment;
public double tailOliveMoment;
// Internal parameters
public int[] histogram;
public double area;
public double areaConvexHull;
public double mean;
public double convexity;
public double symmetry;
public double perimeter;
public double circularity;
public double centerlineDiff;
public double hratio;
public int headFrontCenterY; // are these needed?
public int headRoiCenterY;
public String getMeasurementString(String sep){
String flagStr;
if(status==VALID)
flagStr = "normal";
else if (status==OUTLIER)
flagStr = "outlier";
else if (status==DELETED)
flagStr = "deleted";
else
return "";
String result = id + sep
+ flagStr + sep
+ cometArea + sep
+ cometIntensity + sep
+ cometLength + sep
+ cometDNA + sep
+ headArea + sep
+ headIntensity + sep
+ headLength + sep
+ headDNA + sep
+ headDNAPercent + sep
+ tailArea + sep
+ tailIntensity + sep
+ tailLength + sep
+ tailDNA + sep
+ tailDNApercent + sep
+ tailMoment + sep
+ tailOliveMoment;
return result;
}
}