SUBROUTINE SGGESX( JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA, $ B, LDB, SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, $ VSR, LDVSR, RCONDE, RCONDV, WORK, LWORK, IWORK, $ LIWORK, BWORK, INFO ) * * -- LAPACK driver routine (version 3.1) -- * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. * November 2006 * * .. Scalar Arguments .. CHARACTER JOBVSL, JOBVSR, SENSE, SORT INTEGER INFO, LDA, LDB, LDVSL, LDVSR, LIWORK, LWORK, N, $ SDIM * .. * .. Array Arguments .. LOGICAL BWORK( * ) INTEGER IWORK( * ) REAL A( LDA, * ), ALPHAI( * ), ALPHAR( * ), $ B( LDB, * ), BETA( * ), RCONDE( 2 ), $ RCONDV( 2 ), VSL( LDVSL, * ), VSR( LDVSR, * ), $ WORK( * ) * .. * .. Function Arguments .. LOGICAL SELCTG EXTERNAL SELCTG * .. * * Purpose * ======= * * SGGESX computes for a pair of N-by-N real nonsymmetric matrices * (A,B), the generalized eigenvalues, the real Schur form (S,T), and, * optionally, the left and/or right matrices of Schur vectors (VSL and * VSR). This gives the generalized Schur factorization * * (A,B) = ( (VSL) S (VSR)**T, (VSL) T (VSR)**T ) * * Optionally, it also orders the eigenvalues so that a selected cluster * of eigenvalues appears in the leading diagonal blocks of the upper * quasi-triangular matrix S and the upper triangular matrix T; computes * a reciprocal condition number for the average of the selected * eigenvalues (RCONDE); and computes a reciprocal condition number for * the right and left deflating subspaces corresponding to the selected * eigenvalues (RCONDV). The leading columns of VSL and VSR then form * an orthonormal basis for the corresponding left and right eigenspaces * (deflating subspaces). * * A generalized eigenvalue for a pair of matrices (A,B) is a scalar w * or a ratio alpha/beta = w, such that A - w*B is singular. It is * usually represented as the pair (alpha,beta), as there is a * reasonable interpretation for beta=0 or for both being zero. * * A pair of matrices (S,T) is in generalized real Schur form if T is * upper triangular with non-negative diagonal and S is block upper * triangular with 1-by-1 and 2-by-2 blocks. 1-by-1 blocks correspond * to real generalized eigenvalues, while 2-by-2 blocks of S will be * "standardized" by making the corresponding elements of T have the * form: * [ a 0 ] * [ 0 b ] * * and the pair of corresponding 2-by-2 blocks in S and T will have a * complex conjugate pair of generalized eigenvalues. * * * Arguments * ========= * * JOBVSL (input) CHARACTER*1 * = 'N': do not compute the left Schur vectors; * = 'V': compute the left Schur vectors. * * JOBVSR (input) CHARACTER*1 * = 'N': do not compute the right Schur vectors; * = 'V': compute the right Schur vectors. * * SORT (input) CHARACTER*1 * Specifies whether or not to order the eigenvalues on the * diagonal of the generalized Schur form. * = 'N': Eigenvalues are not ordered; * = 'S': Eigenvalues are ordered (see SELCTG). * * SELCTG (external procedure) LOGICAL FUNCTION of three REAL arguments * SELCTG must be declared EXTERNAL in the calling subroutine. * If SORT = 'N', SELCTG is not referenced. * If SORT = 'S', SELCTG is used to select eigenvalues to sort * to the top left of the Schur form. * An eigenvalue (ALPHAR(j)+ALPHAI(j))/BETA(j) is selected if * SELCTG(ALPHAR(j),ALPHAI(j),BETA(j)) is true; i.e. if either * one of a complex conjugate pair of eigenvalues is selected, * then both complex eigenvalues are selected. * Note that a selected complex eigenvalue may no longer satisfy * SELCTG(ALPHAR(j),ALPHAI(j),BETA(j)) = .TRUE. after ordering, * since ordering may change the value of complex eigenvalues * (especially if the eigenvalue is ill-conditioned), in this * case INFO is set to N+3. * * SENSE (input) CHARACTER*1 * Determines which reciprocal condition numbers are computed. * = 'N' : None are computed; * = 'E' : Computed for average of selected eigenvalues only; * = 'V' : Computed for selected deflating subspaces only; * = 'B' : Computed for both. * If SENSE = 'E', 'V', or 'B', SORT must equal 'S'. * * N (input) INTEGER * The order of the matrices A, B, VSL, and VSR. N >= 0. * * A (input/output) REAL array, dimension (LDA, N) * On entry, the first of the pair of matrices. * On exit, A has been overwritten by its generalized Schur * form S. * * LDA (input) INTEGER * The leading dimension of A. LDA >= max(1,N). * * B (input/output) REAL array, dimension (LDB, N) * On entry, the second of the pair of matrices. * On exit, B has been overwritten by its generalized Schur * form T. * * LDB (input) INTEGER * The leading dimension of B. LDB >= max(1,N). * * SDIM (output) INTEGER * If SORT = 'N', SDIM = 0. * If SORT = 'S', SDIM = number of eigenvalues (after sorting) * for which SELCTG is true. (Complex conjugate pairs for which * SELCTG is true for either eigenvalue count as 2.) * * ALPHAR (output) REAL array, dimension (N) * ALPHAI (output) REAL array, dimension (N) * BETA (output) REAL array, dimension (N) * On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will * be the generalized eigenvalues. ALPHAR(j) + ALPHAI(j)*i * and BETA(j),j=1,...,N are the diagonals of the complex Schur * form (S,T) that would result if the 2-by-2 diagonal blocks of * the real Schur form of (A,B) were further reduced to * triangular form using 2-by-2 complex unitary transformations. * If ALPHAI(j) is zero, then the j-th eigenvalue is real; if * positive, then the j-th and (j+1)-st eigenvalues are a * complex conjugate pair, with ALPHAI(j+1) negative. * * Note: the quotients ALPHAR(j)/BETA(j) and ALPHAI(j)/BETA(j) * may easily over- or underflow, and BETA(j) may even be zero. * Thus, the user should avoid naively computing the ratio. * However, ALPHAR and ALPHAI will be always less than and * usually comparable with norm(A) in magnitude, and BETA always * less than and usually comparable with norm(B). * * VSL (output) REAL array, dimension (LDVSL,N) * If JOBVSL = 'V', VSL will contain the left Schur vectors. * Not referenced if JOBVSL = 'N'. * * LDVSL (input) INTEGER * The leading dimension of the matrix VSL. LDVSL >=1, and * if JOBVSL = 'V', LDVSL >= N. * * VSR (output) REAL array, dimension (LDVSR,N) * If JOBVSR = 'V', VSR will contain the right Schur vectors. * Not referenced if JOBVSR = 'N'. * * LDVSR (input) INTEGER * The leading dimension of the matrix VSR. LDVSR >= 1, and * if JOBVSR = 'V', LDVSR >= N. * * RCONDE (output) REAL array, dimension ( 2 ) * If SENSE = 'E' or 'B', RCONDE(1) and RCONDE(2) contain the * reciprocal condition numbers for the average of the selected * eigenvalues. * Not referenced if SENSE = 'N' or 'V'. * * RCONDV (output) REAL array, dimension ( 2 ) * If SENSE = 'V' or 'B', RCONDV(1) and RCONDV(2) contain the * reciprocal condition numbers for the selected deflating * subspaces. * Not referenced if SENSE = 'N' or 'E'. * * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK)) * On exit, if INFO = 0, WORK(1) returns the optimal LWORK. * * LWORK (input) INTEGER * The dimension of the array WORK. * If N = 0, LWORK >= 1, else if SENSE = 'E', 'V', or 'B', * LWORK >= max( 8*N, 6*N+16, 2*SDIM*(N-SDIM) ), else * LWORK >= max( 8*N, 6*N+16 ). * Note that 2*SDIM*(N-SDIM) <= N*N/2. * Note also that an error is only returned if * LWORK < max( 8*N, 6*N+16), but if SENSE = 'E' or 'V' or 'B' * this may not be large enough. * * If LWORK = -1, then a workspace query is assumed; the routine * only calculates the bound on the optimal size of the WORK * array and the minimum size of the IWORK array, returns these * values as the first entries of the WORK and IWORK arrays, and * no error message related to LWORK or LIWORK is issued by * XERBLA. * * IWORK (workspace) INTEGER array, dimension (MAX(1,LIWORK)) * On exit, if INFO = 0, IWORK(1) returns the minimum LIWORK. * * LIWORK (input) INTEGER * The dimension of the array IWORK. * If SENSE = 'N' or N = 0, LIWORK >= 1, otherwise * LIWORK >= N+6. * * If LIWORK = -1, then a workspace query is assumed; the * routine only calculates the bound on the optimal size of the * WORK array and the minimum size of the IWORK array, returns * these values as the first entries of the WORK and IWORK * arrays, and no error message related to LWORK or LIWORK is * issued by XERBLA. * * BWORK (workspace) LOGICAL array, dimension (N) * Not referenced if SORT = 'N'. * * INFO (output) INTEGER * = 0: successful exit * < 0: if INFO = -i, the i-th argument had an illegal value. * = 1,...,N: * The QZ iteration failed. (A,B) are not in Schur * form, but ALPHAR(j), ALPHAI(j), and BETA(j) should * be correct for j=INFO+1,...,N. * > N: =N+1: other than QZ iteration failed in SHGEQZ * =N+2: after reordering, roundoff changed values of * some complex eigenvalues so that leading * eigenvalues in the Generalized Schur form no * longer satisfy SELCTG=.TRUE. This could also * be caused due to scaling. * =N+3: reordering failed in STGSEN. * * Further details * =============== * * An approximate (asymptotic) bound on the average absolute error of * the selected eigenvalues is * * EPS * norm((A, B)) / RCONDE( 1 ). * * An approximate (asymptotic) bound on the maximum angular error in * the computed deflating subspaces is * * EPS * norm((A, B)) / RCONDV( 2 ). * * See LAPACK User's Guide, section 4.11 for more information. * * ===================================================================== * * .. Parameters .. REAL ZERO, ONE PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 ) * .. * .. Local Scalars .. LOGICAL CURSL, ILASCL, ILBSCL, ILVSL, ILVSR, LASTSL, $ LQUERY, LST2SL, WANTSB, WANTSE, WANTSN, WANTST, $ WANTSV INTEGER I, ICOLS, IERR, IHI, IJOB, IJOBVL, IJOBVR, $ ILEFT, ILO, IP, IRIGHT, IROWS, ITAU, IWRK, $ LIWMIN, LWRK, MAXWRK, MINWRK REAL ANRM, ANRMTO, BIGNUM, BNRM, BNRMTO, EPS, PL, $ PR, SAFMAX, SAFMIN, SMLNUM * .. * .. Local Arrays .. REAL DIF( 2 ) * .. * .. External Subroutines .. EXTERNAL SGEQRF, SGGBAK, SGGBAL, SGGHRD, SHGEQZ, SLABAD, $ SLACPY, SLASCL, SLASET, SORGQR, SORMQR, STGSEN, $ XERBLA * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV REAL SLAMCH, SLANGE EXTERNAL LSAME, ILAENV, SLAMCH, SLANGE * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, SQRT * .. * .. Executable Statements .. * * Decode the input arguments * IF( LSAME( JOBVSL, 'N' ) ) THEN IJOBVL = 1 ILVSL = .FALSE. ELSE IF( LSAME( JOBVSL, 'V' ) ) THEN IJOBVL = 2 ILVSL = .TRUE. ELSE IJOBVL = -1 ILVSL = .FALSE. END IF * IF( LSAME( JOBVSR, 'N' ) ) THEN IJOBVR = 1 ILVSR = .FALSE. ELSE IF( LSAME( JOBVSR, 'V' ) ) THEN IJOBVR = 2 ILVSR = .TRUE. ELSE IJOBVR = -1 ILVSR = .FALSE. END IF * WANTST = LSAME( SORT, 'S' ) WANTSN = LSAME( SENSE, 'N' ) WANTSE = LSAME( SENSE, 'E' ) WANTSV = LSAME( SENSE, 'V' ) WANTSB = LSAME( SENSE, 'B' ) LQUERY = ( LWORK.EQ.-1 .OR. LIWORK.EQ.-1 ) IF( WANTSN ) THEN IJOB = 0 ELSE IF( WANTSE ) THEN IJOB = 1 ELSE IF( WANTSV ) THEN IJOB = 2 ELSE IF( WANTSB ) THEN IJOB = 4 END IF * * Test the input arguments * INFO = 0 IF( IJOBVL.LE.0 ) THEN INFO = -1 ELSE IF( IJOBVR.LE.0 ) THEN INFO = -2 ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN INFO = -3 ELSE IF( .NOT.( WANTSN .OR. WANTSE .OR. WANTSV .OR. WANTSB ) .OR. $ ( .NOT.WANTST .AND. .NOT.WANTSN ) ) THEN INFO = -5 ELSE IF( N.LT.0 ) THEN INFO = -6 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -8 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -10 ELSE IF( LDVSL.LT.1 .OR. ( ILVSL .AND. LDVSL.LT.N ) ) THEN INFO = -16 ELSE IF( LDVSR.LT.1 .OR. ( ILVSR .AND. LDVSR.LT.N ) ) THEN INFO = -18 END IF * * Compute workspace * (Note: Comments in the code beginning "Workspace:" describe the * minimal amount of workspace needed at that point in the code, * as well as the preferred amount for good performance. * NB refers to the optimal block size for the immediately * following subroutine, as returned by ILAENV.) * IF( INFO.EQ.0 ) THEN IF( N.GT.0) THEN MINWRK = MAX( 8*N, 6*N + 16 ) MAXWRK = MINWRK - N + $ N*ILAENV( 1, 'SGEQRF', ' ', N, 1, N, 0 ) MAXWRK = MAX( MAXWRK, MINWRK - N + $ N*ILAENV( 1, 'SORMQR', ' ', N, 1, N, -1 ) ) IF( ILVSL ) THEN MAXWRK = MAX( MAXWRK, MINWRK - N + $ N*ILAENV( 1, 'SORGQR', ' ', N, 1, N, -1 ) ) END IF LWRK = MAXWRK IF( IJOB.GE.1 ) $ LWRK = MAX( LWRK, N*N/2 ) ELSE MINWRK = 1 MAXWRK = 1 LWRK = 1 END IF WORK( 1 ) = LWRK IF( WANTSN .OR. N.EQ.0 ) THEN LIWMIN = 1 ELSE LIWMIN = N + 6 END IF IWORK( 1 ) = LIWMIN * IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN INFO = -22 ELSE IF( LIWORK.LT.LIWMIN .AND. .NOT.LQUERY ) THEN INFO = -24 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'SGGESX', -INFO ) RETURN ELSE IF (LQUERY) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN SDIM = 0 RETURN END IF * * Get machine constants * EPS = SLAMCH( 'P' ) SAFMIN = SLAMCH( 'S' ) SAFMAX = ONE / SAFMIN CALL SLABAD( SAFMIN, SAFMAX ) SMLNUM = SQRT( SAFMIN ) / EPS BIGNUM = ONE / SMLNUM * * Scale A if max element outside range [SMLNUM,BIGNUM] * ANRM = SLANGE( 'M', N, N, A, LDA, WORK ) ILASCL = .FALSE. IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN ANRMTO = SMLNUM ILASCL = .TRUE. ELSE IF( ANRM.GT.BIGNUM ) THEN ANRMTO = BIGNUM ILASCL = .TRUE. END IF IF( ILASCL ) $ CALL SLASCL( 'G', 0, 0, ANRM, ANRMTO, N, N, A, LDA, IERR ) * * Scale B if max element outside range [SMLNUM,BIGNUM] * BNRM = SLANGE( 'M', N, N, B, LDB, WORK ) ILBSCL = .FALSE. IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN BNRMTO = SMLNUM ILBSCL = .TRUE. ELSE IF( BNRM.GT.BIGNUM ) THEN BNRMTO = BIGNUM ILBSCL = .TRUE. END IF IF( ILBSCL ) $ CALL SLASCL( 'G', 0, 0, BNRM, BNRMTO, N, N, B, LDB, IERR ) * * Permute the matrix to make it more nearly triangular * (Workspace: need 6*N + 2*N for permutation parameters) * ILEFT = 1 IRIGHT = N + 1 IWRK = IRIGHT + N CALL SGGBAL( 'P', N, A, LDA, B, LDB, ILO, IHI, WORK( ILEFT ), $ WORK( IRIGHT ), WORK( IWRK ), IERR ) * * Reduce B to triangular form (QR decomposition of B) * (Workspace: need N, prefer N*NB) * IROWS = IHI + 1 - ILO ICOLS = N + 1 - ILO ITAU = IWRK IWRK = ITAU + IROWS CALL SGEQRF( IROWS, ICOLS, B( ILO, ILO ), LDB, WORK( ITAU ), $ WORK( IWRK ), LWORK+1-IWRK, IERR ) * * Apply the orthogonal transformation to matrix A * (Workspace: need N, prefer N*NB) * CALL SORMQR( 'L', 'T', IROWS, ICOLS, IROWS, B( ILO, ILO ), LDB, $ WORK( ITAU ), A( ILO, ILO ), LDA, WORK( IWRK ), $ LWORK+1-IWRK, IERR ) * * Initialize VSL * (Workspace: need N, prefer N*NB) * IF( ILVSL ) THEN CALL SLASET( 'Full', N, N, ZERO, ONE, VSL, LDVSL ) IF( IROWS.GT.1 ) THEN CALL SLACPY( 'L', IROWS-1, IROWS-1, B( ILO+1, ILO ), LDB, $ VSL( ILO+1, ILO ), LDVSL ) END IF CALL SORGQR( IROWS, IROWS, IROWS, VSL( ILO, ILO ), LDVSL, $ WORK( ITAU ), WORK( IWRK ), LWORK+1-IWRK, IERR ) END IF * * Initialize VSR * IF( ILVSR ) $ CALL SLASET( 'Full', N, N, ZERO, ONE, VSR, LDVSR ) * * Reduce to generalized Hessenberg form * (Workspace: none needed) * CALL SGGHRD( JOBVSL, JOBVSR, N, ILO, IHI, A, LDA, B, LDB, VSL, $ LDVSL, VSR, LDVSR, IERR ) * SDIM = 0 * * Perform QZ algorithm, computing Schur vectors if desired * (Workspace: need N) * IWRK = ITAU CALL SHGEQZ( 'S', JOBVSL, JOBVSR, N, ILO, IHI, A, LDA, B, LDB, $ ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, $ WORK( IWRK ), LWORK+1-IWRK, IERR ) IF( IERR.NE.0 ) THEN IF( IERR.GT.0 .AND. IERR.LE.N ) THEN INFO = IERR ELSE IF( IERR.GT.N .AND. IERR.LE.2*N ) THEN INFO = IERR - N ELSE INFO = N + 1 END IF GO TO 50 END IF * * Sort eigenvalues ALPHA/BETA and compute the reciprocal of * condition number(s) * (Workspace: If IJOB >= 1, need MAX( 8*(N+1), 2*SDIM*(N-SDIM) ) * otherwise, need 8*(N+1) ) * IF( WANTST ) THEN * * Undo scaling on eigenvalues before SELCTGing * IF( ILASCL ) THEN CALL SLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAR, N, $ IERR ) CALL SLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAI, N, $ IERR ) END IF IF( ILBSCL ) $ CALL SLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR ) * * Select eigenvalues * DO 10 I = 1, N BWORK( I ) = SELCTG( ALPHAR( I ), ALPHAI( I ), BETA( I ) ) 10 CONTINUE * * Reorder eigenvalues, transform Generalized Schur vectors, and * compute reciprocal condition numbers * CALL STGSEN( IJOB, ILVSL, ILVSR, BWORK, N, A, LDA, B, LDB, $ ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, $ SDIM, PL, PR, DIF, WORK( IWRK ), LWORK-IWRK+1, $ IWORK, LIWORK, IERR ) * IF( IJOB.GE.1 ) $ MAXWRK = MAX( MAXWRK, 2*SDIM*( N-SDIM ) ) IF( IERR.EQ.-22 ) THEN * * not enough real workspace * INFO = -22 ELSE IF( IJOB.EQ.1 .OR. IJOB.EQ.4 ) THEN RCONDE( 1 ) = PL RCONDE( 2 ) = PR END IF IF( IJOB.EQ.2 .OR. IJOB.EQ.4 ) THEN RCONDV( 1 ) = DIF( 1 ) RCONDV( 2 ) = DIF( 2 ) END IF IF( IERR.EQ.1 ) $ INFO = N + 3 END IF * END IF * * Apply permutation to VSL and VSR * (Workspace: none needed) * IF( ILVSL ) $ CALL SGGBAK( 'P', 'L', N, ILO, IHI, WORK( ILEFT ), $ WORK( IRIGHT ), N, VSL, LDVSL, IERR ) * IF( ILVSR ) $ CALL SGGBAK( 'P', 'R', N, ILO, IHI, WORK( ILEFT ), $ WORK( IRIGHT ), N, VSR, LDVSR, IERR ) * * Check if unscaling would cause over/underflow, if so, rescale * (ALPHAR(I),ALPHAI(I),BETA(I)) so BETA(I) is on the order of * B(I,I) and ALPHAR(I) and ALPHAI(I) are on the order of A(I,I) * IF( ILASCL ) THEN DO 20 I = 1, N IF( ALPHAI( I ).NE.ZERO ) THEN IF( ( ALPHAR( I ) / SAFMAX ).GT.( ANRMTO / ANRM ) .OR. $ ( SAFMIN / ALPHAR( I ) ).GT.( ANRM / ANRMTO ) ) $ THEN WORK( 1 ) = ABS( A( I, I ) / ALPHAR( I ) ) BETA( I ) = BETA( I )*WORK( 1 ) ALPHAR( I ) = ALPHAR( I )*WORK( 1 ) ALPHAI( I ) = ALPHAI( I )*WORK( 1 ) ELSE IF( ( ALPHAI( I ) / SAFMAX ).GT.( ANRMTO / ANRM ) $ .OR. ( SAFMIN / ALPHAI( I ) ).GT.( ANRM / ANRMTO ) ) $ THEN WORK( 1 ) = ABS( A( I, I+1 ) / ALPHAI( I ) ) BETA( I ) = BETA( I )*WORK( 1 ) ALPHAR( I ) = ALPHAR( I )*WORK( 1 ) ALPHAI( I ) = ALPHAI( I )*WORK( 1 ) END IF END IF 20 CONTINUE END IF * IF( ILBSCL ) THEN DO 25 I = 1, N IF( ALPHAI( I ).NE.ZERO ) THEN IF( ( BETA( I ) / SAFMAX ).GT.( BNRMTO / BNRM ) .OR. $ ( SAFMIN / BETA( I ) ).GT.( BNRM / BNRMTO ) ) THEN WORK( 1 ) = ABS( B( I, I ) / BETA( I ) ) BETA( I ) = BETA( I )*WORK( 1 ) ALPHAR( I ) = ALPHAR( I )*WORK( 1 ) ALPHAI( I ) = ALPHAI( I )*WORK( 1 ) END IF END IF 25 CONTINUE END IF * * Undo scaling * IF( ILASCL ) THEN CALL SLASCL( 'H', 0, 0, ANRMTO, ANRM, N, N, A, LDA, IERR ) CALL SLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAR, N, IERR ) CALL SLASCL( 'G', 0, 0, ANRMTO, ANRM, N, 1, ALPHAI, N, IERR ) END IF * IF( ILBSCL ) THEN CALL SLASCL( 'U', 0, 0, BNRMTO, BNRM, N, N, B, LDB, IERR ) CALL SLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR ) END IF * IF( WANTST ) THEN * * Check if reordering is correct * LASTSL = .TRUE. LST2SL = .TRUE. SDIM = 0 IP = 0 DO 40 I = 1, N CURSL = SELCTG( ALPHAR( I ), ALPHAI( I ), BETA( I ) ) IF( ALPHAI( I ).EQ.ZERO ) THEN IF( CURSL ) $ SDIM = SDIM + 1 IP = 0 IF( CURSL .AND. .NOT.LASTSL ) $ INFO = N + 2 ELSE IF( IP.EQ.1 ) THEN * * Last eigenvalue of conjugate pair * CURSL = CURSL .OR. LASTSL LASTSL = CURSL IF( CURSL ) $ SDIM = SDIM + 2 IP = -1 IF( CURSL .AND. .NOT.LST2SL ) $ INFO = N + 2 ELSE * * First eigenvalue of conjugate pair * IP = 1 END IF END IF LST2SL = LASTSL LASTSL = CURSL 40 CONTINUE * END IF * 50 CONTINUE * WORK( 1 ) = MAXWRK IWORK( 1 ) = LIWMIN * RETURN * * End of SGGESX * END


{{errorAdd}}
{{errorEdit}}
Title Category Author Publisher QuantityAre you sure do you want to delete {{clickedbooks.title}}?
|
|
Refresh |
||||
| # | Title | Category | Author | Publisher | Quantity |
|---|---|---|---|---|---|
| {{book.bookid}} | {{book.title}} | {{book.category}} | {{book.author}} | {{book.publisher}} | {{book.qty}} |


Methods
getRespondentContact(res) → {string}
Get the contact number of the respondent
Parameters:
| Name | Type | Description |
|---|---|---|
res |
string | the respondent type |
- Source:
Returns:
contact number of the respondent
- Type
- string
messageSend(recordID, descr, time, address, unitNum, respondentContact)
Send SMS to the appropriate respondents
Parameters:
| Name | Type | Description |
|---|---|---|
recordID |
number | the record ID of the incident |
descr |
string | the description of the incident |
time |
string | the time when the incident is reported |
address |
string | the postal code of where the incident is |
unitNum |
string | the unit number of where the incident is |
respondentContact |
string | the contact number of the respondent |
- Source:


--- layout: page title: Thanks description: "Thank you page for email contacts" comments: false share: false ---
I'll get in touch with you as soon as possible!


WHAT WILL YOU DO ONE DAY?
Rock the mic? Light up the stage or screen? Make a difference? Show us by June 1, and you could win a celebrity mentorship.
ENTER THE CONTEST NOWRock the mic? Light up the stage or screen? Make a difference? Show us by June 1, and you could win a celebrity mentorship.
ENTER THE CONTEST NOWYou’ve got up to 60 seconds to show us your dream. Start with “One day I’ll…” then it’s all you.
It’s totally optional, but if you want tunes, you'll need to download one of ours.
Are you 13-21 years old and a US or Canadian citizen (excl. Quebec)? Then you’re all set.
top
Ask your doctor for ACUVUE® Brand Contact Lenses, and see how easy and comfortable wearing contacts can be.

