-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInt2MonNum_DoubleSteps.m
More file actions
126 lines (93 loc) · 3.23 KB
/
Int2MonNum_DoubleSteps.m
File metadata and controls
126 lines (93 loc) · 3.23 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
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
124
125
126
function [Up, Down, dSt, Y1c,StepFitCorr, Frac_sidotri_up_down,meanss,modess,TT] = Int2MonNum_DoubleSteps(Steps)
% This program converts the steps found using a step finding algorithm
% into a stepcase trace (i.e. monomer number vs. time trace).
% Alvaro Crevenna, Oct 6th 2014
StepFit = Steps;
TSH = 1.64;
T2 = 1.64+1;
YYY = diff(Steps);
dSt1 = find(YYY);
Up1 = find(YYY>0);
Down1 = find(YYY<0);
YY = YYY(YYY>0);
modess = mode(YY);
meanss = mean(YY);
% TT = mode(YY);
if mode(YY) > mean(YY)
TT = mode(YY)/2;
else % mode(YY) < mean(YY)
TT = mode(YY);
end
% TT = 1;
YYU = abs(Steps(Up1(:)+1) - Steps(Up1(:)));
[Up_double] = find(YYU>TSH*TT & YYU<T2*TT);
[Up_triple] = find(YYU>=T2*TT);
% [Up_tetraple] = find(YYU>3.5*mean(YY));
[Up_single] = find(YYU<TSH*TT);
YYD = abs(Steps(Down1(:)) - Steps(Down1(:)+1));
[Do_double] = find(YYD>TSH*TT & YYD<T2*TT);
[Do_triple] = find(YYD>=T2*TT);
[Do_single] = find(YYD<TSH*TT);
Ndoubleup = length(Up_double);
Ntripleup = length(Up_triple);
Nsingleup = length(Up_single);
Nges = Ndoubleup + Ntripleup + Nsingleup;
Fracdoubleup = Ndoubleup * 100/Nges;
Fractripleup = Ntripleup * 100/Nges;
Fracsingleup = Nsingleup * 100/Nges;
Ndoubledo = length(Do_double);
Ntripledo = length(Do_triple);
Nsingledo = length(Do_single);
Nges = Ndoubledo + Ntripledo + Nsingledo;
Fracdoubledo = Ndoubledo * 100/Nges;
Fractripledo = Ntripledo * 100/Nges;
Fracsingledo = Nsingledo * 100/Nges;
Frac_sidotri_up_down = [Fracsingleup Fracdoubleup Fractripleup Fracsingledo Fracdoubledo Fractripledo];
% Up = Up + 1;
% Down = Down + 1;
Le = length(Steps);
Y1 = zeros(Le,1);
% Up steps
if ~isempty(Up_single)
Y1(Up1(Up_single)+1) = 1;
end
if isempty(Up_double) == 0
Y1(Up1(Up_double)) = 1;
Y1(Up1(Up_double)+1) = 1;
StepFit(Up1(Up_double)+1) = StepFit(Up1(Up_double)) + ((StepFit(Up1(Up_double)+1) - StepFit(Up1(Up_double))) *0.5);
end
if isempty(Up_triple) == 0
Y1(Up1(Up_triple)) = 1;
Y1(Up1(Up_triple)+1) = 1;
Y1(Up1(Up_triple)+2) = 1;
StepFit(Up1(Up_triple)+1) = StepFit(Up1(Up_triple)) + ((StepFit(Up1(Up_triple)+1) - StepFit(Up1(Up_triple))) *0.33);
StepFit(Up1(Up_triple)+2) = StepFit(Up1(Up_triple)+1) + ((StepFit(Up1(Up_triple)+1) - StepFit(Up1(Up_triple))) *0.66);
end
% Down steps
if isempty(Do_single) == 0
Y1(Down1(Do_single)+1) = -1;
end
if isempty(Do_double) == 0
Y1(Down1(Do_double)) = -1;
Y1(Down1(Do_double)+1) = -1;
StepFit(Down1(Do_double)+1) = StepFit(Down1(Do_double)) -((StepFit(Down1(Do_double)) - StepFit(Down1(Do_double)+1))*0.5);
end
if isempty(Do_triple) == 0
Y1(Down1(Do_triple)) = -1;
Y1(Down1(Do_triple)+1) = -1;
Y1(Down1(Do_triple)+2) = -1;
StepFit(Down1(Do_triple)+1) = StepFit(Down1(Do_triple)) - ((StepFit(Down1(Do_triple)) - StepFit(Down1(Do_triple)+1)) *0.333);
StepFit(Down1(Do_triple)+2) = StepFit(Down1(Do_triple)+1) - ((StepFit(Down1(Do_triple)) - StepFit(Down1(Do_triple)+1)) *0.666);
end
Y1c = cumsum(Y1);
dSt = find(diff(Y1c));
Up = find(diff(Y1c)>0);
Down = find(diff(Y1c)<0);
StepFitCorr = StepFit;
% Y1c = Y1d - min(Y1d);
%
% figure
% plot(Y1c,'')
% hold on
% plot(Steps,'r')
% hold off