| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -140,8 +140,8 @@ def qtf(w, h=inf, g=9.81):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # Wave group velocity
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    c_g = 0.5 * g * (tanh(k_w * h) + k_w * h * (1.0 - tanh(k_w * h) ** 2)) / w
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    h_dii = (0.5 * (0.5 * g * (k_w / w) ** 2. - 0.5 * w ** 2 / g +
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    g * k_w / (w * c_g))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				             / (1. - g * h / c_g ** 2.) - 0.5 * k_w / sinh(2 * k_w * h))  # OK
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    g * k_w / (w * c_g)) /
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				             (1. - g * h / c_g ** 2.) - 0.5 * k_w / sinh(2 * k_w * h))  # OK
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    h_d.flat[0::num_w + 1] = h_dii
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # k    = find(w_1==w_2)
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -198,8 +198,10 @@ def plotspec(specdata, linetype='b-', flag=1):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      S = demospec('dir'); S2 = mkdspec(jonswap,spreading);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      plotspec(S,2), hold on
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      plotspec(S,3,'g')  # Same as previous fig. due to frequency independent spreading
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      plotspec(S2,2,'r') # Not the same as previous figs. due to frequency dependent spreading
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      # Same as previous fig. due to frequency independent spreading
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      plotspec(S,3,'g')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      # Not the same as previous figs. due to frequency dependent spreading
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      plotspec(S2,2,'r')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      plotspec(S2,3,'m')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      % transform from angular frequency and radians to frequency and degrees
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#      Sf = ttspec(S,'f','d'); clf
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -311,19 +313,20 @@ def plotspec(specdata, linetype='b-', flag=1):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#            plotbackend.subplot(2, 1, 2)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# if (flag == 2) or (flag == 3) : # Plot in logaritmic scale
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#            ind = np.flatnonzero(data > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#     ind = np.flatnonzero(data > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#            plotbackend.plot(np.vstack([Fp, Fp]),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#                            np.vstack((min(10 * log10(data.take(ind) / maxS)).repeat(len(Fp)),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#                            10 * log10(data.take(indm) / maxS))), ':',label=txt)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#     plotbackend.plot(np.vstack([Fp, Fp]),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#                      np.vstack((min(10 * log10(data.take(ind) /
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#                                      maxS)).repeat(len(Fp)),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#                      10 * log10(data.take(indm) / maxS))), ':',label=txt)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# hold on
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# if isfield(S,'CI'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# plot(freq(ind),10*log10(S.S(ind)*S.CI(1)/maxS), 'r:' )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# plot(freq(ind),10*log10(S.S(ind)*S.CI(2)/maxS), 'r:' )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#            plotbackend.plot(freq[ind], 10 * log10(data[ind] / maxS), linetype)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#        plotbackend.plot(freq[ind], 10 * log10(data[ind] / maxS), linetype)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#            a = plotbackend.axis()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#        a = plotbackend.axis()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#            a1 = Fn
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#            if (Fp > 0):
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -1910,12 +1913,13 @@ class SpecData1D(PlotData):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        # opt0 =  {SCIS,XcScale,ABSEPS,RELEPS,COVEPS,MAXPTS,MINPTS,seed,NIT1}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (Nx > 1):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           # (M,m) or (M,m)v distribution wanted
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           if ((def_nr == 0 or def_nr == 2)):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               asize = [Nx1, Nx1]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               # (M,m,TMm), (M,m,TMm)v  (M,m,TMd)v or (M,M,Tdm)v distributions wanted
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               asize = [Nx1, Nx1, Ntime]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # (M,m) or (M,m)v distribution wanted
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ((def_nr == 0 or def_nr == 2)):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                asize = [Nx1, Nx1]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                # (M,m,TMm), (M,m,TMm)v  (M,m,TMd)v or (M,M,Tdm)v
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                # distributions wanted
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                asize = [Nx1, Nx1, Ntime]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        elif (def_nr > 3):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # Conditional distribution for (TMd,TMm)v or (Tdm,TMm)v given (M,m)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # wanted
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -1937,7 +1941,7 @@ class SpecData1D(PlotData):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        a_up = zeros(1, NI - 1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        a_lo = zeros(1, NI - 1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        # INFIN =  INTEGER, array of integration limits flags:  size 1 x Nb   (in)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        # INFIN =  INTEGER, array of integration limits flags: size 1 x Nb (in)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        #            if INFIN(I) < 0, Ith limits are (-infinity, infinity)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        #            if INFIN(I) = 0, Ith limits are (-infinity, Hup(I)]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        #            if INFIN(I) = 1, Ith limits are [Hlo(I), infinity)
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -1957,15 +1961,15 @@ class SpecData1D(PlotData):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                xc[3, IJ:J] = hg[:I].T
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                IJ = J
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           # Level u separated Max2min
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           xc[Nc, :] = u
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           # Hg(1) = Hg(Nx1+1)= u => start do loop at I=2 since by definition
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           # we must have:  minimum<u-level<Maximum
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           for i in range(1, Nx1):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              J = IJ + Nx1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              xc[2, IJ:J] = hg[i]  # Max > u
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              xc[3, IJ:J] = hg[Nx1 + 2: 2 * Nx1].T  # Min < u
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              IJ = J
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # Level u separated Max2min
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            xc[Nc, :] = u
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # Hg(1) = Hg(Nx1+1)= u => start do loop at I=2 since by definition
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # we must have:  minimum<u-level<Maximum
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for i in range(1, Nx1):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                J = IJ + Nx1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                xc[2, IJ:J] = hg[i]  # Max > u
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                xc[3, IJ:J] = hg[Nx1 + 2: 2 * Nx1].T  # Min < u
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                IJ = J
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (def_nr <= 3):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # h11 = fwaitbar(0,[],sprintf('Please wait ...(start at:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # %s)',datestr(now)))
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -3541,8 +3545,8 @@ class SpecData1D(PlotData):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        m, unused_mtxt = self.moment(nr=4, even=False)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fact_dict = dict(alpha=0, eps2=1, eps4=3, qp=3, Qp=3)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fun = lambda fact: fact_dict.get(fact, fact)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fact = atleast_1d(map(fun, list(factors)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fact = atleast_1d(map(lambda fact: fact_dict.get(fact, fact),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                              list(factors)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        # fact = atleast_1d(fact)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        alpha = m[2] / sqrt(m[0] * m[4])
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -3755,10 +3759,10 @@ class SpecData1D(PlotData):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        R = r_[4 * mij[0] / m[0],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               mij[0] / m[1] ** 2. - 2. * m[0] * mij[1] /
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               m[1] ** 3. + m[0] ** 2. * mij[2] / m[1] ** 4.,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               0.25 * (mij[0] / (m[0] * m[2]) - 2. * mij[2] / m[2]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                       ** 2 + m[0] * mij[4] / m[2] ** 3),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               0.25 * (mij[4] / (m[2] * m[4]) - 2 * mij[6] / m[4]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                       ** 2 + m[2] * mij[8] / m[4] ** 3),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               0.25 * (mij[0] / (m[0] * m[2]) - 2. * mij[2] / m[2] ** 2 +
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                       m[0] * mij[4] / m[2] ** 3),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               0.25 * (mij[4] / (m[2] * m[4]) - 2 * mij[6] / m[4] ** 2 +
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                       m[2] * mij[8] / m[4] ** 3),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               m_11 / m[0] ** 2 + (m[5] / m[0] ** 2) ** 2 *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               mij[0] - 2 * m[5] / m[0] ** 3 * m_10,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               nan, (8 * pi / g) ** 2 *
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -3775,8 +3779,8 @@ class SpecData1D(PlotData):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               eps2 ** 2 / m[1] ** 4,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               (m[2] ** 2 * mij[0] / (4 * m[0] ** 2) + mij[4] + m[2] ** 2 *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mij[8] / (4 * m[4] ** 2) - m[2] * mij[2] / m[0] + m[2] ** 2 *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mij[4] / (2 * m[0] * m[4]) - m[2] * mij[6] / m[4]) * m[2] ** 2
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               / (m[0] * m[4] * eps4) ** 2,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mij[4] / (2 * m[0] * m[4]) - m[2] * mij[6] / m[4]) *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               m[2] ** 2 / (m[0] * m[4] * eps4) ** 2,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               nan]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        # and covariances by a taylor expansion technique:
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |