1 /******************************************************************************
2
3 # # # #### ##### #### #### ##### # # ####
4 # # # # # # # # # # # ## ## # #
5 ###### # #### # # # # # # # ## # #
6 # # # # # # # # ### ##### # # ### #
7 # # # # # # # # # # # # # # ### # #
8 # # # #### # #### #### # # # # ### ####
9
10 ******************************************************************************/
11 /* This file is part of MAPMAKER 3.0b, Copyright 1987-1992, Whitehead Institute
12 for Biomedical Research. All rights reserved. See READ.ME for license. */
13
14 #define INC_LIB
15 #define INC_MISC
16 #define INC_HISTO
17 #include "system.h"
18
19
20 void print_histogram();
21
make_histo(dist,dist_size)22 void make_histo(dist, dist_size)
23 real *dist;
24 int dist_size;
25 {
26 int i, intervals;
27 int more_than_2_25=0,more_than_2=0,more_than_1_75=0,more_than_1_5=0;
28 int more_than_1_25=0,more_than_1=0,more_than_75=0,more_than_5=0;
29 int more_than_25=0,more_than_0=0,less_than_25=0,less_than_5=0;
30 int less_than_75=0,less_than_1=0,less_than_1_25=0,less_than_1_5=0;
31 int less_than_1_75=0,less_than_2=0,less_than_2_25=0,less_than_2_5=0;
32 real probab,mean,sigma,sub_total=0;
33
34 mean = rmean(dist,dist_size);
35 for (i=0;i<dist_size;i++) sub_total += (dist[i]-mean)*(dist[i]-mean);
36 sigma = sub_total/dist_size;
37
38 /* this first loop asertains the size of each interval for the histogram */
39 for (i=0;i<dist_size;i++) {
40 if (dist[i]>=mean-2.5*sigma&&dist[i]<mean-2.25*sigma)
41 more_than_2_25++;
42 if (dist[i]>=mean-2.25*sigma&&dist[i]<mean-2*sigma)
43 more_than_2++;
44 if (dist[i]>=mean-2*sigma&&dist[i]<mean-1.75*sigma)
45 more_than_1_75++;
46 if (dist[i]>=mean-1.75*sigma&&dist[i]<mean-1.5*sigma)
47 more_than_1_5++;
48 if (dist[i]>=mean-1.5*sigma&&dist[i]<mean-1.25*sigma)
49 more_than_1_25++;
50 if (dist[i]>=mean-1.25*sigma&&dist[i]<mean-sigma)
51 more_than_1++;
52 if (dist[i]>=mean-sigma&&dist[i]<mean-.75*sigma)
53 more_than_75++;
54 if (dist[i]>=mean-.75*sigma&&dist[i]<mean-.5*sigma)
55 more_than_5++;
56 if (dist[i]>=mean-.5*sigma&&dist[i]<mean-.25*sigma)
57 more_than_25++;
58 if (dist[i]>=mean-.25*sigma&&dist[i]<mean)
59 more_than_0++;
60 if (dist[i]>=mean&&dist[i]<mean+.25*sigma)
61 less_than_25++;
62 if (dist[i]>=mean+.25*sigma&&dist[i]<mean+.5*sigma)
63 less_than_5++;
64 if (dist[i]>=mean+.5*sigma&&dist[i]<mean+.75*sigma)
65 less_than_75++;
66 if (dist[i]>=mean+.75*sigma&&dist[i]<mean+sigma)
67 less_than_1++;
68 if (dist[i]>=mean+sigma&&dist[i]<mean+1.25*sigma)
69 less_than_1_25++;
70 if (dist[i]>=mean+1.25*sigma&&dist[i]<mean+1.5*sigma)
71 less_than_1_5++;
72 if (dist[i]>=mean+1.5*sigma&&dist[i]<mean+1.75*sigma)
73 less_than_1_75++;
74 if (dist[i]>=mean+1.75*sigma&&dist[i]<mean+2*sigma)
75 less_than_2++;
76 if (dist[i]>=mean+2*sigma&&dist[i]<mean+2.25*sigma)
77 less_than_2_25++;
78 if (dist[i]>=mean+2.25*sigma&&dist[i]<mean+2.5*sigma)
79 less_than_2_5++;
80 }
81
82 /* now we will print out the histogram, with a * for each .02 in prob */
83
84 probab=(real)(more_than_2_25)/(real)(dist_size);
85 intervals=(int)(probab/.004);
86 print_histogram(intervals,"-2.50");
87 probab=(real)(more_than_2)/(real)(dist_size);
88 intervals=(int)(probab/.004);
89 print_histogram(intervals,"-2.25");
90 probab=(real)(more_than_1_75)/(real)(dist_size);
91 intervals=(int)(probab/.004);
92 print_histogram(intervals,"-2.00");
93 probab=(real)(more_than_1_5)/(real)(dist_size);
94 intervals=(int)(probab/.004);
95 print_histogram(intervals,"-1.75");
96 probab=(real)(more_than_1_25)/(real)(dist_size);
97 intervals=(int)(probab/.004);
98 print_histogram(intervals,"-1.50");
99 probab=(real)(more_than_1)/(real)(dist_size);
100 intervals=(int)(probab/.004);
101 print_histogram(intervals,"-1.25");
102 probab=(real)(more_than_75)/(real)(dist_size);
103 intervals=(int)(probab/.004);
104 print_histogram(intervals,"-1.00");
105 probab=(real)(more_than_5)/(real)(dist_size);
106 intervals=(int)(probab/.004);
107 print_histogram(intervals,"-0.75");
108 probab=(real)(more_than_25)/(real)(dist_size);
109 intervals=(int)(probab/.004);
110 print_histogram(intervals,"-0.50");
111 probab=(real)(more_than_0)/(real)(dist_size);
112 intervals=(int)(probab/.004);
113 print_histogram(intervals,"-0.25");
114 probab=(real)(less_than_25)/(real)(dist_size);
115 intervals=(int)(probab/.004);
116 print_histogram(intervals,"+0.25");
117 probab=(real)(less_than_5)/(real)(dist_size);
118 intervals=(int)(probab/.004);
119 print_histogram(intervals,"+0.50");
120 probab=(real)(less_than_75)/(real)(dist_size);
121 intervals=(int)(probab/.004);
122 print_histogram(intervals,"+0.75");
123 probab=(real)(less_than_1)/(real)(dist_size);
124 intervals=(int)(probab/.004);
125 print_histogram(intervals,"+1.00");
126 probab=(real)(less_than_1_25)/(real)(dist_size);
127 intervals=(int)(probab/.004);
128 print_histogram(intervals,"+1.25");
129 probab=(real)(less_than_1_5)/(real)(dist_size);
130 intervals=(int)(probab/.004);
131 print_histogram(intervals,"+1.50");
132 probab=(real)(less_than_1_75)/(real)(dist_size);
133 intervals=(int)(probab/.004);
134 print_histogram(intervals,"+1.75");
135 probab=(real)(less_than_2)/(real)(dist_size);
136 intervals=(int)(probab/.004);
137 print_histogram(intervals,"+2.00");
138 probab=(real)(less_than_2_25)/(real)(dist_size);
139 intervals=(int)(probab/.004);
140 print_histogram(intervals,"+2.25");
141 probab=(real)(less_than_2_5)/(real)(dist_size);
142 intervals=(int)(probab/.004);
143 print_histogram(intervals,"+2.50");
144 }
145
146
print_histogram(intervals,title)147 void print_histogram(intervals, title)
148 int intervals;
149 char title[10];
150 {
151 int i;
152
153 sf(ps,"%s |",title);pr();
154 for(i=0;i<intervals;i++) print("*");
155 nl();
156 return;
157 }
158
159