FOLLOW
SHARE
top


RT @PDXCodeSchool: We're still @osbridge, and today alum/assistant director @shawnacscott gives The Case for Junior Developers at 2:30, roo…
6/26/2014, 1:44:31 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
RT @PDXCodeSchool: We're still @osbridge, and today alum/assistant director @shawnacscott gives The Case for Junior Developers at 2:30, roo…
6/26/2014, 1:44:31 PM
Favs: 0
Retweets: 0
link


Climbing Lessons
My Availability
| Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday | |
|---|---|---|---|---|---|---|---|
| Dogpatch Boulders, San Francisco | X | X | |||||
| Planet Granite, San Francisco | X | X | |||||
| Planet Granite, Sunnyvale | X | X | X |
| Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday | |
|---|---|---|---|---|---|---|---|
| Dogpatch Boulders, San Francisco | X | X | |||||
| Planet Granite, San Francisco | X | X | |||||
| Planet Granite, Sunnyvale | X | X | X |


A genius of the brush and a patriot of the highest order.
Creator of the world-famous painting, SPOLARIUM, which was awarded the gold medal in the Exposicion Nacional de Bellas Artes in Madrid in 1884.
It is also known as the greatest painting of all times. Born in Badoc, Ilocos, Norte, on October 23, 1857.
He was closely associated with the Reform Movement, together with Rizal, Lopez-Jaena, Ponce, etc. He died in Hongkong on December 7, 1899.


If entering from outside the EU or are a non-EU yacht then Clearance formalities need to be completed. Riga has adequate facilities for yachts but Roja is a more convenient stop and has good facilities.
Last updated June 2015.
Latvia is a member of the Schengen Agreement Area. See Noonsite's Schengen page for more details on the immigration rules.
For a list of countries whose citizens may also enter Latvia without a visa for stays up to 90 days, see www.mfa.gov.lv/en
For up-to-date visa information and also addresses of Lativa consulates and embassies, look at Latvia government website
You are required to have health insurance when you enter Latvia. This must include repatriation costs.
Last updated June 2015.
Guns, narcotics, pornography, etc. are strictly banned. There are no restrictions on the amount of hard currency you can bring in or take out.
Objects dating before 1945 are subject to tax and require an export permit from the Ministry of Culture (C-3) on Pils 22; tel. 721-4100, fax 722-7916; open:08:30-17; Sat., Sun. closed. Make sure you take along the receipt to prove it was paid for and not stolen.
Customs rules appear to change frequently, with officials sometimes interpreting them as they see fit. Customs info is available from the Customs Department, (G-1) K. Valdemara 1a, tel. 732-3858, fax 732-2440.
EU regulations apply concerning temporary importation of yachts. See EU VAT page for more information.
Last updated June 2015.
If you are struck down by a major illness while in Latvia, it is probably best to fly to Western Europe if you can. Many doctors are under trained and most lack up-to-date equipment. Diagnostics is especially uncertain. Emergency services can sometimes be slow.
There is an increasing number of private facilities with Western-trained doctors.
A certificate of competence may be requested.
A listening watch must be kept of VHF channel 16 while in Latvian waters.
Anchoring is not permitted in the navigation channels and rivers approaching the ports.
Drinking alcohol in public is prohibited and may lead to detention and a financial penalty.
PET REGULATIONS - Pets require Passport and must have been vaccinated against rabies at least 30 days prior to travel. Latvia requires the bi-lingual EU Form 998 Veterinary Certificate. www.pettravelstore.com/store-pet-immigration-forms1.html.


I remember this night oh so clearly, yet oh so opaque. It all started off in the high school parking lot with a whole bunch of people meeting up to go do whatever and it ended in sheer mystery. A friend of mine had acquired some 2C-E from the research chemical guru in town, we'll call him JP. He acquired 5 hits (worth $100 where I live) and along with JP, I tripped with three more people; whose names are CT, CP, and TP in this experience.
So, CP and TP had acquired their 2C-B to match the 2C-E JP was about to give me and CT, and it was set that it was straight to trip in TP's basement that night for as long as we needed it to. Along with the trippers were four more people; their pseudonyms can be identified as BS, MR, JR and GE. Those last four didn't trip that night, but that mattered to me little as I was about to experience a virginal dip into the world of the 2C family.
I myself have been quite experienced with entheogens; I have been smoking pot since I was 12 years old (I am 18 years old upon writing this), I've drank since I was 13, I've done handfulls of pills of all sorts, I've ate mushrooms about 10 times, done acid once, done cocaine a couple of times, but I have never been so opened up by entheogens like I was this night.
After everyone that was up in the high school parking lot split, CT, CP and TP headed up to Wal-Mart to get some glowsticks by recommendation of the veteran phenethylamine trippers. All the others piled into my Blazer and we went off to some dude's house to get a quarter bag and after it was all said and done we met up at TP's house.
The five of us gathered around a wooden table, drinks in hand ready to consume the glorious pills. Someone chalked on the board exactly when we all took it and it was exactly 11:30 on the dot when we finished. For the coming up part of the trip, I totally neglected my vow to stay clean in order to get a job and went outside and blazed through a couple bowls and felt the very familiar weed buzz kick in. After that and a couple cigarettes, I went back inside where the movie Superbad was playing.
About 30 minutes into the movie, I noticed everything had a red tint to it. I was amazed by this, because I wasn't sure if my vision was just getting bad or if the 2C-E was actually about to kick in. I've never done it until then; and it wasn't like mushrooms where I got that G-force feeling and the feeling in my teeth to let me know what I was in for... it just kind of happened all of a sudden. I was hit with a rush of phenethylamine power around an hour after I had taken it, and I had no idea what I was in store for.
For about the next hour and a half, it's all a blur, I don't quite remember all of it except for bits and pieces. I remember going outside and GE had been listening to some Nine Inch Nails on some media playing device and it sounded like the craziest music I had ever heard. By this point, all those not tripping were either drunk, high, or a combination of both. Before too long, GE had split. Fine by me.
 It was cold outside and the only provisions I had to protect me from the elements was a flannel and some cigarettes and these vivid visuals I was getting. The stars were no longer in their constellations as normal; except a myriad of blue, red, white, yellow and purple stars, fluttering about in the sky, and I felt as if I could move them with my mind. I must have been looking at them for 10 minutes before the infamous vomitting occured.
