support for SWC input format
This commit is contained in:
parent
0e65364954
commit
c4a97c0589
@ -42,6 +42,7 @@ static inline void fgetl(char *str, int num, FILE *stream) {
|
|||||||
|
|
||||||
void Domain::read_swc(const std::string &Filename) {
|
void Domain::read_swc(const std::string &Filename) {
|
||||||
//...... READ IN SWC FILE...................................
|
//...... READ IN SWC FILE...................................
|
||||||
|
int count = 0;
|
||||||
int number_of_lines = 0;
|
int number_of_lines = 0;
|
||||||
if (rank() == 0){
|
if (rank() == 0){
|
||||||
cout << "Reading SWC file..." << endl;
|
cout << "Reading SWC file..." << endl;
|
||||||
@ -52,9 +53,11 @@ void Domain::read_swc(const std::string &Filename) {
|
|||||||
++number_of_lines;
|
++number_of_lines;
|
||||||
number_of_lines -= 1;
|
number_of_lines -= 1;
|
||||||
}
|
}
|
||||||
std::cout << "Number of lines in SWC file: " << number_of_lines;
|
std::cout << "Number of lines in SWC file: " << number_of_lines << endl;
|
||||||
}
|
}
|
||||||
Comm.bcast(number_of_lines,0);
|
count = Comm.sumReduce(number_of_lines); // nonzero only for rank=0
|
||||||
|
number_of_lines = count;
|
||||||
|
printf("***rank=%i , number of lines = %i\n",rank(),number_of_lines);
|
||||||
|
|
||||||
// set up structures to read
|
// set up structures to read
|
||||||
double *List_cx = new double [number_of_lines];
|
double *List_cx = new double [number_of_lines];
|
||||||
@ -73,7 +76,7 @@ void Domain::read_swc(const std::string &Filename) {
|
|||||||
fgetl(line, 100, fid);
|
fgetl(line, 100, fid);
|
||||||
//........read the spheres..................
|
//........read the spheres..................
|
||||||
// We will read until a blank like or end-of-file is reached
|
// We will read until a blank like or end-of-file is reached
|
||||||
int count = 0;
|
count = 0;
|
||||||
while (!feof(fid) && fgets(line, 100, fid) != NULL) {
|
while (!feof(fid) && fgets(line, 100, fid) != NULL) {
|
||||||
char *line2 = line;
|
char *line2 = line;
|
||||||
List_index[count] = int(strtod(line2, &line2));
|
List_index[count] = int(strtod(line2, &line2));
|
||||||
@ -104,6 +107,7 @@ void Domain::read_swc(const std::string &Filename) {
|
|||||||
start_x = rank_info.ix*(Nx-2)*voxel_length;
|
start_x = rank_info.ix*(Nx-2)*voxel_length;
|
||||||
start_y = rank_info.jy*(Ny-2)*voxel_length;
|
start_y = rank_info.jy*(Ny-2)*voxel_length;
|
||||||
start_z = rank_info.kz*(Nz-2)*voxel_length;
|
start_z = rank_info.kz*(Nz-2)*voxel_length;
|
||||||
|
printf(" rank = %i: %f %f %f \n",rank(),start_x,start_y,start_z);
|
||||||
finish_x = (rank_info.ix+1)*(Nx-2)*voxel_length;
|
finish_x = (rank_info.ix+1)*(Nx-2)*voxel_length;
|
||||||
finish_y = (rank_info.jy+1)*(Ny-2)*voxel_length;
|
finish_y = (rank_info.jy+1)*(Ny-2)*voxel_length;
|
||||||
finish_z = (rank_info.kz+1)*(Nz-2)*voxel_length;
|
finish_z = (rank_info.kz+1)*(Nz-2)*voxel_length;
|
||||||
@ -125,7 +129,7 @@ void Domain::read_swc(const std::string &Filename) {
|
|||||||
int cy = int((List_cy[idx] - start_y)/voxel_length) + 1;
|
int cy = int((List_cy[idx] - start_y)/voxel_length) + 1;
|
||||||
int cz = int((List_cz[idx] - start_z)/voxel_length) + 1;
|
int cz = int((List_cz[idx] - start_z)/voxel_length) + 1;
|
||||||
|
|
||||||
if (rank()==0) printf("%i %i %i %i %i\n",label,cx,cy,cz,radius_in_voxels);
|
if (rank()==1) printf("%i %i %i %i %i\n",label,cx,cy,cz,radius_in_voxels);
|
||||||
|
|
||||||
/* get the little box to loop over*/
|
/* get the little box to loop over*/
|
||||||
int start_idx = int((List_cx[idx] - List_rad[idx] - start_x)/voxel_length) + 1;
|
int start_idx = int((List_cx[idx] - List_rad[idx] - start_x)/voxel_length) + 1;
|
||||||
@ -148,8 +152,8 @@ void Domain::read_swc(const std::string &Filename) {
|
|||||||
if (finish_idy > Ny-1 ) finish_idy = Ny;
|
if (finish_idy > Ny-1 ) finish_idy = Ny;
|
||||||
if (finish_idz > Nz-1 ) finish_idz = Nz;
|
if (finish_idz > Nz-1 ) finish_idz = Nz;
|
||||||
|
|
||||||
if (rank()==0) printf( "start: %i, %i, %i \n",start_idx,start_idy,start_idz);
|
if (rank()==1) printf( "start: %i, %i, %i \n",start_idx,start_idy,start_idz);
|
||||||
if (rank()==0) printf( "finish: %i, %i, %i \n",finish_idx,finish_idy,finish_idz);
|
if (rank()==1) printf( "finish: %i, %i, %i \n",finish_idx,finish_idy,finish_idz);
|
||||||
|
|
||||||
for (int k = start_idz; k<finish_idz; k++){
|
for (int k = start_idz; k<finish_idz; k++){
|
||||||
for (int j = start_idy; j<finish_idy; j++){
|
for (int j = start_idy; j<finish_idy; j++){
|
||||||
|
Loading…
Reference in New Issue
Block a user