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