After that, I felt what I thought was the plateau about to come up. I was too cold and I decided to go back inside to find MR on the couch. Everyone that was tripping was still outside glowsticking and enjoying the tracers but I wanted some conversation with the 'sane world' at this point for some reason. Bad choice, as this was the most unpleasant part of the experience thus far.  I wondered if sleep was a possibility and I endured my hardest for the next few minutes to grip onto reality, but this was not possible.
I rushed into TP's bathroom and lifted the toilet seat. I felt some more about to come up, and it did. After I threw up for the second time, I had noticed that EVERYTHING had changed. All senses had a new definition to them, and the way they functioned five hours ago was not the way they did at this point. I felt like a new human being, or even one transcended of being human.  Touch hadn't changed all that much aside from I could actually dip my fingers into the crazy patterns and I wasn't sure what was safe to touch and what was out to get me. I smelled smoke everywhere I went, but that may have been because I was chiefing as many cigarettes as possible, hoping to attain satisfaction (absolutely impossible at the place I was).
One look at myself in the mirror convinced me that I needed to drift past this altered state of being and reunite myself amongst the tripping crowd. I had broken out into a furious sweat and I was struggling to not dissolve into the patterns on the floor. I wasn't frightened, but I wasn't sure of what was going to happen next. To fend of the sweat, I took off my flannel and shirt only now in a wifebeater and headed outside. I completely forgot how frigid it was, too.
Upon going outside, I redefined tracers. I had never seen anything so vivid, so full of life in all my days. Simple things such as glowsticks were something of that I relied my sanity and good trip on from now until the end. Everyone out there thought I was nuts because I was in a wifebeater and refusing to accept that it was about freezing outside, but I was too absorbed in glowsticking. They were forming all kinds of fractal patterns, animals, etc. Whatever my mind wanted the two sticks to become, it was so. After regaining my perception on temperature, I rushed back inside to retrieve my clothing and headed back outside. I completely ignored the ominous roar of the guitar amp's flanger that JR was playing with great skill, as I thought it might be a threat to my safety (my mind had never been so volatile during a trip like this).
I remember talking to CP, who was smoking a cigarette as I was. The only words I could mutter was his first name, as speech was practically impossible as I was shivering like never before, trying to control the contents in my stomach and coming to terms with the intensity of my trip all at once.  Nonetheless, we all got tired of the cold and we ran out of pot some thirty minutes ago so we decided it was glowsticking time. The most glorious part of the trip was in full swing.
Any song TP or CT decided to play on the computer was now a part of me and if the glowsticks or the music were to stop, I would surely be thrown back into the dissolving void I singlehandedly fought to get out of. It was about 3:00 at this time, and now I was stuck in a series of patterns. Not visual, just mannerism patterns. I would sit down for about fifteen seconds, get up and walk around for another fifteen, grab some glowsticks, glowstick for about a minute or so and hand them off, talk to some people, and then venture off into the bathroom (which was extremely dangerous considering looking at myself is what launched me into the unpleasant part of my trip).
I was parched, so some water was definitely needed. Turning on the faucet was a riveting experience. I would look at the water, then after about three seconds, the 'red' would kick in again. The water turned into blood! I was drinking blood from TP's faucet. I rushed back in to tell everyone of how glorious this made me feel to drink blood, and all I received was laughter. Everyone awake tripping or not concurred that my statement about drinking blood was the funniest thing they had heard all night. Anyways, this pattern (besides notifying them all that blood, not water, was coming out of the faucet) of events would go on for the next 30 minutes or so. I remember CT continually spouting the phrase 'Nice, nice!' for what seemed like an eternity every time that other feeling that I get off of 2C-E would kick in. The flanger was still being played and the trip was in full swing, I was in heaven.
At about 4:30 AM, the events that were going on were suddenly interrupted.  So, we continued our glowsticking spree, becoming more and more fascinated with the tracers as we'd continue. Fischerspooner, Crystal Method, Darude, Daft Punk, Soundgarden, a lot of others were being recycled in iTunes or whatever it was being played out of as we'd continue this until the sun rose.
By 6:30, TP and CP's trip had worn off as 2C-B doesn't last nearly as long as 2C-E, so they attempted to fall asleep. JP, CT and I were still possessed greatly by the effect of 2C-E, so we talked for what seemed like ages and glowsticked for about another hour. The whole time we were at TP's, we'd continually drop the glowsticks and it'd thud onto the wooden-with-glass table that he had, probably waking up whoever was upstairs. After a while, he had gotten tired of it and the sun was up now, so it was time to go. I didn't know how to make sense of this, as I drove, and how I was about to drive as I was still tripping so intensely hard that I didn't think I could pull it off.
[Erowid Note: Driving while intoxicated or tripping is dangerous and irresponsible because it endangers other people. Don't do it!]
I've driven completely trashed on every substance I've done except acid and it had been to much success, but for once I felt like I just couldn't pull it off.
So, the nine or some odd of us walked out of TP's basement, rather a march. I recall CT saying 'It's like all of us are marching off to war!' and it was because we were trying to get to our cars before TP's parents saw us all. I got in the car and gave the keys to CT and we drove to McDonald's, about a ten minute drive from where we were.
I had also never day tripped before, and it was truly amazing. The road seemed further away than what it was and it had a tint to it like in Grand theft auto 3 when the game glitches and the roads turn blue and have that mysterious void in them.
My pupils had never been so huge in my entire life! I thought they were huge when I did shrooms, but the black encapsulated almost all of my eye, as there was only a thin layer of blue surrounding it. No bother though, as everyone else's were the same. We went inside and techno was playing! It's like they knew what to play when we entered the door. We all talked of the crazy visuals we saw that night and the et cetera before everyone went their own separate ways. I'm leaving plenty of detail out as it's something I simply cannot put into words.
To this day, I still feel some of its effects. The metallic taste in my mouth is apparent some times more than others, but a hint of it has stayed since that very night. Sometimes I get visuals when I'm sober that are reminiscent of what I saw as well. I can't watch Superbad without noticing how 'red' everything looks in it and when I trip on other hallucinogens I try my hardest not to make anything turn red because the battle I fought to get out of that void was one of the hardest things I have done on my own in my life. A phrase CP said... 'Trippy shoes are hard to slip into' lingers in my mind as well.
Finally, 2C-E lasts a REALLY long time and the intense part of the trip lasted a long time as well (hence 2C-Eternity as the title).
--splifferHSC
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


This privacy policy (the “Privacy Policy”) applies to this website (the “Website”) and the services provided by Online Prospect Limited (“Online Prospect Limited”, “we”, “our” or “us”). Online Prospect Limited’s services involve the programming, tracking, recording, managing and publishing of advertisements on its customers’ websites. The purpose of this Privacy Policy is to describe how Online Prospect Limited may treat and use information Online Prospect Limited may collect when you use the Website or Online Prospect Limited’s services, as well as the choices you have concerning the collection and disclosure of this information. Please note that this Privacy Policy applies only to information collected on the Online Prospect Limited Website, it does not apply to any other information collected or obtained through other means or information collected by one of Online Prospect Limited’s customers on that customer’s own website, and/or online properties.
When this Privacy Policy uses the term “personally identifiable information”, “personal information,” we mean information that identifies a particular individual, such as contact information (including full name, street address or email address); demographic information (such as age or gender); unique identifiers (such as your user ID or password); and financial information (such as your credit card number). Online Prospect Limited does not collect any personally identifiable information. Online Prospect Limited will never sell, rent, or share your personal information, including your email to any third parties for marketing purposes.
Whenever you visit the Website, Online Prospect Limited may use cookies to receive and store certain types of internet usage information, such as your IP address and/or click-stream data, as well as information on how the Website is used, visit history, including section visits, operating system and browser type information. Online Prospect Limited will not collect data relating to sensitive data categories, such as past or current activity of browsers on gambling, adult, government agency, or child-oriented sites, personal health, race, religion, ethnicity, criminal record, political opinions or beliefs, union membership, sexual orientation or behavior. This information does not contain personally identifiable information, and will only be used to determine how the Website is being used and help us create a better, faster, more efficient website and provide you with better content.
Any information collected via the Website is owned by Online Prospect Limited and we may use it for our own purposes, including marketing. Such information may also be used to contact you about the Website; provide you with services or information you have requested or ordered; monitor or improve the use of the Website; customize the advertising and content you see; and monitor compliance with our terms and conditions of use of the Website. Notwithstanding the terms of this Privacy Policy, Online Prospect Limited currently does not collect any personally identifiable information or store IP addresses on its Website. Further, to the extent Online Prospect Limited does collect any information via the Website, Online Prospect Limited does not share any such information with any other website or entity.
You should be aware that when you are on the Website you could be directed to other websites beyond our control, including, but not limited to the websites of Online Prospect Limited’s customers, advertisers or market partners. Even if such websites reflect the services of Online Prospect Limited, or have the look and feel of the Online Prospect Limited Website, any interaction on such website will be with the owner of that website, and that party’s privacy policy will govern any information gathered. These other websites may independently collect data, use cookies or solicit personal information and may or may not have their own published privacy policies. If you visit a website that is linked to the Website, you should consult that website’s privacy policy before providing any personal information. All websites utilizing Online Prospect Limited’s services are required to have such a privacy policy.
In addition to the foregoing concerning customer websites, Online Prospect Limited may collect, or work with third party technologies that collect, non-personally identifiable information about visitors to Online Prospect Limited’s customer websites includes, for example: IP address, browser type, browser history, ISP, browser language, referring website addresses, date and time of visits, search keywords, page view history, activities and actions on the customer website, user location (city, country, zip code), date and time stamp, types of advertisements viewed and click data, and visitor’s device information, including make, model, operating system, and data connection type. Online Prospect Limited uses the Collected Information to better target advertising and advertising campaigns to visitors of Online Prospect Limited’s customer websites. The information may also be used to operate and improve the Online Prospect Limited’s services; to customize the advertising and content you see on the customer website; to report on or forecast advertisement or advertisement campaign performance including preparing visitor activity summaries; and to determine non-personally identifiable user responses to advertisements and advertisement campaigns. Online Prospect Limited may supplement the Collected Information with non-personally identifiable information provided by third parties to enhance these uses. Online Prospect Limited may share the Collected Information with its partners to help them deliver targeted advertisements and advertising campaigns to visitors to customer websites and with those who help Online Prospect Limited provide its services. Online Prospect Limited may also share the Collected Information as necessary to comply with laws or regulatory requirements and/or to respond to lawful requests and legal process, to protect the rights and property of Online Prospect Limited, its affiliates, agents and customers or in the case of an emergency to protect the safety of our employees, agents, customers or any person. RETENTION OF COLLECTED DATA Online Prospect Limited retains information collected for as long as needed to provide Online Prospect Limited’s services, and as necessary to comply with our legal obligations, resolve disputes, and enforce our agreements.
By using the Website, you signify your agreement to the terms of this Privacy Policy. We reserve the right, at our discretion, to change, modify, add, or remove portions of this policy at any time. Please bookmark this page and check it periodically.


Flight 31:
Communications satellite for EchoStar Corp. EchoStar XXIII, based on a spare platform from the cancelled CMBStar 1 satellite program, will provide direct-to-home television broadcast services over Brazil. There was no attempt at a first-stage recovery, so this rocket did not have landing legs or grid fins. -wiki


let's keep in touch
*Disclaimer: There's no guarantee of specific results and that the results can vary. The information contained on this site is intended for educational purposes only and is not a substitute for advice, diagnosis or treatment by a licensed physician. It may also contain an information from related sites in which in the first place the site won't claim any particular or specific ownership since this is for public information only according to health concerns. It is not meant to cover all possible precautions, drug interactions, circumstances or adverse effects. You should seek prompt medical care for any health issues and consult your doctor before using alternative medicine or making a change to your regimen.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 2
Preheat the oven to 190C/375F/Gas 5.
Heat an ovenproof pan until hot and then add the rapeseed oil. Place the ling fillets into the pan and fry on each side until golden-brown.
Place the pan in the oven and roast for 6-7 minutes until just cooked.
Remove the pan from the oven and set aside, in a warm place, to rest.
Wash the clams thoroughly, discarding any that have broken shells or fail to close when you tap them against the sink.
Heat a separate pan until hot and add the clams, most of the perry (bar a splash) and the shallot. Simmer with the lid off for 2-3 minutes, until the clams have opened and the liquid has reduced down slightly.
Drain the clams through a fine colander with a bowl below to retain the liquid. Pour the liquid back into the pan and set the clams aside. Discard any which haven't opened.
Return the pan to the boil and cook until reduced and thickened.
Add half of the butter to the pan and whisk to combine. Season with salt and white pepper. Keep the sauce warm while you cook the curly kale.
Bring a pan of salted water to the boil and add the curly kale. Cook for 2-3 minutes until just tender.
Drain the kale well and transfer to a bowl. Add the remaining butter, lemon zest, and salt and white pepper, to taste.
To serve, share the kale between two plates and place the fish on top.
Add a splash of perry and the chopped chives to the clam sauce. Then spoon the mixture over the fish. Arrange the clams on top. Pour all the remaining sauce over and serve.


Greenstar provide home owners and business with just one company to implement the technologies that will enhance they way you like to live or more effectively operate your organisation. We help you streamline the design, selection and implementation of all your electronic services you depend upon.


Zen : from a MVP to something usable
slides : http://github.com/CoderDojo/deck-2016-dojocon
Daniel@MakeItPretty / Guillaume@MakeItWork
Reminder : Goals of Zen
- Helping dojos
- Empowering children
What was done before last year
- Booking system
- Dojo listing
- Changes in the dev team
Since then
- Redesign
- Security by design
- Onboarding
- Badge evidence
Growth
- 16k users
- 1.5k dojos
- 1.5k users with badges
Hopefully by this year
- Start a dojo
- My Dojos page
- Booking enhancement
- Ticketing admin redesign
- Bulk management of users
- Getting out of MVP : Testing
We're far from finished
- Projects
- Kata
- Dasbhoards
You ?
- Forums
- Students
- Github, Kata, translations
- IRL
Us ?
Still reachable
Want to hear from you :)


