
Welcome to AP-Portal’s Technical documentation¶
Project Home: | https://bitbucket.org/gef_work/ap_predict_online |
---|---|
Documentation: | http://apportal.readthedocs.io/ |
Created: | Jun 29, 2020 |
Version: | 0.0.1 |
IMPORTANT¶
As of early 2019 this application, originally created at the University of Oxford’s Department of Computer Science, is no longer being actively developed.
Subsequent activity has been transferred to the development of a newer version, AP-Nimbus
at https://github.com/CardiacModelling/ap-nimbus by the University
of Nottingham’s School of Mathematical Sciences .
Preamble¶
- User/Scientific documentation is accessible via https://chaste.cs.ox.ac.uk/ActionPotential/about.
- In many places the documentation may appear generalised as some aspects of the
AP-Portal
’s operational dependencies, e.g. databases, Java servlet containers, etc., are predominantly unconstrained.
Anyone intending to use the portal should be familiar with installing and operating the dependencies independently.- There is no documentation herein on how to install
ApPredict
, which is the portal’s underlying cardiac simulator. For such instructions please visit https://chaste.cs.ox.ac.uk/trac/wiki/ApPredict.
Alternatively, there are some sample installations beneath theAP-Portal
repository install directory.- Full source code, Javadocs, and limited additional documentation is available at https://bitbucket.org/gef_work/ap_predict_online.
It is anticipated that this documentation will be the principle source of technical information, which can be accessed at http://apportal.readthedocs.io/ and via that resource, exported to a number of formats.
Installation¶
Installation¶
Deployment options¶
Decision chart¶
Note
In all cases a ‘Code User’ or ‘Code Developer’ version” of ApPredict
also needs to be installed (see official ApPredict build instructions
and sample ApPredict install scripts)!
Note
The names app-manager
, business-manager
, business-manager-api
,
client
, client-direct
, dose-response-jni
, dose-response-manager
and
site-business
are all references to the generic portal components
of AP-Portal
(client
and client-direct
both require client-parent
and
client-shared
to be installed).
+--------------------+
| Do you intend to |
| manually enter |
| IC50/pIC50 values? |
+--------------------+
| |
Yes No
| |
+------------------------+ +------------------+
| Install app-manager | | Do you intend to |
| and client-direct only | | install the demo |
+------------------------+ | system only? |
+------------------+
| |
Yes No
| |
+---------------------------+ +--------------------------------+
| Install app-manager, | | Do you have dose-response data |
| business-manager, | | available to use? |
| business-manager-api, | +--------------------------------+
| client, dose-response-jni | | |
| dose-response-manager | | No
| and site-business | Yes |
+---------------------------+ | +-------------------------------+
| | Install app-manager, |
+-------------------------------+ | business-manager, |
| Install app-manager, | | business-manager-api and |
| business-manager, | | client. |
| business-manager-api, client, | | Create your own site-business |
| dose-response-jni and | +-------------------------------+
| dose-response-manager. |
| Create your own site-business |
+-------------------------------+
Options diagram¶
The illustration below depicts typical installation options (Option A and
Option B) of all the generic AP-Portal
components in two scenarios :
Option A¶
The simplest installation consisting solely of the client-direct
and
app-manager
components.
This configuration expects users to manually enter compound IC50, Hill and
saturation values in the portal interface. Simulation results are stored
in client-direct
.
Option B¶
The more intricate installation involves the interaction of client
,
a site-business
, dose-response-manager
(optional) and app-manager
components all working together to query local compound databases to
retrieve compound IC50, Hill and other values across a range of assays.
Warning
A site-business
must be installed. If you wish to see
your own compound data then you will need to
create a bespoke
site-business
.
Minimum requirements¶
In order to build and host the AP-Portal
AND the required ApPredict
application the following are the general minimum requirements.
Hardware¶
Servers¶
Note
Minimum 1 (!?)
Although 2 would be useful to isolate the operations of the app-manager
’s
compute-intensive ApPredict
simulation invocations if many concurrent
simulations are anticipated.
All inter-component communication (e.g. client-direct
<-->
app-manager
,
or site-business
<-->
app-manager
) is via WS communication so
components do not need to reside on the same hardware.
Internet access¶
Without direct internet access there will be a significant amount of copying of
files from one machine to another during AP-Portal
and ApPredict
installation.
Direct internet access preferred for :
- Downloading
AP-Portal
source code from bitbucket.- Downloading
ApPredict
source code from github.- Downloading library dependencies for
AP-Portal
andApPredict
.
For example, during Maven building ofAP-Portal
, and for Python package andCHASTE
requirements for building ofApPredict
.
Once built and installed there is no further need for direct internet access
except by ApPredict
for downloading variability lookup tables (see
also Variability Configuration).
Processing cores¶
Note
Minimum 4, preferably 8-16.
In theory just 1 but that would be impractical as it would take considerable time to install the software and operationally the application, once in use, would become frequently unresponsive.
A single ApPredict
simulation can take usually between 3 to 7+ minutes,
depending on aspects such as :
- The ion channel model (i.e. some run quicker than others),
- The IC50 values and how quickly a “steady state” is achieved.
If client-direct
is being used then there is only a single invocation of
ApPredict
for each simulation run. If however client
is being used then
there will be an invocation of ApPredict
for each combination of :
- Frequency, e.g. 0.5Hz, 1Hz
- Assay (or Assay Group), e.g. Barracuda, PatchXpress/Qpatch.
Potentially therefore app-manager
could be invoking 10+ concurrent ApPredict
simulations if there are more than one frequency and multiple assays – each
simulation potentially consuming 100% of a core.
The actual number of maximum concurrent simulations is configurable in
app-manager
such that some cores can remain free to service undemanding
client
or client-direct
requests if hosting everything on one machine.
Hard disk space¶
Note
Minimum 50 Gb, preferably 500Gb+ [1].
Item(s) | Approx. min. size |
---|---|
CHASTE dependency lib s, bin s, include s, etc. |
800Mb |
CHASTE + ApPredict source code |
3Gb |
ApPredict variability lookup tables |
5Gb [2] |
AP-Portal PK processing capability |
Up to 100Mb per PK sim! |
Non-PK and non-variability simulations generally consume very little
hard disk space or RAM, however since late 2017 the ability to run both PK
and variability simulations in the client-direct
component has
significantly increased the operational memory requirements of AP-Portal
operations. There is also now available a much-expanded range of
variability lookup tables (see
Variability Configuration).
RAM¶
Note
Minimum 8Gb, preferably 12-16Gb+.
A large amount of RAM is required during the build operations as part of the
installation of AP-Portal
and ApPredict
, particularly if building using
multiple cores.
During runtime RAM can also be consumed during simulation invocation if variability is being calculated, as each simulation may attempt to load a 700Mb+ file into RAM. [3]
Footnotes
[1] | With the arrival of PK processing (early 2018) there has been a commensurate increase in the hard disk space required as there is now the ability to upload PK data files in the region of 40Mb - these files, and the large results datasets they generate, are persisted in the database and so over time the amount of memory consumed may rise considerably if such PK simulations are not manually deleted after the results have been downloaded. |
[2] | Originally there were only a couple of variability lookup tables
(which can be 700Mb+ in size) available for ApPredict - however since
late 2017 there are a number of these files available which should ideally
be available on the local filesystem (see also
Variability Configuration). |
[3] | Originally variability processing had been available only in
the client component but since late 2017 it has been possible to also do
it in the client-direct component. |
Software¶
Linux (or similar)¶
The majority of AP-Portal
components, being Java-based, could (i.e. it
hasn’t been tested) run on Windows, but not the app-manager
component or
ApPredict
.
Java 7+ JDK¶
For example, Oracle JDK, OpenJDK or similar.
Warning
Since early 2019 client
and client-direct
require Java 8
to run.
Warning
Java PermGen errors sometimes occur during Maven building when using Java 7 - so whilst not essential, perhaps it would be better to use Java 8.
Database¶
Warning
AP-Portal has been running on MySQL, Oracle (10g) and HSQL databases. Other databases would be possible but their configuration would require the modification of files which are currently under version control, i.e. they have not yet been made locally modifiable.
Used to persist data, e.g. MySQL or similar.
ApPredict¶
Sample build operations, which allow for versioned building of ApPredict
(and
Chaste), are available for
CentOS 6.5
and for Fedora 20.
Warning
Building ApPredict
(or more specifically the collection of
dependencies - invariably referred to as “chaste-libs”) is potentially a
complex and time-consuming task. Once the dependencies have been built it
can be relatively straightforward to (re)build ApPredict
.
Skills¶
Linux command line¶
Some aspects of AP-Portal
building and installation can be assisted by using
a tool such as as the Eclipse IDE, but some aspects of app-manager
installation (which handles ApPredict
invocation) in particular do require a
good knowledge of command line operations.
Building ApPredict
requires a good understanding of command line operations.
Java and Spring¶
AP-Portal
is a Java-based application which makes extensive use of the
Spring Framework and its various
projects.
If you wish to create your own site-business
then it is inevitable that you
will need to be proficient in Java and potentially Spring.
XML¶
Some of the AP-Portal
configuration files are XML-based and some
knowledge of XML document structure and complimentary technologies would
probably be appropriate.
If you wish to create your own site-business
then it is inevitable that you
will need to be comfortable with XML.
Databases and SQL¶
Whilst various components require interactions with databases – requiring an
understanding of their installation and operations – an in-depth knowledge
of SQL is not necessary. Generally the more complex SQL used by AP-Portal
is derived from using Hibernate, although on
occasions it may be appropriate to understand some of the database
configuration options.
If you wish to create your own site-business
then it is very likely that if
they are SQL-based then a corresponding level of SQL understanding would
be required for bespoke database interaction to your compound databases.
System user privilege level¶
No component of AP-Portal
requires elevated (e.g. root) privileges for either
installation or operation, although this does restrict the port numbers which
client
and client-direct
components can listen on some systems and may make
for unsightly URL’s.
Similarly, if the application is installed as a non-privileged user then on
some systems it may not be straightforward to have the components and
dependent applications automatically started if the native system is rebooted.
For example, cron
’s @reboot
may not work on some systems. In such
cases it may require the assistance of someone with elevated privileges to
create, for example, a SysV init
script.
Guidance Checklist¶
‘R’ - Required; ‘D’ - Desired; ‘O’ - Optional
Base checklist¶
Requirement | ||
---|---|---|
R | Hardware | |
R | Software | |
R | Skills | |
R | User account [1] on host server | |
O | Component restart on reboot, e.g. cron ’s @reboot , SysV |
|
For a bespoke site-business
installation¶
See also
Requirement | ||
---|---|---|
R | Read-only site assay database account for AP-Portal |
|
R | Determine assays (e.g PatchXpress, QSAR), assay grouping | |
R | Determine if dose-response data fitting required | |
R | Determine ion channels, e.g. CaV1.2, hERG | |
R | Determine CellML models (and the default) to use, e.g. Shannon, ten Tusscher | |
R | Determine default units, e.g. pIC50, IC50 | |
R | Determine strategies for selecting pIC50 [2] to use | |
R | SQL [3] to retrieve assay, ion channel, etc., data | |
R | Details of services, e.g. WSs, which supply additional data | |
R | IT personnel to implement Java/Spring code | |
For a bespoke client-direct
installation¶
See also
Requirement | ||
---|---|---|
D | Company logo image [7] | |
D | Company login and logout mechanism [7] | |
D | Company “contact” information (e.g. local contact emails) [7] | |
D | X.509 certificates (optional self-signed [4]) for HTTPS | |
O | Generate and populate usernames and passwords SQL file [5] [7] | |
For a bespoke client
installation¶
See also
Requirement | ||
---|---|---|
D | Company logo image [7] | |
D | Company login and logout mechanism [7] | |
D | Company “contact” information (e.g. local contact emails) [7] | |
D | X.509 certificates (optional self-signed [4]) for HTTPS | |
O | IT personnel to implement Java/Spring code [6] | |
O | Generate and populate usernames and passwords SQL file [5] [7] | |
Footnotes
[1] | No need for elevated privileges user account on the native filesystem (although need to consider auto-restarting component services or use of TCP ports 80 and 443!). |
[2] | Different sites have data of varying characteristics requiring specific actions. |
[3] | Assuming that the data is held in an SQL database! |
[4] | (1, 2) Use of self-signed certificates generate threatening browser warnings! |
[5] | (1, 2) Not “Required” if you’re just trying things out! |
[6] | If you wish to restrict access AP-Portal |
[7] | (1, 2, 3, 4, 5, 6, 7, 8) These operations should take place in client-shared . |
AP-Portal
extensibility¶
Before considering installation options for the generic portal components there are a some things which may require consideration if you intend to have a site-specific installation of the portal. This ambition will require additional on-site work which is likely to require a lot of organisation, development and support time to create a bespoke implementation.
Below are the main areas of site-specific preparation:
User authentication and authorisation¶
Brief outline¶
How users are authenticated by the client
and client-direct
components
takes one of two techniques provided by their parent client-shared
component.
At runtime the technique used is determined by the use of
Spring profiles.
“prepopulated user authentication”
The off-the-shelf portal authentication mechanism which makes user of manually populated user databases.
This mechanism is relatively straightforward, in that the
users.sql
files (see client and client-direct) containing usernames, passwords and roles, are created and populated during portal installation and manually updated thereafter.Only when using this option do potential portal users have the ability to register to use the portal using the portal interface.
“bespoke user authentication”
The provision of a bespoke authentication mechanism (e.g. NTLM, Active Directory) by the site itself.
Whilst the authentication mechanism may already be available on-site, there will need to be a bespoke filter (see Request Filtering) created which interfaces with this mechanism.
Task responsibility (for “bespoke user authentication”)¶
The primary objective of this activity most likely involves the IT personnel
determining how to control access to the client
and client-direct
user
interfaces by intercepting requests (see Request Filtering) to determine user
identity and return a browser redirect to site authentication mechanisms
before the user is granted access.
The IT people involved will need to have some experience of Java software development (including Spring), as well as XML formats.
Additional detail¶
The client
and client-direct
components both make use of Spring
Security’s springSecurityFilterChain
FilterChainProxy
by virtue of the src/main/webapp/WEB-INF/web.xml
filter naming.
This mechanism intercepts all incoming requests and passes control to a variety
of filters which can take whatever action is appropriate for the circumstances,
e.g. accept (and pass the request to the next filter in the chain), or reject
(and perhaps show a default page or redirect to an authentication mechanism).
Amongst these filters there are some standard checks such as for security (e.g. CSRF) and valid sessions, but there can also be site-specific checks which can, for example, check for the presence of site cookies or query local authentication/authorisation mechanisms, e.g. NTLM. Equally, some portal pages could be deemed to be available for perusal by any visitor, e.g. such as in appCtx.noSecurity.xml
If a request arrives at a portal from an unauthenticated user hoping to visit
restricted access areas then a site-specific filter (e.g.
sample.appCtx.sitePreauthFilter.xml)
injected into the springSecurityFilterChain
(e.g. custom-filter
in
sample.appCtx.bespoke.xml)
will reject the request and most likely forward the user to the site’s
authentication mechanism.
Access to certain areas of the portal are controlled by the “Role”s which were assigned to the user at authentication time.
As a general rule all users accessing the client
or client-direct
portals must, unless they are
accessing unrestricted areas, be in the ROLE_USER
group (e.g. as determined by
sample.appCtx.bespoke.xml
or appCtx.prepopulated.xml).
Currently the only supported roles are defined in Role.java
ROLE_USER
Generally every portal visitor must be authenticated and assigned this “Role”.ROLE_POWER_USER
Generally assigned to users with access to certain “elevated privileges” functionality, such as entering ion channel spread values, or uploading CellML files.ROLE_ADMIN
Assigned to the person(s) responsible for administrative portal duties.
See also
User registration¶
Brief outline¶
If you are keen to allow users to register themselves to use AP-Portal
in
either of the client
or client-direct
interfaces then there is the option to
interact with local SMTP facilities and use Google’s reCAPTCHA facilities to improve the likelihood
that the registrations are from genuine potential users.
Note
The option to have a registration mechanism only applies when the
“prepopulated user authentication” user authentication mechanism is active. If a “bespoke user authentication”
mechanism is used then there is no option to display a registration form in
either of the client
or client-direct
interfaces.
Note
“Registration” in AP-Portal
represents a portal administrator
being notified, via email, of a user’s desire to use the system. It does not
provide features such as dynamic user database population, user password
selection or “remind me” features common on most web sites.
Task responsibility¶
The primary objective of this activity most likely involves the IT personnel determining how to configure interaction with the local SMTP server and, if using reCAPTCHA, how to request the necessary keys.
Additional detail¶
Scenarios related to registration :
Local SMTP service configured.
Visitors to the
client
and/orclient-direct
interfaces who wish to register can complete a registration form (which prompts for a contact email address) which when submitted uses the configured SMTP service to send an email notification to the portal administrator who can then send the registering person one of the predefined usernames and passwords.
If the predefined list becomes exhausted then more usernames and passwords must be manually created and added tousers.sql
and the component restarted.The registration form submission may be controlled by the use of the reCAPTCHA facility.
Local SMTP service not configured.
Visitors to the
client
and/orclient-direct
interface who wish to register are directed to the “contact” page where it is expected there will be the relevant contact information.A public and private key needs to be obtained from Google.
To use this feature there needs to be internet access as you need to call a Google internet service. (I’m not sure how flexible it is with intranet web addresses!).
Bespoke site-business
functionality¶
Brief outline¶
If you intend to use the client
portal to directly access your site’s compound
data then all the code to do so will need to be written.
To assist in this process there is the generic site-business
component
available in the portal repository which represents a fictional site
compound database - this component mirrors the configuration required for your
site’s data to be passed to the generic business-manager
processing via the
business-manager-api
.
Task responsibility¶
The primary objective of this activity involves a good deal of cooperation between the scientists and the relevant IT personnel in the organisation to determine how to extract the requisite assay data from the site databases.
The IT people involved will need to have some experience of Java software development (including Spring), as well as XML formats.
Technical Process¶
- For the of the installation of the generic portal components each component’s configuration requires the creation and assignment of site-specific files and values. Much of this process is based on deriving actual files from generic
sample.X
template files and then modifying their content to a site’s requirements by following each component’s specific installation instructions (e.g. as in the installation instructions).- For a bespoke
site-business
component there will be additional steps required (illustrated below) which will ultimately make use of a Maven WarPath plugin to overlay site-specific functionality over compiled and Maven-installedbusiness-manager
code.
The structure below and explanations thereafter (taken from the sample
site-business
component used for demonstration purposes), can be used to
explain specifications and operations of generally required bespoke
site-business
functionality.
site-business/src/main/java/uk/ac/ox/cs/epsrc/site_business/business/selection/maxresponse/CSDemoMaxRespStrategy.java --+
| | | | +----/CSMaxRespDataSelector.java |
| | | +---/SiteDataLoader.java |
| | |-----/dao/SiteDAOImpl.java |
| | |-----/request/validator/SiteSimulationsRequestValidator.java |
| | |-----/service/ExperimentalDataServiceImpl.java |
| | |-----/SiteIdenifiers.java |-- 1
| | +-----/value/object/datarecord/doseresponse/CSDoseResponseDataRecordVO.java |
| | |----/individual/CSIndividualDataRecordVO.java |
| | | |----/CSManualPatchCaV12DataRecordVO.java |
| | | |----/CSManualPatchHERGDataRecordVO.java |
| | | +----/CSManualPatchNaV15DataRecordVO.java |
| | +----/summary/CSSummaryDataRecordVO.java --+
| |-/resources/log4j.xml
| | +----/META-INF/properties/.gitignore
| | | +----/README
| | |---/spring/ctx/appCtx.business.site.xml
| | | |-/config/appCtx.config.actionPotential.site.xml --+
| | | | |---/appCtx.config.assays.site.xml |
| | | | |---/appCtx.config.cellModel.site.xml |
| | | | |---/appCtx.config.changeCheckers.site.xml |-- 2
| | | | |---/appCtx.config.doseResponseFitting.site.xml |
| | | | |---/appCtx.config.ionChannels.site.xml |
| | | | |---/appCtx.config.pc50Evaluators.site.xml |
| | | | +---/appCtx.config.site.xml --+
| | | |-/data/site/appCtx.database.site.xml ----- 3
| | | +-/integration/simulation/processing/experimental/appCtx.proc.site.experimental.xml --+
| | | |----/qsar/appCtx.proc.site.qsar.xml |-- 4
| | | +----/screening/appCtx.proc.site.screening.xml --+
| | +---/sql/site/site.embedded.sql --+__ 5
| | +-/site.mysql.sql --+
| +-/webapp/WEB-INF/spring/spring-site-config.xml
|-/properties/database/site/.gitignore --+
| | |-/README |-- 6
| | +-/sample.site.database.properties --+
| |----/.gitignore --+__ 7
| +----/sample.env.properties --+
+-/test/ .... ----- 8
1 - Writing the Java classes¶
Java classes used to :
- Define site-specific data record structures derived from
business-manager-api
(e.g. extending AbstractIndividualDataRecordVO as in the case of CSManualPatchHERGDataRecordVO).- Query the site database to load site data into those data records.
For this the relevant SQL will most likely need defining to extract all the relevant information from the site databases.- Return the site data to the generic
business-manager
processing.- pIC50 evaluation.
2 - Define CellMLs, Assays, Ion Channels, etc.¶
Note
A site’s configuration files are ultimately derived from the XML
files in the business-manager
sample configs
directory. Examples of how these templates are copied and modified to fit to
a site’s unique specifications is demonstrated in the site-business
component configs.
XML configuration files to define a site’s unique setup.
appCtx.config.actionPotential.site.xml
:ApPredict
invocation settings.
- Default frequencies and compound concentrations in situations where there is no experimental data available (
ApPredict
’s--pacing-freq
and--plasma-concs
arg. values).- Default credible interval percentiles (
ApPredict
’s--credible-intervals
arg. value). [2]
The extension of functionality of this argument appeared around end-May 2018 to improve on the previous use of an unmodifiable singular default credible interval percentile of 95%.- Default maximum pacing time (
ApPredict
’s--pacing-max-time
arg. value).- Default plasma concentration count (
ApPredict
’s--plasma-conc-count
arg. value).- Default plasma concentration log scale (
ApPredict
’s--plasma-conc-logscale
arg. value).
appCtx.config.assays.site.xml
: Assay details.
- Assay names.
- Assay levels. [1]
Assays inAP-Portal
are considered to be hierarchical and a level value is assigned to each assay. Historically the hierarchy has reflected assay accuract, with the least accurate assay assigned a level value of0
(zero), and increasingly more accurate assays assigned incremental level values.- Assay groups. [1]
When different assays have similar characteristics they can be grouped, and as with assay levels, the grouping is hierarchical. Historically the assay groups levels assigned have mirrored the assay levels assigned, with the least accurate groups assigned a group level of0
(zero) and increasingly more accurate assay groups assigned incremental group level values.- Assay variability. [2]
appCtx.config.cellModel.site.xml
: CellML models.The collection of CellML models contained in this configuration file must correspond to the CellML models which
ApPredict
is expecting.
If you are uncertain which CellML modelsApPredict
has been built to work with, then invokeApPredict
at the command line with no arguments supplied, which should generate output containing something like the following :*********************************************************************************************** * ApPredict::Please provide some of these inputs: * * EITHER --model * options: 1 = Shannon, 2 = TenTusscher (06), 3 = Mahajan, * 4 = Hund-Rudy, 5 = Grandi, 6 = O'Hara-Rudy 2011 (endo), * 7 = Paci (ventricular), 8 = O'Hara-Rudy CiPA v1 2017 (endo) * 9 = Faber-Rudy. * OR --cellml <file>It’s unlikely that the CellML models data would need to change except in the specification of the
defaultModel
- i.e. the model which should appear selected by default in the UI.
appCtx.config.changeCheckers.site.xml
- Change checkers.Change checkers should generally not require modification.
appCtx.config.doseResponseFitting.site.xml
- Dose-Response data fitting preferences.Only relevant if dose-response data fitting.
appCtx.config.ionChannels.site.xml
- Active ion channels.Collection of the actively tested ion channels.
appCtx.config.pc50Evaluators.site.xml
- pIC50 evaluators.pIC50 evaluation involves activating/deactivating and arranging evaluators according to site requirements.
It is likely that the scientists will need to be consulted on which evaluators are to be used and their hierarchical order (0
(zero) being the first evaluator to seek a pIC50 value from). From experience it is likely that additional site-specific evaluators which also need to be implemented.
appCtx.config.site.xml
- Variousclient
options settings.
defaultForceReRun
- use with care!- Assay value inheritance defaults.
- Information display levels.
defaultQuietPeriod
- Time (in minutes) following a simulation’s run or re-run check in which another re-run check will not be undertaken.
This is to avoid multiple concurrent requests to view a compound resulting in simulation re-runs.
3 - Connecting to the site’s database¶
Connectivity to the site’s database.
4 - Define Screening, QSAR, Experimental processing¶
Different sources of data to process, e.g. screening, QSAR, experimental data.
5, 6 - Ignore¶
(Sample site database structure)
7 - Define programming environment properties¶
Sample environment properties.
8 - Writing the Java unit testing classes.¶
Java test classes.
Footnotes
[1] | (1, 2) assay levels and assay group levels are used in assay value inheritance. |
[2] | (1, 2) See also Variability Configuration. |
Generic AP-Portal
Components¶
The following are generic portal components
app-manager
:ApPredict
-invoking WS.business-manager-api
:site-business
-developer API tobusiness-manager
operations.business-manager
: Generic ‘business’ processing WS.client
: A web interface which talks to thebusiness-manager
.client-direct
: A web interface which talks directly to theapp-manager
.dose-response-jni
: Dose-Response fitting JNI.dose-response-manager
: Dose-Response fitting WS. (which usesdose-response-jni
).
The following are modularised components used when building some aspects of the portal.
client-parent
: Maven project build feature used by client components.client-shared
: Shared functionality across theclient
andclient-direct
components.
The following is an example site-specific component containing fictional compound data and processing which interacts with the generic components for demonstration purposes.
site-business
: Example demonstrator of site-specific processing.
Component Installation¶
app-manager
¶
app-manager
contains code to invoke and monitor ApPredict
.
app-manager
was designed to enable the isolation of ApPredict
invocation so
that any client (e.g. a WS-invoking Perl script similar to
query_business_manager_WSS.pl
- not necessarily either of the AP-Portal
site-business
and/or client-direct
components) could call it to run ApPredict
.
It was also isolated so that it could reside on hardware which was able to run
many concurrent invocations, e.g. on a workstation with a lot of RAM and
processors, without degrading the client’s response times.
Below is a diagrammatic representation app-manager
ApPredict
invocation
operations (see tools/prepare_<appredict_invocation_mechanism>.sh,
tools/local_runner.sh and tools/<appredict_invocation_mechanism>.sh
for more info).
- Maven (build)
- Java 7 or higher (build, deploy)
- Java Servlet Container, e.g. Apache Tomcat (deploy)
- Database (build, deploy)
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
- Either …
- … or …
- [ T ] Copy sample.pom.xml to
pom.xml
- [ T ] Copy src/main/resources/META-INF/spring/ctx/ws/sample.appCtx.ws.security-incoming.xml to
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-incoming.xml
- [ T ] Copy src/main/resources/META-INF/spring/ctx/ws/sample.appCtx.ws.security-outgoing.xml to
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
- [ T ] Copy src/properties/database/sample.database.filter.properties to
src/properties/database/database.filter.properties
- [ T ] Copy src/properties/sample.filter.properties to
src/properties/filter.properties
- [ T ] Copy src/properties/sample.spring.properties to
src/properties/spring.properties
- … then …
Follow database choice instructions.
[ T ] Copy the
bash
shell scripts and RelaxNG schema files, e.g. …
*.sh
mathml2.rng
… from /app-manager/tools/ to your equivalent of Tomcat’s CATALINA_HOME.
Continue to read tools/prepare_<appredict_invocation_mechanism>.sh, tools/local_runner.sh and tools/<appredict_invocation_mechanism>.sh for further configuration instructions.[ T ] Create the directory
procdir
in your equivalent of Tomcat’s CATALINA_HOME
- … finally
- Edit each of the copied files according to your desired configuration.
pom.xml
¶It is likely that there is a site-specific database driver (such as a
MySQL driver) which needs adding to the pom.xml
file.
src/properties/filter.properties
¶app.soap.location=
WS URL of this component, e.g. ‘http://localhost:18380/app_manager-0.0.4/aws/’
app.soap.wsdl=
This component’s WSDL name, e.g. ‘app_services.wsdl’
The combination of app.soap.location
and app.soap.wsdl
, e.g.
‘http://localhost:18380/app_manager-0.0.4/aws/app_services.wsdl’
should reveal the SOAP web service when the component is running.
business.soap.location=
WS URL of site-business
component, e.g. ‘http://localhost:18080/site_business-0.0.2/bws/’
log.file=
Component log file location on disk, e.g. ‘logs/app-manager.log’
log.level.app_manager=
Log level of this component, e.g. (trace|debug|info|warn|error|fatal)
.
log.level.non_app_manager
Log level of code from other libraries, e.g. (trace|debug|info|warn|error|fatal)
.
src/properties/spring.properties
¶base.dir=
Directory used as abase for ApPredict
invocations, e.g. ‘/home/user/app_run/’
Warning
Assign cautiously! ApPredict
is invoked in subdirectories of this
directory and these subdirectories are created and destroyed
(by PostSimulationRunTidyUp.java)
as appropriate.
monitor.frequency=
Simulation process monitoring frequency (in seconds), e.g. ‘15’.
invocation.limit=
Maximum number of concurrent ApPredict
invocations, e.g. ‘8’.
securement.app.username=
Component WSS username.
securement.app.password=
Component WSS password.
securement.business.username=
site-business
WSS username.
securement.business.password=
site-business
WSS password.
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-incoming.xml
¶Generally no change necessary.
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
¶Generally no change necessary.
src/properties/database/database.filter.properties
¶Generally no change necessary.
src/properties/database/dev.database.<deploy.db_vendor>.properties
¶See also
tools/prepare_<appredict_invocation_mechanism>.sh
¶One of the following files will be your simulation preparation script of choice
according to your local ApPredict
installation.
prepare_docker.sh
prepare_localfs.sh
prepare_singularity.sh
Its role generally is to copy across (or symlink) the ApPredict
invoker of
choice file (see tools/<appredict_invocation_mechanism>.sh) into the
directory in which the simulation will run (i.e. a subdirectory of base.dir
(as defined in src/properties/spring.properties’ base.dir)), and to swap a
couple of placeholder values therein.
The name prepare.sh is hardcoded into
ApPredictRunPreProcessor.java,
and therefore depending on how you intend to run ApPredict
you will need to
symlink one of above files to prepare.sh
, as below …

