public String toString(){
		String str ="distSegment: "+distSegments.size()+"\n";
		str+="Active State ("+pActiveState+", "+tActiveState+")\n";
		str+="Predictive State ("+pPredictiveState+", "+tPredictiveState+")\n";
		str+="Learn State ("+pLearnState+", "+tLearnState+")\n";
		
		if(this.distSegments.size()>0){
			int row = this.parent.parentRegion.row;
			int column = this.parent.parentRegion.column;
			int layer = this.parent.cells.length;
			double[][][] outputMatrix=new double[row][column][layer];
			
			for(Synapse s : this.distSegments.get(0).synapses){
				if(outputMatrix[s.destCoor[0]][s.destCoor[1]][s.destCoor[2]]>0) str+="Duplicate Synapse!";
				else if(s.isConnected()) outputMatrix[s.destCoor[0]][s.destCoor[1]][s.destCoor[2]]=s.permanence;
				else outputMatrix[s.destCoor[0]][s.destCoor[1]][s.destCoor[2]]=-1;
			}
			for(int i=0; i< row;i++){
				for(int j=0; j< column; j++){
					str+="(";
					for(int k=0; k<layer; k++){
						if(outputMatrix[i][j][k]>0)str+=String.format("%.1f", outputMatrix[i][j][k]);
						else if(outputMatrix[i][j][k]==-1) str+="-";
						else str+=" ";
					}
					str+=")";
				}
				str+="\n";
			}
		}
		return str;
	}