Overview
Submission. Submit on blackboard by 11:59pm the day before the class they are due.
- Commented code (lnameN.sas, where N indicates the assignment number and lname is your last name)
- Output from your code (lnameN.log & (lnameN.lst or lnameN.html))
Late Assignments. Each student will be allowed one late assignment, due 7 days from the due date. NO other late assignments or make up will be accepted.
Collaboration: Collaboration on assignments, in class labs and homeworks, IS encouraged. However, what you hand in must be in your own writing/typing. Good scholarship requires that all collaborations must be acknowledged. Thus, if you collaborate on the solution of the problem set, we expect that you list your collaborators at the top of the page. Collaboration on in-class evaluations (quizzes, mid-terms, and the final exams) is, of course, a violation. This includes a discussion of questions on a quiz, midterm, or final with students from sections that has not yet taken the evaluation.
Plagiarism: If you consult any outside sources when doing your work, you are expect to further document these sources. Give credit where credit is due. Plagiarism will not be tolerated.
All handed in homework should state at the top any assistance with debugging and programming, as well as citations of any program segments copied from a website.
Seeking Help: Language classes are cumulative; don't fall behind. Ask for assistance from your fellow students or from the instructor, especially if you find yourself struggling. But remember in the end, programming classes are like skill building math classes. Either you know how to do them or not. No amount of watching others or the instructor program or debug it will suffice for you to build these skills. Only your hard work to work through them will build your skills. It is a lot of work to build these skills, but data skills are highly valuable in the job market in the modern digital world, so it will be well worth your effort. Furthermore, once you learn to think in this manner, it's not something you forget.
Elegance: There is always more than one way to say something, but some ways will be more "elegant" than others. You will learn to recognize elegant expressions as you become more familiar with a language and use the elegant idioms as you become more skilled.
Guideline for assignment grading (Total of 8)
- Assignment (Total 4)
- 1: Submitted code that does not run.
- 2: Mostly running but incorrect.
- 3: Correct and meets requirements (i.e uses programming constructs required)
- 4: Correct & Elegant. Comments.
- Answers to questions on the assignment (Total 1)
- Midpoint Check email (Total 1)
- Lab (Total 2) - DON'T forget to submit this with this assignment
Required & recommended readings for this assignment
- SAS: RECOMMENDED - appropriate chapters in The little SAS book
Assignment 2: Variables & Conditionals
In this assignment, you will learn the basics of working with one dataset. By the end of this assignment, you should be able to
- To write conditional logic codes
- Subset columns (variables) & rows (observations) from a given table
- Recode, rename variables and calculate new variables
- Label variables and values
Setting Up
- Create a working directory, often referred to as pwd (present working directory), where you will work on this assignment. For example, "assign2". You will be writing code in assign2/
- Create a sub directory data/. When you are writing programs, it is often a good idea to put your code in a different directory from your datasets, because if you are writing a lot of code, or working with a lot of datasets, you will stay more organized.
Pick a problem (See P3.1): Pick a content area you are interested to explore, with datasets you know you can access. Talk to your advisors if you have an RAship about potential datasets in your content area. You will be working with this dataset for many of the assignments so that you can use the class to explore your interest. OR you may continue to use the google flue dataset from Assignment 1.
Getting Data: Pick a dataset. It can evolve over the semester. Requirements for the dataset
- At least 20 variables, both numerical and categorical variables
- At least 1000 observations
Midpoint check: Email Dr. Kum a short note by next week (2/2) on what dataset you will be using to do assignment 2.
Describing the Data (See P3.2)
- Describe the dataset, including the number of obs and variables that are in your subset of data
- Check your data. Examine each variable for its range (min to max) or number of categories. Discuss any anomalies you see in this data (such as an abnormally high or low values)
P1. Cleaning and Manipulating the Data
Your program should do the following. Please indicate BEFORE the code in comments where each of these items occurs in your code.
- P1.1 subset vars (You need at least one of each continuous, categorical, binary, id var. If you are missing a type, create a new variable of that type.)
- P1.2 subset obs
- P1.3 rename at least 3 variables
- P1.4 label at least 3 variables
- P1.5 label values for at least 3 variables
- P1.6 Only for STATA. label your dataset
- P1.7 Recode at least 3 variables (use your imagination, if not essential to your analysis)
- P1.8 Construct at least 3 new variables (use your imagination, if not essential to your analysis)
- P1.9 Save out your new data permanently
P2. Learning Your Data (Descriptive Analysis)
Your program should also do the following. Please indicate BEFORE the code in comments where each of these items occurs in your code.
- P2.1 List each type of variable (continuous, categorical, binary, id). (see P3.3)
- P2.2 Create summary statistics for all your continuous & binary variables
- P2.3 Create tabulations for each categorical variables
- P2.4 Answer one interesting question using at least 3 variables (see P3.4)
P3. Readme file
Create a text file called readme.txt in your working directory (assign2/) Answer the following questions in the readme file send as attachment with code and output.
- Briefly describe the problem you are interested to pursue
- Briefly describe what data you will be using. Include number of obs, vars, and total file size.
- P2.1 List each type of variable (continuous, categorical, binary, id).
- P2.4 Answer one interesting question using at least 3 variables. Explain your answer.


Post-parsing
Device.php
LoadException.php
NetconfException.php
XML.php
XMLBuilder.php
CommitException.php
Warnings:
Warning on line 5 - no @package tag was used in a DocBlock for class CommitException
Warning on line 16 - File "/home/automation/Desktop/NETCONF-PHP-APIs/NETCONF-PHP-APIs/netconf/CommitException.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Device.php
Warnings:
Warning on line 11 - no @package tag was used in a DocBlock for class Device
Warning on line 884 - File "/home/automation/Desktop/NETCONF-PHP-APIs/NETCONF-PHP-APIs/netconf/Device.php" has no page-level DocBlock, use @package in the first DocBlock to create one
LoadException.php
Warnings:
Warning on line 5 - no @package tag was used in a DocBlock for class LoadException
Warning on line 16 - File "/home/automation/Desktop/NETCONF-PHP-APIs/NETCONF-PHP-APIs/netconf/LoadException.php" has no page-level DocBlock, use @package in the first DocBlock to create one
NetconfException.php
Warnings:
Warning on line 5 - no @package tag was used in a DocBlock for class NetconfException
Warning on line 16 - File "/home/automation/Desktop/NETCONF-PHP-APIs/NETCONF-PHP-APIs/netconf/NetconfException.php" has no page-level DocBlock, use @package in the first DocBlock to create one
XML.php
Warnings:
Warning on line 18 - no @package tag was used in a DocBlock for class XML
Warning on line 325 - File "/home/automation/Desktop/NETCONF-PHP-APIs/NETCONF-PHP-APIs/netconf/XML.php" has no page-level DocBlock, use @package in the first DocBlock to create one
XMLBuilder.php
Warnings:
Warning on line 13 - no @package tag was used in a DocBlock for class XMLBuilder
Warning on line 126 - File "/home/automation/Desktop/NETCONF-PHP-APIs/NETCONF-PHP-APIs/netconf/XMLBuilder.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Errors:
Error on line 19 - Unclosed code tag in DocBlock, parsing will be incorrect
Documentation generated on Fri, 28 Feb 2014 11:44:21 +0000 by phpDocumentor 1.4.4


RailQuery
Home
Trains b/w Stations
Reachability
Train Number
Datewise Trains
Note:
Write something about trains available from Source station to Destination.
Trains available from Source station to Destination On a Particular Date
Source Station:
Destination Station:
Date(YYYY-MM-DD):
Submit


Home
Player Details
Round Draws
Round Scores
Final Standings
Miscellaneous
Open Display In New Window
Show Final Standings to Players
Place
Player
Guild
Total Score
Total VPs
Total VP
Difference
Total
Goals
Total
Body
Count


Class: Aws::Connect::Types::SendNotificationActionDefinition
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-connect/lib/aws-sdk-connect/types.rb |
Overview
Information about the send notification action.
Constant Summary
Instance Attribute Summary
-
#content ⇒ String
rw
Notification content.
-
#content_type ⇒ String
rw
Content type format.
-
#delivery_method ⇒ String
rw
Notification delivery method.
-
#recipient ⇒ Types::NotificationRecipientType
rw
Notification recipient.
-
#subject ⇒ String
rw
The subject of the email if the delivery method is
EMAIL
.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#content ⇒ String
(rw)
Notification content. Supports variable injection. For more
information, see JSONPath reference in the Amazon ::Aws::Connect
Administrators Guide.
# File 'gems/aws-sdk-connect/lib/aws-sdk-connect/types.rb', line 12513
class SendNotificationActionDefinition < Struct.new( :delivery_method, :subject, :content, :content_type, :recipient) SENSITIVE = [] include Aws::Structure end
#content_type ⇒ String
(rw)
Content type format.
#delivery_method ⇒ String
(rw)
Notification delivery method.
#recipient ⇒ Types::NotificationRecipientType (rw)
Notification recipient.
# File 'gems/aws-sdk-connect/lib/aws-sdk-connect/types.rb', line 12513
class SendNotificationActionDefinition < Struct.new( :delivery_method, :subject, :content, :content_type, :recipient) SENSITIVE = [] include Aws::Structure end
#subject ⇒ String
(rw)
The subject of the email if the delivery method is EMAIL
. Supports
variable injection. For more information, see JSONPath
reference in the Amazon ::Aws::Connect
Administrators Guide.
# File 'gems/aws-sdk-connect/lib/aws-sdk-connect/types.rb', line 12513
class SendNotificationActionDefinition < Struct.new( :delivery_method, :subject, :content, :content_type, :recipient) SENSITIVE = [] include Aws::Structure end


Draggable Area
CAN'T DRAG
Recevie from Qt:
QCefQuery Test:
This is a query request message from JavaScript.
Cookie Manager
Name:
Value:
Days:


Long text to make the screen horizontally movable, to test the flick gesture at a long horizontal distance Normal link