tools/local_runner.sh
¶You shouldn’t need to make any changes to this file.
The name local_runner.sh is hardcoded in ApPredictInvoker.java.
https://bitbucket.org/gef_work/ap_predict_online/src/master/app-manager/tools/local_runner.sh
is the script that will be called by ApPredictInvoker.java
and it will …
cd
to the local filesystem dir (as determined by the base.dir property and job identifier), then- run whichever
ApPredict.sh
wrapper script (as derived fromApPredict.sh
,Singularity.sh
orDocker.sh
) which will in turn invoke the ApPredict binary.- It will also generate the VRE_INFO and VRE_OUTPUT files, the former contains general environment info, the latter contains the stdout and stderr from the invocation, both of which get persisted if the simulation runs successfully.
tools/<appredict_invocation_mechanism>.sh
¶One of the following files will be your ApPredict
invoker of choice for your
installation. The content of which you may need to modify according to your
local ApPredict
installation.
ApPredict.sh
Singularity.sh
Docker.sh
The name ApPredict.sh is hardcoded in
ApPredictInvoker.java,
and therefore you need to have symlinked your relevant prepare_<appredict_invocation_mechanism>.sh
to prepare.sh
(as explained in
tools/prepare_<appredict_invocation_mechanism>.sh), such that the
ApPredict
invoker of choice wrapper script will be used (via an invocation
of local_runner.sh
).
procdir
¶procdir
is used to deposit system process data into files which can be read
by the application for the purpose of monitoring the system process state, i.e.
to determine if ApPredict
is still running.
It is hardcoded in two places :
- File appCtx.int.processMonitoring.xml has hardcoded (in
int-file:inbound-channel-adapter
) the directoryprocdir
where the application expects system process data files to be deposited by the system at runtime uponApPredict
invocation.local_runner.sh
also has the same hardcoding.
See also
Database choice and Spring profiles for additional information.
-Dspring.profiles.active=
¶Options are currently app_manager_(embedded|mysql|oracle10g)
.
Warning
At build time it is important to use the
-Dspring.profiles.active=app_manager_embedded
arg because during
integration testing rubbish may be written to the database so it is important
to use the embedded database during this process.
-Ddeploy.db_vendor=
¶The name of the database vendor, e.g. mysql
, postgres
, used in the
intended deployment (not build) environment. The actual name used
corresponds exactly to the <deploy.db_vendor> element of the file derived from
sample.database.spring.properties
during the installation process.
-Ddeploy.env=
¶The environment name, i.e. dev
.
Example build instructions (illustrating use of embedded during the build process, and mysql in the deploy environment):
cd <ap_predict_online>/app-manager
mvn clean verify -Dspring.profiles.active=app_manager_embedded -Ddeploy.db_vendor=mysql -Ddeploy.env=dev
If the build command has completed successfully the webapp .war
file should be
in the target
directory. Copy this to the servlet container’s relevant file, e.g
for Tomcat, the webapps
directory.
Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [appCtx.database.xml_unassigned]
¶Probably means that the mvn
build command had the wrong combination of
-Ddeploy.db_vendor= and/or -Ddeploy.env= values assigned.
What generally happens is that the pom.xml
generate-resources
phase
will concatenate two properties files into src/main/resources/META-INF/properties/app_manager.properties
but if the wrong (or no) database properties file is referenced then the
database properties will be missing.
No bean named 'appDataSource' is defined
¶It could be that wrong JAVA_OPTS
value for spring.profiles.active
is
being set prior to the component being started,
e.g. JAVA_OPTS="-Dspring.profiles.active=app_manager_myyysql"
.
business-manager
¶
business-manager
contains generic business processing code.
- Maven (build)
- Java 7 or higher (build, deploy)
- Java Servlet Container, e.g. Apache Tomcat (deploy)
- Database (build, deploy)
- A Maven-
install
edbusiness-manager-api
. See business-manager-api
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
- Either …
- … or …
- [ T ] Copy sample.pom.xml to
pom.xml
- [ T ] Copy src/main/resources/META-INF/spring/ctx/ws/sample.appCtx.ws.security-incoming.xml to
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-incoming.xml
- [ T ] Copy src/main/resources/META-INF/spring/ctx/ws/sample.appCtx.ws.security-outgoing.xml to
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
- [ T ] Copy src/properties/database/sample.database.filter.properties to
src/properties/database/database.filter.properties
- [ T ] Copy src/properties/sample.filter.properties to
src/properties/filter.properties
- [ T ] Copy src/properties/sample.spring.properties to
src/properties/spring.properties
- … then …
- Follow database choice instructions.
- … finally
- Edit each of the copied files according to your desired configuration.
The illustration below depicts generic business-manager
workflow :
pom.xml
¶It is likely that there is a site-specific database driver (such as a
MySQL driver) which needs adding to the pom.xml
file.
src/properties/filter.properties
¶app_manager.soap.location=
WS URL of app-manager
component, e.g. ‘http://localhost:18380/app_manager-0.0.4/aws/’
business_manager.input_data_gathering.timeout=
Timeout (in milliseconds) whilst waiting for input data gathering requests to return. Depending on how responsive the site components are (e.g. web services), this may need to be a corresponding number of seconds.
Warning
If no response is received within the specified timeout the system is likely to consider it as an indication that no data is available, rather than issue a warning. (TODO: Verify this!)
business_manager.amq_transport_connector.host=
AMQ Transport connector URI host (see appCtx.jms.ActiveMQ.xml), e.g. ‘127.0.0.1’.
business_manager.amq_transport_connector.port=
AMQ Transport connector URI port (see appCtx.jms.ActiveMQ.xml), e.g. ‘61616’.
business_manager.request_processing.polling.filter=1000
Default simulation request processing polling period (in ms).
When incoming simulation requests are received a few first-phase “request processing” tests will take place immediately to determine if a simulation request should proceed to the second “simulation processing” phase. If it is determined that the simulation should proceed then it is persisted in the database and periodically (as determined by the value of this property) the database will be polled for simulations awaiting second-phase processing.
log.file.business_manager=
Component log file location on disk, e.g. ‘logs/business-manager.log’
log.level.business_manager=
Component log level, e.g. (trace|debug|info|warn|error|fatal)
.
log.level.general=
Log level of code from other libraries, e.g. (trace|debug|info|warn|error|fatal)
.
src/properties/spring.properties
¶fdr.soap.location=
WS URL of dose-response-manager
, e.g. ‘http://127.0.0.1:18180/fdr_manager-0.0.1-SNAPSHOT/fws/’
app_manager.capacity_indicator=
app-manager
operating at capacity indicator, e.g. ‘appmanager.at_capacity’
The value used corresponds to the client
i18n bundle identifier.
app_manager.progress_pfx=
app-manager
default progress prefix, e.g. ‘PROG: ‘ (@see app-manager
’s ProgressMonitor#PROGRESS_PREFIX?)
app_manager.status_date_format=
app-manager
status date format, e.g. ‘yyyy:MM:dd HH:mm:ss’
app_manager.default_saturation_level=
app-manager
default saturation level (%) value, e.g. ‘0’
business_manager.request_processing.polling=@business_manager.request_processing.polling.filter@
Generally no change necessary - value to use is derived from filter.properties
.
fdr.default_coefficient=
dose-response-manager
default Hill coefficient, e.g. ‘1’
securement.app.username=
app-manager
WSS username.
securement.app.password=
app-manager
WSS password.
securement.business.username=
Component WSS username.
securement.business.password=
Component WSS password.
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-incoming.xml
¶Generally no change necessary.
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
¶Generally no change necessary.
src/properties/database/database.filter.properties
¶business_manager.database.queryTimeout=
Hibernate (javax.persistence.query.timeout) query timeout (in milliseconds), e.g. ‘1’.
business_manager.database.hbm2ddl=
Hibernate hbm2ddl schema DDL options e.g. (validate|update|create|create-drop)
.
src/properties/database/dev.database.<deploy.db_vendor>.properties
¶See also
See also
Database choice and Spring profiles for additional information.
-Dspring.profiles.active=
¶Options are currently business_manager__(embedded|mysql|oracle10g)
.
Warning
At build time it is important to use the
-Dspring.profiles.active=business_manager_embedded
arg because during
integration testing rubbish may be written to the database so it is important
to use the embedded database during this process.
-Ddeploy.db_vendor=
¶The name of the database vendor, e.g. mysql
, postgres
, used in the
intended deployment (not build) environment. The actual name used
corresponds exactly to the <deploy.db_vendor> element of the file derived from
sample.database.spring.properties
during the installation process.
Example build instructions :
cd <ap_predict_online>/business-manager
#export MAVEN_OPTS="-Xms512m -Xmx2g -XX:PermSize=2048m -XX:MaxPermSize=2048m"
mvn clean install -Dspring.profiles.active=business_manager_embedded -Ddeploy.db_vendor=mysql
Note
Unlike in other components the -Ddeploy.env
is hardcoded as dev
.
This component when built should not be deployed into a servlet container,
instead it is Maven-install
ed in the local Maven repository
and then a subsequent build of site-business
retrieves the built .war
file
and uses it in the site-business
build process.
Conventionally the next step, having built and Maven-install
ed
business-manager
, would be to build a site-business
.
This is because a change to business-manager
operations and/or
configurations will only be visible once a site-business
is subsequently
built and deployed (as the build of a site-business
would use the latest
install
ed business-manager
).
business-manager-api
¶
business-manager-api
contains the API to business-manager
operations, i.e.
it allows a/your site-business
to pass data to the generic business-manager
operations.
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
No configuration necessary.
client
¶
client
is an SPA providing the web interface to site-business
.
The client
interface is intended for use at sites that intend to configure the
AP-Portal
to directly query their compound databases.
- Maven (build)
- Java 7 8 [1] or higher (build, deploy)
- Java Servlet Container, e.g. Apache Tomcat (deploy)
- Database (build, deploy)
- A Maven-
install
edclient-parent
andclient-shared
. See client-parent and client-shared
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
- Either …
- … or …
- [ T ] Copy sample.pom.xml to
pom.xml
- [ V ] Copy src/main/resources/bundle/sample.site.properties to
src/main/resources/bundle/site.properties
- [ S ] Copy src/main/resources/META-INF/spring/ctx/config/sample.appCtx.config.site.xml to
src/main/resources/META-INF/spring/ctx/config/appCtx.config.site.xml
- [ T ] Copy src/main/resources/META-INF/spring/ctx/ws/sample.appCtx.ws.security-outgoing.xml to
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
- [ T ] Copy src/properties/database/sample.database.filter.properties to
src/properties/database/database.filter.properties
- [ T ] Copy src/properties/database/sample.database.spring.properties to
src/properties/database/dev.database.embedded.properties
- See Database choice
- [ T ] Copy src/properties/sample.filter.properties to
src/properties/filter.properties
- [ T ] Copy src/properties/sample.spring.properties to
src/properties/spring.properties
If you intend to have a client
-specific “prepopulated user authentication”
user authentication mechanism
database then also do the following :
- [ T ] Copy src/main/resources/META-INF/data/spring-security/local/sample.users.sql to
src/main/resources/META-INF/data/spring-security/local/users.sql
- … finally
- Edit each of the copied files according to your desired configuration.
pom.xml
¶It may necessary in some circumstances, e.g. if there is site-specific access
control code being overlayed into the client
src/main/java
directory, or if using a MySQL driver, to adapt the pom.xml
file for
Maven-building the component.
src/main/resources/bundle/site.properties
¶site.compound_identifier=
Adjust the prompt message for compound identifiers (if necessary).
If the site is to be internationalised create all the corresponding language properties files,
e.g. src/main/resources/site_(es,zh).properties
.
src/main/resources/META-INF/data/spring-security/local/users.sql
¶Adjust this according to your expected usage requirements :
- If you are using a local
client
-specific “prepopulated user authentication” mechanism for authentication and authorisation, this file is required.
Please also check the following Note.- If you are using a “bespoke user authentication” mechanism, or if “prepopulated user authentication” users are shared between
client
andclient-direct
installations (and hence defined inclient-shared
), then this file is not required.
Note
If there is a new registration request the requesting user’s details
are not automatically written to the user database.
New users must be manually added to this users.sql
file and the
system restarted – for this reason it is better to create a number of
unissued usernames and passwords (commensurate with the total anticipated
usage) and then distribute them to new registrations as they arrive.
src/main/resources/META-INF/spring/ctx/config/appCtx.config.site.xml
¶c50Units
Preferred units for displaying inhibitory concentration, e.g. IC50 [nM], IC50 [µM], pIC50.
Cut-and-paste your preferred unit to be the top/first <entry />
value.
configuration -> inputValueDisplay
Choose how to derive the mean of pIC50 ApPredict
invocation input values.
Set the value of the ref=""
attribute to one of the following :
INPUT_VALUE_DISPLAY_ANY_MODIFIER
Display the mean of all pIC50 values, irrespective of modifier (i.e. include ‘=’, ‘<’, ‘>’).INPUT_VALUE_DISPLAY_EQUALITY_MODIFIER
Display the mean of pIC50 values only where there was an equality modifier (i.e. use only ‘=’).
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
¶Generally no change necessary.
src/properties/database/database.filter.properties
¶client_direct.database.queryTimeout=
Data query timeout (in milliseconds). Shouldn’t need to be higher than 200?
src/properties/database/dev.database.<deploy.db_vendor>.properties
¶See also
src/properties/filter.properties
¶log.file.client=
Component log file location on disk, e.g. ‘logs/client.log’
log.level.client=
Component log level, e.g. (trace|debug|info|warn|error|fatal)
.
log.level.general=
Log level of code from other libraries, e.g. (trace|debug|info|warn|error|fatal)
.
business_services.ws.url=
WS URL of site-business
component, e.g. ‘http://localhost:18080/site_business-0.0.2/bws/’
src/properties/spring.properties
¶recaptcha.private.key=
reCAPTCHA private key.
recaptcha.public.key=
reCAPTCHA public key. If this field is left empty it will be assumed that no reCAPTCHA is available!
securement.business.username=
site-business
WSS username.
securement.business.password=
site-business
WSS password.
See also
Database choice and Spring profiles for additional information.
-Dspring.profiles.active=
¶Options are currently client-shared_(embedded|mysql|oracle10g),client-shared_(bespoke|prepopulated)
.
Warning
At build time it is important to include the
client-shared_embedded
spring profile during building because during
integration testing rubbish may be written to the database so it is important
to use the embedded database during the build process.
-Ddeploy.db_vendor=
¶The name of the database vendor, e.g. mysql
, postgres
, used in the
intended deployment (not build) environment. The actual name used
corresponds exactly to the <deploy.db_vendor> element of the file derived from
sample.database.spring.properties
during the installation process.
-Ddeploy.env=
¶The environment name, i.e. dev
.
Example build instructions (illustrating use of embedded during the build process, and mysql in the deploy environment):
cd <ap_predict_online>/client
mvn clean verify -Dspring.profiles.active=client-shared_embedded,client-shared_prepopulated -Ddeploy.db_vendor=mysql -Ddeploy.env=dev
client-direct
¶
client-direct
provides the web interface to the app-manager
component and
uses a number of different web pages, i.e. it’s not an SPA.
The client-direct
interface is intended for running simulations using manually
input values, e.g. pIC50, Hill Coefficients.
- Maven (build)
- Java 7 8 [1] or higher (build, deploy)
- Java Servlet Container, e.g. Apache Tomcat (deploy)
- Database (build, deploy)
- A Maven-
install
edclient-parent
andclient-shared
. See client-parent and client-shared
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
- Either …
- … or …
- [ T ] Copy sample.pom.xml to
pom.xml
- [ S ] Copy src/main/resources/META-INF/spring/ctx/config/sample.appCtx.config.cellModels.site.xml to
src/main/resources/META-INF/spring/ctx/config/appCtx.config.cellModels.site.xml
- [ S ] Copy src/main/resources/META-INF/spring/ctx/config/sample.appCtx.config.site.xml to
src/main/resources/META-INF/spring/ctx/config/appCtx.config.site.xml
- [ T ] Copy src/main/resources/META-INF/spring/ctx/ws/sample.appCtx.ws.security-outgoing.xml to
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
- [ V ] Copy src/main/webapp/resources/js/site/sample.site.js to
src/main/webapp/resources/css/site/site.js
- [ T ] Copy src/properties/database/sample.database.filter.properties to
src/properties/database/database.filter.properties
- [ T ] Copy src/properties/database/sample.database.spring.properties to
src/properties/database/dev.database.embedded.properties
- See Database choice
- [ T ] Copy src/properties/sample.filter.properties to
src/properties/filter.properties
- [ T ] Copy src/properties/sample.spring.properties to
src/properties/spring.properties
If you intend to have a client-direct
-specific “prepopulated user authentication”
user authentication mechanism database then also do
the following :
- [ T ] Copy src/main/resources/META-INF/data/spring-security/local/sample.users.sql to
src/main/resources/META-INF/data/spring-security/local/users.sql
- … finally
- Edit each of the copied files according to your desired configuration.
pom.xml
¶It may necessary in some circumstances, e.g. if there is site-specific
access control code being overlayed into the client-direct
src/main/java
directory, or if using a MySQL driver, to adapt the pom.xml
file for
Maven-building the component.
src/main/resources/META-INF/data/spring-security/local/users.sql
¶Adjust this according to your expected usage requirements.
- If you are using a local
client-direct
-specific “prepopulated user authentication” mechanism for authentication and authorisation, this file is required.
Please also check the following Note.- If you are using a “bespoke user authentication” mechanism, or if “prepopulated user authentication” users are shared between
client
andclient-direct
installations (and hence defined inclient-shared
), then this file is not required.
Note
If there is a new registration request the requesting user’s details
are not automatically written to the user database.
New users must be manually added to this users.sql
file and the
system restarted – for this reason it is better to create a number of
unissued usernames and passwords (commensurate with the total anticipated
usage) and then distribute them to new registrations as they arrive.
src/main/resources/META-INF/spring/ctx/config/appCtx.config.cellModels.site.xml
¶Collection of ion channel models which the user can choose from.
Probably the only modifications likely are :
- To comment out any ion channel model(s) which is/are not relevant to the portal users, and/or,
- To assign a default ion channel model to use by way of assigning a single ion channel model with a
defaultModel
arg with an attributevalue
oftrue
.
Warning
These ion channel models are built into ApPredict
and the detail
MUST be identical to the values which ApPredict
expects, particularly the
identifier
and name
values.
src/main/resources/META-INF/spring/ctx/config/appCtx.config.site.xml
¶c50Units
Preferred units for displaying inhibitory concentration, e.g. IC50 [nM], IC50 [µM], pIC50.
Cut-and-paste your preferred unit to be the top/first <entry />
value.
configuration -> recommendedPlasmaConcMax
Default recommended value for maximum plasma concentration (µM) value.
Users can enter values higher than the recommended maximum if they wish, i.e. this
is not an enforced limit.
configuration -> plasmaConcMin
Minimum plasma concentration (µM).
Users cannot enter values lower than this, i.e. it is an enforced limit.
configuration -> spreads
Define the default variability values for specified ion channels.
See also
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
¶Generally no change necessary.
src/main/webapp/resources/css/site/site.js
¶Generally no change necessary.
src/properties/database/database.filter.properties
¶client.database.queryTimeout=
Data query timeout (in milliseconds). Shouldn’t need to be higher than 200.
src/properties/database/dev.database.<deploy.db_vendor>.properties
¶See also
src/properties/filter.properties
¶app_manager.soap.location=
WS URL of app-manager
component, e.g. ‘http://localhost:18380/app_manager-0.0.4/aws/’
See also
For the following email-related properties take a look at the JavaMail API documentation
log.file.client_direct=
Component log file location on disk, e.g. ‘logs/client-direct.log’.
log.level.client_direct=
Component log level, e.g. (trace|debug|info|warn|error|fatal)
.
log.level.general=
Log level of code from other libraries, e.g. (trace|debug|info|warn|error|fatal)
.
src/properties/spring.properties
¶recaptcha.private.key=
reCAPTCHA private key.
recaptcha.public.key=
reCAPTCHA public key. If this field is left empty it will be assumed that no reCAPTCHA is available!
securement.app.username=
app-manager
WSS username.
securement.app.password=
app-manager
WSS password.
See also
Database choice and Spring profiles for additional information.
-Dspring.profiles.active=
¶Options are currently client-shared_(embedded|mysql|oracle10g),client-shared_(bespoke|prepopulated)
.
Warning
At build time it is important to include the
client-shared_embedded
spring profile during building because during
integration testing rubbish may be written to the database so it is important
to use the embedded database during the build process.
-Ddeploy.db_vendor=
¶The name of the database vendor, e.g. mysql
, postgres
, used in the
intended deployment (not build) environment. The actual name used
corresponds exactly to the <deploy.db_vendor> element of the file derived from
sample.database.spring.properties
during the installation process.
-Ddeploy.env=
¶The environment name, i.e. dev
.
Example build instructions (illustrating use of embedded during the build process, and mysql in the deploy environment):
cd <ap_predict_online>/client-direct
mvn clean verify -Dspring.profiles.active=client-shared_embedded,client-shared_prepopulated -Ddeploy.db_vendor=mysql -Ddeploy.env=dev
client-parent
¶
client-parent
contains the Maven parent pom for determining the shared
build configurations of the client components.
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
No configuration necessary.
Example build instructions :
cd <ap_predict_online>/client-parent
mvn --non-recursive clean install
The optional --non-recursive
instruction prevents the sub-projects from
automatically being built.
This component when built should not be deployed into a servlet container,
instead it is Maven-install
ed in the local Maven repository
and then a subsequent build of client-shared
retrieves the built .pom
files and uses it.
Conventionally the next step, having built and Maven-install
ed
client-parent
, would be to build client-shared
and thereafter client
and/or client-direct
.
This is because all of client-shared
, client
and client-direct
are
dependent on client-parent
and need to be kept in-sync.
dose-response-jni
¶
dose-response-jni
provides the libfittingdoseresponse.so
and
dose-response-fitter.jar
files which are used by
dose-response-manager
.
The original dose-response data fitting C++ source code written by
Kylie Beattie can be found
in Kylie’s repository.
Note
TODO: Test and explain that if there is no dose-response data
then it is not necessary to build/deploy dose-response-jni
,
dose-response-manager
!
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
- [ T ] Copy sample.makefile to
makefile
makefile
¶This is the only file which should need to change.
JAVA_HOME=
Adjust this according to wherever your Java jar
, java
, javac
and
javah
binaries are located (try which javah
), e.g. /usr
.
NOTE: The binaries may not all be located in the same directory, in which case
manually adjust each $(JAVA_HOME)
occurrence.
BOOST_HOME=
Specify a value if your Boost include
directory is not in a default path for
searching, e.g. /home/me/myincludes/boost
.
NOTE: If the include
is in a default path for searching then you can remove
the -I$(BOOST_HOME)
from the CPPFLAGS
line.
JSON_HOME=
Specify a value if your libjson include
and lib
directories are not in
default paths for searching, e.g. /home/me/mylibjson
.
NOTE: If the libjson include
and lib
directories are in default paths
for searching then you can remove the references to $(JSON_HOME)
from the
file.
If the make
command has completed successfully the files
dose-response-fitter.jar
and libfittingdoseresponse.so
should
be in the target
directory. Copy these two files to the lib
directory
of dose-response-manager
.
Conventionally it will be dose-response-manager.
dose-response-manager
¶
dose-response-manager
provides the WS front-end to the dose-response
fitting functionality.
Note
TODO: Test and explain that if there is no dose-response data
then it is not necessary to build/deploy dose-response-jni
,
dose-response-manager
!
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
- [ T ] Copy
dose-response-jni
target/dose-response-fitter.jar
tolib/dose-response-fitter.jar
- [ T ] Copy
dose-response-jni
target/libfittingdoseresponse.so
tolib/libfittingdoseresponse.so
- [ T ] Copy src/properties/sample.env.properties to
src/properties/env.properties
src/properties/env.properties
¶soap.location=
WS URL of this component, e.g. ‘http://localhost:18180/fdr_manager-0.0.1-SNAPSHOT/fws/’
log.file=
Component log file location on disk, e.g. ‘logs/dose-response-manager.log’.
log.level=
Component log level, e.g. (trace|debug|info|warn|error|fatal)
.
-P it
¶The Maven profile to use. At the moment the pom.xml
defines only
the use of the it
profile for integration testing.
Example build instructions :
cd <ap_predict_online>/dose-response-manager
mvn -P it clean verify
Note
Building with the integration testing activated will require that
the “.so” files of libfittingdoseresponse.so
and libjson can be
found in the system library path.
e.g export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<ap_predict_online>/dose-response-manager/lib:/home/me/mylibjson/lib
If the build command has completed successfully the webapp .war
file should be
in the target
directory. Copy this to the servlet container’s relevant file, e.g
for Tomcat, the webapps
directory.
Note
As in the Build situation, the “.so” files of libfittingdoseresponse.so
and libjson will need to be found by the deployed .war
file.
For Tomcat this would mean something like the following before start-up.
#. Copy libfittingdoseresponse.so
to a “lib” directory
#. export JAVA_OPTS="-Djava.library.path=lib"
(i.e. the directory in the previous step).
#. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/mylibjson/lib
java.lang.UnsatisfiedLinkError: no fittingdoseresponse in java.library.path
¶Indicates that libfittingdoseresponse.so
can’t be found in the
java.library.path
(which is generally used by Java to locate native
libraries). Ensure that the appropriate JAVA_OPTS="-Djava.library.path=<directory of libfittingdoseresponse.so>"
value is set before starting.
site-business
¶
site-business
is the final phase of building the business logic after building
business-manager-api
and then business-manager
.
The site-business
component in the ap_predict_online repository represents a
compound database and associated site data processing of a fictional company.
If you wish to build your own site-business
see
here.
See also
Download the project source and go to this component’s root directory (i.e. here) and follow the steps below.
- [ T ] Copy src/properties/sample.env.properties to
src/properties/env.properties
- [ T ] Copy src/properties/database/site/sample.site.database.properties to
src/properties/database/site/site.database.properties
src/properties/env.properties
¶log.file.site_business=
Component log file location on disk, e.g. ‘logs/site-business.log’.
log.level.site_business=
Component log level, e.g. (trace|debug|info|warn|error|fatal)
.
log.level.general=
Log level of code from other libraries, e.g. (trace|debug|info|warn|error|fatal)
.
-Dspring.profiles.active=
¶Options are currently (sitedata_embedded|sitedata_mysql)
.
Warning
At build time it is important to use the -Dspring.profiles.active=sitedata_embedded
arg because during integration testing rubbish may be written to the database
so it is important to use the embedded database during this process.
Example build instructions :
cd <ap_predict_online>/site-business
mvn clean verify -Dspring.profiles.active=sitedata_embedded
If the build command has completed successfully the webapp .war
file should be
in the target
directory. Copy this to the servlet container’s relevant file, e.g
for Tomcat, the webapps
directory.
TODO
Security¶
Security¶
Communication security¶
Note
Communication security is only really essential for the communication
to site-business
as that component should only process requests containing
compound identifiers arriving from the client
component (or any other
suitably secured “client”, e.g. a Perl script) which is expected to have
an appropriate authentication mechanism configured. See
here for further
information on generic client authentication options.
For app-manager
and dose-response-manager
component WS’s, these could
be kept as “open” resources for any potential “client” application, e.g. a
command-line script, as the WS message content will never contain any data
which identifies a compound.
HTTPS¶
All inter-component WS communication uses WSS and so all such communication should be encrypted HTTP, e.g. using X.509 certificates (self-signed or otherwise).
An example configuration of such a setup is available for Tomcat.
WSS¶
All inter-component WS communication uses WSS (description here)
of the User ID/Password
variety. For this to be effective the passwords
used should be :
- Stored in an encrypted format
- Communicated in an encrypted format, i.e. HTTPS.
- In access-controlled files
WS IP access control¶
Access to any component’s WS, e.g. app-manager
, site-business
and
dose-response-manager
, can be restricted to specified IP
origin addresses by, for example, the inclusion of a Remote Address Filter
in Tomcat’s web.xml
configuration file.
WWW/Internet communication¶
Once installed, AP-Portal
’s generic portal components have no need
to access the internet – the portal could operate unhindered within
corporate firewalls. Having said that, ApPredict
on the other hand will
attempt to retrieve variability lookup tables if they cannot be found
locally (see variability configuration).
Having said that, there would be nothing preventing site-specific
component implementations or extensions, e.g. for client
or site-business
,
from communicating through corporate firewalls if requirements necessitate
doing so.
Database security¶
Access to whichever database which AP-Portal
is configured to use should be
appropriately controlled to ensure that the content can not be accessed. This
is particularly the case for the site-business
component which stores compound
identifiers alongside simulation input values and results, but equally for
client-direct
which retains the portal usernames and passwords.
This risk is avoided if there is suitable Filesystem access control.
AP-Portal
dependency security¶
The portal, like any software, does have a number of library dependencies which may contain security vulnerabilities which are presently unknown or may be disclosed in the future.
The portal developers will attempt to keep up-to-date with emerging potential security vulnerabilities, e.g. via https://nvd.nist.gov/download/nvd-rss-analyzed.xml, but even if a vulnerability appears it may not be possible to update the portal software in a reasonable time frame.
Dependencies are listed in the various component Maven site
build reports no
longer available except my building the components.
Useful tools¶
If you wish to determine the most up-to-date security statuses for any of the dependency libraries of components then there is the following which may be useful :
mvn org.sonatype.ossindex.maven:ossindex-maven-plugin:audit -f pom.xml
Filesystem security¶
Filesystem access control¶
Security is improved by ensuring that files which contain sensitive information
or data are appropriately access-controlled at a filesystem level, for example,
use of the chmod 600 <file_name>
command.
Warning
It would be easier to create a specific account for AP-Portal
and restrict access to that account’s directory solely to that account
(rather than, for example, also allowing group or unrestricted access).
JASYPT
file content encryption¶
See Property file {de,en}cryption.
This risk is avoided if there is suitable Filesystem access control.
Log files¶
With log levels of debug
or trace
the log files may contain a large
amount of data, some of which may be sensitive so it is advised that under
normal operation a log level of at least info
is used.
This risk is avoided if there is suitable Filesystem access control.
GUI security¶
The client
and client-direct
component both undertake user input and output
validation and “sanitisation”.
Personal Data¶
Personal Data¶
No aspect of AP-Portal
operation involves the storage or use of PII nor
any form of personal data.
Configuration¶
Configuration¶
Note
If you’re reading this because a part of the portal is not working then please also consider visiting the troubleshooting pages.
Note
Generally changes to ApPredict
are reflected in AP-Portal
, which
is good news for anyone trying to keep up-to-date with the latest
developments, however there is currently no mechanism of version-checking
between, for example, the app-manager
component and the version of
ApPredict
which it invokes. It is possible that the ApPredict
could
undergo many changes without the need to update AP-Portal
, and vice-versa.
Similarly, there are no checks in place prior to deployment which verify
that communication between the AP-Portal
’s generic portal components
is compatible (although generally, any incompatibilities that existed would
soon appear at runtime as system errors!).
Initial component configuration is handled in the component’s installation section [1].
Specific Functionality¶
Variability Configuration¶
See also
Related research paper: Journal of Pharmacological and Toxicological Methods
In order for variability data to appear in simulation results in the UIs of
both the client
and client-direct
components, ApPredict
needs to have made
available to it variability lookup tables - a manifest of which is
available from Gary Mirams’ repository.
Currently (as of Jan. 2018), whenever ApPredict
is run with the
--credible-intervals
(which itself had its functionality extended May 2018
to allow the specification of credible interval percentile values) and
--model <model id>
args supplied, it will look in ApPredict
’s current
working directory [1] for an unpacked version [2] of the relevant lookup
table. If it is not found ApPredict
will attempt to download the packed file
from the aforementioned repository and if such a file exists it will be
downloaded, unpacked locally, and loaded into memory [3].
Footnotes
[1] | This has been achieved by modifying app-manager ’s
prepare.sh file to symlink to manually downloaded unpacked
variability lookup tables in ApPredict ’s current working
directory. Ideally it is the *_BINARY.arch files that should be made available
(as these are created dynamically from the non-BINARY .arch files
when ApPredict loads them), although there may be compatibility issues
using legacy versions derived from historical compilations. |
[2] | Conventionally the variability lookup tables are released in
.tgz format due to their large (e.g. 700Mb+) size. |
[3] | This has the potential to drain the hardware’s available RAM which may impact server performance. |
Footnotes
[1] | AP-Portal development up to now has predominantly focused on the
ability to quickly adapt to frequently changing requirements to
develop this application, with developers being actively involved in
all aspects of AP-Portal installation, support and maintenance. Whilst this approach has been effective in terms of being able to quickly deliver and advance a proof-of-concept application, many aspects of configuration take place at a systems level at install or upgrade time, e.g. XML file content is modified before components are (re)built and (re)deployed. Once configured the AP-Portal provides the users with an environment
which meets their requirements (although there is a growing list of
feature requests), however a number of what would be considered
infrequent “business” configuration changes, e.g. a different
CellML model is to be assigned as the default, or a different units
assigned as the default, would require the modification at a filesystem
level and a component restart. In due course the majority of anticipatable configuration changes will be available via the UI. |
Maintenance¶
Maintenance¶
General¶
Component Start¶
Example start script
#!/bin/bash -e
if [ $# -ne 1 ]; then
echo ""
echo " Usage: start.sh <component>"
echo " e.g. start.sh app-manager"
echo ""
exit 1
fi
component=$1
if [ -d ${component} ] ; then
rm -rf ${component}/{logs,temp,work}/*
rm -f logs/${component}.log*
fi
. `pwd`/${component}.env
`pwd`/bin/catalina.sh start
See also
Environment setting below (for adjusting, for example, CATALINA_OPTS
).
Component Stop¶
Example stop script
#!/bin/bash -e
if [ $# -ne 1 ]; then
echo ""
echo " Usage: stop.sh <component>"
echo " e.g. stop.sh app-manager"
echo ""
exit 1
fi
component=$1
. `pwd`/${component}.env
`pwd`/bin/shutdown.sh
Component Restart¶
See Component Start and Component Stop!
Environment setting¶
Default values for Java memory allocations may be available using, for example,
java -XX:+PrintFlagsFinal -version | grep 'PermSize'
.
In the example scripts above reference is made to a local
environment-setting file. An example of such file, e.g.
app-manager.env
, for Tomcat [1] use follows :
JAVA_HOME=/usr/java/current
CATALINA_HOME=/home/me/apps/tomcat/CATALINA_HOME
CATALINA_BASE=/home/me/apps/tomcat/vhosts/app-manager
# Xmx/Xms = JVM heap (max/initial). Object instance storage. Equal values == "fully committed" - avoids GC as initial expands to max.
# Xss = Thread stack size. If you get a StackOverFlow exception, increase this value!
# -XX:PermSize -XX:MaxPermSize = Class files storage.
#CATALINA_OPTS="-Xms256m -Xmx256m -Xss256k -XX:PermSize=64m -XX:MaxPermSize=64m"
# Set in a 32-bit Win environment. Auto-enabled on 64-bit OSs
# JAVA_OPTS="-server"
JAVA_OPTS="-Dspring.profiles.active=app_manager_mysql"
JASYPT_PWD=<password>
export JAVA_HOME JAVA_OPTS CATALINA_BASE CATALINA_HOME JASYPT_PWD
See also
Footnotes
[1] | In earlier versions of AP-Portal the CATALINA_OPTS option was
trialled to test the mimimum memory required but since the introduction
of PK processing (around late 2017) the memory requirements of most
components increased significantly and so memory requirements may need
to be specified towards the higher ranges for some components (
client for example may require -XX:MaxPermSize:512m ). |
Updating – Remote AP-Portal
/ApPredict
changes¶
These changes reflect changes in the source code of the generic functionality.
See also
General updating concepts¶
The updating process will involve some or all of the steps below and will at least involve the portal’s technical administrator and potentially a scientist responsible for the portal’s scientific settings (e.g. someone who would know information such as the assays and ion channels being processed) :
The steps are :
Reflect any new files in the portal repository source code onto the local system, i.e., create files according to any modified installation instruction documentation file(s).
Reflect any modifications to the portal repository
sample.<file_name>
files onto the local configuration files (which were originally created during installation).
Details of files which may have been modified may be found in the ChangeLog.Reflect any modifications to the portal repository files onto site-specific (including bespoke) code and configurations.
This may be necessary if, for example, the
business-manager-api
orbusiness-manager
code changes, and there is bespoke, site-specific code which references any of the changed objects or settings.If you have more than one installation environment to maintain, e.g. development, test and production, then for each update in the feeder environment please record the modifications made so that accumulated changes can be applied to the consumer environment.
In theory, a scientist would only need to present for the update of a development environment as changes to the test and/or production environment could be derived from recorded decisions made during the update of the development environment.
See here as an example.
Retrieving and analysing changes in portal source code¶
In order to update the generic portal components the standard procedure
is to execute the following git
commands in sequence at the base of the
cloned AP-Portal
directory. A collection of the latest command examples is
stored in the tools section :
git fetch
(Outcome: Does not update the local source code files or directories , only updates git’s internal version control system, but allows us to anticipate what changes will be required locally.)
git diff --name-status HEAD...<git hash>
, or
git diff --name-status HEAD...origin
(Outcome: Lists the source code file changes and the nature of change)
Generally we focus on the (M)odified, (D)eleted or (A)dded of the following file types, but also check the ChangeLog:
sample.<file_name>
.gitignore
<file_name>.xsd
installation/components/<component>/index.rst
A sample command would be
git diff --name-status HEAD...origin | grep -P '(/sample\.|\.gitignore|\.xsd|installation/components/.*?/index\.rst$|/appCtx\.config\.|/pom\.xml|\.sql)'
If any changes have been made to the source code of such files please record their names for closer examination in the next step.
git diff HEAD...<git hash> <file_name>
, or
git diff HEAD...origin <file_name>
(Outcome: Prints a
diff
output of the changes of a specified file if it has been (M)odified since the lastgit merge origin
.)Determine what, if any, local changes will be required after an instruction to “merge” the update (see next step) is executed. See Updating configuration and settings files and Updating web services.
git merge <git hash>
, or
git merge origin
(Outcome: Updates the source code files and directories.)
Updating configuration and settings files¶
During the original installation of each of the components it is very likely
that site-specific configurations were derived from generic
configuration or settings files, e.g. files such as
src/properties/filter.properties
derived from their corresponding
“sample” file src/properties/sample.filter.properties
, or in the case of
the client
portal, Bespoke site-business functionality.
Invariably these instructions were defined in the component’s installation
instruction file.
If the content of the “sample” files has been changed by the update request (e.g. perhaps a new configuration option has been added to a component) then any such changes will need to be implemented in the derived site-specific implementations of those files.
At this stage the best option is to view the output of the git diff
--name-status HEAD...origin
command to check which of the files listed in a
component’s installation instructions documentation file have been modified and
manually apply changes to the local version.
Updating web services¶
If any of the components’ WS XSD files have been modified (usually located
in the component’s src/main/resources/META-INF/schema/
directory) then,
if the change results in a change of contract (as opposed to a change of
documentation) of the component’s WS API, any components with which it
communicates may also need to be updated.
Restarting components¶
Once any changes have been made to configuration and settings files the components need to be rebuilt (see Build instructions in Installation), redeployed and restarted.
app-manager
updating¶
First take a look at the general update instructions.
Based on what has appeared previously in app-manager
’s
installation instructions,
local versions of the following files are likely to require updating if
the corresponding sample.<file_name>
files have changed in the
portal repository.
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-incoming.xml
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
src/properties/database/database.filter.properties
- Files derived from
src/properties/database/sample.database.spring.properties
src/properties/filter.properties
src/properties/spring.properties
pom.xml
Warning
Both client-direct
and/or business-manager
communicate with the
app-manager
WS API.
If app-manager
’s WS XSD file
(app_manager.xsd)
has changed, and the change results in a new WSDL contract, then it will
require client-direct
and/or business-manager
(and hence site-business
)
to be rebuilt.
See also
If you are updating app-manager
then it is possible that you may
also need to update ApPredict
business-manager
updating¶
First take a look at the general update instructions.
Based on what has appeared previously in business-manager
’s
installation instructions,
local versions of the following files are likely to require updating if
the corresponding sample.<file_name>
files have changed in the
portal repository.
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-incoming.xml
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
src/properties/database/database.filter.properties
- Files derived from
src/properties/database/sample.database.spring.properties
src/properties/filter.properties
src/properties/spring.properties
pom.xml
Warning
Both client
and/or app-manager
communicate with the
business-manager
WS API.
If business-manager
’s WS XSD file
(business_manager.xsd)
has changed, and the change results in a new WSDL contract, then it will
require client
and/or app-manager
to be rebuilt.
business-manager-api
updating¶
First take a look at the general update instructions.
Generally any modifications to files in this component will result in possible changes necessary
only in dependent components, i.e. business-manager
or site-business
.
If there has been a change in business-manager-api
then downstream components (e.g.
business-manager
and/or site-business
) will also need updating.
client
updating¶
First take a look at the general update instructions.
Based on what has appeared previously in client
’s
installation instructions,
local versions of the following files are likely to require updating if
the corresponding sample.<file_name>
files have changed in the
portal repository.
src/main/resources/bundle/site.properties
src/main/resources/META-INF/spring/ctx/config/appCtx.config.site.xml
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
src/properties/database/database.filter.properties
- Files derived from
src/properties/database/sample.database.spring.properties
src/properties/filter.properties
src/properties/spring.properties
pom.xml
If you have a client
-specific “prepopulated user authentication”
user authentication mechanism
database then also check the following :
src/main/resources/META-INF/data/spring-security/local/users.sql
client-direct
updating¶
First take a look at the general update instructions.
Based on what has appeared previously in client-direct
’s
installation instructions,
local versions of the following files are likely to require updating if
the corresponding sample.<file_name>
files have changed in the
portal repository.
src/main/resources/META-INF/spring/ctx/config/appCtx.config.cellModels.site.xml
src/main/resources/META-INF/spring/ctx/config/appCtx.config.site.xml
src/main/resources/META-INF/spring/ctx/ws/appCtx.ws.security-outgoing.xml
src/main/webapp/resources/js/site/site.js
src/properties/database/database.filter.properties
- Files derived from
src/properties/database/sample.database.spring.properties
src/properties/filter.properties
src/properties/spring.properties
pom.xml
If you have a client-direct
-specific “prepopulated user authentication”
user authentication mechanism
database then also check the following :
src/main/resources/META-INF/data/spring-security/local/users.sql
client-parent
updating¶
First take a look at the general update instructions.
Generally there shouldn’t need to be any manual changes to this component as part of an update.
dose-response-jni
updating¶
First take a look at the general update instructions.
Based on what has appeared previously in dose-response-jni
’s
installation instructions,
local versions of the following files are likely to require updating if
the corresponding sample.<file_name>
files have changed in the
portal repository.
makefile
If there has been a change then downstream components (e.g. dose-response-manager
) will also
need updating.
dose-response-manager
updating¶
First take a look at the general update instructions.
Based on what has appeared previously in dose-response-manager
’s
installation instructions,
local versions of the following files are likely to require updating if
the corresponding sample.<file_name>
files have changed in the
portal repository.
env.properties
Warning
business-manager
communicates with the dose-response-manager
WS API.
If dose-response-manager
’s WS XSD file
(fdr_manager.xsd)
has changed, and the change results in a new WSDL contract, then it will require
business-manager
(and hence site-business
) to be rebuilt.
site-business
updating¶
Note
These instructions refer to the site-business
of the
generic portal components, and are unlikely to require
updating unless you’re demo’ing the fictional company compounds.
If you’re looking for instructions for a site-specific
site-business
update then please visit the installation information
contained in AP-Portal extensibility.
First take a look at the general update instructions.
Based on what has appeared previously in site-business
’s
installation instructions,
local versions of the following files are likely to require updating if
the corresponding sample.<file_name>
files have changed in the
portal repository.
env.properties
src/properties/database/site/site.database.properties
ApPredict
updating¶
If there’s a new version of ApPredict
then there are a number of issues to
consider which may have a greater impact, such as :
- If we were to update to the latest version of
ApPredict
to allow us to use the new CellML models, has theApPredict
developer also made other, potentially significant, changes which will require a new version ofAP-Portal
to be installed?
- If
ApPredict
has changed considerably there’s most likely a new version ofAP-Portal
(or at leastapp-manager
to install - see update app-manager).- If the
ApPredict
invocation mechanism has changed then perhaps it will be necessary to update the app-manager tools e.g.CATALINA_HOME/ApPredict.sh
- If
ApPredict
has added a new CellML model to the available collection (i.e. hasApPredict
’s--model
range expanded), are there also new variability lookup tables available for download?- Does the new CellML model behave differently to existing CellML models?
If it does (i.e. perhaps it is adversely affects the performance ofAP-Portal
), then please let the portal developers know [1]!
ApPredict
has a new CellML model available …¶
In the scenario that the only change to ApPredict
is a new CellML model
(or models) which behave much like existing models, and new
variability lookup tables are available, please complete the following :
- Install the new
ApPredict
(making sure not to provisionally avoid overwriting/removing the operational version) - see ApPredict installation.- Download any new variability lookup tables and deploy them as per previous lookup table installation - see Variability Configuration.
- Whichever portal (
client
and/orclient-direct
) you are using, CellML model data is contained in thesrc/main/resources/META-INF/spring/ctx/config/appCtx.config.cellModels.site.xml
file :
client
portal
Adjust thesite-business
file as per the extensibility instructions to include the new CellML model details.client-direct
portal
Adjust theclient-direct
file as per the installation instructions to include the new CellML model details.
Footnotes
[1] | Any suggestions for change or queries would be welcomed by the portal developers! |
Updating – Local changes¶
These changes generally reflect changes in user preferences or changes to site-specific configurations, e.g. new database connection settings.
See also
site-business
¶
Changing database connectivity¶
There are two ways to change the database connectivity, both of which can make use of the property file encryption if the data is sensitive :
Temporary change, i.e. the change will be overwritten on a subsequent redeployment unless the permanent change is undertaken.
If
site-business
has been deployed in the servlet container (e.g. thesite_business-<version>.war
file has been expanded in the webapps directory), then modify the content of the filesite_business.properties
, e.g.CATALINA_HOME/site-business/webapps/site_business-<version>/WEB-INF/classes/META-INF/properties/site_business.properties
and restartsite-business
, upon whichsite-business
will attempt to connect to the new database.Permanent change.
For a change to become effective when
site-business
is redeployed, thesite-business
source code file<ap_predict_online>/site-business/src/properties/database/site/site.database.properties
needs to be assigned the desired values, then the source code needs to be rebuilt and redeployed.
Example User Requests¶
See also
Example client
-only Portal User Requests¶
Please include a new assay in the results.¶
If a new assay is to be introduced then the scientists will need to determine a number of aspects prior to making any change in the portal configuration or code, e.g. :
- What is the definitive name of the assay?
- Where in the assay level hierarchy of assays is this new assay to appear?
- Which assay group is the assay to belong to?
- How will the assay data be retrieved?
- Will the data associated with this assay be the same as other, existing assays, or will it differ in, for example, units, representations, processing requirements, individual data status, etc.?
If the assay will be generating results in an identical manner to other assays then there won’t be a need for much additional code to be written.
appCtx.config.assays.site.xml
.
See the extensibility instructions related to assay details.- Create additional code reflecting the technique, e.g. SQL, WS, for reading in the new assay data and, if necessary, additional processing before passing such data over to the
business-manager
(viabusiness-manager-api
structures).
- Create new datarecord implementations if necessary.
See the extensibility instructions related to defining site-specific data record structures derived frombusiness-manager-api
.- If there is a significant change of processing required for this new assay then processing steps such as those demonstrated in the generic site-business may be required, e.g. as in 4 - Define Screening, QSAR, Experimental processing.
Warning
If a new assay is to be included then the simulation database needs to be purged of all existing simulation results because previously used assay identifiers which are persisted in the simulation results will (more than likely) no longer be valid.
The simulation’s failed to run - why?¶
There is a hidden option to right-click whilst over the job flag, i.e.
, after clicking (or re-clicking) the submit button. This will
expand the diagnostics details at the base of the page, which can be removed
either by repeating the right-click or by choosing a different simulation.
If you’ve arrived at this page directly it may be worth briefly taking in some of the general configuration notes.
Similarly, if you’re receiving requests which are likely to require updating
AP-Portal
to the latest public version additional, general notes are
available in the Updating – Remote AP-Portal/ApPredict changes section of this documentation.
Please change the values of ion channel variability.¶
client
The variability values are defined in thesite-business
appCtx.config.assays.site.xml
file as per the extensibility instructions.client-direct
The visible default values of spread variability are defined in theclient-direct
appCtx.config.site.xml
file as per the installation instructions.
Please change the default CellML model.¶
This is set by having only one of the available models assigned a
defaultModel
value of true
in the following :
client
Thesite-business
appCtx.config.cellModels.site.xml
file as per the extensibility instructions.client-direct
Theclient-direct
appCtx.config.cellModels.site.xml
file as per the installation instructions.
Note
See [3] regarding the change deployment technique.
Please change the values of credible interval percentiles.¶
The variability percentile values are defined in the following :
client
Thesite-business
appCtx.config.actionPotential.site.xml
file as per the extensibility instructions.client-direct
Theclient-direct
appCtx.config.site.xml
file as per the installation instructions.
Please modify information displayed by the information icons.¶
Currently the information displayed by is not configurable. [2]
Information icons appear in various places throughout the client
and
client-direct
UIs. Modification of the information they display is
generally not possible as they are designed to enable the provision of an
internationalised AP-Portal
. It is of course possible to directly
change the AP-Portal
code base, rebuild and redeploy, but if tempted to do so
please be careful regarding
version control conflicts).
Having said that, parts of the values they display may be flexible, e.g. the
sample below is taken from a middle.jsp
file in client-direct
.
1 2 3 4 5 6 | <td colspan="4" class="input_division cs_rounded_5">
<spring:message code="general.notes" />
<img src="${info_location}" class="info"
title="<spring:message code="input.notes_max_chars"
arguments="${notes_length}" />" />
</td>
|
In the above we can see the use of the <spring:message code="general.notes" />
which, when the UI is to display the corresponding web page, will read in
and display the general.notes
property value derived from
the src/main/resources/bundle/general[<_locale>].properties
files [1].
What is also visible is the use of the <spring:message code=".." arguments="<args>" />
option which allows dynamic replacement of values which may be derived from,
for example, values defined in configuration settings and so could be a technique
for future (non-i18n!) information display.
Please add the new CellML models the ApPredict
developer has released.¶
Please see ApPredict updating.
Please modify the warning/error messages.¶
As is the case with Please modify information displayed by the information icons.
the warning messages are general not modifiable except by request to the
AP-Portal
developers. Whilst some error messages are internationalised
some are also derived from hard-coded messages in back-end components.
Please update AP-Portal
to incorporate the new development in the public version.¶
There are unfortunately no one-size-fits-all step-by-step guides to doing this
unless it’s known what the modifications to the AP-Portal
have been between the
currently installed version and the latest available public version.
Some general updating notes are available which may provide guidance.
Footnotes
[1] | The “locale” is considered to be the browser’s current preferred display language. |
[2] | Any suggestions for change or queries would be welcomed by the portal developers! |
[3] | (1, 2, 3) Modification of the configuration files should ideally be done prior
to rebuilding and redeploying the relevant component (as opposed to directly
modifying the content of an expanded .war file in the servlet
container and restarting the component). |
[4] | (1, 2) See also Variability Configuration. |
Example IT Dept. Requests¶
See also
If you’ve arrived at this page directly it may be worth briefly taking in some of the general configuration notes.
We need to restart AP-Portal
’s own databases, do we need to shut down the components?¶
The short answer is ‘yes’.
The reason being that of the generic portal components, app-manager
and
business-manager
frequently poll the database to find newly persisted data
(e.g. a new simulation request). In doing so a momentarily disappeared database
may cause some issues (albeit probably not fatal ones) if the portal is running
, even if there are no users using the portal at the time!
Example strategy for updating many hosted environments¶
Preamble¶
The policy adopted in this example strategy is that there are two mechanisms for managing site-specific data, these are :
- Environment-agnostic code, configurations and settings which do not contain sensitive data (e.g. passwords) are placed in a subversion repository accessible to all servers.
The assumption here being that subversion repository is a “public” facility which is not sufficiently secured to guarantee that portal code will be accessible only toAP-Portal
developers/administrators.- Environment-specific code, configurations and settings, and objects containing sensitive data, are placed in the component sub-directories of (the git-managed) ap_portal_online.
When building for a particular environment components which are …
- generic portal components: That component’s subversion-resident objects are overlayed over its corresponding git-managed ap_portal_online sub-directory code just prior to invoking the build instruction in the cloned git directory.
- site-specific: That component’s building takes place in the subversion repository code working directory.
Hardware¶
The example hardware configuration is as follows :
Server Environment server1 development server1 test server2 production
Version control system¶
A subversion repository, accessible to all servers , hosts the site-specific code, configurations and settings which don’t contain sensitive data and are environment-agnostic, i.e. objects created in the development environment which can be deployed without modification during updates to test and production environments.
For example, the structure of the subversion repository would be similar to the following, whereby the <git hash> would be the ap_predict_online commit short hash used at the time of building the update :
svnrepo/client/branches
| +--/tags/development --+
| | | +-/160912_<git hash 1> |
| | | +-/160930_<git hash 2> |
| | | +-/161015_<git hash 3> |
| | | +-/161016_<git hash 4> |
| | | +-/161030_<git hash 5> |
| | +--/production |-- Records of historical tagged updates
| | | +-/160925_<git hash 1> |
| | | +-/161022_<git hash 4> |
| | +--/test |
| | +-/160920_<git hash 1> |
| | +-/161002_<git hash 2> |
| | +-/161020_<git hash 4> --+
| |
| +--/trunk/pom.xml --+
| +--/src/main/java |
| | | +-/com |
| | +-/resources +-- Latest development code
| | +-/webapp |
| +-/test/java |
| +-/com --+
|
+---/site-business/branches --+
+-----/tags +-- Bespoke site-business component
+-----/trunk --+
General¶
Tools¶
Tools¶
HSQL¶
HSQL’s website is here
HyperSQL is a 100% Java database which, in this application, is generally used as an embedded (i.e. you don’t need to set up database usernames and passwords, the db is only in existence for as long as the application is running) database either just during build processes, or for some components (heads-up!), in a deployment environment.
Note
The instructions below are for a version of MySQL which by the time you read this may have security issues!
MySQL¶
MySQL’s website is here
Example install¶
Note
Other databases can be used as AP-Portal
components use
Hibernate, but alternatives haven’t been tested.
- Estimated time to build : 2 minutes.
- Desired structure : Similar (eventually) to the following :
<data_dir>
|
+------/app_manager
+------/business_manager
+------/client_direct
+------/etc/init.d/mysql_apportal
+------/innodb
+------/my.cnf
+------/mysql
+------/var
+-/lib/mysql/mysql.sock (when running)
+-/log/mysql/mysql-bin.
| +--/mysqld-log
| +--/mysqld-log.err
+-/run/mysqld/mysqld.pid (when running)
cd <any empty temporary directory>
- Download MySQL install scripts, retaining directory structure.
- Run
1install.sh <mysql binary location> <database dir> <system_user> <system_group>
e.g.1install.sh /apps/mysql/5.6.27 /data/apportal user_me group_me
Oracle¶
Oracle’s website is here
To emulate Oracle use it is possible to register for and download Oracle XE (Express Edition) which can be package-installed, for example, into a VM and networked to appear as a local database. [1]
If you’re downloading Oracle stuff, you’ll probably also need to download the appropriate JDBC driver and more than likely the SQL Developer application to view table structure and content.
Footnotes
[1] | I used Oracle Database Express Edition 11g Release 2 installed in a
VirtualBox Fedora 20 for testing purposes - although I did need to
increase swap space
and tried alter system set processes=200 scope=spfile when in the
sqlplus system CLI. |
Property file {de,en}cryption¶
Prior to early 2019 the
client
andclient-direct
components were able to use Jasypt encryption but since that time some dependency library updating for security purposes has meant that with Spring v.5 it was no longer possible (or rather, with there being no Jasypt activity since 2014 it was decided not to continue using it).Download and unpack http://www.jasypt.org/download.html (current version is 1.9.2) and run the relevant
bin
directory.bat
or.sh
scripts. (AP-Portal
uses theorg.jasypt.encryption.pbe.StandardPBEStringEncryptor
class, as do the scripts).encrypt.sh input=<property file value> password=<jasypt encrypting pwd>e.g.
./encrypt.sh input=fish password=chips
.Note: You may prefer the above command containing your password not to appear in your shell history, in which case various techniques are available, e.g. check stackoverflow.
The output generated then needs to be placed into the relevant
.properties
file, e.g.Sample
encrypt.sh
output…----ARGUMENTS------------------- input: fish password: chips ----OUTPUT---------------------- MHWlsEFq4rI/Rx7s1H27pg==… is placed into a
spring.properties
:securement.business.password=ENC(MHWlsEFq4rI/Rx7s1H27pg==)
<jasypt encrypting pwd>
needs to be assigned to the environment variableJASYPT_PWD
prior to the component being started, e.g. a component’s start file may look something like:export JASYPT_PWD=chips ./bin/catalina.sh start
Spring¶
Spring profiles¶
Spring profiles
are used as an easy way to have different application configuration options
active in different environments without a need to modify the codebase or
recompile, instead the configuration to be used is determined by the passing of
the spring.profiles.active
Java system property to the application (e.g.
by use of the -Dspring.profiles.active=<profile1>,<profile2>,<etc>
arg when starting the portal from the command-line).
Whilst this means that all anticipated configurations are packaged it does
permit a degree of flexibility so that, for example, a single package can be
used in both the build and deployment environment.
Note
The instructions below are for a version of Tomcat which by the time you read this may have security issues!
Tomcat¶
Tomcat’s website is here
Example install¶
Note
Other servlet containers can be used - there’s nothing Tomcat-specific in the codebase, but alternatives haven’t been tested.
- Estimated time to build : 2 minutes.
- Desired structure : Similar (eventually) to the following, based on the “Advanced Configuration - Multiple Tomcat Instances” section of this document.
<app-base>
|
+----/tomcat
+---/CATALINA_HOME
| +------/app-manager -> ../vhosts/app-manager
| +------/app-manager.env
| +------/bin/catalina.sh
| | +-/startup.sh
| +------/client -> ../vhosts/client
| +------/client.env
| +------/client-direct -> ../vhosts/client-direct
| +------/client-direct.env
| +------/host.pkcs12
| +------/lib/catalina.jar
| | +-/servlet-api.jar
| | +-/tomcat7-websocket.jar
| +------/local_runner.sh
| +------/logs/
| +------/prepare.sh
| +------/procdir/
| +------/README.openssl
| +------/reset_all.sh
| +------/reset.sh
| +------/secure.env
| +------/start_all.sh
| +------/trustedkeystore.jks
|
+---/vhosts
+--/app-manager
| +----/bin/tomcat-juli.jar
| +----/conf
| | +-/Catalina/
| | +-/server.xml
| +----/host.pkcs12 -> ../../CATALINA_HOME/host.pkcs12
| +----/lib/
| +----/trustedkeystore.jks -> ../../CATALINA_HOME/trustedkeystore.jks
| +----/webapps/
|
+--/client
| +--/bin/tomcat-juli.jar
cd <any empty temporary directory>
- Download Tomcat install scripts, retaining directory structure.
- Run
1install.sh <tomcat source code> <tomcat destination> <tomcat version>
e.g.1install.sh /apps/src/apache-tomcat-7.0.56 /apps/tomcat 7.0.56
cd <tomcat destination>/CATALINA_HOME
and follow instructions inREADME.openssl
git¶
git (https://git-scm.com/) is a VCS.
Useful commands¶
Command Operation git rev-parse --short HEAD
Reveals the current commit hash git fetch
Fetch (but don’t merge) remote changes git diff --name-status HEAD...origin | grep -P '(/sample\.|\.gitignore|\.xsd|installation/components/.*?/index\.rst$|/appCtx\.config\.|/pom\.xml|\.sql)'
Reveals remote-modified config files git difftool HEAD...origin -y -x "diff -siby --suppress-common-lines -W 250" <file>
View remote-modified change git checkout FETCH_HEAD -- <file>
checkout
thegit fetch
ed filegit merge origin
Merge git fetch
ed changesgit clean -dnx | cut -c 14- | grep -v '/$'
List of untracked files [1]
Footnotes
[1] | Derived from stackoverflow.com |
subversion¶
subversion (or svn) (https://subversion.apache.org/) is a VCS.
Useful commands¶
Command Operation svn copy http://<svnserver>/svnrepo/client/trunk http://<svnserver>/svnrepo/client/tags/development/<yymmdd>_<git hash> -m "AP-Portal - client : Tag dev. update"
Copies trunk to a tag svn diff --diff-cmd "/usr/bin/diff" --extensions "-yib --suppress-common-lines -W 250" client
Show difference of local copy svn st -u
What would be updated svn propget svn:ignore -R
Ignored files/dirs
FAQ¶
FAQs¶
How do I control user access to the portal?¶
For the client
and client-direct
components access is by default
restricted to most areas, only information such as contact details and “about”
information are unrestricted.
Both components share the ability to use a pre-populated user database (by means of an SQL script, e.g. sample.users.sql as a source of authentication (“prepopulated user authentication”), however if you wish to use a site-specific authentication mechanism (“bespoke user authentication”) then a corresponding bespoke client extension needs to be developed to provide or interact with the desired authentication mechanisms.
For other components, e.g. app-manager
, dose-response-manager
and
site-business
, access control is determined by a number of factors, such as
those listed in communication security.
How do I adjust the …..?¶
See also
The various Maintenance sections for common requests for altering configurable portal aspects.
TroubleShooting¶
Troubleshooting¶
Please see the following for assorted troubleshooting sources of information.
ApPredict
problems¶
ApPredict
invocation by app-manager
fails¶
There could be a number of reasons for this happening, but assuming that the prerequisites are in place, i.e.
- Files
local_runner.sh
,prepare.sh
andApPredict.sh
(see app-manager tools) are working. I.e. they are in the right location, executable, and perform the right actions! - The location specified in
app-manager
’ssrc/spring/properties
file,base.dir
property is valid, i.e. can be written to by the user under which theapp-manager
application is running.
… then it should be working!
See also
If it’s not then the base.dir
location can sometimes contain files
generated by local_runner.sh
which are useful for debugging such as
VRE_INFO.<app manager id>.xml
and VRE_OUTPUT.<app manager id>
.
These files are usually transitory in nature, i.e. they exist only for the
duration of the simulation, and their content is normally persisted on
successful ApPredict
completion.
Warning
If there are failures to run then it may be necessary to manually
delete the content of failed runs from the base.dir
location.
Display problems¶
client
display failing¶
If the display is failing following an update to AP-Portal
then it could be
symptomatic of legacy files being found in the browser’s cache, thus preventing
the latest operations being executed properly. See the following section on
Clearing a browser cache
Clearing a browser cache¶
If the portal has been updated but there appears to be no change to what the user is seeing in their browser then it’s possible that they are seeing the content from the browser’s cache. In this case, then below is some general advice for forcing content to be removed from the browser cache.
IE (based on ver. 11)
Tools
-> Internet Options
-> Browsing History
->
Delete...
-> make sure Temporary Internet files and website files
and Cookies and website data are checked -> Delete
.
Chrome (based on ver. 56.0.2924.87)
Ctrl+Shift+Del
(or click on the Chrome button
which looks like then
More tools
-> Clear browsing data...
) ->
make sure Cached images and files is checked -> Clear browsing data
.
Firefox (based on ver. 38.0.5)
Edit
-> Preferences
-> Advanced
-> For
Cached Web Content click the Clear Now
button.
Java problems¶
This is probably most relevant with regard to Tomcat configuration.
Java has a number of performance and configuration options available which can be determined using sources such as the following
- For command-line Java 7 args.
- Determining the defaults :
java -XX:+PrintFlagsFinal -version
.- For Java 7 Garbage Collection.
- 3rd party Heap Space explanation.
- Stack Overflow application memory usage.
See also
Java memory use / OutOfMemoryError
¶
If this error appears in the process of log file analysis
then it may be necessary to increase the amount of memory available to Java,
perhaps using the JAVA_OPTS
environment var (or CATALINA_OPTS
if
specifically for Tomcat), e.g.
CATALINA_OPTS="-Xms1g -Xmx1g -Xss1g -XX:PermSize=256m -XX:MaxPermSize=256m"
.
Having said that, it has been noted by some commentators that increasing the
available memory may simply obscure temporarily a deeper problem such as memory
leaking.
Log file analysis problems¶
These are a great source of information if the log level allows plenty of
debugging information to appear. Generally the log level and location of the
portal components is determined by the properties files (e.g.
src/properties/env.properties
, src/properties/filter.properties
)
when building components, or in the <component>/webapps/<component_name>/WEB-INF/classes/log4j.xml
files when starting/running the component.
Apart from the component logging there is also the servlet container logging,
e.g. Tomcat’s catalina.out
, which may assist in problem solving.
Glossary¶
Glossary¶
- assay group
- Refers to the grouping of different assays (of differing assay levels) which demonstrate similar characteristics (historically based on their accuracy) into a hierarchically organised representative group [1].
- assay level
- Refers to the hierarchical organisation of individual assays (historically based on their accuracy) and the assignment of a corresponding assay level value [1].
- assay value inheritance
- Refers to
AP-Portal
’s mechanism for enabling IC50 values recorded by one assay to be inherited by another assay (based on their hierarchical ordering) as a substitute for missing measurements. For example, an IonWorks Barracuda® IC50 value for NaV1.5 being substituted into PatchXpress® assay data if no PatchXpress® NaV1.5 measurement existed [1]. - back-end components
- Refers generally to the non- public-interfacing components (for example
business-manager
,app-manager
,dose-response-manager
, etc). - change checker
- Device which detects whether an existing simulation for a compound needs to be re-run for whatever reason, for example, if it detects different input IC50 values between the previous run request and the current run request (due to new assay data availability) [1].
- dose-response data
- A generic term indicating the dose-response data (e.g. the individual dose-response points) associated with a individual data record.
- emulator
- See variability lookup tables.
- experimental data
- Refers to data derived from animal studies such as ventricular wedge assays.
- front-end components
- Refers generally to the public-interfacing components, i.e.
client
andclient-direct
. - generic portal components
- Refers to the open source, publicly available portal components, e.g.
client
,business-manager-api
, etc, which have generic (i.e. non- site-specific) processing. - individual data
- A generic term indicating the result of an assay experiment. There may be
a number of individual data records for a compound, and for some
systems these individual data records are aggregated into a
summary data record. Alternative names which may be encountered
are “full curve” or “percent inhibition” data.
An individual data record may also link to the detailed dose-response data from which it is derived. - input data gathering
- Refers to the process of directly calling
site-business
via a WS invocation in order to determine the pIC50 input data for a compound, i.e. it won’t run a simulation [1]. - internationalised
AP-Portal
’s i18n capabilities.- local
- Very generally refers to objects on the portal’s host filesystem, the portal itself, or perhaps the wider on-site area.
- pIC50 evaluation
- pIC50 evaluation is the technique by which
AP-Portal
determines the pIC50 value (or values) to use (or reject, perhaps due to quality control) in a simulation for each available ion channel and assay combination.
There will be a number of pIC50 evaluators available, each representing a method of obtaining a pIC50 from the available data (e.g. perhaps both IC50 and IC20 values are available), organised hierarchically, with the expectation that the pIC50 value to use (or reject) will be derived from the first evaluator to provide (or reject) a pIC50. [1]. - portal repository
- Refers to the portal’s generic, version-controlled source code repository at https://bitbucket.org/gef_work/ap_predict_online.
- screening data
- Refers to data derived from ion channel screening device assays such as HTS (High Throughput Screening)` machines, e.g. PatchXpress®.
- site-specific
- Refers to bespoke configurations, settings or source code which is specific to the site which is hosting the portal, e.g. a site’s ion channel data processing code, a site’s user authentication code, or a site’s ion channels and assay configurations.
- summary data
- A generic term indicating that individual data has been aggregated into a summary record somehow.
- variability
- “variability” may be used interchangeably with “spread” and
“uncertainty”!
This term refers to ion channel variability, as explained in this research article. - variability lookup tables
- In order to present variability results
ApPredict
requires the availability of large lookup table files.
Since early 2018 these tables have been also been referred to as “Emulators”.
Footnotes
[1] | (1, 2, 3, 4, 5, 6) client system only feature. |