The
package consists of Tcl procedures for the manipulation of vectors and
matrices. The functionality spans
scaling, normalization, concatenation by rows or columns, subsetting by rows or
columns, formatted printing, transpose, dot product, matrix multiplication,
solution of linear equation sets, matrix inversion, eigenvalue/eigenvector
solutions, singular value
decomposition, and solution of linear least squares. The singular value decomposition can be used to perform the
principle components analysis of multivariate statistical process control and
avoid the possibly ill-conditioned multiplication of the XXt matrix of
observations.
The user can
mix vectors and arrays in linear algebra operations. The logic does reasonable conversion of types. Sophisticated operations such as evaluating
a custom procedure against each element of a matrix are easily possible. Data is represented as ordinary Tcl list
variables so that the usual commands of Tcl are useable, and efficient access
to the data elements using compiled extensions is possible.
This
document and the package are ©Copyright 2001, Hume Integration Software. You may use the package without licensing
fees according to the License Terms.
The
package may be obtained from the webpage http://www.hume.com/la.
The package uses the "string is" Tcl command which was new
with Tcl 8.1. So unless you are
comfortable making minor changes to the Tcl source code, you should only use
the package with Tcl version 8.1 and newer.
The version 1.0 package only consists of text files, there are no binary
files. The only difference between the
Windows archive and the POSIX archive is the difference in line feed / carriage
return characters at the end of each line of text. The package is distributed as zip archives. You are expected to use your own software to
unpack the archive files.
The
package is installed by extracting from the zip archive file, the package
directory and files. The package
directory should be added into the base directory of the Tcl runtime libraries. So if your Tcl runtime library directory is
/usr/local/lib/tcl8.3, copy or extract the la1.0 directory and files to
/usr/local/lib so that you have the directory /usr/local/lib/la1.0 and the
package files are found as /usr/local/lib/la1.0/*.* . The Tcl code should be compatible with Tcl version 8.1 and later
for any architecture, but we have only tested it with Tcl 8.3. You can run the package regression tests by
navigating to the package directory and sourcing the file “la.test”.
The software
is found and made useable by your Tcl/Tk interpreter after you execute “package
require La”. You typically import the
package procedure names into your global namespace to save yourself from having
to qualify the procedure names using the package name. So typical initialization code looks like:
% package require La
1.0
% namespace import La::*
The
package uses ordinary Tcl variables to represent scalars, vectors, and
arrays. This means that the ordinary
Tcl commands are useable. For example,
the Tcl set command can be used to copy a matrix:
set A [mident 5] ;# A is assigned a 5x5 identity matrix
set B $A ;# B is assigned the value of A
Tcl list
formats are used for better performance than arrays and for better
compatibility with C/C++ code.
Dimension information is added in a simple way at the front of the list,
for vectors, matrices, and higher dimensional variables.
If the
list length of a variable is 1 the operand is a scalar, eg.,
"6.02e23". The Tcl command
llength can be used to determine the list length.
A vector of length N has the representation as a Tcl list of:
2 N 0 v[0] v[1] v[2] ... v[N-1]
The first element in the list, the value 2, signifies that there are two additional elements of size information; the number of rows, and the number of columns. When the number of columns is 0, the operand is defined to be a one dimensional vector. So the Tcl list sequence of {2 4 0 1 2 3 4} represents the vector {1 2 3 4}. A vector of length N has the same number of elements as an Nx1 or 1xN matrix so they can be efficiently converted in place, and indexing operations are simplified.
The index into the underlying Tcl list for vector v[i] is
set index [expr {3 + $i}]
A vector
of length N is promoted to an N rows by 1 column matrix if used in an operation
where a matrix argument is expected.
The
transpose of a vector of length N is a 1 row by N columns matrix.
The Tcl
list data used to represent two dimensional matrix a[R,C], has the format:
2 R C a[0,0] a[0,1] a[0,2] ... a[0,C-1] \
a[1,0] a[1,1] ... a[1,C-1] \
... a[R-1,C-1]
where R is
the number of rows, and C is the number of columns, and the backslash character
has been used to indicate that the multiple lines of text constitute a single
list sequence. The format itself is
independent of whether the user thinks that indexing starts from 0 or 1. In Tcl, indexing of lists always starts with
0 so we have chosen to consistently start indexing with 0.
For a
valid matrix, both the number of rows and the number of columns are positive
integers. The data elements following
the {2 R C} dimension information can also be thought of as first row, second
row, …, last row. The index into the
underlying Tcl list for a[i,j] is:
set index [expr {3 + $i * $C + $j}]
If the
first element in a Tcl list is > 2, the package assumes the list represents
a higher dimensional operand. Logic for
higher dimension operands is not currently part of the package.
The
candidate structure for 3-D data is:
3 P R C a[0,0,0] a[0,0,1] a[0,0,2] ... a[0,0,C-1] ... a[P-1,R-1,C-1]
where
P=planes, R=rows, C=columns. An
intuitive view is that the data is multiple 2-D planes of rows and columns
listed in order from the 0 plane to the P-1 plane.
The index
into the underlying Tcl list for a[i,j,k] is
set index [expr 4 + $i*$R*$c + $j*$c + $k]
set pi 3.1415 ;# a scalar
set v {2 1 0 3.1415} ;# v[1] with value 3.1415
# vectors should use the first dimension of 2
set v {2 0 1 3.1415} ;# error - vector should use first dimension only
set v {2 3 0 1 2 3 4} ;# error - vector has an additional element
set m {2 2 3 1 2 3 4 5 6} ;# m[2,3]
show $m
1 2 3
4 5 6
show [transpose $m]
1 4
2 5
3 6
There are
typically two procedures defined for an algorithm. A plainly named procedure such as "transpose", and
another procedure with the suffix _br such as
"transpose_br". The plainly
named procedures expect their data arguments to be passed by value, which is
the usual argument passing convention with Tcl programming. The plain calls are designed for ease of
interactive use, and in general have been coded to perform more conversion of
arguments, more error checking, and to trade off efficiency for
convenience. The _br procedures
are intended for efficent use, with the _br indicating that data
arguments are passed "By Reference" to avoid copying the data. In Tcl, to pass by reference means that the
caller has the data in a named variable, and the caller passes the name of the
variable instead of a copy of the data.
You can see that passing by reference is more efficient for larger
vectors and arrays. The _br
procedures in general assume that the data arguments have the correct
structure, so the caller may need to use the promote, demote, and
transpose calls to prepare arguments for a _br call.
Number
crunching in Tcl? The conventional
wisdom is that computationally intensive tasks such as numerical analysis are
high on the list of things that you should not do in a scripting language. It is true that you can obtain better
performance using a traditional compiled language such as Fortran, or C
code. But nowadays, the performance
gain that you will obtain by switching languages is similar to the performance
gain you will see between a new computer and a computer from two years
ago. In many situations, the actual
time spent processing numbers is a small portion of the overall project. The time it takes the researcher to explore
his data, decide on the desired approach, and develop the software for his
desired analysis is the only performance time that really matters. Here, a high-level development environment
such as Tcl or MATLAB wins over C++ or Java hands down. Actual performance numbers for the Tcl
package are nothing to be ashamed about.
Using a 900Mhz Pentium III notebook computer, the following times were
obtained for inverting an NxN matrix using Gauss elimination with partial
pivoting. This is something of a worst
case since most numerical algorithms avoid the direct inversion of a full
matrix. Often a major performance
improvement is made by choosing a better algorithm.
|
Inversion
of an NxN matrix. Development
time for the following timed benchmark: 15 seconds. It worked properly on the first attempt. The flush and update commands are not
needed except to show progress before completion. The benchmark: % source la.tcl % namespace import La::* % foreach n {10 20 50 100} { puts [time {msolve [mdingdong $n] [mident $n]}] flush stdout update } |
|
|
Matrix
Dimension (N) |
Inversion
Time (seconds) |
|
10 |
0.020 |
|
20 |
0.140 |
|
50 |
1.973 |
|
100 |
15.43 |
Here are
some tips for efficient coding. In Tcl
the expr command is used for the evaluation of
numeric expressions. You should almost
always surround the arguments to expr with braces to prevent the Tcl
interpreter from substituting the arguments.
The expr command itself is able to substitute variable references
directly and avoid re-interpreting their string representation. For example:
set index [expr {3 + $i * $C + $j}] ;# good example
set index [expr 3 + $i*$C + $j] ;# less efficient example
The
Windows NT/Windows 2000 Tk console does not perform very well when large text
strings are displayed. You may find it
preferable to print results by separate rows for large output sets, or to write
large output results to a file. Another
alternative to the Windows Tk console, is to use tclsh83.exe from a command
window.
Tcl
maintains an internal binary representation for variable values, and computes a
string representation for a variable value only when needed. If your logic is inconsistent and sometimes
treats a variable as a string, and sometimes treats it as a list of numbers,
you can cause inefficient “shimmering” of the internal representation. For best efficiency use list oriented
commands to manipulate your vector and matrix variables, and don’t mix string
oriented commands. For example:
lappend m $newvalue ;# good – lappend is a list oriented procedure
append m " $newvalue" ;# bad, this causes conversion to a string
The last
tip is that it is very easy to use the built-in time
command to analyze actual performance of your code.
The
package contains a worked Principle Components Analysis problem based on
Section 6.5 of the SEMATECH/NIST Statistics Handbook, http://www.itl.nist.gov/div898/handbook.
See the
file NIST.tcl.
|
Procedure
Name(s) |
Description |
|
Demote
an Nx1 or 1xN matrix to a vector[N].
Demote a vector[1] to a scalar.
Call twice to demote a 1x1 matrix to scalar. |
|
|
Return
the dimension of the argument, and to
some degree verify a proper format. |
|
|
Dot Product
= sum over i, Ai * Bi Can work
columns or rows in matrices because indexing increments are optional
arguments. |
|
|
Combine
vector or matrices as added columns. |
|
|
Combine
vector or matrices as added rows. |
|
|
Replace
a single value in a Tcl list. |
|
|
Computes
a new matrix or vector from the addition of corresponding elements in two
operands. |
|
|
Apply a
scale factor and offset to the operand’s elements. |
|
|
Perform
binary operations such as addition on corresponding elements of vectors or
matrices. |
|
|
Perform
unary operations on elements like scaling. |
|
|
Returns
the smallest number epsilon, such that 1+epsilon > 1. Also
reports on the machine radix, digits, and rounding behavior |
|
|
Return
the number of columns in a matrix or vector.
You can use mrows and mcols to keep your software isolated from the
details of the data representation. |
|
|
Creates
a diagonal matrix from a vector, an Nx1 matrix, or a 1XN matrix. |
|
|
Create
the Ding Dong test matrix, a Cauchy matrix that is represented inexactly in
the machine, but very stable for inversion by elimination methods. |
|
|
Computes
a new matrix or vector from the division of corresponding elements in two
operands. |
|
|
Solve
for the eigenvectors and eigenvalues of a real symmetric matrix by singular
value decomposition. |
|
|
Create
the Hilbert test matrix which is notorious for being ill conditioned for eigenvector/eigenvalue
solutions. |
|
|
Create
an identity matrix of order N. |
|
|
Linear
least squares solution for over-determined linear equations using singular
value decomposition. |
|
|
Ordinary
matrix multiplication. |
|
|
Compute
the means and standard deviations of each column. |
|
|
Normalize
each column by subtracting the corresponding mean and then dividing by the
corresponding standard deviation. |
|
|
Add a
constant to the elements of an operand. |
|
|
Computes
a new matrix or vector from the product of corresponding elements in two
operands. |
|
|
Return a
subset of selected columns, selected rows as a new matrix. Also can be used to reverse the ordering
when the start index > end index. |
|
|
Round
off elements in a matrix if they are close to integers. |
|
|
Return
the number of rows in a matrix or vector.
You can use mrows and mcols to keep your software isolated from the
details of the data representation. |
|
|
Multiply
each element in an operand by a factor. |
|
|
Solve
the matrix problem Ax = p for x, where p may be multiple columns. When p is the identity matrix, the
solution x, is the inverse of A. Uses
Gauss elimination with partial pivoting. |
|
|
Computes
a new matrix or vector from the subtraction of corresponding elements in two
operands. |
|
|
Compute
the sums of each column, returning a vector or scalar result. Call twice to get the total sum of columns
and rows (set total [msum [msum $a]]). |
|
|
Perform
the Singular Value Decomposition of a matrix. |
|
|
Promote
a scalar or vector to an array.
Vector[N] is promoted to an Nx1 array. |
|
|
Return a
formatted string representation for an operand. Options allow for specify the format of numbers, and the
strings used to separate column and row elements. |
|
|
Performs
the matrix transpose, exchanging [i,j] with [j,i]. A vector is promoted to a 1xN array by transpose. |
|
|
Create a
vector from the diagonal elements of a matrix. |
|
|
For a
vector or matrix operand, just return the actual data elements by trimming
away the dimension and size data in the front |
Demote an Nx1 or 1xN matrix to a vector[n]. Demote a vector[1] to a scalar. Call twice to demote a 1x1 matrix to
scalar. For the _br procedure, the
default output destination is to overwrite the input.
Return the dimension of the argument, and to some degree verify a proper format. Returns 0 for a scalar, 1 for a vector, 2 for a matrix, and an empty string, {}, for an empty input value. Most improper formats will result in an error.
Perform the dot product of two operands, a and b, returning a scalar result. The default arguments will correctly process vector and conformable 1xN or Nx1 matrices. The argument N is the number of element pairs to multiply when computing the sum of pair products. The a0index and b0index optional arguments are the offset of the first element in the a and b operands, respectively. The ainc and binc optional arguments are the index increment values to be added to the indexes into a and b to obtain subsequent elements.
Combine vector or matrices as added columns, returning a matrix result. The arguments must have the same number of rows. The default output for the join_cols_br call is to overwrite the a input.
Combine vector or matrices as added rows, returning a matrix result. The arguments must have the same number of columns. The default output for the join_rows_br call is to overwrite the a input.
Replace a single element in a Tcl list. There is conditional logic in the package so that the lassign_br
could be replaced by a C code version that would be able to update the list
directly without copying the data the way lreplace
does.
This procedure uses mat_binary_op to return a matrix or
vector result from the addition of corresponding elements in two operands.
This procedure uses mat_unary_op to return a matrix or
vector where the elements have been multiplied by a common factor, scale,
and then the offset value has been added.
This procedure is used to execute binary operations such as addition on corresponding elements of vector or matrix operands. The default output for the _br call is to overwrite the a input.
Returns the smallest number epsilon, such that 1+epsilon > 1. Also reports on the machine radix, digits, and rounding behavior, by using $puts as a command with a single string argument, of the format “radix=2.0 digits=53 epsilon=2.22044604925e-016 method=truncation”. The default value of the puts argument causes the string to be printed at the console.
Return the number of columns in a matrix or vector. You can use mrows and mcols to keep your software isolated from the details of the data representation.
Creates a diagonal matrix from a vector, an Nx1 matrix, or a 1xN
matrix.
Create the Ding Dong test matrix of size NxN. The matrix is a Cauchy matrix that is represented inexactly in the machine, but very stable for inversion by elimination methods. Created by Dr. F. N. Ris (Nash, 1979).
Uses mat_binary_op to compute a new matrix or vector from
the division of corresponding elements in two operands.
Solve for the eigenvectors and eigenvalues of a real symmetric
matrix by singular value decomposition.
The eigenvectors of the solution are returned as the columns of A. The epsilon argument is expected to be the
value returned by the mathprec procedure for your platform.
Create the Hilbert test matrix which is notorious for being ill conditioned for eigenvector/eigenvalue
solutions. (Nash, 1979)
Create an identity matrix of order N.
Solve the linear least squares solution for over-determined linear
equations using singular value decomposition.
Solves the problem A[m,n]x[n] ~ y[m] for x[n]
where each row of A is a set of dependent variable values, x[n]
is the vector of independent variables, and y[m] is the set of dependent
values such as measured outcome values.
The first column of A is usually all ones to compute a constant
term in the regression equation. The value
q is specified such that singular values less than q are treated
as zero. Typically a judgment is made
as to what variation is significant, and what is just noise. The significance level varies by
application. For example, a small value
of q might be appropriate to detect a new planet from orbital data,
whereas larger values would be used to regress socio-economic statistics. The default value of the puts
argument causes the singular values to be printed at the console after the
matrix is factored. The epsilon
argument is expected to be the result of the mathprec procedure for your
platform.
Ordinary matrix multiplication, A[p,q] x B[q,r] = C[p,r]. Vector arguments are promoted to Nx1 arrays, so chances are if
you are using one as a left operand you probably intend to use the transpose of
it (1xN), which is easily done using the transpose
procedure. The mmult procedure
returns the value of the matrix product.
The mmult_br procedure writes the matrix product into the
variable whose name is C_out.
The variable name C_out should specify a different variable than
either of the input variables specified by name_A or name_B.
Compute the means and standard deviations of each column of the
input matrix. Vector results are
returned. If the number of rows is less
than 2, the standard deviations cannot be calculated and an error is returned.
Normalize each column of a matrix by subtracting the corresponding
mean and then dividing by the corresponding standard deviation. The default output matrix for mnormalize_br
is to overwrite the input matrix specified by name_a.
Uses mat_unary_op to add a scalar constant to the elements
of an operand. The modified operand is
the returned result.
Uses mat_binary_op to compute a new matrix or vector from the
multiplicative product of corresponding elements in two operands.
Returns a subset of the selected columns and selected rows of a
matrix as a new matrix. Column and row
indexing begin with 0. The token end
may be used to specify the last row or column. The default values for row selection will return all rows. The rows and columns are read and copied
from the input matrix in the order of start to last. The selection result includes rows and columns with index values
equal to the start indexes and proceeds to the last indexes, including all rows
and columns with indexes between the start and last values and equal to the start
and last values. If the start index is
less than the last index for row or column selection, the result matrix is
created with the row or columns in reverse order. This is a feature, not a bug.
% set m {2 2 3 1 2 3 4 5 6}
% show $m
1 2 3
4 5 6
% show [mrange $m 0 1]
1 2
4 5
% show [mrange $m end 0]
3 2 1
6 5 4
% show [mrange $m 1 1 0 0]
2
Uses mat_unary_op to round-off to the nearest integer the elements of a matrix or vector which are within epsilon of an integer value.
% show $m %12.4g
1 1.388e-016 8.327e-017 -2.776e-017
1.388e-016 1 -5.551e-017 -1.11e-016
8.327e-017 -5.551e-017 1 -5.551e-017
-2.776e-017 -1.11e-016 -5.551e-017 1
% show [mround $m]
1.0 0.0 0.0 0.0
0.0 1.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
Return the number of rows in a matrix or vector. You can use mrows and mcols to keep your software isolated from the details of the data representation.
Uses mat_unary_op to multiply each element in a matrix or vector operand, a, by the scalar scalefactor.
Solves a system of linear
equations, Ax = p, for x, by brute force application of
Gauss elimination with partial pivoting.
When p is the
identity matrix, the solution x, is the inverse of matrix A.The msolve_br procedure accepts as input the
columnwise concatenation of A and p, and overwrites the p
columns with the solution columns x.
The msolve procedure accepts A and p as separate
arguments, and returns the solution data directly. The epsilon
argument is expected to be the result of the mathprec procedure for your
platform.
Uses mat_binary_op to compute a new matrix or vector from
the subtraction of corresponding elements in two operands.
Compute the sums of each column of a matrix or vector, returning a vector or scalar result. Call twice to get the total sum of columns and rows (set total [msum [msum $a]]).
Perform the Singular Value Decomposition of a matrix.
This factors matrix A into (U)(S)(Vtrans) where
A[m,n] is the original matrix
U[m,n] has orthogonal columns (Ut)(U) = (1(k)
and multiplies to an identity matrix ...
supplemented with zeroes if needed 0(n-k))
V[n,n] is orthogonal (V)(Vtran) = [mident $n]
V contains the eigenvectors aka the principal components
S is diagonal with the positive singular values of A
Square S and divide by (m-1) to get the principal component
eigenvalues.
A[m,n]V[n,n] = B[m,n] transforms A to orthogonal columns, B
B[m,n] = U[m,n]S[n,n]
The msvd procedure outputs formatted results to the console. The msvd_br procedure overwrites the input matrix a with the U result matrix. The epsilon argument is expected to be the result of the mathprec procedure for your platform.
Perform unary operations on operand elements like scaling. The default output of the mat_unary_op_br procedure is to overwrite the input specified by name_a. The logic sweeps through the matrix or vector, and evaluates the concatenation of $op with the operand element. For example, if the value of op is “expr 0.5 *” the result would be to multiply each element by 0.5. You can define your own procedures, and pass the procedure name as the op argument.
Promote a scalar or vector to an array. Vector[N] is promoted to an Nx1 array. Calling promote with a matrix argument is all right; the result
is the matrix unchanged. The default
output of promote_br is to overwrite the input.
Return a formatted string representation for an operand. Options allow for specify the format of
numbers, and the strings used to separate column and row elements. The optional format argument is a
specification string which is applied to convert each element using the Tcl
format command.
The format command is very is similar to the C code sprintf
command.
set m {2 2 3 1 2 3 4 5 6}
% show $m %6.2f
1.00 2.00 3.00
4.00 5.00 6.00
% show $m {} , \;
1,2,3;4,5,6
Performs the matrix transpose, exchanging [i,j] with [j,i]. A vector is promoted to a 1xN array by transpose. The default output of the transpose_br procedure is to overwrite the input data named by name_x.
Create a vector from the diagonal elements of a matrix.
For a vector or matrix operand, just return the actual data elements by trimming away the dimension and size data in the front of the underlying Tcl list representation. The default output of the vtrim_br procedure is to overwrite the input data named by name_x.
This package has been developed by Edward C. Hume, III PhD. Dr. Hume has been interested in numerical methods since the early 1980’s when his doctoral research at MIT involved a comparison of Finite Element and Boundary Element methods for moving boundary problems. In recent years he has been applying univariate and multivariate Statistical Process Control techniques in his consulting work. Dr. Hume is the founder of Hume Integration Software, a software product and consulting company, with a focus on Computer Integrated Manufacturing in the Semiconductor and Electronics industries.
Hume Integration's flagship product is the Distributed Message Hub (DMH) Application Development Package, a cohesive and synergistic set of tools that extends the Tcl/Tk programming environment. The package includes an in-memory SQL database that has subscription capability, comprehensive support for equipment interfaces using SECS, serial, or network protocols, and high-level facilities for interprocess communication. Applications can easily share data and logic by exchanging Tcl and SQL messages which are efficiently processed by the extended interpreter. This toolset is offered for Windows 2000/NT and major POSIX platforms including HP-UX, Linux, AIX, and SOLARIS. The toolset is in 7x24 use in dozens of factories located in the United States, Malaysia, Korea, Japan, China, Hong Kong, Singapore, Taiwan, Mexico, France, and Scotland. Feel free to visit our website at http://www.hume.com.
The more
sophisticated algorithms in this package were adapted from Nash, 1979.
Compact
Numerical Methods for Computers: Linear Algebra and Function Minimisation by J. C. Nash, John Wiley &
Sons, New York, 1979.
The La
package software is being distributed under terms and conditions similar to
Tcl/Tk. The author is providing the
package software to the Tcl community as a returned favor for the value of
packages received over the years.
The La package software is copyrighted by Hume Integration Software. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files.
The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply.
IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government, the Government shall have only "Restricted Rights" in the software and related documentation as defined in the Federal Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are acquiring the software on behalf of the Department of Defense, the software shall be classified as "Commercial Computer Software" and the Government shall have only "Restricted Rights" as defined in Clause<PHONE_NUMBER> (c) (1) of DFARs. Notwithstanding the foregoing, the authors grant the U.S. Government and others acting in its behalf permission to use and distribute the software in accordance with the terms specified in this license.
Date of
last revsion $Date: 2001/11/14 13:27:35 $.


I am not from Wakanda
First a Disclaimer: I love superhero movies. I like both Batman and Black Panther. And I celebrate the fact that Wonder Woman and Black Panther are blockbusters. Now, to my main point.
I’ve seen again and again my Christian friends celebrating black panther and telling everyone to go watch it because “our kids need to see it.” Look, I do understand that it is important for our culture to have black heroes, woman heroes, all sort of heroes. And trust me, I am Brazilian, we have no heroes. No one talks about Brazil. Americans talk about Latin America, but they are only talking about those who speak Spanish (by the way, we don’t speak Spanish in Brazil). Even the “Latinos,” they don’t remember Brazil is part of South America. Trust me; I know how is it to be a teenager and have no hero to look up to.
My focus here is not that; it is this idea that to win, we must kill someone. I heard so many Christians saying Black Panther was a game-changer; white folks saying they would be “proud to be black” after watching the movie… it created a big expectation for me. I thought I would see something different. It is not. It is Captain America… but black. It is Batman but in Africa. Think with me; there is no difference between Wakanda and USA. They have a civil war the same way. They see different nations as enemies, the same way. They talk about immigrants the same way. With the big difference that the Americans yearly give a chance to thousands of immigrants to have a better life (as they did with me) and did something during WWII. While people from Wakanda just received no immigrants whatsoever and watched WWII from their comfortable hidden paradise.
There is no “game-changing” action on Black Panther. The “hero” comes back at the end and does what every other hero would do: He KILLS the bad guy. His victory is through violence. The last ten minutes of the movie is just a big civil war in Wakanda where you see no signs of repentance. It is just the law of the fittest; Its dog eats dog all over again. The same way we’ve always seen in Europe, Asia and in the Americas.
Let me tell you, the more I read the Bible, the more I fill unfit in our culture. If the story of the bible is true, then we are not from this kingdom. We belong to another kingdom, to another culture. The way we behave (or should behave) is different. We are aliens. We are exiled people in a place that is not ours. I am not saying I don’t like hamburgers, good movie and Monday Night Football. What I am saying is that we ought to be different and to tell our kids a different story. Our hero dies at the end of the story. There is no uprising movement; There is no rebellion; There is no blood. There is no killing our enemies.
Let me suggest that if Jesus had fought in the garden of Gethsemane the night he was arrested, his disciples would have stayed with him, fought with him, and even died with him. They were clearly willing to do this.
What they were unwilling to do was to renounce violence and trust in God. Even though Jesus had taught them the peaceable way of the kingdom of God, they were so deeply ingrained in the violent ways of the devil that they simply could not imagine a way that did not resort to the sword. So they all fled from Jesus.
We are the same. Pay attention to that next time you go to the movies. We all wait for the comeback, for the time the hero will say “enough!” and he will get his gun and kill the bad guys. We are all for vengeance and blood. We are all for the weak gaining some power and defeating the strong through violence and death.
Paul, in his letter to the Philippians, while in prison, when asked how he would act to those who were taking advantage of him, his enemies, said: “Everything happening to me in this jail only serves to make Christ more accurately known, regardless of whether I live or die.  Alive, I’m Christ’s messenger; dead, I’m his bounty. Life versus even more life! I can’t lose.”
The world has seen too many times humans using violence to bring peace. We’ve been trying, again and again, to put everything in place by killing the bad guys. We think that violence will end violence - that punches in the face will end bullies punching in our face - that guns will end gun violence. It is time to say: ENOUGH!
This is the Kingdom we are from, the Kingdom of God. That is why I don’t think we should teach our kids to declare “Wakanda Forever.” We need to start telling ourselves and our kids another story. Let us not flee from Jesus - let us take our stand with the Prince of Peace.
You may disagree with me, but how can I think anything different when this is what our King told us: “Here’s another old saying that deserves a second look: ‘Eye for eye, tooth for tooth.’ Is that going to get us anywhere? Here’s what I propose: ‘Don’t hit back at all.’ If someone strikes you, stand there and take it. If someone drags you into court and sues for the shirt off your back, giftwrap your best coat and make a present of it. And if someone takes unfair advantage of you, use the occasion to practice the servant life. No more tit-for-tat stuff. Live generously.
“You’re familiar with the old written law, ‘Love your friend,’ and its unwritten companion, ‘Hate your enemy.’ I’m challenging that. I’m telling you to love your enemies. Let them bring out the best in you, not the worst. When someone gives you a hard time, respond with the energies of prayer, for then you are working out of your true selves, your God-created selves. This is what God does. He gives his best—the sun to warm and the rain to nourish—to everyone, regardless: the good and bad, the nice and nasty. If all you do is love the lovable, do you expect a bonus? Anybody can do that. If you simply say hello to those who greet you, do you expect a medal? Any run-of-the-mill sinner does that.
 You’re kingdom subjects. Now live like it. Live out your God-created identity. Live generously and graciously toward others, the way God lives toward you.”


Arnold Schwarzenegger, actor-turned-climate activist, reportedly drives 'tank' to run errands
by Joseph WulfsohnArnold Schwarzenegger has been outspoken about climate-change activism in recent years -- but the actor and ex-governor reportedly can be seen driving a "tank" while running errands.
The "Terminator" was seen driving a military-style vehicle to Brentwood Country Mart in Santa Monica, Calif., and the 72-year-old was "having a bit of trouble getting back into his Pinzgauer all-terrain vehicle," Page Six reported Tuesday.
According to the report, the price of Pinzgauers could range from $18,000 to a whopping $70,000.
His recent outing came days after his widely publicized bike ride with 16-year-old climate change activist Greta Thunberg.
ARNOLD SCHWARZENEGGER BELIEVES DONALD TRUMP IS 'IN LOVE' WITH HIM: 'HE WANTS TO BE ME'
"It was fantastic to see my friend and one of my heroes @GretaThunberg last week and go on a bike ride around Santa Monica together and I was so pumped to introduce her to my daughter Christina. Keep inspiring, Greta!" Schwarzenegger tweeted.
CLICK HERE TO GET THE FOX NEWS APP
In 2011, Schwarzenegger founded R20 Regions of Climate Action, an environmental organization made of a coalition between nations, companies, and institutions with the mission to advance a greener economy in order to combat climate change.
The former California governor also has been outspoken with his criticism against President Trump, slamming the commander-in-chief for being "wrong" on his views of climate change.


2014-02-11 To P.
Hello P.,
I’m all very well. I arrived yesterday from Morocco. A fantastic experience. I’m writing a chronicle of the trip, so when I finish it I will send it to you so that you give me your opinion before posting it on the blog.
When you travel, open your eyes, talk to people, ask them the most basic and absurd thing you can think of. The world is full of nuances to taste. Leave your phone in airplane mode during the day. Enjoy the moment. Others can wait for a while for them to know how you’re doing. Take pictures of everything that deserves a photo. Good pictures, you know how to take them. But leave the best moments for your memory. Don’t photograph those.
The stars of the Sahara sky cannot be photographed with the smartphone. The sunset on the mountainous horizon while I was meditating/praying on a dune, can’t be photographed either. I got goosebumps every time I think about it.
If you really want to disconnect, don’t worry about others. Your time is yours. You can tell them you’re going to be out there and when you get back, you’ll let them know.
The cell phone has appeared. It’s at Charleroi Airport. It’s 20€ transport to go back and forth. So, I will see if I can find someone who can pick it up for me. It makes me think it showed up. I think a lot about how I have behaves in the past with the goods that didn’t belong to me. I need time to think about that…
My grades are given to me on the 13th of February. Everything went pretty good. I’ll tell you when I know numerically. English works in ups and downs, oscillating.
Plans for the quarter: too many. But at least I’m getting used to not using the computer/smartphone, writing by hand and sleeping less than six hours. We will see what are the results…
Don’t use your smartphone/computer when you’re in class. Look at the professor’s face. They will have already explained to you how important feedback is at this point. Live in the moment. Technology is a tool, not a part of you. You don’t go with a hammer to class and you start hitting the table. Even if you can. Every tool has its moment. Control the tool so the tool won’t control you. Look with your eyes and think with your brain. Write with your hands.
About the subjects of this quarter.
Personality. I got a distinction with honors. It’s true it’s about “ass-kissing”. Interest, curiosity, participation are prettier words, though. Palenzuela is a pretty active, nocturnal person, like me. We got and get along pretty well. He’s not the best teacher, he gets messy with the ideas quite often. But it makes you think twice as much, so you can build on your own what he means. Take it as a challenge, not as a threat.
Critical thinking. I did almost every assignment with an incredibly hard-working girl. She did most of them. Read the book and take it as a guide. It’s all there. Silvia was my teacher. Very friendly, nice and accessible. We got along very well.
Health. G. also gets messy by himself. Sometimes he explains things in one practice group that he doesn’t explain in another. Compare your notes with people from other groups and take lots of notes in the theoretical class. He knows a lot. If you’re interested, ask questions. However, well, it’s clinical psychology, and it wasn’t my favorite subject.
Evaluation. If C. G. is your teacher, go to class and copy everything she says. Looks like a dictation. It’s kind of ridiculous for a university class, but it’s what he asks on the exam. Go to the practice class. If it Genaro is not your teacher, I have no idea.
Cognitive development. Read the articles before you go to class. Go to the library one afternoon, no phone or computer. Take a couple of hours to read it. You’re going to make the most of the class and save time in May. The work is long and tiresome. Try to anticipate and get it done with time. It’s pretty methodical, so you don’t have to think too much, but you have to work a lot. It takes time.
Live the present, P.. Quit technology and meet people.  Write something for yourself. Handwrite. Do things one at a time. Focus on what you’re doing and forget problems you can’t fix right now. Note them up so you won’t forget about them and you’ll fix them in the future. Learn and let yourself be influenced. Don’t prejudge, as much as it is possible.  But if you need help, ask for it. Always.
We’re in touch, P..
I also attach to you the work I did in Personality. It’s two pages. Pa. quite liked it, so you can trust it to be fine. But he’ll remember, so don’t copy it. I hope it will guide you. Don’t get stuck with the writing question. Read it slowly, and if you don’t understand something it’s normal. You haven’t studied it yet. I think the terms “personality process” and “personality in action” are reversed. That’s what he corrected when I gave it to him. Personality in action is the operation of the personality in process and the personality state is the result of the personality process. Don’t trust me too much, wait for May. When you read it again everything will make more sense and you can correct my work.
A kiss,
Carlos.


Something about us and our things, and what we do with the things that we do with the things.
Because reasons, stuff and things.
Get in touch with us because you should say hello.


| Field | Required | Type | Description |
|---|---|---|---|
offset_meters |
required | number |
The offset along the path (in meters) up to which this speed category is valid. |
speed_category |
required | string |
The current traffic/speed conditions on this portion of a path. |
Generated from the OpenAPI specification. Edit Report bug


|
lwIP
2.1.3
Lightweight IP stack
|
Functions | |
| void | ble_addr_to_eui64 (uint8_t *dst, const uint8_t *src, int public_addr) |
| void | eui64_to_ble_addr (uint8_t *dst, const uint8_t *src) |
| err_t | rfc7668_set_context (u8_t idx, const ip6_addr_t *context) |
| err_t | rfc7668_output (struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr) |
| err_t | rfc7668_input (struct pbuf *p, struct netif *netif) |
| err_t | rfc7668_if_init (struct netif *netif) |
This file implements a RFC7668 implementation for 6LoWPAN over Bluetooth Low Energy. The specification is very similar to 6LoWPAN, so most of the code is re-used. Compared to 6LoWPAN, much functionality is already implemented in lower BLE layers (fragmenting, session management,...).
Usage:
| void ble_addr_to_eui64 | ( | uint8_t * | dst, |
| const uint8_t * | src, | ||
| int | public_addr | ||
| ) |
convert BT address to EUI64 addr
This method converts a Bluetooth MAC address to an EUI64 address, which is used within IPv6 communication
| dst | IPv6 destination space |
| src | BLE MAC address source |
| public_addr | If the LWIP_RFC7668_LINUX_WORKAROUND_PUBLIC_ADDRESS option is set, bit 0x02 will be set if param=0 (no public addr); cleared otherwise |
| void eui64_to_ble_addr | ( | uint8_t * | dst, |
| const uint8_t * | src | ||
| ) |
convert EUI64 address to Bluetooth MAC addr
This method converts an EUI64 address to a Bluetooth MAC address,
| dst | BLE MAC address destination |
| src | IPv6 source |
Initialize the netif
No flags are used (broadcast not possible, not ethernet, ...) The shortname for this netif is "BT"
| netif | the network interface to be initialized as RFC7668 netif |
Process a received raw payload from an L2CAP channel
| p | the received packet, p->payload pointing to the IPv6 header (maybe compressed) |
| netif | the network interface on which the packet was received |
| err_t rfc7668_output | ( | struct netif * | netif, |
| struct pbuf * | q, | ||
| const ip6_addr_t * | ip6addr | ||
| ) |
Compress outgoing IPv6 packet and pass it on to netif->linkoutput
| netif | The lwIP network interface which the IP packet will be sent on. |
| q | The pbuf(s) containing the IP packet to be sent. |
| ip6addr | The IP address of the packet destination. |
| err_t rfc7668_set_context | ( | u8_t | idx, |
| const ip6_addr_t * | context | ||
| ) |
Set context id IPv6 address
Store one IPv6 address to a given context id.
| idx | Context id |
| context | IPv6 addr for this context |


Welcome to watsongraph’s documentation!¶
Contents:
-
class
conceptmodel.
ConceptModel
(list_of_concepts=None)¶ The ConceptModel object is at the core of what this library does.
Each concept in the ConceptModel is mapped to a corresponding unique Wikipedia page. These concepts are connected to one another in turn by relevance edges of a 0-to-1 scaled strength. This ConceptModel can then be associated with any number of applications. Basic bindings are provided, in particular, for a recommendation service using library-provided Item and User classes.
-
__init__
(list_of_concepts=None)¶ Initializes a ConceptModel around a list of concepts.
Parameters: list_of_concepts – A list of concept labels (eg. [‘Microsoft’, ‘IBM’] or [‘Apple Inc.’]) to initialize the model around.
-
abridge
(concept, level=0, limit=50)¶ Performs the inverse operation of augment by removing the expansion of the given concept from the graph. This method is an externally-facing wrapper for the internal abridge_by_node() method: the difference is that this method maps a concept while that method maps a node.
Parameters: - concept – The concept to be expanded. Note that this concept need not already be present in the graph.
- level – The limit placed on the depth of the graph. A limit of 0 is highest, corresponding with the most popular articles; a limit of 5 is the broadest and graphs to the widest cachet of articles. This parameter is a parameter that is passed directly to the IBM Watson API call.
- limit – a cutoff placed on the number of related concepts to be returned. This parameter is passed directly to the IBM Watson API call.
-
add
(concept)¶ Simple adder method.
Parameters: concept – Concept to be added to the model.
-
add_edge
(source_concept, target_concept, prune=False)¶ Wrapper for add_edges() for the single-concept case, so that you don’t have to call a list explicitly.
Parameters: - source_concept – The source concept edges are being added from.
- target_concept – The target concept an edge is being added to.
- prune – Watson returns correlations for edges which it does not know enough about as 0.5, a lack of extensibility which can cause sizable issues: for example you might have both (0.5, IBM, Apple Inc.) and (0.5, IBM, Apple). We as humans know that these are totally not equal comparisons, but the system does not! When this parameter is set to True (it is set to False by default) only edges with a correlation higher than 0.5 are added.
-
add_edges
(source_concept, list_of_target_concepts, prune=False)¶ Given a source concept and a list of target concepts, creates relevance edges between the source and the targets and adds them to the graph.
Parameters: - source_concept – The source concept edges are being added from.
- list_of_target_concepts – The target concepts edges are being added to.
- prune – Watson returns correlations for edges which it does not know enough about as 0.5, a lack of extensibility which can cause sizable issues: for example you might have both (0.5, IBM, Apple Inc.) and (0.5, IBM, Apple). We as humans know that these are totally not equal comparisons, but the system does not! When this parameter is set to True (it is set to False by default) only edges with a correlation higher than 0.5 are added.
-
augment
(concept, level=0, limit=50)¶ Augments the ConceptModel by assigning the given node to a concept and adding newly discovered nodes to the resultant graph. This method is an externally-facing wrapper for the internal augment_by_node() method: the difference is that this method maps a concept while that method maps a node.
Parameters: - concept – The concept to be expanded. Note that this concept need not already be present in the graph.
- level – The limit placed on the depth of the graph. A limit of 0 is the highest, corresponding with the most popular articles; a limit of 5 is the broadest.
- limit – a cutoff placed on the number of related concepts to be returned. This parameter is passed directly to the IBM Watson API call.
-
concepts
()¶ Returns: Returns a sorted list of all concepts in the ConceptModel.
-
concepts_by_property
(prop)¶ Parameters: prop – The property to sort the returned output by. Returns: Returns a list of (prop, concept) tuples sorted by prop. Note that this method will fail if this property is not initialized for all concepts.
-
concepts_by_view_count
()¶ Wrapper for concepts_by_property() for the view_count case.
Returns: Returns a list of (view_count, concept) tuples sorted by view_count.
-
copy
()¶ Returns a deep copy of itself. Used by User.express_interest() to merge Item and User concept models without distorting the Item model.
Returns: A deep copy of the current ConceptModel.
-
edges
()¶ Returns: Returns a list of all (concept, other concept, strength) tuples in the ConceptModel.
-
expand
(level=0, limit=50, n=1)¶ Expands a graph by augmenting concepts with only one (or no) edge. Warning: for sufficiently large graphs this is a slow operation! See also the expand() method for a less focused version of this operation.
Parameters: - level – The limit placed on the depth of the graph. A limit of 0 is highest, corresponding with the most popular articles; a limit of 5 is the broadest and graphs to the widest cachet of articles. This parameter is a parameter that is passed directly to the IBM Watson API call.
- limit – a cutoff placed on the number of related concepts to be returned. This parameter is passed directly to the IBM Watson API call.
- n – The cutoff for the number of neighbors a node can have.
-
explode
(level=0, limit=50)¶ Explodes a graph by augmenting every concept already in it. Warning: for sufficiently large graphs this is a very slow operation! See also the expand() method for a more focused version of this operation.
Parameters: - level – The limit placed on the depth of the graph. A limit of 0 is highest, corresponding with the most popular articles; a limit of 5 is the broadest and graphs to the widest cachet of articles. This parameter is a parameter that is passed directly to the IBM Watson API call.
- limit – a cutoff placed on the number of related concepts to be returned. This parameter is passed directly to the IBM Watson API call.
-
explode_edges
(prune=False)¶ Calls add_edges() on everything in the model, all at once. Like explode() but for concept edges!
Parameters: prune – Watson returns correlations for edges which it does not know enough about as 0.5, a lack of extensibility which can cause sizable issues: for example you might have both (0.5, IBM, Apple Inc.) and (0.5, IBM, Apple). We as humans know that these are totally not equal comparisons, but the system does not! When this parameter is set to True (it is set to False by default) only edges with a correlation higher than 0.5 are added.
-
get_view_count
(concept)¶ Returns the view_count of a concept in the ConceptModel.
Parameters: concept – The concept supposedly in the ConceptModel. Returns: The view_count int parameter of the concept, if it is found. Throws an error if it is not.
-
load_from_json
(data_repr)¶ Generates a ConceptModel out of a JSON representation. Counter-operation to to_dict().
Parameters: data_repr – The dictionary being passed to the method. Returns: The generated ConceptModel.
-
map_property
(prop, func)¶ Maps the param property of all of the concepts in the ConceptModel object by way of the user-provided func.
Parameters: - prop – The parameter being given.
- func – The function that is called on the concept in order to determine the value of prop.
-
merge_with
(mixin_concept_model)¶ Merges the given graph into the current one. The nx.compose method used here compares the hashes of the Concept objects being merged, and hashes are overwritten to map to labels. e.g. A = Concept(‘IBM’) and B = Concept(‘IBM’) have the same __hash__(), even though the objects are different, so they will merge into one when composed.
Parameters: mixin_concept_model – The ConceptModel object that is being folded into the current object.
-
neighborhood
(concept)¶ Parameters: concept – The concept that is the focus of this operation. Returns: Returns the “neighborhood” of a concept: a list of (correlation, concept) tuples pointing to/from it, plus itself. The neighborhood of the concept, a list of (concept, concept, relevance_edge) tuples much like the ones returned by edges() that contains every edge drawn from the chosen concept to any other in the graph. A concept is considered to be in a neighborhood with itself, with an auto-correlation of 1, so at a minimum expect to get back (lonely_concept, lonely_concept, 1).
-
remove
(concept)¶ Removes the given concept from the ConceptModel.
Parameters: concept – The concept being removed from the model.
-
set_property
(concept, param, value)¶ Sets the param property of concept to value.
Parameters: - concept – Concept being given a parameter.
- param – The parameter being given.
- value – The value the parameter being given takes on.
-
set_view_counts
()¶ Initializes the view_count property for all of the concepts in the ConceptModel.
-
to_json
()¶ Returns the JSON representation of a ConceptModel. Counter-operation to load_from_dict().
Parameters: self – A ConceptModel. Returns: The nx dictionary representation of the ConceptModel.
-
-
class
item.
Item
(name='', description='')¶ The Item object is a generic container for the objects that the application is trying to recommend to its users.
-
__init__
(name='', description='')¶ Loads an Item object from its description and an associated name.
Parameters: - name – The Item’s name.
- description – A textual description of what the Item is about or describes. This is mined at initialization for the concepts which are associated with this Item’s ConceptModel().
-
concepts
()¶ Returns: The concepts in the Item model.
-
load
(filename='items.json')¶ Loads the Item from a JSON representation.
Parameters: filename – The filename for the items storage file; items.json is the default.
-
load_from_json
(data)¶ Loads an Item from its JSON serialization. Counter-operation to to_json().
Parameters: data – The JSON data being loaded into an Item object.
-
relevancies
()¶ Returns: Sorted (relevance, concept) pairs associated with the Item.
-
save
(filename='items.json')¶ Saves the Item to a JSON representation.
Parameters: filename – The filename for the items storage file; items.json is the default.
-
to_json
()¶ Returns a JSON of the Item object suitable for storage. Counter-operation to load_from_json().
Returns: A JSON serialization of the Item object which is suitable for storage.
-
-
class
user.
User
(model=<watsongraph.conceptmodel.ConceptModel object>, user_id='', exceptions=None, password='')¶ This module abstracts the application’s User, whose preferences are stored in their own ConceptModel.
-
__init__
(model=<watsongraph.conceptmodel.ConceptModel object>, user_id='', exceptions=None, password='')¶ Parameters: - model – The ConceptModel() initially associated with the user. An empty one by default.
- user_id – The id associated with the user. An empty string by default.
- exceptions – The exceptions (items already viewed and either acted upon or passed on) associated with the user.
- password – The password associated with the user. An empty string by default.
-
concepts
()¶ Returns: The labels of the concepts associated with the user’s model.
-
delete_user
(filename='accounts.json')¶ Deletes a User object from the JSON entirely.
Parameters: filename – The filename for the account storage file; accounts.json is the default.
-
express_disinterest
(item)¶ Merges disinterest in an event into the user model. Adds the Item in which interest has been expressed to the exceptions.
Parameters: item – Event object the user is expressing disinterest in.
-
express_interest
(item)¶ Merges interest in an event into the user model. Adds the Item in which interest has been expressed to the exceptions.
Parameters: item – Event object the user is expressing interest in.
-
get_best_item
(item_list)¶ Retrieves the event within a list of events which is most relevant to the given user’s interests.
Parameters: item_list – The list of Item objects to be examined. Returns: The Item which best matches the user’s interests.
-
input_interest
(interest, level=0, limit=20)¶ Resolves arbitrary user input to concepts, explodes the resultant nodes, and adds the resultant graph to the user’s present one.
Parameters: - interest – Arbitrary user input.
- level – The limit placed on the depth of the graph. A limit of 0 is highest, corresponding with the most popular articles; a limit of 5 is the broadest and graphs to the widest cachet of articles. This parameter is a parameter that is passed directly to the IBM Watson API call.
- limit – a cutoff placed on the number of related concepts to be returned. This parameter is passed directly to the IBM Watson API call.
-
input_interests
(interests, level=0, limit=20)¶ Resolves a series of arbitrary user inputs to concepts, explodes the resultant nodes, and adds the resultant graph to the user’s present one.
Parameters: - interests – Arbitrary user input.
- level – The limit placed on the depth of the graph. A limit of 0 is highest, corresponding with the most popular articles; a limit of 5 is the broadest and graphs to the widest cachet of articles. This parameter is a parameter that is passed directly to the IBM Watson API call.
- limit – a cutoff placed on the number of related concepts to be returned. This parameter is passed directly to the IBM Watson API call.
-
interest_in
(item)¶ Parameters: item – An Item object to be compared to. Returns: Returns a float that rates this user’s hypothesized interest in the given event, based on the intersection between their own ConceptModel and that of the examined Event.
-
interests
()¶ Returns: Returns (interest, concept) pair tuples associated with the user.
-
load_user
(filename='accounts.json')¶ Load a user from a JSON file.
Parameters: filename – The filename for the account storage file; accounts.json is the default.
-
save_user
(filename='accounts.json')¶ Saves a user to a JSON file.
Parameters: - self – The user to be saved to JSON.
- filename – The filename for the account storage file; accounts.json is the default.
-
update_user_credentials
(filename='accounts.json')¶ Updates User information in the JSON. This is a seperate method in order to account for password and id manipulation (otherwise save_user() alone works fine).
Parameters: filename – The filename for the account storage file; accounts.json is the default.
-


The era has come when 12 film fans gather together serving for Film Society. They erect their ears with curiosity. They open their eyes for unlimited possibilities. They put their hearts to all friends sharing the same passion. They call themselves Marvel, the ones to bring about a change, a difference and a miracle.
The cabinet has been formed after the rigid process of promotion period. Rookies are turning into masters. They are fully aware of the experience of their predecessors and moreover ready to pass on their spirit to facilitate the future improvement of this 20-year-old society.
With great enthusiasm and a sense of responsibility, the newly formed task force is on its way to advancing the continuity and progress of Film Society. Their diverse talents and tremendous passion are ready to be contributed whenever needed. The art of films and the fun within it will be spread across HKUST through their endless efforts. Love for films and ambitions for a brighter future will fuel them along the way. The battle is sure to be tough yet joyful, to make Film Society one of the best in whichever categories.
We live our life a-quarter-mile at a time. Nothing else matters. But the year to be in Marvel, we are free.
Let’s set the world on fire with passion and faith!


{{>header}}
jMetal experimentation page.
This page is created to help's person don't knows programing to use jMetal.
In this page you use jMetal to define your experiments and run thems.


The Groovy Scripting add-on allows you to integrate Groovy scripts in ZAP.
When you create a new scripts you will be given the option to use Groovy, as well as the option to choose from various Groovy templates.


Mechanical MOOC is two things: A massive open online course (MOOC), and an experiment in how to offer these courses.
First, the course: We’re offering an eight-week course called A Gentle Introduction to Python. It is, as it sounds, a course in learning the basics of Python programming.
Second, the approach: Rather than trying to create a platform that structures the end-to-end learning experience, as recent MOOCs have done, we’re taking the best of existing open learning site—content from MIT OpenCourseWare, communities from OpenStudy, exercises by Codecademy—and joining them loosely with a mailing list that will coordinate student activity.
Instead of a professor or university organizing the class, our e-mail scheduler will do it--that’s why it’s mechanical.


Nations and Flags
Australia
Canada
China
Deutschland - Germany
France
India
United Kingdom
United States of America


The current production version is 4.4 running in Tomcat 5.5 web server
on smbdev1.
The production webice code is located in /home/webserverroot/servlets/tomcat5-prod/webice
whereas the development
version of webice is in /home/webserverroot/servlets/tomcat5-dev/webice-t5dev.
Because smbdev1 is not accessible from outside SLAC domain, the user
needs to access it via smb using the following url: http://smb.slac.stanford.edu/webice.
The requests are automatically forwarded to tomcat webserver on smbdev1.
| Tomcat Directory on smbdev1 | CVS Tag | WebIce Code Directory | WebIce URL |
|---|---|---|---|
| /usr/local/tomcat/t5-webice | release-4_4 | /home/webserverroot/servlets/tomcat5-prod/webice | http://smb.slac.stanford.edu/webice
or http://smbdev1.slac.stanford.edu:81/webice (from within SLAC domain) |
| /usr/local/tomcat/jakarta-tomcat-5.5.9 | head | /home/webserverroot/serlets/tomcat5-dev/webice-t5dev | http://smbdev1.slac.stanford.edu/webice-t5dev |
The purpose of webice-t5dev is to allow staff and a restricted number
of users to try out new features
of WebIce before next release.
When the user runs autoindexing in the Autoindex tab, webice starts
the autoindex scripts via the impersonation server. The config for
the impersonation server are the same as the ones for spotfinder (spotfinder.impersonHost
and spotfinder.impersonPort). The autoindex scripts are located in /usr/local/dcs/webice/install/webice-t5prod/scripts
directory on blcpu5. It is configuration by webice.scriptDir config.
| spotfinder | autoindex | |
| Host | blcpu5 | blcpu5 |
| Scripts and Executables | /usr/local/dcs/webice/install/webice-t5prod/bin | /usr/local/dcs/webice/install/webice-t5prod/bin |
| webice config | spotfinder.impersonHost, spotfinder.impersonPort, webice.binDir | spotfinder.impersonHost, spotfinder.impersonPort, webice.scriptDir |
> ssh smbdev1
> cd /usr/local/tomcat/t5-webice/logs
> tail -n 500 catalina.out
WebIce server must be restarted after this file has been modified for
the it to take effect (See section Restarting
WebIce
for more details).
| Name | Values | Description |
| webice | webice configuration group | |
| webice.accessMode | One of the following modes: all, some, staff, none | This config determines who has access
to WebIce website. Users do not need a beam time to access some features
of WebIce but they need a unix account at SSRL.
all: Everybody is allowed to access except those in the excludeUsers list. some: Includes those in includeUsers list and excludes those in excludeUsers list. staff: All staff and those in inCludeUsers list, excluding those in excludeUsers list. none: Nobody exception those in includeUsers list. |
| webice.userRootDir | Should be set to /data/<user> for webice installation at SSRL. | Template for user's root directory. The string <user> is replaced by the users login name. |
| webice.maxInactiveInterval | Number of seconds, e.g. 1800 which is 30 seconds. | Maximum idle time before the user is automaticaly logged out of webice. |
| webice.includeUsers | A list of users login ids separated by comma, e.g. ana,bluser | See webice.accessMode description. |
| webice.excludeUsers | A list of users login ids separated by comma, e.g. ana,bluser | See webice.accessMode description. |
| webice.rootDir | directory | Directory where webice code is installed. |
| webice.binDir | Directory path, e.g. /usr/local/dcs/webice/install/weboce-dev/bin | Directory path for executable files run by WebIce via the impersonation server. |
| webice.scriptDir | Directory path, e.g. /usr/local/dcs/webice/install/webice-dev/scripts | Directory path for shell scripts run by WebIce via the impersonation server. |
| webice.beamlines | List of beamlines separated by comma, e.g. BL9-1,BL9-2 | List of all available beamlines accessible by the user. This config is read only. The list of beamlines available to this user comes from the authentication server when the user is authenticated. This list appears in the beamline selection in the drop down menu in the tool bar. |
| webice.simulatedBeamlines | A list of beamlines separated by comma, e.g. BL-sim | List of simulated beamlines the user may wish to connect to. This list appears in the beamline selection in the drop down menu in the tool bar. |
| auth | Authentication server configuration group | |
| auth.host | Host name, e.g. localhost | Host name of the authentication server for authenticating users login. |
| auth.port | Port number, e.g. 80 | Port number of the authentication port used for authenticating users login. |
| auth.gatewayUrl | Url | Root url to the authentication server for validating the session id. |
| auth.loginUrl | Url | Url for the login page. |
| imperson | Impersonation server configuration group | |
| imperson.host | Host name, e.g. blcpu4.slac.stanford.edu | Host name of the impersonation server for accessing files on smbfs on behalf of the user. |
| imperson.port | Port number, e.g. 61001 | Port number of the impersonation server for accessing files on smbfs on behalf of the user |
| imgsrv | Image server configuration group | |
| imgsrv.host | Host name, e.g. smbfs.slac.stanford.edu | Host name of the image server for loading diffraction images in the image viewer. |
| imgsrv.port | Port number, e.g. 14007 | Port number of the image server for loading diffraction images in the image viewer. |
| spotfinder | Script configuration group | |
| spotfinder.impersonHost | Host name, e.g. blcpu4.slac.stanford.edu | Host name of the impersonation server for running scripts on behalf od the user. Should perhaps be renamed to script.impersonHost. |
| spotfinder.impersonPort | Porto numver, e.g. 61001 | Host name of the impersonation server
for running scripts on behalf od the user.
Should perhaps be renamed to script.impersonPort. |
| dcs | DCS configuration group | |
| dcs.dumpDir | Directory path, e.g. /home/webserverroot/servlets/webice/data/dcs | Directory path where the DCS device status dump files are located. A dump file is generated by the dcss and is read by webice periodically to get the latest status of the beamline. |
| dcs.updateRate | Number of seconds, e.g. 10 | Time interval, in seconds ,between each time WebIce reads the DCS device status dump file. |
| sil | ||
| sil.dtd | Filename | dtd file that describes the xml format of the sample information data retrieved from the crystal server. |
| sil.getSilUrl | url | Url for retrieving cassette information from the crystal server. |
| sil.getSilListUrl | url | Url for retrieving list of cassette for a given user from the crystal server. |
| sil.setCrystalUrl | url | Url for setting data of a crystal. |
| sil.isEventCompletedUrl | url | Url for querying whether the submitted job (to the crystal server) , such as setting crystal data, is completed. |
| sil.dtdUrl | url | Url for the sample information dtd file that descrbes the xml format. |
| sil.analyzeImageUrl | url | Url of the crystal-analysis server for running spotfinder . |
| sil.autoindexUrl | url | Url of the crystal-analysis server for autoindexing . |
| sil.downloadSilUrl | url | Url for download screening analysis results. |
| sil.getCrystalUrl | url | Url for retrieving data of crystal in xml. |
Once connected to a beamline, the user will be able to get the latest
information about beamline
devices and data collection. This information comes from the dcss dump
file generated periodically by
the dcss. The name of the file is specified in the beamline configuration
file in
/usr/local/dcs/dcsconfig/data/<beamline name>.config.
The location and dump rate of the file are set in the following config
in the config file:
dcss.dbDumpFlag=true
dcss.dbDumpFile=/home/webserverroot/servlets/webice/data/dcs/BL-sim.dump
dcss.dbDumpRate=10000
dbDumpFlag determines whether the dcss will dump the file. dbDumpFile
is the file path of
the dump file. dbDumpRate is the dump rate in milliseconds.
While dcss config (dcss.dbDumpRate) controls the rate at which the dump
file is generated, webice config ( dcs.updaterate)
control the rate at which webice reloads the file. The WebIce
adminstrator needs to configure dcs.dumpDir and dcs.dumpRate in
server.properties (see Server Side Configurations
section for details) in order to change the reload rate.
dcs.dumpDir is the directory where dump files of all beamlines can
be found. This directory must correspond
to the directory set by dcss.dbDumpFile of the dcss described in the
above paragraph. dcs.dumpRate
is the rate at which the dump file is read by WebIce in seconds.
For example,
<root>/webice/WEB-INF/webice.properties can be setup as follows:
dcs.dumpDir=/home/webserverroot/servlets/webice/data/dcs
dcs.updaterate=10
> vncviewer -Shared blctlxx
> cd /usr/local/dcs/dcss
> start_dcs SIM9-2
Optionally, you can start bluice:
> cd /usr/local/dcs/BluiceWidgets
> ./bluice.tcl SIM9-2
If you want to simulate the automated screening with old cassette data (where images have been collected at one of the SSRL beamline using the automated screening), You need to add the cassette data directory to the simdetector input cassette paths. To do this, edit /usr/local/dcs/simdetector/linux/cassette_dirs.txt file and add your cassette directory on a new line in the file. For example, if your cassette data directory is /data/joeuser/cassette130, add the following line
/data/joeuser/cassette130
to cassette_dirs.txt file. Note that the directory must be readable by anyone (or least by the user who will run the simulated screening). Subdirectories under cassette130 must correspond to the values in the "Directory" column in the spreadsheet. For example, if the spreadsheet for this dataset contains TM1100/myo_E1 in the Directory column for row 1, there must be a directory /data/joeuser/cassette130/TM1100/myo_E1 that contains images, for the simulated screening to run correctly. In bluice, the root directory path entered in the screening tab must end with cassette130, for example, /data/ana/screening_test/try1/cassette130.
After modifying the cassette_dir.txt file, you need to kill the current simdetector and start a new one. To start the simdetector:
> cd /usr/local/dcs/simdetector/linux
> ./simdetector SIM9-2
Tomcat manager web page can be used to start/stop WebIce servlet application.
You need to open a
web browser from smbdev1 and then go to the url http://localhost:81/manager/html.
Boom, Ken and Scott
know the user name and password.
> ssh smbdev1
> mozilla
Type http://localhost:81/manager/html in the url box. Click "Stop" and then "Start" links to restart webice.
Existing WebIce sessions will become invalid and the users will be asked
to relogin to WebIce.
Tomcat will restart and it will take a few minutes before web applications on this Tomcat are ready to respond to requests.
In the worst case senario when tomcat process can not be stopped using
the above command, you can kill
the tomcat process manually. To do this you will need to login as tomcat
or use the sudo command to kill the
process using "kill -9 NNN" command where NNN is the tomcat process.
Then start tomcat using the above command.
> ssh sdmbdev1
> sudo - tomcat
> ps -ef | grep crystals
webice
root 32186 1
0 Jan03 ? 00:00:00 jsvc.exec
-user tomcat -home /opt/jdk1.5.0_04 -Dcatalina.home=/usr/local/tomcat/t5-webice
-Dcatalina.base=/usr/local/tomcat/t5-webice -Dauthgateway.host=http://smbdev1.slac.stanford.edu
-Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/t5-webice.pid -outfile
/usr/local
tomcat 32187 32186 0 Jan03 ?
00:41:35 jsvc.exec -user tomcat -home /opt/jdk1.5.0_04 -Dcatalina.home=/usr/local/tomcat/t5-webice
-Dcatalina.base=/usr/local/tomcat/t5-webice -Dauthgateway.host=http://smbdev1.slac.stanford.edu
-Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/t5-webice.pid -outfile
/usr/local
> kill -9 11335
> ps -ef | grep webice
> sudo /etc/init.d/Tomcat5 start t5-webice
The code is located in /home/webserverroot/servlets/tomcat5-prod/crystals
directory. The server configuration file is
/home/webserverroot/servlets/tomcat5-prod/crystals/config.prop.
The property file, crystals/config.prop, contains dbFile config which is the location of an other property file contain DB connection config (dbDsn, dbUserName and dbPassword for DSN, user name and password, respectively). By default dbFile is set to db.txt (in the same dir as config.prop) which is not checked into cvs. If the database moves to a new host or the user name or password has changed, db.txt must be updated accordingly.
> ssh smbdev1
> mozilla&
In mozilla, type the following URL
http://localhost:82/manager/html
You will see a list of web applications. Click the stop and then
start links for the crystal server.
> ssh smbdev1
> sudo /etc/init.d/Tomcat5 stop t5-crystals
> sudo /etc/init.d/Tomcat5 start t5-crystals
Notice that it is the same command for restarting the tomcat instance
that runs webice, except that in this case the last
argument is t5-crystals instead of t5-webice.
In the worst case senario when tomcat process can not be stopped using
the above command, you can kill
the tomcat process manually. To do this you will need to login as tomcat
or use the sudo command to kill the
process using "kill -9 NNN" command where NNN is the tomcat process.
Then start tomcat using the above command.
> ssh sdmbdev1
> sudo - tomcat
> ps -ef | grep crystals
root 11334 1 0
Jan12 ? 00:00:00 jsvc.exec -user
tomcat -home /opt/jdk1.5.0_04 -Dcatalina.home=/usr/local/tomcat/t5-crystals
-Dcatalina.base=/usr/local/tomcat/t5-crystals -Dauthgateway.host=http://smbdev1.slac.stanford.edu
-Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/t5-crystals.pid -outfile
/usr
tomcat 11335 11334 1 Jan12 ?
00:19:32 jsvc.exec -user tomcat -home /opt/jdk1.5.0_04 -Dcatalina.home=/usr/local/tomcat/t5-crystals
-Dcatalina.base=/usr/local/tomcat/t5-crystals -Dauthgateway.host=http://smbdev1.slac.stanford.edu
-Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/t5-crystals.pid -outfile
/usr
> kill -9 11335
> sudo /etc/init.d/Tomcat5 start t5-crystals
> ssh smbdev1
> cd /usr/local/tomcat/t5-crystals/logs
> tail -n 500 catalina.out
Note that the Crystal-Analysis server outputs its log messages to the same file.
| Config | Values | Description |
| reloadConfig | true or false | If the value is true, the config will be reloaded every 30 seconds. This is useful if you want to make changes to the host name where the script will be run without having to restart the server, particularly if there are many jobs waiting in the queues. If the value is initially set to false and you want to subsequently change it to true, you will need to restart the server before the change takes effect. |
| scriptDir | Directory path | Default directory location of the autoindex scripts |
| strategyScriptDir | Directory path | Default directory location of the strategy scripts. The strategy scripts will, in the future release, be consolidated with the autoindex scripts. In the current version, however, the Crystals-Server uses the strategy scripts from webice. |
| binDir | Directory path | Default directory location of spotfinder executable and input files. |
| auth.host | Host name | Authentication server host for validating a session id. |
| auth.port | Port number | Port number of the authentication server for validating a session id. |
| auth.gatewayUrl | URL | Authentication server URL for validating a session id. |
| sil.getCrystalURL | URL | URL of the Crystals Server for saving autoindex and spotfinder results in the SIL. Note that it should really be called sil.setCrystalURL; it's a typo in the current config name. |
| imgsrv.host | Host name | Image server host. The autoindex job gets the image header from the image server. Currently it uses the image server running on blctlxx, which is from the image server used by bluice (which is running on smbfs). |
| imgsrv.port | Port number | Image server port. |
| sil.getCrystalImageURL | URL of the Crystals Server for saving autoindex and spotfinder results in the SIL. Note that it should really be called sil.setCrystalURL; it's a typo in the current config name. | |
| spotfinderHost | Host name | default host name of the impersonation server that will be used to run spotfinder. |
| spotfinderPort | Port number | default port number of the impersonation server that will be used to run spotfinder. |
| autoindexHost | Host name | Default host name of the impersonation server that will be used to run autoindex. |
| autoindexPort | Port number | Default port number of the impersonation server that will be used to run autoindex. |
| <beamline>.spotfinderHost
or webice.spotfinderHost |
Host name | Host name of the impersonations erver that will be used to run spotfinder for the given beamline or for webice. If the requested beamline name can not be found in this config file, the default value from spotfinderHost will be used. |
| <beamline>.spotfinderPort
or webice.spotfinderPort |
Port number | Port number of the impersonations erver that will be used to run spotfinder for the given beamline or for webice. If the requested beamline name can not be found in this config file, the default value from spotfinderPort will be used. |
| <beamline>.spotfinderQSize
or webice.spotfinderQSize |
Integer number | Size of the queue for running spotfinder for the given beamline or for webice. This config specifies how many spotfinder can be run concurrently on the host. |
| <beamline>.binDir
or webice.binDir |
Directory path | Directory location of the spotfinder executable and input files for the given beamline or for webice. |
| <beamline>.autoindexHost
or webice.autoindexHost |
Host name | Host name of the impersonation server that will be used to run autoindex for the given beamline or for webice. If the requested beamline name can not be found in this config, the default value from autoindexHost will be used. |
| <beamline>.autoindexPort
or webice.autoindexPort |
Port number | Port number of the impersonation server that will be used to run autoindex for the given beamline or for webice. If the requested beamline name can not be found in this config, the default balue from autoindexPort will be used. |
| <beamline>.autoindexQSize
or webice.autoindexQSize |
Integer number | Size of the queue for running autoindex for the given beamline or for webice. This config specifies how many autoindex can be run concurrently on the host. |
| <beamline>.scriptDir
or webice.scriptDir |
Directory path | Directory location of the autoindex scripts for the given beamline or for webice. If the requested beamline name can not be found in this config, the default value from scriptDir will be used. |
| <beamline>.strategyHost
or webice.strategyHost |
Host name | Host name of the impersonation server that will be used to run strategy scripts for the given beamline or for webice. If the requested beamline name can not be found in this config, the default value from strategyHost will be used. |
| <beamline>.strategyPort
or webice.strategyPort |
Port number | Port number of the impersonation server that will be used to run strategy scripts for the given beamline or for webice. If the requested beamline name can not be found in this config, the default value from strategyPort will be used. |
| <beamline>.strategyQSize
webice.strategyQSize |
Integer Number | Size of the queue for running autoindex for the given beamline or for webice. This config specifies how many autoindex can be run concurrently on the host. |
| <beamline>.strategyScriptDir
or webice.strategyScriptDir |
Directory path | Directory location of the strategy scripts for the given beamline or for webice. If the requested beamline name can not be found in this config, the default value from strategyScriptDir will be used. |
> ssh smbdev1
> mozilla&
In mozilla, type the following URL
http://localhost:82/manager/html
You will see a list of web applications. Click the stop and then
start links for the crystal-analysis server.
Keep in mind analysis jobs in the queues which have not been processed by the crystal-analysis will be lost.
> ssh smbdev1
> sudo /etc/init.d/Tomcat5 stop t5-crystals
> sudo /etc/init.d/Tomcat5 start t5-crystals
Notice that it is the same command for restarting the tomcat instance
that runs webice, except that in this case the last
argument is t5-crystals instead of t5-webice.
In the worst case senario when tomcat process can not be stopped using
the above command, you can kill
the tomcat process manually. To do this you will need to login as tomcat
or use the sudo command to kill the
process using "kill -9 NNN" command where NNN is the tomcat process.
Then start tomcat using the above command.
> ssh sdmbdev1
> sudo - tomcat
> ps -ef | grep crystals
root 11334 1 0
Jan12 ? 00:00:00 jsvc.exec -user
tomcat -home /opt/jdk1.5.0_04 -Dcatalina.home=/usr/local/tomcat/t5-crystals
-Dcatalina.base=/usr/local/tomcat/t5-crystals -Dauthgateway.host=http://smbdev1.slac.stanford.edu
-Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/t5-crystals.pid -outfile
/usr
tomcat 11335 11334 1 Jan12 ?
00:19:32 jsvc.exec -user tomcat -home /opt/jdk1.5.0_04 -Dcatalina.home=/usr/local/tomcat/t5-crystals
-Dcatalina.base=/usr/local/tomcat/t5-crystals -Dauthgateway.host=http://smbdev1.slac.stanford.edu
-Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/t5-crystals.pid -outfile
/usr
> kill -9 11335
> sudo /etc/init.d/Tomcat5 start t5-crystals
> ssh smbdev1
> cd /usr/local/tomcat/t5-crystals/logs
> tail -n 500 catalina.out
Note that the Crystals server outputs its log messages to the same file.
To fix this problem, you need to restart Tomcat server. Follow the instruction
in section Restarting Tomcat.
Change the following lines:
spotfinder.impersonHost=blcpu5.slac.stanford.edu
spotfinder.impersonPort=61001
webice.binDir=/usr/local/dcs/webice/install/webice-t5prod/bin
webice.scriptDir=/usr/local/dcs/webice/install/webice-t5prod/scripts
to
spotfinder.impersonHost=sdc05.slac.stanford.edu
spotfinder.impersonPort=61001
webice.binDir=/home/sw/rhel3/webice/install/webice-t5prod/bin
webice.scriptDir=/home/webserverroot/servlets/tomcat-t5prod/webice/WEB-INF/scripts
Then restart webice.
> ls -l /home/webserverroot/servlets/webice/data/dcs
If the file is not in the directory, check if /home/webserverroot/servlets/webice/data/dcs
directory has a
write permission so that the dcss can write the dump file into it.
If there is nothing wrong there, check the dcss config file. To do this
you need to log on to the beamline computer,
for example blctl91 for BL9-1. For simulated beamlines, log on to blctlxx.
Look in, for example, /usr/local/dcs/dcsconfig/data/BL9-1.config.
Make sure dcss.dbDumpFlag config is set to true and find out the
value of dcss.dbDumpFile config. In this case, it should be set to
/home/webserverroot/servlets/webice/data/dcs/SIM9-1.dump.
To restart image server on blctlxx:
> ssh blctl@blctlxx
> ps -ef | grep imgsrv
root 3103119 3099654 0 18:43:34
pts/3 0:06 /usr/local/dcs/imgsrv/irix/imgsrv /usr/local/dcs/dcsconfig/data/default.config/
> sudo kill -9 3103119
> cd /usr/local/dcs/imgsrv
> sudo ./imgsrv.sh
All three use the same strategy scripts located in the WebIce project
(/home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts).
To change labelit and mosflm versio, you need to edit setup_env.csh
file.
For blcpu, look for is_blcpu variable in the file. Change the lines containing "module load labelit/XXX" and "module load ipmosflm/XXX" where XXX are the version numbers for labelit and mosflm.
For linux (sdc02 - sdc06), the module command is not available. You will need to source the appropriate setup scripts from mosflm and labelit, for example:
source /home/sw/rhel3/ccp4-5.0.2/include/ccp4.setup
source /home/sw/rhel3/labelit_0.987b/labelit_build/setpaths.csh
set path=(/home/sw/rhel3/mosflm/v6.25 $path)
The autoindex script can be run in 3 ways:
- Via the Crystal-Analysis during screening when the "stop" check box
the action list is NOT ticked.
- Via the Crystal-Analysis when the user clicks "Analyze Crystal" in
the Screening tab in WebIce
if the user is NOT connected to the beamline or the crystal
is not currently mounted.
The autoindex scripts are located in the crystal-analysis project (/home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts).
In future release, the autoindex scripts and strategy scripts will
be consolidated.
For now, to change labelit and moslfm versions, you need to edit setup_env.csh.
Modify the file the same way as above.
Note that it is in /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts
which is different from the directory location of the strategy scripts.
| Beamline | Host Name | spotfinder executable | autoindex scritps | strategy scripts |
| BL1-5 | sdc02 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| BL9-1 | sdc03 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| BL9-2 | sdc04 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| BL11-1 | sdc05 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| BL11-3 | sdc06 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| SIM1-5 | sdc02 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| SIM9-1 | sdc03 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| SIM9-2 | sdc04 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| SIM11-1 | sdc05 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| SIM11-3 | sdc06 | /home/sw/rhel3/crystal-analysis/bin | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| webice | blcpu5 | /usr/local/dcs/crystal-analysis/bin (on blcpu5) | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
| default | blcpu5 | /usr/local/dcs/crystal-analysis/bin (on blcpu5)pwd | /home/webserverroot/servlets/tomcat5-prod/crystal-analysis/WEB-INF/scripts | /home/webserverroot/servlets/tomcat5-prod/webice/WEB-INF/scripts |
For spotfinder run during screening via the crystal-analysis server, you will need to look at the <beamline>.binDir config in crystal-analysis config file (server.config) to find out where spotinder executable and input files are located. The default value is /home/sw/rhel3/crystal-analysis/bin for all beamlines. You will need to modify spotfinder.par in this directory to change spotfinder input parameters.
If spotfinder is run for crystal centering, you will need to modify
center.par file in /home/sw/rhel3/crystal-analysis/bin


An Open Reading Frame (ORF) is a sequence of DNA that has the potential to encode proteins. These sequences begin with a start codon, ATG, and ends with a stop codon, TAA, TAG, or TGA.
Enter a DNA sequence below to see the ORFs contained inside it
Minimum ORF length (nucleotides)