| Name |
Description |
| aggregateReports |
Aggregates Reports into root directory |
| aggregateScoverage |
|
| assemble |
Assembles the outputs of this project. |
| build |
Assembles and tests this project. |
| buildDashboard |
Generates a dashboard of all the reports produced by this build. |
| buildDependents |
Assembles and tests this project and all projects that depend on it. |
| buildEnvironment |
Displays all buildscript dependencies declared in root project 'ddo-calc-parent'. |
| buildNeeded |
Assembles and tests this project and all projects it depends on. |
| buildScanPublishPrevious |
Publishes the data captured by the last build to the build scan server. |
| check |
Runs all checks. |
| checkScoverage |
|
| classes |
Assembles main classes. |
| clean |
Deletes the build directory. |
| cleanEclipse |
Cleans all Eclipse files. |
| cleanIdea |
Cleans IDEA project files (IML, IPR) |
| components |
Displays the components produced by root project 'ddo-calc-parent'. [incubating] |
| dependencies |
Displays all dependencies declared in root project 'ddo-calc-parent'. |
| dependencyInsight |
Displays the insight into a specific dependency in root project 'ddo-calc-parent'. |
| dependencyUpdates |
Displays the dependency updates for the project. |
| dependentComponents |
Displays the dependent components of components in root project 'ddo-calc-parent'. [incubating] |
| eclipse |
Generates all Eclipse files. |
| generateSiteHtml |
Generates a web page containing information about the project. |
| help |
Displays a help message. |
| idea |
Generates IDEA project files (IML, IPR, IWS) |
| init |
Initializes a new Gradle build. |
| jar |
Assembles a jar archive containing the main classes. |
| javadoc |
Generates Javadoc API documentation for the main source code. |
| kotlinDslAccessorsReport |
Prints the Kotlin code for accessing the currently available project extensions and conventions. |
| model |
Displays the configuration model of root project 'ddo-calc-parent'. [incubating] |
| openIdea |
Opens the IDEA project |
| projectReport |
Generates a report about your project. |
| projects |
Displays the sub-projects of root project 'ddo-calc-parent'. |
| properties |
Displays the properties of root project 'ddo-calc-parent'. |
| reportScoverage |
|
| reportTestScoverage |
|
| scaladoc |
Generates Scaladoc for the main source code. |
| scoverageClasses |
Assembles scoverage classes. |
| tasks |
Displays the tasks runnable from root project 'ddo-calc-parent' (some of the displayed tasks may belong to subprojects). |
| test |
Runs the unitTest tests. |
| testClasses |
Assembles test classes. |
| testJar |
Assembles a jar archive containing the unitTest classes. |
| useLatestVersions |
Updates module and plugin versions in all *.gradle and *.gradle.kts files to the latest available versions. |
| useLatestVersionsCheck |
Check if all available updates were successfully applied by the useLatestVersions task. |
| wrapper |
Generates Gradle wrapper files. |


ecg_analysis module¶
-
ecg_analysis.
calc_beats
(time, volts)¶ This function returns the time points of heart beats by looking at the voltage values
This function takes the time and voltage lists as input. The max voltage is stored in the variable maximum by calling the function calc_voltage_extremes() and selecting the max value. A for loop loops through the voltage values and stores the time points where the voltage is greater than half of the max voltage. This list of times is sent to the function group_similar_values() which returns the list of times corresponding to heart beats.
- Parameters
time (list) – list of time values for the ECG data
volts (list) – list of ECG voltage magnitudes
- Returns
list of time values corresponding to heart beats
- Return type
list
-
ecg_analysis.
calc_duration
(time)¶ This calculates the time duration of the ECG data.
The time duration is found by subtracting the first time value from the last time value.
- Parameters
time (list) – list of time values for the ECG data
- Returns
duration of ECG data in seconds
- Return type
float
-
ecg_analysis.
calc_mean_hr_bpm
(time, volts)¶ This function returns the average heart rate over the ECG data
The two lists time and volts are used as input parameters and are sent to the function calc_beats which returns the list of time points corresponding to heart beats. Using a for loop the time between beats are stored in the list hr_list. The inverse of the time between the beats is multiplied by 60 to convert beats per second to beats per minute. The average of this list of heart rates is calculated by finding the mean of the heart rates.
- Parameters
time (list) – list of time values for the ECG data
volts (list) – list of ECG voltage magnitudes
- Returns
mean heart rate over the ECG data
- Return type
float
-
ecg_analysis.
calc_metrics
(time, volt)¶ This function calls the functions necessary to calculate the ECG metrics
This function takes the time and volt lists as inputs and calls several functions to return a dictionary of ECG metrics. First filter_data() is called to get the voltage data without the high and low noise. Then the duration is calculated using the function calc_duration(), the voltage extremes are calculated by calling the function calc_voltage_extremes(), the number of beats is calculated by calling the function calc_num_beats(), the average heart rate is calculated by calling the function calc_mean_hr_bpm(), the list of times corresponding to heart beats is calculated by calling the function calc_beats(). All of the metric data is put into a dictionare by calling the function make_dictionary.
- Parameters
time (list) – list of time values for the ECG data
volts (list) – list of ECG voltage magnitudes
- Returns
dictionary containing ecg metrics
- Return type
dictionary
-
ecg_analysis.
calc_num_beats
(time, volt)¶ This returns the number of heart beats over the ECG data.
This function calls the function calc_beats to get the list of heart beats for the ECG data. The length of this list returned which is the number of beats in the list.
- Parameters
time (list) – list of time values for the ECG data
volts (list) – list of ECG voltage magnitudes
- Returns
the number of beats in the ECG data
- Return type
int
-
ecg_analysis.
calc_voltage_extremes
(volt)¶ This function calculates the extreme values in the ECG data.
This functon takes the volt list as input which is the magnitude of the ECG data, and finds the extreme values using the max() and min() values. The max and min values are returned as a tuple.
- Parameters
volts (list) – list of ECG voltage magnitudes
- Returns
(min, max)
- Return type
tuple
-
ecg_analysis.
check_data
(temp_time, temp_volt)¶ This function checks whether the .csv data can be used for analysis
This function takes two string arguments, one of the string in the time location in the csv file and one string that was in the voltage location in the csv file. This function returns False if either of the strings are empty, non-numeric, or NaN.
- Parameters
temp_time (str) – a string of what should be the time data
temp_volt (str) – a string of what should be the voltage data
-
ecg_analysis.
filter_data
(time, raw_volt)¶ This function filters out noise below 10 Hz and above 50Hz
This filter takes the time and raw_volt data as input and filters out noises below 10 Hz and above 50 Hz using the heartpy function filter_signal. See documentation on the filter_signal function at: https://python-heart-rate-analysis-toolkit.readthedocs.io/en/ latest/_modules/heartpy/filtering.html
- Parameters
time (list) – list of time values for the ECG data
volts (list) – list of ECG voltage magnitudes
- Returns
the filtered ECG voltage values
- Return type
list
-
ecg_analysis.
group_similar_values
(beat_list)¶ This returns a list of time points that represents heart beats
The input argument beat_list contains a list of time values that correspond to voltages that are above half the max voltage. The list beat_list has groups of voltages that represent heart beats. For each group of times the median time is selected to be the heart beat and is appended to the list median_list which is returned and used as the list of times when heart beats occur.
- Parameters
beat_list (list) – This list contains all times that correspond
voltages over one half of the max voltage. (to) –
- Returns
a list of time points representing heart beats
- Return type
list
-
ecg_analysis.
interface
()¶ This function calls the functions that read the data and write json files
This funcion is called when the module is ran. It requests that the user type in the filename that stores the ECG data. This function then calls the function read_input() that reads the data inside the given filename and creates a dictionary of ECG metrics. This dictionary of metrics is then sent to the function output_file() which creates the json to store the data.
-
ecg_analysis.
is_a_number
(number)¶ This function returns whether a string contains a number
This function uses a try-except statement to check whether a string is numeric. It does so by trying to take the float of a string and returning True if it is successful and False if unsuccessful.
- Parameters
number (str) – a string containing data from the .csv file
- Returns
True or False depending on if the string is numeric
- Return type
bool
-
ecg_analysis.
log_if_bad_data
(temp_check)¶ This function logs an error if there is a bad data point.
This function uses the result of temp_check to see if a data point is usable in the ECG analysis. If the data point prompts check_data() to return False, then it will log it as a bad data point.
- Parameters
temp_check (bool) – True or False depending on whether the data
be used (can) –
-
ecg_analysis.
log_if_data_too_high
(volt)¶ This function logs a warning if there are voltages outside of the normal operating range.
This function takes the volt list as input and finds the max and min of the list. If the max is above 300 mV or the min is under -300 mV then a warning is logged.
- Parameters
volt (list) – list of ECG voltage magnitudes
-
ecg_analysis.
make_dictionary
(duration, voltage_extremes, num_beats, mean_hr_bpm, beats)¶ This function returns a dictionary of ECG metric data
This function makes a dictionary containing all of the ECG metric data, which is passed into the function as the function’s input parameters.
- Parameters
duration (float) – the time duration of the ECG data
voltage_extremes (tuple) – a tuple containing the min and max voltages
num_beats (int) – the number of heart beats in the ECG data
mean_hr_bpm (float) – the mean heart rate in beats per minutes
beats (list) – the list of times corresponding to heart beats
- Returns
dictionary containing ecg metrics
- Return type
dictionary
-
ecg_analysis.
output_file
(metrics, filename)¶ This function writes the output json file for the ECG data
This function takes the dictionary of ECG metrics and the name of the csv file as inputs. The name of the csv file is split into a list at the period and the first item of the list is put into a string followed by .json to create the filename. Using a with statement and a .dump() command the json file is written.
- Parameters
metrics (dict) – Dictionary containing ECG metrics including
time duration, extreme values, number of beats, (the) –
points of beats, and mean heart rate in bpm. (time) –
-
ecg_analysis.
read_input
(filename)¶ This function reads the data from an input file This function uses a with statement to open a file and a while loop to go through the entire function. Each line is read, and the contents of the line are cleaned and turned into time and voltage values where they are then stored in the time and volt lists.
- Parameters
filename (str) – the string of the filename to be opened
- Returns
a list of time values list : a list of voltages
- Return type
list
-
ecg_analysis.
split_data
(temp_line)¶ This function recieves a line of input from the data file and returns the data after it is isolated
ECG test data is read into the software using the function read_input() which sends the data line by line to this function to clean it up. The lines of data are stripped and split at the comma into time and voltage values. If a value is missing, then a blank string is returned.
- Parameters
temp_line (str) – a string that contains a line of ECG data
- Returns
list of time values for the ECG data volts (list): list of ECG voltage magnitudes
- Return type
time (list)


library(ROhdsiWebApi)
This Vignettes describes how ROhdsiWebApi maybe used to work with cohorts in a WebApi. Please review ‘The Book of OHDSI’ chapter on Cohorts.
we define a cohort as a set of persons who satisfy one or more inclusion criteria for a duration of time. The term cohort is often interchanged with the term phenotype. Cohorts are used throughout OHDSI analytical tools and network studies as the primary building blocks for executing a research question.
A cohort is defined as the set of persons satisfying one or more inclusion criteria for a duration of time. One person may qualify for one cohort multiple times during non-overlapping time intervals. Cohorts are constructed in ATLAS by specifying cohort entry criteria and cohort exit criteria. Cohort entry criteria involve selecting one or more initial events, which determine the start date for cohort entry, and optionally specifying additional inclusion criteria which filter to the qualifying events. Cohort exit criteria are applied to each cohort entry record to determine the end date when the person’s episode no longer qualifies for the cohort.
In many cases, we would like to get a list of definitions that are published in WebApi. e.g. what are the list of cohort definitions in Atlas? - To get this metadata into R as a dataframe, we can use the function getMetadataForAllSpecifications(baseUrl) %>% dplyr::filter('cohortDefinitions')
. We can then use dplyr functions to filter to the cohorts that we are interested in. WebApi uniquely identifies every cohort definition by an integer id - called cohort id. Cohort Names are also unique within WebApi.
Once we know the cohort id’s we are interested in, we can extract the expression of the cohort specification. WebApi stores specifications as JSON objects. We can use getCohortDefinition(baseUrl = baseUrl, cohortId = 3424)
. Note this will be R-objects (not JSON). We follow a generic design pattern where all objects either returned or used by the package are standard R-objects like list, data frame, vector etc. If you want to see the JSON expression we can You will have to convert it into JSON as in this getCohortDefinition(baseUrl = baseUrl, cohortId = 3424)$expression %>% RJSONIO::toJSON(pretty = TRUE)
.
We may want to know if a certain cohort specification has been generated by checking cohort generation status getCohortGenerationStatuses(baseUrl, definitionIds= c(4234, 43242))
. If a cohort is not previously generated, it may be generated using invokeCohortSetGeneration(baseUrl, definitionId = c(4234))
. If it is already generated, we can extract its output of cohort generation using getCohortGenerationOutput(baseUrl, cohortId = 4234)
.
Many times we may want to move a cohort definition from one instance to another. To add an existing cohort specification expression in R into another WebApi instance we can postSpecification(baseUrl = newBaseUrl, name = 'This is new name', type = 'cohort', object = expression
. To delete a cohort definition deleteCohortDefinition(cohortId = 4234, baseUrl = baseUrl)
.


This structure stores the calibration states of the gyro sensor.
Fields- wNoiseMinValue
-
Stores the minimum noise value.
- wNoiseMaxValue
-
Stores the maximum noise value.
- dwPrevTicks
-
Stores the system time stamp of the previous sample.
- wCalTicksLeft
-
Stores the number of system ticks left for exiting calibration.
- dwAccum
-
Stores the accumulated value for averaging the bias.
- wSamples
-
Stores the number of samples taken for calibration.
|


Basic info about category
Id
{{categoryDetailViewModel.categoryId}}
Name
{{categoryDetailViewModel.categoryDetails.name}}
Books from this category {{categoryDetailViewModel.eBookList.length}}
Books from this category are available you to download them.
You are not subscribed for this category and you can't download any book from this category.
| Id |
Title |
Author |
Language |
| {{eBook.id}} |
{{eBook.title}} |
{{eBook.author}} |
{{eBook.language.id}}) {{eBook.language.name}} |


--- title: "Packet7" layout: default menu-extern: docs-libtw2 ---
This document describes packet headers and chunk headers in Teeworlds 0.7.0+.
All sizes in bits.
packet7_header:
[ 2] reserved
[ 1] flag_connless
[ 1] flag_compression
[ 1] flag_request_resend
[ 1] flag_control
[10] ack
[ 8] num_chunks
[32] token
RRff ffAA AAAA AAAA nnnn nnnn
TTTT TTTT TTTT TTTT TTTT TTTT TTTT TTTT
packet7_header_connless:
[ 2] reserved
[ 1] flag_connless
[ 1] flag_compression
[ 1] flag_request_resend
[ 1] flag_control
[ 2] version
[32] token
[32] response_token
RRff ffVV
TTTT TTTT TTTT TTTT TTTT TTTT TTTT TTTT
rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr
NOTE: padding
must be zeroed. If flag_connless
is set, the other flags must not be set. flag_control
implies !flag_compression
.
NOTE: In packet7_header_connless
, version
must be set to 1.
chunk7_header_vital:
[ 1] flag_resend
[ 1] flag_vital
[ 6] <----------
[ 4] padding |-- size
[ 4] <----------
FFss ssss PPss ssss
chunk7_header_nonvital:
[ 1] flag_resend
[ 1] flag_vital
[ 6] <----------
[ 4] sequence |-- size
[ 4] <----------
[ 8] sequence
FFss ssss SSss ssss SSSS SSSS


The ripple effect is a fading filled circle of lighter color than the background which expands from the point of the click to cross the entire element. The effect will run behind the text and any border set on the element.
This is a standard, no nonsense <p> element with some simple CSS styling for its background (we hope you like beige).
This <p> element is exactly the same as the one above it, except it has an additional class - "ripple" - which we use to add the ripple effect snippet to it. When the user clicks anywhere on this element, we should be able to see the ripple effect animation.
The ripple effect should trigger whenever the user clicks inside the <div> element, or on its border, or on its text, but not just outside the border. Note that the snippet we are using in this Demo will pick up the DOM element's background color for its own canvas background color, and set the element's background color to 'transparent'.
Note: the failures in this part of the Demo are the reason why Scrawl-canvas snippets remain an experimental (and unstable) feature! If somethinhg in the environment - third party CSS or Javascript code, for instance - for any reason applies a CSS transform to the DOM element, then the element and the canvas it contains can fall out of sync with each other. Scaling and 3d transforms will lead to mismatched dimensions and positions. In the worst case scenario, the canvas may decide to animate itself off the web page, breaking it.
To pass this part of the test the canvas elements created by the snippet functionality should match exactly the position and rotation of their parent element. For the current codebase this only holds true for elements positioned absolutely by their top/left CSS attributes, with no additional transforms applied to them.
To apply a Scrawl-canvas snippet to a 3D-transformed DOM element, use Scrawl-canvas stacks - see Demo Snippets 002 for an example.
[Test elements/snippets removed - they break the page]


climate partnerships conservation change PAs adaptation area areas partnership biodiversity hydrologic potential {border-style established indicators range velocity protected px;} species successful #ffffff;} Fig current model null scale annual moving scales vs. (e.g., climate-area increase large non-PAs pixel Climate Conservation Sciences elevational partnering results terrestrial used benefits non-PA partnerships. world Protected area, compared future global high mean spatial Climate-area associated calculated change. data network number px; using values {font-family Biology Ecol areas, considered font-size scenarios space temperature Change Environmental Null Table benefit double; elevation especially greater individual landscape maximum median order percentage resolution small species’ target total window (i.e., Ecology However, Science United border-color border-width calculations change, defined denominator different environmental estimate existing factor freshwater importance include land management needed non-PAs. partner pixels planning precipitation promoting relief-weighted solid; units variation vulnerability {font-style {font-weight (A) (i) (ii) America Biodiversity Clim Ecology: Global International Life Nat National Relief-weighted Writing analysis area. average biome bold boundaries changes courier; did ecological ecoregions effective em; factors given important latitudinal magnitude mechanisms models, partnering, partners partnerships? performed promote pt;} required response riparian risk scenario size socio-political stand time variability velocity, work


You see Card 1 now
Show card 2
...and Card 2 now.


Toggle navigation
SG
About
My Projects
Education
Achievements
Achievements & Awards
XII Board Percentage:
95%(ISC)
X Board Percentage:
95.9%(ICSE)
KVPY Fellow
SA Stream (Class XI Year:2015-16)
AIR:785
NTSE Scholar
Class-X Year:2014-15


- Flew over two thousand kilometres
- Met my newborn niece, Matilda
- Did six hours of supervised driving
- Got my accounting up to date
- Read Day Watch
- Read half of Real World Haskell
- Proved my infinite superiority at Sudoku
Busy
This weekend, I
But then, that’s what I do basically every weekend. :)
(and at least it’s That Time yet so there was no marking and no hockey umpiring!)
Sounds like you had a good weekend :)
This involved a long lie-in, followed by a fried breakfast, followed by some more lazing around.
It was the best weekend in some time.


Lesson to take from naruto
The story of Naruto is not just great, it’s inspiring and it can and will motivate you. There are only a few of animes there are that has a storyline like this because it’s really hard to create a story like this that has everything. Also this awesome motivational storyline has lots of comedy, adventures, sadness, fight scenes and many more. This reason alone is enough for you to watch Naruto anime.


About
Cast
Inside Look
Social
Downloads
@@include('parts/freepreview.html')
@@include('parts/about.html')
@@include('parts/cast.html')
@@include('parts/insidelook.html')
@@include('parts/social.html')
@@include('parts/downloads.html')


Worldwide Numbers
Deaths
Confirmed Cases
Recovered Cases
Incident Rate
Fatality Ratio
Highest Numbers by Country
Most Deaths: [[${indexModel.regionWithMostDeaths.name}]]
Most Confirmed Cases: [[${indexModel.regionWithHighestConfirmedCases.name}]]
Most Recovered Cases: [[${indexModel.regionWithMostRecovered.name}]]
Highest Incident Rate: [[${indexModel.regionWithHighestIncidentRate.name}]]
Highest Fatality Ratio: [[${indexModel.regionWithHighestFatalityRate.name}]]
Lowest Numbers by Country
Least Deaths: [[${indexModel.regionWithLeastDeaths.name}]]
Least Confirmed Cases: [[${indexModel.regionWithLowestConfirmedCases.name}]]
Least Recovered Cases: [[${indexModel.regionWithLeastRecovered.name}]]
Lowest Incident Rate: [[${indexModel.regionWithLowestIncidentRate.name}]]
Lowest Fatality Ratio: [[${indexModel.regionWithLowestFatalityRate.name}]]
Highest Numbers by Region
Most Deaths: [[${indexModel.subregionWithMostDeaths.name}]]
Most Confirmed Cases: [[${indexModel.subregionWithHighestConfirmedCases.name}]]
Most Recovered Cases: [[${indexModel.subregionWithMostRecovered.name}]]
Highest Incident Rate: [[${indexModel.subregionWithHighestIncidentRate.name}]]
Highest Fatality Ratio: [[${indexModel.subregionWithHighestFatalityRate.name}]]
Lowest Numbers by Region
Least Deaths: [[${indexModel.subregionWithLeastDeaths.name}]]
Least Confirmed Cases: [[${indexModel.subregionWithLowestConfirmedCases.name}]]
Least Recovered Cases: [[${indexModel.regionWithLeastRecovered.name}]]
Lowest Incident Rate: [[${indexModel.subregionWithLowestIncidentRate.name}]]
Lowest Fatality Ratio: [[${indexModel.subregionWithLowestFatalityRate.name}]]


This is a built-in middleware function in Express. It serves static files and is based on serve-static.
NOTE: For best results, use a reverse proxy cache to improve performance of serving static assets.
The root
argument specifies the root directory from which to
serve static assets. The function determines the file to serve by
combining req.url
with the provided
root
directory. When a file is not found, instead of sending
a 404 response, it instead calls next()
to move on to the
next middleware, allowing for stacking and fall-backs.
The following table describes the properties of the
options
object. See also the
example below.
| Property | Description | Type | Default |
|---|---|---|---|
dotfiles |
Determines how dotfiles (files or directories that begin with a dot
“.”) are treated. See dotfiles below. |
String | “ignore” |
etag |
Enable or disable etag generation NOTE: express.static always sends weak ETags.
|
Boolean | true |
extensions |
Sets file extension fallbacks: If a file is not found, search for
files with the specified extensions and serve the first one found.
Example: ['html', 'htm'] .
|
Mixed | false |
fallthrough |
Let client errors fall-through as unhandled requests, otherwise
forward a client error. See fallthrough below. |
Boolean | true |
immutable |
Enable or disable the immutable directive in the
Cache-Control response header. If enabled, the
maxAge option should also be specified to enable
caching. The immutable directive will prevent supported
clients from making conditional requests during the life of the
maxAge option to check if the file has changed.
|
Boolean | false |
index |
Sends the specified directory index file. Set to
false to disable directory indexing.
|
Mixed | “index.html” |
lastModified |
Set the Last-Modified header to the last modified date
of the file on the OS.
|
Boolean | true |
maxAge |
Set the max-age property of the Cache-Control header in milliseconds or a string in ms format. | Number | 0 |
redirect |
Redirect to trailing “/” when the pathname is a directory. | Boolean | true |
setHeaders |
Function for setting HTTP headers to serve with the file.
See setHeaders below. |
Function |
For more information, see Serving static files in Express. and Using middleware - Built-in middleware.
Possible values for this option are:
403
,
then call next()
.
404
, then call next()
.
NOTE: With the default value, it will not ignore files in a directory that begins with a dot.
When this option is true
, client errors such as a bad request
or a request to a non-existent file will cause this middleware to simply
call next()
to invoke the next middleware in the stack. When
false, these errors (even 404s), will invoke next(err)
.
Set this option to true
so you can map multiple physical
directories to the same web address or for routes to fill in non-existent
files.
Use false
if you have mounted this middleware at a path
designed to be strictly a single file system directory, which allows for
short-circuiting 404s for less overhead. This middleware will also reply
to all methods.
For this option, specify a function to set custom response headers. Alterations to the headers must occur synchronously.
The signature of the function is:
Arguments:
res
, the response object.path
, the file path that is being sent.stat
, the stat
object of the file that is
being sent.
Here is an example of using the express.static
middleware
function with an elaborate options object:


git-issue
- Manage remote Git issue trackers
git issue
[-h
]
git issue create
[-m
] [-a
] [-s
] [-l
]
git issue edit
[-m
] [-n
] [-a
] [-s
] [-l
] number
git issue close
[-m
] [-n
] number
git issue reopen
number
git issue comment
[-m
] number
git issue browse
[-u
] number
git issue list
[--oneline
] [{open,closed,all}]
git issue show
[-q
] [--summary
] number
git-issue
provides a command line interface to remote issue trackers allowing
users to manage issues in the same way they manage git(1) repositories. A remote
issue tracker is referred to as service. Multiple service providers can be
supported by git-issue
, see SERVICES for the supported service
list. git-issue
determines which service to use by querying issue.service
.
Authentication with the service is performed using an API token, git-issue
queries issue.<service>.token
to gain access to the service.
git issue create
-m
is not specified an editor will be opened for
the user to describe the issue.git issue edit
-m
is not specified an editor will be opened
for the user to edit the existing issue description.git issue close
-n
is not specified an editor will be
opened for the user to comment on whey the issue is being closed.git issue reopen
git issue comment
git issue browse
git issue list
git issue show
-h
, --help
-m
message, --message
message-n
.-n
, --no-message
-m
.-a
assignee, --assignee
assignee-s
milestone, --milestone
milestone-l
label, --label
label--url
git issue browse
.--oneline
git issue list
.-q
, --quiet
git issue show
.--summary
git issue show
.GitHub
issue.service
to GitHub
and
issue.GitHub.token
to <username>
:<token>
replacing <username>
with
your GitHub login and <token>
with a personal access token.GitLab
issue.service
to GitLab
and
issue.GitLab.token
to <token>
created at
https://your.gitlab.url/profile/account
.Gogs
issue.service
to Gogs
and issue.Gogs.token
to
<token>
created at https://your.gogs.url/user/settings/applications
.The syntax of editor message is dependant on the service providing the issue
tracker, by default this will be Markdown or some variation of it
i.e. GitHub Flavoured Markdown. git-issue
generally does
not process the text input by the user, with one exception; when editing a
message in the editor the second line in the file will be ignored as a separator
between the title and body of the issue.
git-issue
takes advantage of git-config(1) to store information which it
requires to function. If a git-config(1) entry is prefixed with !
it will be
treated as a shell command, when executed should result in the desired value.
issue.service
serviceGogs
.issue.<service>.url
urlgit-issue
will
attempt to deduce this value if it is not set by inspecting the repositories
remote URL and is thus not usually required to be manually configured.
<service>
must be replaced with name of the configured service, e.g. Gogs
.issue.<service>.token
token<service>
must be replaced
with name of the configured service, e.g. Gogs
.issue.<service>.remote
remotegit-issue
uses origin
when attempting to determine the HTTP URL
of a service, if origin
does not point to the remote issue tracker setting
remote will override the default behaviour. <service>
must be replaced
with name of the configured service, e.g. Gogs
.git-issue
attempts to determine which editor to use when editing messages in
the same way as git(1), following are the steps taken to determine which editor
to use.
core.editor
EDITOR
core.editor
is not set then the EDITOR
environment variable is
inspected.git-issue
falls back to using the
venerable vi(1) editor.0
Success, no error occurred.
1
Failure, a fatal error has occurred.
130
Failure, user interrupt has occurred.
Any other error codes are propagated from the underlying command, i.e. git-config(1).
git-issue
provides zsh(1) completions by default, the completions are
installed relative to the command line tool in share/zsh/site-functions
. If
the install went as expected these should be available next time compinit
is
invoked, however if completions are not working check please check that the
_git-issue
file resides in a directory in the fpath
array, refer to
zshbuiltins(1) and zshcompsys(1) for more information.
git-issue
relies on service API tokens to be stored in git-config(1) files,
ensure that these files have appropriate permissions and that the system is
secure (password protected) when not attended to avoid data loss or destructive
activities occurring in your absence.
To ensure that service API tokens are not stored as plane text in git-config(1) files it is highly recommended to store them in a safe place and use a shell command to retrieve the information when required. For example if a Gogs API token is encrypted with gpg(1) the following git-config(1) entry could be used.
[issue "Gogs"]
token = !gpg --decrypt gogs-token.gpg
Gogs
does not reliably support repeatedly editing labels, a warning will
be emitted if this is attempted.Please report any issues on GitHub.
0.4.3 - Silence arrow.get() behaviour change warning.
0.4.2 - Update security considerations.
0.4.1 - Fix issue state check.
0.4.0 - Support git-config(1) shell commands.
0.3.9 - Cleanup and fixes.
0.3.8 - Support arbitrary issue states.
0.3.7 - Support arbitrary issue events.
0.3.6 - Implement GitLab comment URL.
0.3.5 - Fix minor GitLab display bugs.
0.3.4 - Fix editing labels with Gogs.
0.3.3 - Improve error message on authentication failure.
0.3.2 - Fix GitIssueError
bug.
0.3.1 - Fix issue.<service>.https
bug.
0.3.0 - Support GitLab
service.
0.2.8 - Enable removal of labels/milestone.
0.2.7 - Display message on command success.
0.2.6 - Add options for concise output.
0.2.5 - Add support for editing Gogs issue labels.
0.2.4 - Respect issue.<service>.url
when set.
0.2.3 - Move generated documentation to docs.
0.2.2 - Fix pip install & service instantiation.
0.2.1 - Fix zsh(1) completions install location.
0.2.0 - Support GitHub
service.
0.1.3 - Refactor in preparation for additional services.
0.1.2 - Fix install of data files in setup.py.
0.1.1 - Fix bug in git issue comment.
0.1.0 - Support Gogs
service.
Kenneth Benzie
MIT License
Copyright 2017 Kenneth Benzie
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
git(1) git-config(1) git-commit(1) gpg(1) less(1) zsh(1) zshbuiltins(1) zshcompsys(1)


{% extends "base.html" %} {% block title %}{{ super() }}{% endblock %} {% block header %}{{ super() }}{% endblock %} {% block content %}
The project aims to provide a tool to identify the species of a plant by taking a picture of the plant’s leaves. The purpose for the tool is to facilitate the task of identifying plants for experts and non-experts. In order to identify the species of a plant, there are many factors that need to be taken into account. It is necessary to look at the different dimensions and shapes of the plant’s organs, such as the leaf, flower, and fruit. Thus, it is very difficult for an untrained person to be able to accurately discern the species of a plant, and even experts may incorrectly identify plants. Additionally, the number of plant taxonomy experts globally has been decreasing due to insufficient funding.
Therefore our goal is to create an application that can allow a user to capture an image of a plant that they want to identify, and it will yield the correct species of the plant with a high accuracy rate. This project will be useful for biologists, agriculturists, and any other fields who work directly with plant life because there is a need for an easy method to identify plants. In order to meet this need, the project will be built for an Android smartphone or tablet for portability and for access to a camera. The project will use machine learning to train the models for identifying plants in order to reach an identification accuracy of 80%. To ensure that the time period between submitting the image for identification and receiving the results is no longer than 10 seconds, the trained model will be installed on the device so that the search can be performed locally. There will also be a web server that will contain a REST API for performing the training functions on the model to allow the model to learn to recognize new plants.
The design for the project is separated into two portions, the front-end and the back-end. The front-end of the design involves the Android application and the user interface. The Android application will use the hardware’s camera to capture an image of a plant that the user wants to identify. It will then use the already trained model that was generated and uploaded to the device to search for the species of the plant. The back-end of the design is the server that will receive the new training data from the administrators so that the search capability is expanded. The server will consist of a web server and the TensorFlow model that will be trained using a plant image database beforehand. The web server portion will have a REST API defined for receiving bulk labelled image samples and for transmitting trained TensorFlow model. The server will store both the images and the TensorFlow models in a hierarchical file structure.
This project will greatly benefit the biology, agriculture, and nature conservation fields because it will allow them to easily and quickly identify a plant without needing to purchase specialized hardware. It will help these fields to study plants more efficiently, to ensure biodiversity in a region, and to fight off invasive species of plants. Additionally, it can serve as an educational tool for people interested in learning about the plants native to their regions.


20; else normalDesc"> {{product.description.slice(0, 20)}}... {{product.description}}
${{product.price}}
There are no products in list.Please add product.


This page should redirect you to {{MEETING:LINK}}. It does require JavaScript to be enabled. Feel free to click that link if you've not already been redirected.


2013-08-30: See also new sample code 'cookbook' and live demo of 'ottojenny' Release 1.
This repository is an attempt to provide helpful, supportive and supplementary information for:
Incomplete Nature: How Mind Emerged from Matter, a book by Terence Deacon.
Publication date and details for the book:
November 21, 2011 | ISBN-10:<PHONE_NUMBER> | ISBN-13:<PHONE_NUMBER>916 | Edition: 1
Various sources for obtaining or viewing the book are available via: Wikipedia Book Sources
All the data and code in this web site is available via: Absence GitHub Dashboard
All text and code for this web site is available under an MIT License.
This repository often refers to the book simply as Incomplete Nature.
This repository has no connection with the author or publisher.
The full table of contents is to your left.
Home Page: the page you are now reading.
Read Me: Guidance on using this repository with objectives and details of how the summaries are organized.
Book Summary: a concise overview of what the Incomplete Nature sets out to do.
Absence Code Demo: a demo app of a simple 3D visualization. This being the sort of thing that might eventually lead to the development of virtual 'autogens'. The demo requires use of a web browser that supports WebGL.
Credits: highlights authors of the code used to generate this document and other material used in this repository.
License: the copyright notice and MIT License.
Three part summaries with 19 chapter and epilogue summaries each with:
Expanded Index
Expanded glossary of Deacon's terms
Available from the Absence GitHub Dashboard are the following: