<?xml version="1.0" encoding="UTF-8"?>
<sci:data xmlns:sci="http://www.SciTegic.com/" object="SciTegic.Protocol.1" format="8.0.0">
	<sci:dbitem>
		<sci:component name="S3_SelectivityWindow_model" version="2">
			<sci:arg name="Tempfiles" type="StringType" required="false" visibility="visible" multi="false" uimpl="true">
				<sci:help>&lt;p&gt;A comma delimited list of global properties, each of which will automatically hold the name of a file in the job&apos;s temporary folder, whose name is guaranteed to be unique.&lt;/p&gt;

&lt;p&gt;For each global name, an additional global is created (with the suffix &lt;i&gt;_Filename&lt;/i&gt;) that hold just the leaf file name of the temporary file.&lt;/p&gt;</sci:help>
			</sci:arg>
			<sci:arg name="DeclareGlobal" type="StringType" required="false" visibility="visible" multi="false" uimpl="true">
				<sci:help>&lt;p&gt;Lists a set of properties (without the @) to create on the global property list for this protocol. Such properties can be accessed within the scope of this protocol and its descendent subprotocols.&lt;p/&gt;

&lt;p&gt;It is best practice to declare all global properties before use. Indeed, this practice is enforced in some contexts.&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;&lt;b&gt;When a global property needs to be scoped to the whole protocol:&lt;/b&gt;&lt;/dt&gt;
&lt;dd&gt;List the new global property in the &lt;i&gt;DeclareGlobal&lt;/i&gt; parameter at the protocol level.&lt;/dd&gt;
&lt;br/&gt;
&lt;dt&gt;&lt;b&gt;To limit a global property to a subprotocol scope:&lt;/b&gt;&lt;/dt&gt;
&lt;dd&gt;List the property in the subprotocol&apos;s &lt;i&gt;DeclareLocal&lt;/i&gt; parameter.&lt;/dd&gt;

&lt;p&gt;This example declares 2 global properties:&lt;/p&gt;
&lt;pre&gt;
    g_tokenHash,g_assayIdentifier
&lt;/pre&gt;

&lt;p&gt;
To initialize the declared global value with a scalar value, use the syntax:
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;property-name&lt;/i&gt; := &lt;i&gt;value&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
You can surround text string values with quotes to aid clarity. Values of &lt;code&gt;true&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt; are handled as boolean values.
&lt;/p&gt;
&lt;p&gt;This example declares 3 global properties, and sets initial values on two of them:&lt;/p&gt;
&lt;pre&gt;
    g_counter := 0, g_location, g_geography:=&quot;APAC&quot;
&lt;/pre&gt;</sci:help>
			</sci:arg>
			<sci:arg name="Protocol Form" type="ProtocolType" required="false" visibility="visible" multi="false" uimpl="true">
				<sci:help>&lt;p&gt;The path to a protocol that will render an HTML user interface for this protocol.  This optional parameter is used by Web Port to provide a custom user interface for a protocol.&lt;/p&gt;</sci:help>
			</sci:arg>
			<sci:arg name="Advanced Options" type="GroupType" required="false" visibility="visible" multi="false" expanded="true" legalvalsenforced="false" uimpl="true">
				<sci:member>__PoolID</sci:member>
				<sci:member>Http Cookie Handling</sci:member>
				<sci:member>__NotificationProtocol</sci:member>
			</sci:arg>
			<sci:arg name="__PoolID" type="StringType" required="false" visibility="visible" multi="false" uimpl="true">
				<sci:help>&lt;p&gt;&lt;i&gt;__PoolID&lt;/i&gt; is a case insensitive string that can optionally be set to optimize the speed of execution for quick running protocols.  Multiple protocols with the same value for &lt;i&gt;__PoolID&lt;/i&gt; can share expensive resources such as database connections, Java VMs, memory, etc. reducing the execution time by 1 to 2 seconds per run.  This can give a large speed improvement to protocols that run in a few seconds such as web applications and interactive reports.  Longer running protocols will not see much benefit.  Generally, it is a good idea to use the same &lt;i&gt;__PoolID&lt;/i&gt; for all protocols within a single application such as an interactive report since many of the components, databases, and data structures will be similar.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;__PoolID&lt;/i&gt; can also be specified by the client when the protocol is launched.  If &lt;i&gt;__PoolID&lt;/i&gt; is specified both as a parameter by the client and as a parameter stored within the protocol, the client&apos;s value overrides the stored value.&lt;/p&gt;

&lt;p&gt;To disable pooling entirely for this particular protocol, set &lt;i&gt;__PoolID&lt;/i&gt; to &lt;b&gt;&amp;lt;Disable&amp;gt;&lt;/b&gt;&lt;/p&gt;</sci:help>
			</sci:arg>
			<sci:arg name="Http Cookie Handling" type="StringType" required="false" visibility="visible" multi="false" uimpl="true">
				<sci:help>&lt;p&gt;&lt;i&gt;Http Cookie Handling&lt;/i&gt; provides a mechanism to control the handling of Http cookies within components that access remote resources via Http and Https.  These include the &lt;a href=&quot;javascript:DoLink(&apos;{8A25024A-C274-485B-BB99-8570DCC4C075}&apos;)&quot;&gt;HTTP Connector&lt;/a&gt;, Data readers such as &lt;a href=&quot;javascript:DoLink(&apos;{8056E8AD-33EA-42BB-9099-EAB24C3D08E6}&apos;)&quot;&gt;Text Reader&lt;/a&gt;, &lt;a href=&quot;javascript:DoLink(&apos;{93C4D73F-0B4D-03F4-B0E3-D82C4FE04C6F}&apos;)&quot;&gt;XML Reader (Generic)&lt;/a&gt;, etc., and custom Java, Perl, and .Net components that use the available APIs for accessing remote servers.  By default, New Protocols will have this setting enabled and set to &quot;Protocol Scope&quot;.  This means that Http cookies obtained from a remote server within any component in the protocol or any of its subprotocols will be parsed and appropriately sent back on subsequent requests from the same component or any other component.   The handling of the cookies is based on the IETF standard as specified in &lt;a href=&quot;javascript:DoLink(&apos;http://tools.ietf.org/html/rfc6265&apos;)&quot;&gt;http://tools.ietf.org/html/rfc6265&lt;/a&gt;.  Setting the parameter to Disabled will prevent components from parsing and returning cookies to the remote servers.&lt;/p&gt;

&lt;p&gt;Persistence of cookies is not supported, so scoping of Http cookies is entirely within the context of a single protocol execution.&lt;/p&gt;

&lt;p&gt;Older protocols that do not have the &lt;i&gt;Http Cookie Handling&lt;/i&gt; parameter will behave as though it had been set to &quot;Disabled&quot;.  To enable cookie handling in these protocols, copy this parameter from a New Protocol to the older protocol and set the parameter as desired.&lt;/p&gt;</sci:help>
				<sci:legalval selected="true">Protocol Scoped</sci:legalval>
				<sci:legalval>Disabled</sci:legalval>
			</sci:arg>
			<sci:arg name="__NotificationProtocol" type="StringType" required="false" visibility="visible" multi="false" uimpl="true">
				<sci:help>&lt;p&gt;&lt;i&gt;__NotificationProtocol&lt;/i&gt; specifies the name or component ID (guid) of a protocol stored in the server&apos;s protocol database that will be executed when the current job completes. If your administrator has enabled notification protocols and depending on his or her preference, the notify protocol will either run as the anonymous user or as an admin specified user. The notification protocol receives several parameters that contain information about the original job:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;Notify_JobID&lt;/i&gt;: The job id of the execution
&lt;li&gt;&lt;i&gt;Notify_JobStatus&lt;/i&gt;: 
A description of the result of the job execution
&lt;li&gt;&lt;i&gt;Notify_JobStatusCode&lt;/i&gt;: The 
status code that for the result of the job execution.
	&lt;ul style=&quot;list-style-type:circle&quot;&gt;
	
&lt;li&gt;&lt;i&gt;5&lt;/i&gt;: Job was stopped by the client or administrator.
	&lt;li&gt;&lt;i&gt;6&lt;/i&gt;: 
Job completed normally with success.
	&lt;li&gt;&lt;i&gt;7&lt;/i&gt;: Job completed with an error.
	&lt;li&gt;&lt;i&gt;8&lt;/i&gt;: 
The process ID associated with the running job crashed or otherwise disappeared.
	&lt;li&gt;&lt;i&gt;9&lt;/i&gt;: 
Job failed to start.
	&lt;/ul&gt;
&lt;li&gt;&lt;i&gt;Notify_ProtocolName&lt;/i&gt;: The name of the protocol
&lt;li&gt;&lt;i&gt;Notify_ProtocolPath&lt;/i&gt;: 
The path of the protocol in the DB.  This field can be blank for protocols that were launched without 
saving to the database.
&lt;li&gt;&lt;i&gt;Notify_ProtocolLogName&lt;/i&gt;: The log name of the protocol.  
Is usually the same as ProtocolName, however this can be set by the client to a different name than the 
protocol.
&lt;li&gt;&lt;i&gt;Notify_RunHost&lt;/i&gt;: The name of the node where the protocol executed.
&lt;li&gt;&lt;i&gt;Notify_Username&lt;/i&gt;: 
The user that ran the job
&lt;/ul&gt;</sci:help>
			</sci:arg>
			<sci:arg name="Run On Grid" type="BoolType" required="false" visibility="visible" multi="false" uimpl="true">
				<sci:help>The Run On Grid parameter tells the server to run the protocol on the grid engine if the Pipeline Pilot server is configured to run with grid integration.</sci:help>
				<sci:member>Queue Name</sci:member>
				<sci:member>Grid Options</sci:member>
				<sci:legalval>True</sci:legalval>
				<sci:legalval selected="true">False</sci:legalval>
			</sci:arg>
			<sci:arg name="Queue Name" type="StringType" required="false" visibility="visible" multi="false" legalvalsenforced="false" uimpl="true">
				<sci:help>The Queue Name allows you to specify the name of the queue on the grid engine to submit the job to. Leave blank to specify the default queue.</sci:help>
				<sci:enabledscript>parameter(&apos;Run On Grid&apos;);</sci:enabledscript>
			</sci:arg>
			<sci:arg name="Grid Options" type="StringType" required="false" visibility="visible" multi="true" legalvalsenforced="false" uimpl="true">
				<sci:help>&lt;p&gt;This is an array of command line options to send to the Grid engine submit command.&lt;/p&gt;
&lt;p&gt;If you just include one line, whatever you enter will be sent &quot;as is&quot; to the submission command.&lt;/p&gt;
&lt;/br&gt;
&lt;b&gt;Example - Just sending options directly to command line - PBS&lt;/b&gt;
&lt;p&gt;-l procs=16 -l walltime=08:00:00 -A PROJECTID&lt;/p&gt;
&lt;/br&gt;
&lt;p&gt;There are a number of parameters that Pipeline Pilot will translate to the correct command line options for whichever supported Grid Engine you are using.&lt;/p&gt;
&lt;/br&gt;
&lt;b&gt;Example - Supported parameters&lt;/b&gt;
&lt;p&gt;Account=&amp;lt;Project/Account name&amp;gt;&lt;/p&gt;
&lt;p&gt;Maximum Execution Time=&amp;lt;DD:MM:SS&amp;gt; - LSF ignores seconds&lt;/p&gt;
&lt;p&gt;Number of Cores=&amp;lt;16&amp;gt;&lt;/p&gt;
&lt;p&gt;Parallel Environment=&amp;lt;The Parallel Environment to use&amp;gt; - Only needed for SGE&lt;/p&gt;
&lt;p&gt;Other=&amp;lt;Additional Parameters sent directly to submit command line&amp;gt;&lt;/p&gt;</sci:help>
				<sci:enabledscript>parameter(&apos;Run On Grid&apos;);</sci:enabledscript>
			</sci:arg>
			<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
				<sci:help>Component Attributes</sci:help>
				<sci:legalval>ComponentTakesInput</sci:legalval>
				<sci:legalval>ComponentReturnsPass</sci:legalval>
				<sci:legalval>ComponentReturnsFail</sci:legalval>
				<sci:legalval>ComponentRunsLocal</sci:legalval>
			</sci:arg>
			<sci:arg name="Reporting" type="GroupType" required="false" visibility="visible" multi="false" expanded="true" uimpl="true">
				<sci:help>This group contains parameters specific to protocols containing Reporting components.</sci:help>
				<sci:member>Reporting Stylesheet</sci:member>
			</sci:arg>
			<sci:arg name="Reporting Stylesheet" type="StylesheetType" required="false" visibility="visible" multi="false" expanded="true" uimpl="true">
				<sci:help>Specifies the name of a Stylesheet to be used by this protocol if any of the Reporting components have a Style selected in the &lt;i&gt;Format&lt;/i&gt; and &lt;i&gt;Position&lt;/i&gt; parameters.</sci:help>
				<sci:value>{25A23C6A-4EF0-45F2-8495-3E88896C6262}</sci:value>
			</sci:arg>
			<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
				<sci:legalval selected="true">Halt</sci:legalval>
				<sci:legalval>Fail</sci:legalval>
				<sci:legalval>Pass</sci:legalval>
			</sci:arg>
			<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
				<sci:legalval selected="true">Halt</sci:legalval>
				<sci:legalval>Fail</sci:legalval>
				<sci:legalval>Pass</sci:legalval>
			</sci:arg>
			<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false"/>
			<sci:arg name="WebExports" type="StringType" required="false" visibility="nevershow" multi="false" uimpl="true">
				<sci:help>&lt;p&gt;A comma delimited list of global properties which will be automatically 
exported if this protocol is published as a web service.&lt;/p&gt;

&lt;p&gt;Each global property in the list is created with an empty value at the start of the protocol run.&lt;/p&gt;</sci:help>
			</sci:arg>
			<sci:arg name="Keep Alive" type="BoolType" required="false" visibility="nevershow" multi="false" uimpl="true">
				<sci:help>&lt;p&gt;Specifies if the process where this protocol is run should stay around for later use.&lt;/p&gt;</sci:help>
				<sci:legalval selected="true">True</sci:legalval>
				<sci:legalval>False</sci:legalval>
			</sci:arg>
			<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:help>The user who registered this component.</sci:help>
				<sci:value>lindsey</sci:value>
			</sci:arg>
			<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:help>The date this component was registered.</sci:help>
				<sci:value>Mon Mar 02 17:17:59 2020</sci:value>
			</sci:arg>
			<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:help>The server version when this component was registered</sci:help>
				<sci:value>18.1.100.11</sci:value>
			</sci:arg>
			<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:value>S2_dSelectivity_model</sci:value>
			</sci:arg>
			<sci:arg name="ProtocolAutoLayout" type="BoolType" required="false" visibility="nevershow" multi="false">
				<sci:help>Protocol AutoLayout</sci:help>
				<sci:value>1</sci:value>
			</sci:arg>
			<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
				<sci:value>PROTOCOLNODE</sci:value>
			</sci:arg>
			<sci:arg name="ComponentRevision" type="LongType" required="true" visibility="nevershow" multi="false">
				<sci:help>Component Revision</sci:help>
				<sci:value>790</sci:value>
			</sci:arg>
			<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:value>{5F5046A3-FCEC-9740-8040-FE72D80049BF}</sci:value>
			</sci:arg>
			<sci:arg name="ByReference" type="BoolType" required="false" visibility="nevershow" multi="false">
				<sci:help>By Ref</sci:help>
				<sci:value>0</sci:value>
			</sci:arg>
			<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
				<sci:value>100</sci:value>
				<sci:value>S3_SelectivityWindow_model</sci:value>
				<sci:value/>
				<sci:value>None</sci:value>
				<sci:value/>
				<sci:value>None</sci:value>
				<sci:value/>
				<sci:value>None</sci:value>
				<sci:value/>
			</sci:arg>
			<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false"/>
			<sci:arg name="ProtocolScale2" type="LongType" required="false" visibility="nevershow" multi="false">
				<sci:help>Protocol Scale</sci:help>
				<sci:value>80</sci:value>
			</sci:arg>
			<sci:arg name="Protocol Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:help>Protocol Sticky Notes</sci:help>
			</sci:arg>
			<sci:arg name="Protocol Options" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:help>Protocol Options</sci:help>
				<sci:legalval>Owner Access Only</sci:legalval>
			</sci:arg>
			<sci:arg name="ResultFiles Options" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:value>Include JobDir Files</sci:value>
			</sci:arg>
			<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
				<sci:value>0</sci:value>
			</sci:arg>
			<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
				<sci:help>Local Component Identifier</sci:help>
				<sci:value>-1</sci:value>
			</sci:arg>
			<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:value>50 -50</sci:value>
			</sci:arg>
			<sci:arg name="OriginalPackage" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:help>OriginalPackage</sci:help>
				<sci:value>scitegic/coreutils</sci:value>
			</sci:arg>
			<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
				<sci:help>The original path within the database of this component.</sci:help>
				<sci:value>lindsey\AA1R_AA2AR_selectivity\manuscript\S3_SelectivityWindow_model</sci:value>
			</sci:arg>
		</sci:component>
		<sci:protocol>
			<sci:data object="SciTegic.DelimitedReader.1">
				<sci:component name="Delimited Text Reader" version="2">
					<sci:arg name="Source" type="URLType" required="true" visibility="visible" multi="false" expanded="true" legalvalsenforced="false">
						<sci:help>&lt;p&gt;
The location from which to read the data. Can be a file, a network resource, a global property, or a data record property.
&lt;/p&gt; 
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;For a file, enter a path.&lt;/li&gt;
&lt;li&gt;For a network resource, enter a network URL in the form &lt;b&gt;protocol://server:port/...&lt;/b&gt;. (If port is omitted, a default is used.) Protocols supported are:
	&lt;ul&gt;
	&lt;li&gt;http, https&lt;/li&gt;
	&lt;li&gt;ftp&lt;/li&gt;
	&lt;li&gt;hdfs (Hadoop Distributed File System)&lt;/li&gt;
	&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;For a global property, enter &quot;global://property-name&quot;, or select &quot;Global Property...&quot; from the &quot;Initialize Using&quot; right-click menu.&lt;/li&gt;
&lt;li&gt;For a data record property, enter &quot;property://property-name&quot;, or add an input port and select &quot;Data Property...&quot; from the &quot;Initialize Using&quot; right-click menu.&lt;/li&gt;
&lt;li&gt;To read multiple files, enter a comma-separated list of any of the above.&lt;/i&gt;
&lt;/ul&gt;</sci:help>
						<sci:member>Maximum</sci:member>
						<sci:member>Keep Properties</sci:member>
						<sci:member>UTF-8 Auto Detect</sci:member>
						<sci:member>SourceTag</sci:member>
						<sci:member>HasColumnNames</sci:member>
						<sci:member>Column Name Lines</sci:member>
						<sci:member>Authentication Options</sci:member>
					</sci:arg>
					<sci:arg name="Authentication Options" type="GroupType" required="false" visibility="hidden" multi="false" legalvalsenforced="false" uimpl="false">
						<sci:help>For HTTP, HTTPS, and HDFS URLs, you may optionally specify authentication information for the URL in the following parameters</sci:help>
						<sci:member>Username</sci:member>
						<sci:member>Password</sci:member>
						<sci:member>Authentication Method</sci:member>
						<sci:member>KDC Server</sci:member>
						<sci:member>KDC Realm</sci:member>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, specify an HTTP or HDFS URL for Source&apos;);
Parameter(&apos;Source&apos;) rlike &apos;^(https?|hdfs):&apos;;</sci:enabledscript>
					</sci:arg>
					<sci:arg name="Authentication Method" type="StringType" required="false" visibility="hidden" multi="false" uimpl="false">
						<sci:help>Determines which method to use during authentication with an HTTP, HTTPS, or HDFS URL.

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Use Username and Password Parameters&lt;/b&gt;: Use the values provided by the parameter group&apos;s &lt;i&gt;Username&lt;/i&gt; and &lt;i&gt;Password&lt;/i&gt; parameters.
&lt;li&gt;&lt;b&gt;Use Pipeline Pilot Credentials&lt;/b&gt;: Use the username and password that were provided when the user logged into Pipeline Pilot if available.  NOTE: if the &lt;i&gt;Username&lt;/i&gt; parameter is provided, its value will override the user&apos;s logged in username.
&lt;/ul&gt;</sci:help>
						<sci:legalval selected="true">Use Username and Password Parameters</sci:legalval>
						<sci:legalval>Use Pipeline Pilot Credentials</sci:legalval>
					</sci:arg>
					<sci:arg name="Username" type="UserNameType" required="false" visibility="hidden" multi="false" legalvalsenforced="false" uimpl="false">
						<sci:help>&lt;p&gt;
The username used to connect to the supplied URL.
&lt;/p&gt;
&lt;p&gt;
If the Authentication Method is set to &apos;Use Username and Password Parameters&apos;, then this parameter
must be filled in to log into the remote server.
&lt;/p&gt;
&lt;p&gt; 
If the Authentication Method is set to &apos;Use Pipeline Pilot Credentials&apos;, then this parameter can be left empty
and the logged in username is used. As an override option, if the username is filled in, this
username will be used along with the user&apos;s Pipeline Pilot password.
&lt;/p&gt;
</sci:help>
					</sci:arg>
					<sci:arg name="Password" type="xpass" encrypt="bf_1" required="false" visibility="hidden" multi="false" legalvalsenforced="false" uimpl="false">
						<sci:help>The password used to authenticate to the URL.  This parameter is disabled if Authentication Method is not set to &apos;Use Username and Password Parameters&apos;.
</sci:help>
						<sci:enabledscript>SetDisabledDetails(&quot;To enable, set Authentication Method to &apos;Use Username and Password Parameters&apos;&quot;);
Parameter(&apos;Authentication Method&apos;) eq &apos;Use Username and Password Parameters&apos;;</sci:enabledscript>
					</sci:arg>
					<sci:arg name="KDC Server" type="StringType" required="false" visibility="hidden" multi="false" uimpl="false">
						<sci:help>For authentication to HDFS servers, KDC Server and Realm are also required</sci:help>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, specify an HDFS URL for Source&apos;);
Parameter(&apos;Source&apos;) rlike &apos;^hdfs:&apos;;</sci:enabledscript>
					</sci:arg>
					<sci:arg name="KDC Realm" type="StringType" required="false" visibility="hidden" multi="false" uimpl="false">
						<sci:help>For authentication to HDFS servers, KDC Server and Realm are also required</sci:help>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, specify an HDFS URL for Source&apos;);
Parameter(&apos;Source&apos;) rlike &apos;^hdfs:&apos;;</sci:enabledscript>
					</sci:arg>
					<sci:arg name="Maximum" type="LongType" required="false" visibility="visible" multi="false">
						<sci:help>The maximum number of data records to read. If empty, all records are read.</sci:help>
					</sci:arg>
					<sci:arg name="SourceTag" type="StringType" required="true" visibility="visible" multi="false">
						<sci:help>Specifies a tag format for identifying the source of data records. Causes a property named &lt;b&gt;SourceTag&lt;/b&gt; to be created to hold the value. Options and their associated tag values are:
&lt;ul&gt;
&lt;li&gt;None: No &lt;b&gt;SourceTag&lt;/b&gt; property is created and any existing &lt;b&gt;SourceTag&lt;/b&gt; properties are removed.
&lt;li&gt;Filename: The name of the file excluding its extension
&lt;li&gt;FilenameAndExtension: The name of the file including its file extension
&lt;li&gt;FullFilename: The name of the file, including its extension and directory path
&lt;li&gt;ZipFilename: When reading a compressed zip file, the filename within the compressed archive
&lt;li&gt;Number: When multiple files are read, a number (1, 2, 3...) corresponding to the order of the files in &lt;i&gt;Source&lt;/i&gt;
&lt;li&gt;Letter: When multiple files are read , a letter (A, B, C...) corresponding to the order of the files in &lt;i&gt;Source&lt;/i&gt;
&lt;li&gt;KeepCurrent: Keeps the current value of &lt;b&gt;SourceTag&lt;/b&gt; if present
&lt;/ul&gt;</sci:help>
						<sci:legalval selected="true">None</sci:legalval>
						<sci:legalval>Filename</sci:legalval>
						<sci:legalval>FilenameAndExtension</sci:legalval>
						<sci:legalval>FullFilename</sci:legalval>
						<sci:legalval>ZipFilename</sci:legalval>
						<sci:legalval>Number</sci:legalval>
						<sci:legalval>Letter</sci:legalval>
						<sci:legalval>KeepCurrent</sci:legalval>
					</sci:arg>
					<sci:arg name="Keep Properties" type="PropertyPreviewType" required="false" visibility="visible" multi="false" legalvalsenforced="false">
						<sci:help>Specifies properties from &lt;i&gt;Source&lt;/i&gt; to retain for each output data record. If not specified, all properties are retained. A value of &quot;-&quot; (minus sign) specifies that no properties are retained.</sci:help>
					</sci:arg>
					<sci:arg name="UTF-8 Auto Detect" type="BoolType" required="false" visibility="visible" multi="false" legalvalsenforced="false">
						<sci:help>Specifies whether to attempt to infer the use of UTF-8 encoding in &lt;i&gt;Source&lt;/i&gt; files when a byte order mark (BOM) is absent from them.
&lt;p&gt;
&lt;b&gt;Note:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;UTF-8 is a type of character encoding which represents international characters with multiple bytes, while basic Latin characters remain as a single byte.  If a file begins with a BOM, then the encoding can be inferred with confidence. If not, an indirect approach is necessary. This approach is not 100% reliable.  In some cases, valid text stored in different character encodings can appear to be valid UTF-8.  In these cases, the automatic detection will result in garbled text.  When this occurs, consider using the &lt;a href=&quot;javascript:DoLink(&apos;{B0B1B56C-3DF6-444C-BB78-B43211188F63}&apos;)&quot;&gt;Binary Reader&lt;/a&gt; to read the raw bytes from the file, then convert the data using the Pilotscript function &lt;b&gt;ConvertBytesToString&lt;/b&gt;, which allows you to specify the encoding.
&lt;/ul&gt;

</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="HasColumnNames" type="BoolType" required="true" visibility="visible" multi="false" legalvalsenforced="false">
						<sci:help>If True, property names are taken from the first line of data in &lt;i&gt;Source&lt;/i&gt; files. If False, the first line is assumed to contain data, and properties are given names &lt;b&gt;Column1&lt;/b&gt;, &lt;b&gt;Column2&lt;/b&gt;, etc.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="Column Name Lines" type="StringType" required="false" visibility="visible" multi="false">
						<sci:help>If the column name is part of the file, you can specify which line (or lines) are used to construct the property name. So &quot;4&quot; would declare the fourth line to contain the column names, and &quot;4-5&quot; means the values from both lines 4 and 5 will be used to construct the column names.

If not provided, the first non-comment line becomes the column name line.

Any other lines less than the largest column name line are considered comment lines and are ignored.</sci:help>
						<sci:enabledscript>parameter(&apos;HasColumnNames&apos;)</sci:enabledscript>
					</sci:arg>
					<sci:arg name="Delimiter" type="StringType" required="true" visibility="visible" multi="false">
						<sci:help>Specifies the character that separates fields. Options include:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;FigureOut:&lt;/b&gt; Determines the type automatically (looks for, in order: tab, comma, space, colon, semicolon).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Tab:&lt;/b&gt; For tab-delimited fields.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Space:&lt;/b&gt; For space-delimited fields.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Comma:&lt;/b&gt; For comma-delimited fields.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Colon:&lt;/b&gt; For colon-delimited fields.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Semicolon:&lt;/b&gt; For semicolon-delimited fields.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;$:&lt;/b&gt; For fields delimited bty the &quot;$&quot; character.&lt;/li&gt;
&lt;/ul&gt;
</sci:help>
						<sci:member>MultipleValueDelimiter</sci:member>
						<sci:member>ParseNDimensionalArrayStrings</sci:member>
						<sci:legalval selected="true">FigureOut</sci:legalval>
						<sci:legalval>Tab</sci:legalval>
						<sci:legalval>Space</sci:legalval>
						<sci:legalval>Comma</sci:legalval>
						<sci:legalval>Colon</sci:legalval>
						<sci:legalval>Semicolon</sci:legalval>
						<sci:legalval>$</sci:legalval>
					</sci:arg>
					<sci:arg name="MultipleValueDelimiter" type="StringType" required="true" visibility="visible" multi="false">
						<sci:help>The delimiter to use between multiple values contained in a single property. If the multiple value delimiter exists in any of the input strings in any property, they are separated into an array of values. If &quot;None&quot;, 
values are never separated into multiple values.</sci:help>
						<sci:legalval selected="true">None</sci:legalval>
						<sci:legalval>Semicolon</sci:legalval>
						<sci:legalval>Colon</sci:legalval>
						<sci:legalval>Comma</sci:legalval>
						<sci:legalval>Linefeed</sci:legalval>
					</sci:arg>
					<sci:arg name="ParseNDimensionalArrayStrings" type="BoolType" required="false" visibility="visible" multi="false">
						<sci:help>Toggles whether to parse delimited N-Dimensional Array strings into N-Dimensional Array values.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="Additional Options" type="GroupType" required="false" visibility="visible" multi="false">
						<sci:help>Contains less commonly used parameters</sci:help>
						<sci:member>UndefinedString</sci:member>
						<sci:member>AllLines</sci:member>
						<sci:member>TrimWhitespace</sci:member>
						<sci:member>CheckSyntax</sci:member>
						<sci:member>CommentLines</sci:member>
						<sci:member>AddEmptyProperties</sci:member>
					</sci:arg>
					<sci:arg name="CommentLines" type="StringType" required="false" visibility="visible" multi="false">
						<sci:help>A comma-separated list of line numbers and
line ranges to specify which lines should be 
ignored by the parser (column headers are read from the line that comes next).</sci:help>
					</sci:arg>
					<sci:arg name="UndefinedString" type="StringType" required="false" visibility="visible" multi="false">
						<sci:help>Character or string to represent an undefined string read in the file. To make an empty string to be treated as an undefined value, set the parameter value to &quot;EmptyString&quot;.</sci:help>
					</sci:arg>
					<sci:arg name="AllLines" type="BoolType" required="true" visibility="visible" multi="false">
						<sci:help>If True, all lines of the text file become part of a single data record. The values for a column from each row become multiple [array] values for the property (column).</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="TrimWhitespace" type="BoolType" required="true" visibility="visible" multi="false">
						<sci:help>Trims whitespace from the left and right ends of each value</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="CheckSyntax" type="BoolType" required="true" visibility="visible" multi="false">
						<sci:help>Whether to perform a quick syntax check at the beginning of the file when it is opened, and if a problem is found, throw an error.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="AddEmptyProperties" type="BoolType" required="true" visibility="visible" multi="false">
						<sci:help>If True, then if a row does not have as many values as the number of columns, the missing properties are added to the data record as empty properties</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="Join Behavior" type="StringType" required="false" visibility="hidden" multi="false" uimpl="false">
						<sci:help>&lt;p&gt;How to merge the created data record onto the incoming data record. Options are:&lt;/p&gt;
 
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;OverwriteOrCreate&lt;/i&gt;: Copies all properties from the joining data onto the base data, overwriting the values of any properties that already exist.
&lt;li&gt;&lt;i&gt;OverwriteExisting&lt;/i&gt;: Copies only those properties from the joining data to the base data that already exist on the base.
&lt;li&gt;&lt;i&gt;CreateIfNew&lt;/i&gt;: Copies only those properties from the joining data to the base data that do not already exist on the base data.
&lt;li&gt;&lt;i&gt;AppendOrCreate&lt;/i&gt;: The value of a joining property that already exists in the base data is appended  (as an array) to the value in the base property.  The other joining properties that are not already present in the base data are copied there.
&lt;li&gt;&lt;i&gt;AppendExisting&lt;/i&gt;: The value of a joining property that already exists in the base data is appended  (as an array) to the value in the base property.  No other properties are copied. 
&lt;li&gt;&lt;i&gt;Replace&lt;/i&gt;: The input data record is replaced by the created data record. &lt;/ul&gt;

</sci:help>
						<sci:legalval>OverwriteOrCreate</sci:legalval>
						<sci:legalval>OverwriteExisting</sci:legalval>
						<sci:legalval>CreateIfNew</sci:legalval>
						<sci:legalval>AppendOrCreate</sci:legalval>
						<sci:legalval>AppendExisting</sci:legalval>
						<sci:legalval selected="true">Replace</sci:legalval>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval>ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval>ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/generic</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Thu Sep 07 15:31:15 2017</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>training set</sci:value>
					</sci:arg>
					<sci:arg name="ComponentAutoDisplayName" type="ExpressionType" required="false" visibility="nevershow" multi="false">
						<sci:help>Automatically update the component display name when the &quot;Source&quot; property is changed. This feature is turned off after the user manually changes the display name of the component in Protocol workspace.</sci:help>
						<sci:value>
#displayNames := Parameter(&apos;Source&apos;, 2);
if (#displayNames ne &apos;&apos;) then
  Expand(&apos;,&apos;, #displayNames);
end if;
#displayName := Trim(#displayNames[1]);
#dots := &apos;&apos;;
if (NumValues(#displayNames) &gt; 1) then
	#dots := &apos;...&apos;;
end if;
if(StrLength(#displayName) &gt; 0) then	
	/* Find the last slash or backslash, extract the end */
	#name := #displayName;
	#ls1 := FindLastSubstring(#name, &apos;/&apos;);
	#ls2 := FindLastSubstring(#name, &apos;\&apos;);
	if (#ls1 &gt; #ls2) then
		#name := Substring(#name, #ls1+1);
	elsif (#ls2 &gt; #ls1) then
		#name := Substring(#name, #ls2+1);
	end if;

	if (#name eq &apos;&apos;) then
		&apos;&apos;;
	elsif (Substring(#displayName, 1, 9) eq &apos;global://&apos;) then
		&apos;Read from @&apos; . #name . #dots;
	elsif (Substring(#displayName, 1, 11) eq &apos;property://&apos;) then
		&apos;Read from property &apos; . #name . #dots;
	else
		&apos;Read &apos; . #name . #dots;
	end if;
else
	&apos;&apos;;
end if;
			</sci:value>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The component that this component is based upon.</sci:help>
						<sci:value>Delimited Reader</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:value>DOCUMENTNODE</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>{7D2AF7C7-A077-4201-B10B-8E8283A5EADD}</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>90 -95</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
						<sci:value>100</sci:value>
						<sci:value>Reads data from text files containing one record per line with data separated by delimiters</sci:value>
						<sci:value>&lt;p&gt;The file or files are specified by &lt;i&gt;Source&lt;/i&gt;. The file(s) should contain textual data formatted with a single record per line. Individual property values on each line should be separated by a delimiter character (such as, space, comma, tab), as specified by &lt;i&gt;Delimiter&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;If &lt;i&gt;HasColumnNames&lt;/i&gt; is True, the values on the first line of the file are treated as the property names. Otherwise, &lt;b&gt;Column1&lt;/b&gt;, &lt;b&gt;Column2&lt;/b&gt;, and so on, are used as the property names.&lt;/p&gt;

Cells containing array data can be read by setting the &lt;i&gt;MultipleValueDelimiter&lt;/i&gt; option to the character that separates the array elements. (Of course, this cannot be the same as the delimiter character.) You can now use the &lt;i&gt;Unmerge Data&lt;/i&gt; component to unmerge these arrays into separate records.
&lt;b&gt;See Also:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;The new, recommended component for Excel (.xlsx or .xls) files that does not require Excel to be installed on the server machine, and therefore is operational on Linux and Windows platforms - &lt;a href=&quot;javascript:DoLink(&apos;{14D98B18-C990-432C-834B-7026565E5ABF}&apos;)&quot;&gt;Excel Reader&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;For non-delimited textual data, use &lt;a href=&quot;javascript:DoLink(&apos;{8056E8AD-33EA-42BB-9099-EAB24C3D08E6}&apos;)&quot;&gt;Text Reader&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</sci:value>
						<sci:value>None</sci:value>
						<sci:value/>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>None</sci:value>
						<sci:value/>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>%VERSION 3%</sci:value>
						<sci:value>1826 -95 656 146</sci:value>
						<sci:value>255 255 0</sci:value>
						<sci:value>Read &quot;S1_datasets.tsv&quot;</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The server version when this component was registered</sci:help>
						<sci:value>18.1.0.1581</sci:value>
					</sci:arg>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>22</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Data Access and Manipulation\File Readers\Delimited Text Reader</sci:value>
					</sci:arg>
				</sci:component>
			</sci:data>
			<sci:data object="SciTegic.EvaluateExpression.1">
				<sci:component name="Custom Filter (PilotScript)" version="2">
					<sci:arg name="Expression" type="ExpressionType" required="true" visibility="visible" multi="false" implbase="{DD58ECD1-516F-48FE-A5DB-8328AED680F2}">
						<sci:help>The PilotScript expression used to filter the data.</sci:help>
						<sci:member>Initial Expression</sci:member>
						<sci:member>Final Expression</sci:member>
						<sci:member>Keep Calculated Properties</sci:member>
						<sci:value>dataset = &quot;semi-selective&quot; OR dataset = &quot;A1AR/A2AAR dataset&quot;</sci:value>
					</sci:arg>
					<sci:arg name="Initial Expression" type="ExpressionType" required="false" visibility="visible" multi="false" implbase="{DD58ECD1-516F-48FE-A5DB-8328AED680F2}">
						<sci:help>&lt;p&gt;
An expression evaluated only when the component
is first initialized (when the first data record enters).
&lt;p/&gt;
Since there is no data available at initialization time, only expressions referencing local or global properties are allowed.
&lt;/p&gt;</sci:help>
					</sci:arg>
					<sci:arg name="Final Expression" type="ExpressionType" required="false" visibility="visible" multi="false" implbase="{DD58ECD1-516F-48FE-A5DB-8328AED680F2}">
						<sci:help>&lt;p&gt;
An expression evaluated only when the
component is finalized (once the last data
record has passed).
&lt;p/&gt;
Since there is no data available at finalization time, only expressions referencing local or global properties are allowed.
&lt;/p&gt;</sci:help>
					</sci:arg>
					<sci:arg name="Keep Calculated Properties" type="BoolType" required="true" visibility="visible" multi="false" implbase="{DD58ECD1-516F-48FE-A5DB-8328AED680F2}">
						<sci:help>Allows any properties that were calculated in
&quot;Expression&quot; to be included with the exiting
record.
Otherwise, these properties are removed after
the evaluation is complete.</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval selected="true">ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an expected data type is not found during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an recoverable error occurs during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>Custom Error Message</sci:help>
					</sci:arg>
					<sci:arg name="ExpressionVersion" type="LongType" required="false" visibility="nevershow" multi="false" implbase="{DD58ECD1-516F-48FE-A5DB-8328AED680F2}">
						<sci:help>Version of expression parser to use.</sci:help>
						<sci:value>2</sci:value>
					</sci:arg>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/generic</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Mon Jan 21 09:57:16 2008</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentAutoDisplayName" type="ExpressionType" required="false" visibility="nevershow" multi="false">
						<sci:help>Automatically update the component display name when the &quot;Expression&quot; property is changed. This feature is turned off after the user manually changes the display name of the component in Protocol workspace.</sci:help>
						<sci:value>#displayName := trim(Parameter(&apos;Expression&apos;, 2));
if(strlength(#displayName) &gt; 0) then	
	/* Find the first line break */
	#nl := FindSubstring(#displayName, &quot;\r&quot;);
	if #nl &lt;= 0 then
		#nl := FindSubstring(#displayName, &quot;\n&quot;);
	end if;

	/* Keep the first line only */
	if (#nl &gt; 0) then
		StrErase(#displayName, #nl);
	end if;
	
	#displayName;
else
	&quot;&quot;;
end if;</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:value>FILTERNODE</sci:value>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The component this component is based upon.</sci:help>
						<sci:value>Custom Filter (PilotScript)</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>{DD58ECD1-516F-48FE-A5DB-8328AED680F2}</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>378 -95</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
						<sci:value>100</sci:value>
						<sci:value>Passes data records for which a PilotScript expression evaluates to True

</sci:value>
						<sci:value>&lt;p&gt;For each incoming data record, the PilotScript statements in &lt;i&gt;Expression&lt;/i&gt; are evaluated. If the last statement in the expression evaluates to True or non-zero, the record is sent out the Pass port. Otherwise it is sent out the Fail port.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;To initialize global variables such as counters, use &lt;i&gt;Initial Expression&lt;/i&gt;.&lt;/li&gt; 
&lt;li&gt;To clean up global variables or calculate final results use &lt;i&gt;Final Expression&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Parameters on Custom Manipulators do not become global variables that can be accessed via &lt;i&gt;@ParameterName&lt;/i&gt; syntax.  They must be accessed by using the &lt;i&gt;Parameter(&apos;ParameterName&apos;)&lt;/i&gt; function or by using token substitution via &lt;i&gt;$(ParameterName)&lt;/i&gt; syntax.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>Generic</sci:value>
						<sci:value>Data records for which the final expression in the PilotScript evaluates to True or non-zero</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value>Data records for which the final expression in the PilotScript evaluates to False or zero</sci:value>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>29</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Data Access and Manipulation\Property Filters\Custom Filter (PilotScript)</sci:value>
					</sci:arg>
				</sci:component>
				<sci:proplist>
					<sci:propval name="RegistrationVersion">7.0.0.35</sci:propval>
				</sci:proplist>
			</sci:data>
			<sci:data object="SciTegic.EvaluateExpression.1">
				<sci:component name="Custom Manipulator (PilotScript)" version="2">
					<sci:arg name="Expression" type="ExpressionType" required="true" visibility="visible" multi="false" expanded="true" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>Expression (or list of expressions separated by semi-colons) to evaluate.</sci:help>
						<sci:member>Initial Expression</sci:member>
						<sci:member>Final Expression</sci:member>
						<sci:member>Keep Calculated Properties</sci:member>
						<sci:value>A1_minus_A2A := pactivity_A1 - pactivity_A2A</sci:value>
					</sci:arg>
					<sci:arg name="Initial Expression" type="ExpressionType" required="false" visibility="visible" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>&lt;p&gt;
This expression is executed only the first time data passes into the component.
&lt;p/&gt; 
Since there is no data available at initialization time, only expressions referencing local or global properties are allowed.
&lt;/p&gt;</sci:help>
					</sci:arg>
					<sci:arg name="Final Expression" type="ExpressionType" required="false" visibility="visible" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>&lt;p&gt;
This expression is executed only at finalization (after the last data passes out of the component).
&lt;p/&gt; 
Since there is no data available at finalization time, only expressions referencing local or global properties are allowed.
&lt;/p&gt;</sci:help>
					</sci:arg>
					<sci:arg name="Keep Calculated Properties" type="BoolType" required="true" visibility="visible" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>Adds any properties calculated in this component to a data record&apos;s property list.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval selected="true">ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval>ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an expected data type is not found during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an recoverable error occurs during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>Custom Error Message</sci:help>
					</sci:arg>
					<sci:arg name="Do Screen" type="BoolType" required="false" visibility="nevershow" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>When TRUE, controls which exit port is used for
each data record by evaluating the final expression
(or only one) listed in the &quot;Expression&quot; parameter.
   -Pass (green) port when expression true
   -Fail (red) port when expression false</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="ExpressionVersion" type="LongType" required="false" visibility="nevershow" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>Version of expression parser to use.</sci:help>
						<sci:value>2</sci:value>
					</sci:arg>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/generic</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Mon Jan 21 09:55:43 2008</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentAutoDisplayName" type="ExpressionType" required="false" visibility="nevershow" multi="false">
						<sci:help>Automatically update the component display name when the &quot;Expression&quot; property is changed. This feature is turned off after the user manually changes the display name of the component in Protocol workspace.</sci:help>
						<sci:value>#displayName := trim(Parameter(&apos;Expression&apos;, 2));
if(strlength(#displayName) &gt; 0) then	
	/* Find the first line break */
	#nl := FindSubstring(#displayName, &quot;\r&quot;);
	if #nl &lt;= 0 then
		#nl := FindSubstring(#displayName, &quot;\n&quot;);
	end if;

	/* Keep the first line only */
	if (#nl &gt; 0) then
		StrErase(#displayName, #nl);
	end if;
	
	#displayName;
else
	&quot;&quot;;
end if;</sci:value>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The component this component is based upon.</sci:help>
						<sci:value>Custom Manipulator (PilotScript)</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:value>EXPRESSIONNODE</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>{0995D675-7EE2-432C-95DF-E91C14052B22}</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>666 -95</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
						<sci:value>100</sci:value>
						<sci:value>Applies a PilotScript expression to each data record
</sci:value>
						<sci:value>&lt;p&gt;PilotScript is the native scripting language in Pipeline Pilot.  It is based on PL/SQL and allows you to query or alter the properties on data records.  For example, the expression:

&lt;blockquote&gt;
&lt;code&gt;A := 10;&lt;/code&gt;
&lt;/blockquote&gt;
creates a property named &quot;A&quot; and sets the value to &quot;10&quot;.&lt;/p&gt;

&lt;p&gt;For each incoming data record the PilotScript statements in &lt;i&gt;Expression&lt;/i&gt; are evaluated.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;To initialize global variables such as counters, use &lt;i&gt;Initial Expression&lt;/i&gt;.&lt;/li&gt; 
&lt;li&gt;To clean up global variables or calculate final results use &lt;i&gt;Final Expression&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Parameters on Custom Manipulators do not become global variables that can be accessed via &lt;i&gt;@ParameterName&lt;/i&gt; syntax.  They must be accessed by using the &lt;i&gt;Parameter(&apos;ParameterName&apos;)&lt;/i&gt; function or by using token substitution via &lt;i&gt;$(ParameterName)&lt;/i&gt; syntax.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;See Also:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For more information on PilotScript, see &lt;a href=&quot;javascript:DoLink(&apos;scihelpdocs/user/pscript/pscript_overview.htm&apos;)&quot;&gt;PilotScript Overview&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To use PilotScript to filter data records use &lt;a href=&quot;javascript:DoLink(&apos;{DD58ECD1-516F-48FE-A5DB-8328AED680F2}&apos;)&quot;&gt;Custom Filter (PilotScript)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>None</sci:value>
						<sci:value/>
					</sci:arg>
					<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The server version when this component was registered</sci:help>
						<sci:value>7.0.0.35</sci:value>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>24</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Data Access and Manipulation\Property Manipulators\Custom Manipulator (PilotScript)</sci:value>
					</sci:arg>
				</sci:component>
			</sci:data>
			<sci:data object="SciTegic.CalculateSmiles.1">
				<sci:component name="Molecule from SMILES" version="2">
					<sci:arg name="FromProperty" type="StringType" required="true" visibility="visible" multi="false">
						<sci:help>The name of the property in the data
which holds the SMILES information</sci:help>
						<sci:member>KekulizeAromaticBonds</sci:member>
						<sci:member>Send Empty SMILES to Fail Port</sci:member>
						<sci:member>Parse RAtoms from CXSMILES</sci:member>
						<sci:value>Canonical_Smiles</sci:value>
					</sci:arg>
					<sci:arg name="KekulizeAromaticBonds" type="StringType" required="false" visibility="visible" multi="false">
						<sci:help>Turn aromatic bonds into single/double bonds (set to True) or into aromatic query bonds (set to False). Molecules created with aromatic query bonds are more suitable as queries than as specific molecules. They should not be used as input for property calculators such as Molecular Weight, pKa and others, which require the structure to be uniquely defined.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="Send Empty SMILES to Fail Port" type="BoolType" required="false" visibility="visible" multi="false" legalvalsenforced="false">
						<sci:help>When set to True, data records with SMILES represented by empty strings or strings with only blank characters are sent to the Fail port. 
&lt;p&gt;
When set to False, empty SMILES strings generate empty molecules with no atoms or bonds.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="Parse RAtoms from CXSMILES" type="BoolType" required="false" visibility="visible" multi="false" legalvalsenforced="false">
						<sci:help>Set this parameter to True to parse any Rgroup information from ChemAxon SMILES extentions (CXSMILES), if present. The extension is separated from the actual SMILES by a space or tab. When the parameter is set to False (the default state) the extension is ignored.
&lt;p&gt;
Examples
&lt;br&gt;
C1O[*]CO[*]1 |$;;_R2;;;_R1$,RG:_R1={C},{N},_R2={C},{N}|
&lt;br&gt;
Cl[*](Br)I |$;_R1;;$,RG:_R1={*CCCC(C*)CC*|
&lt;br&gt;
[*]N[C@@H](C=O)C([*])=O |$_R1;;;;;;_R2;$|
&lt;br&gt;
NC(=N)NCCC[C@H](N[*])C([*])=O |$;;;;;;;;;_R1;;_R2;$|
&lt;p&gt;
The star atoms (unknown atom type) in the SMILES are replaced by the corresponding numbered R atoms from the extension. Any RG fragment information present in the Rgroup extension is ignored.
&lt;p&gt;
Only the Rgroup information in the CXSMILES extension is parsed, any other extension is ignored.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval selected="true">ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an expected data type is not found during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval>Halt</sci:legalval>
						<sci:legalval selected="true">Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an recoverable error occurs during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval>Halt</sci:legalval>
						<sci:legalval selected="true">Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>Custom Error Message</sci:help>
					</sci:arg>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/chemistry</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Wed Mar 30 15:06:09 2016</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>Molecule from SMILES</sci:value>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The component this component is based upon.</sci:help>
						<sci:value>Molecule from SMILES</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:value>COMPONENTNODE</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>{AC8262DA-E648-4D24-9CD1-D731A8F53F9D}</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>954 -95</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
						<sci:value>100</sci:value>
						<sci:value>Converts a Daylight SMILES text property to a molecule</sci:value>
						<sci:value>&lt;p&gt;Builds a molecular representation for each data record from the SMILES string found in the property list. If a molecular representation is already present, it is overwritten by the new molecule. The input SMILES string is preserved.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;See Also:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To create a string property containing SMILES data, use &lt;a href=&quot;javascript:DoLink(&apos;{0C60C40A-5189-42DA-A3C0-4EA44BFF7D15}&apos;)&quot;&gt;Molecule to SMILES&lt;/a&gt; or &lt;a href=&quot;javascript:DoLink(&apos;{0C60C40A-5189-42DA-A3C0-4EA44BC27D15}&apos;)&quot;&gt;Canonical Smiles&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To read and write SMILES files, use &lt;a href=&quot;javascript:DoLink(&apos;{60FC1A04-61FD-4D4F-AC3F-A818AB614C78}&apos;)&quot;&gt;SMILES Reader&lt;/a&gt; and &lt;a href=&quot;javascript:DoLink(&apos;{72A5A427-651F-4847-9525-54CB438A7166}&apos;)&quot;&gt;SMILES Writer&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>Molecule</sci:value>
						<sci:value>Molecular data record created from SMILES string</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value/>
					</sci:arg>
					<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The server version when this component was registered</sci:help>
						<sci:value>17.1.0.51</sci:value>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>25</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Chemistry\Data Access and Manipulation\Converters\Molecule From Text\Molecule from SMILES</sci:value>
					</sci:arg>
				</sci:component>
			</sci:data>
			<sci:data object="SciTegic.PropertyFunctions.1">
				<sci:component name="Keep Properties" version="2">
					<sci:arg name="PropertyList" type="PropertyNameType" required="true" visibility="visible" multi="true">
						<sci:help>The list of property names to keep</sci:help>
						<sci:member>RenameList</sci:member>
						<sci:value>ID, A1_minus_A2A</sci:value>
					</sci:arg>
					<sci:arg name="RenameList" type="PropertyNameType" required="false" visibility="visible" multi="true">
						<sci:help>If provided, it causes the properties given in PropertyList to be 
renamed to the corresponding name in this list.  If not provided, then no properties are renamed.</sci:help>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval selected="true">ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval>ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an expected data type is not found during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an recoverable error occurs during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>Custom Error Message</sci:help>
					</sci:arg>
					<sci:arg name="Action" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:help>the action to perform</sci:help>
						<sci:value>Keep</sci:value>
					</sci:arg>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/generic</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Tue Sep 13 07:18:38 2016</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentAutoDisplayName" type="ExpressionType" required="false" visibility="nevershow" multi="false">
						<sci:help>Automatically update the component display name when the &quot;Destination&quot; property is changed. This feature is turned off after the user manually changes the display name of the component in Protocol workspace.</sci:help>
						<sci:value>#propertyList := Parameter(&apos;PropertyList&apos;);
#displayName := &apos;&apos;;
for #i in 1 .. numvalues(#propertyList) loop
  #prop := trim(#propertyList[#i]);
  if (strlength(#prop) &gt; 0) then
    if (strlength(#displayName) &gt; 0) then
	  #displayName .= &apos;, &apos;;
	end if;
    #displayName .= #prop;
  end if;
end loop;
if(strlength(#displayName) &gt; 0) then		
	&apos;Keep &apos; . #displayName;
else
	&quot;&quot;;
end if;</sci:value>
					</sci:arg>
					<sci:arg name="ProtocolAutoLayout" type="BoolType" required="false" visibility="nevershow" multi="false">
						<sci:help>Protocol AutoLayout</sci:help>
						<sci:value>true</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:value>EXPRESSIONNODE</sci:value>
					</sci:arg>
					<sci:arg name="ComponentRevision" type="LongType" required="true" visibility="nevershow" multi="false">
						<sci:help>Component Revision</sci:help>
						<sci:value>100</sci:value>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The component this component is based upon.</sci:help>
						<sci:value>SubProtocol</sci:value>
					</sci:arg>
					<sci:arg name="ProtocolScale" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Protocol Scale</sci:help>
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>1242 -95</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>{456195EF-9708-4367-B3DD-21EBF3796604}</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
						<sci:value>100</sci:value>
						<sci:value>Keeps only the specified properties</sci:value>
						<sci:value>&lt;p&gt;For each incoming data record, retains only the properties found in the list of property names specified by &lt;i&gt;PropertyList&lt;/i&gt;.  All other properties are removed.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;See Also:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To remove specified properties from each data record, use 
&lt;a href=&quot;javascript:DoLink(&apos;{C2ED35FF-5397-4877-AADB-10F1A15D60E2}&apos;)&quot;&gt;Remove Properties&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>Generic</sci:value>
						<sci:value>With only the specified properties remaining</sci:value>
						<sci:value>None</sci:value>
						<sci:value/>
					</sci:arg>
					<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The server version when this component was registered</sci:help>
						<sci:value>17.1.0.119</sci:value>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ByReference" type="BoolType" required="false" visibility="nevershow" multi="false">
						<sci:help>By Ref</sci:help>
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="Protocol Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>Protocol Sticky Notes</sci:help>
					</sci:arg>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>26</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Data Access and Manipulation\Property Manipulators\Keep Properties</sci:value>
					</sci:arg>
				</sci:component>
			</sci:data>
			<sci:data object="SciTegic.Protocol.1">
				<sci:component name="Learn R XGBoost Model" version="2">
					<sci:arg name="LearnedPropertyName" type="StringType" required="true" visibility="visible" multi="false" expanded="true">
						<sci:help>Name of the model component that will be created in the LearnedProperties/R Models folder on your user tab.  This is also the base name of the properties that can be calculated by that component.</sci:help>
						<sci:validscript>if Parameter(&apos;Name&apos;) is defined and Parameter() ne &apos;&apos; and Parameter() eq Parameter(&apos;Name&apos;) then
	#valid := False;
	setinvaliddetails(&apos;Value must be different from that of &quot;Name&quot;&apos;);
else
	#valid := True;
end if;

#valid</sci:validscript>
						<sci:value>QSAR_SelectivityWindow_regression</sci:value>
					</sci:arg>
					<sci:arg name="Name" type="StringType" required="true" visibility="visible" multi="false" expanded="true">
						<sci:help>Name of the dependent (Y) property to be learned</sci:help>
						<sci:value>A1_minus_A2A</sci:value>
					</sci:arg>
					<sci:arg name="TypeOfPropertyToLearn" type="StringType" required="true" visibility="visible" multi="false" expanded="true">
						<sci:help>Type of property to learn, either continuous or categorical.</sci:help>
						<sci:legalval selected="true">Continuous</sci:legalval>
						<sci:legalval>Categorical</sci:legalval>
					</sci:arg>
					<sci:arg name="UseProperties" type="StringType" required="true" visibility="visible" multi="false" expanded="true">
						<sci:help>The properties to learn from.  Options are:
&lt;ul&gt;
&lt;li&gt;AllPropertiesOnFirstData: Uses all properties that are found on the first data record.
&lt;li&gt;CalculablePropertiesOnFirstData: Uses all calculable properties found on the first data record.
&lt;li&gt;PredefinedSet: Uses the properties specified by &lt;i&gt;PredefinedSet&lt;/i&gt;.
&lt;li&gt;UserSet: Uses the properties specified by &lt;i&gt;UserSet&lt;/i&gt;.  Property ranges can be given by providing the first and last property in the range separated by a hyphen. Properties can be referred to by index using the word &quot;Column&quot; followed by the index, such as &quot;Column3-Column10&quot;.
&lt;/ul&gt;
&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;For any array property used in model building, each array member is treated as a separate variable.
&lt;/ul&gt;</sci:help>
						<sci:member>PredefinedSet</sci:member>
						<sci:member>UserSet</sci:member>
						<sci:member>IgnoreProperties</sci:member>
						<sci:legalval>AllPropertiesOnFirstData</sci:legalval>
						<sci:legalval>CalculablePropertiesOnFirstData</sci:legalval>
						<sci:legalval selected="true">PredefinedSet</sci:legalval>
						<sci:legalval>UserSet</sci:legalval>
					</sci:arg>
					<sci:arg name="PredefinedSet" type="StringType" required="false" visibility="visible" multi="true" expanded="true">
						<sci:help>A list of molecular properties to use in building the model when &lt;i&gt;UseProperties&lt;/i&gt; is set to PredefinedSet</sci:help>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, set UseProperties to PredefinedSet&apos;);
Parameter(&apos;UseProperties&apos;) eq &apos;PredefinedSet&apos;</sci:enabledscript>
						<sci:legalval selected="true">ALogP</sci:legalval>
						<sci:legalval selected="true">Molecular_Weight</sci:legalval>
						<sci:legalval selected="true">Num_H_Donors</sci:legalval>
						<sci:legalval selected="true">Num_H_Acceptors</sci:legalval>
						<sci:legalval selected="true">Num_RotatableBonds</sci:legalval>
						<sci:legalval selected="true">Num_Atoms</sci:legalval>
						<sci:legalval selected="true">Num_Rings</sci:legalval>
						<sci:legalval selected="true">Num_AromaticRings</sci:legalval>
						<sci:legalval>Num_Fragments</sci:legalval>
						<sci:legalval>NPlusO_Count</sci:legalval>
						<sci:legalval>Molecular_Solubility</sci:legalval>
						<sci:legalval>Molecular_SurfaceArea</sci:legalval>
						<sci:legalval>Molecular_PolarSurfaceArea</sci:legalval>
						<sci:legalval>Molecular_PolarSASA</sci:legalval>
						<sci:legalval>AlogP_Count</sci:legalval>
						<sci:legalval>FCFP_2</sci:legalval>
						<sci:legalval>FCFP_4</sci:legalval>
						<sci:legalval selected="true">FCFP_6</sci:legalval>
						<sci:legalval>ECFP_2</sci:legalval>
						<sci:legalval>ECFP_4</sci:legalval>
						<sci:legalval>ECFP_6</sci:legalval>
						<sci:legalval>Estate_Keys</sci:legalval>
						<sci:legalval>Estate_Counts</sci:legalval>
						<sci:legalval>MDLPublicKeys</sci:legalval>
					</sci:arg>
					<sci:arg name="UserSet" type="StringType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>A comma-separated list of properties to use for learning. 
&lt;p&gt;If an item on the list contains a hyphen (e.g., &quot;X1-X5&quot;), and the properties on either side of the hyphen (e.g., &quot;X1&quot;, &quot;X5&quot;) are defined on the first data record, then all properties in that range are included. Note that the properties within the specified range are determined by the order of properties in the property list. Thus, if properties in the property list are in the following order: X1, X2, X5, X3, X4, X6, then the range &quot;X1-X5&quot; will only include properties X1, X2, and X5.&lt;/p&gt;
</sci:help>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, set UseProperties to UserSet&apos;);
Parameter(&apos;UseProperties&apos;) eq &apos;UserSet&apos; or Parameter(&apos;UseProperties&apos;) eq &apos;UserAndIngredientSet&apos;</sci:enabledscript>
					</sci:arg>
					<sci:arg name="IgnoreProperties" type="StringType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>A comma-separated list of properties to exclude.  This can be used, for example, if &lt;i&gt;UseProperties&lt;/i&gt; is &lt;i&gt;AllPropertiesOnFirstData&lt;/i&gt;, but there is a small subset of properties you wish not to use in  building the model.</sci:help>
						<sci:value>ID</sci:value>
					</sci:arg>
					<sci:arg name="ROutput" type="StringType" required="false" visibility="visible" multi="true" expanded="true">
						<sci:help>Component output. You can select one or more options. Options are:
&lt;ul&gt;
&lt;li&gt;FitSummary: A text summary of the fitting results.

&lt;li&gt;FitPlot: For classification models, a ROC plot; for regression models, a fit plot and residuals plot.

&lt;li&gt;Importance Values: For each property used in the learning, measures of the &quot;importance&quot; of the property in determining the response.

&lt;li&gt;Importance Plot: Plot of the top 30 most important properties or features, output in a binary property named &lt;b&gt;ImportancePlot&lt;/b&gt;.

&lt;/ul&gt;</sci:help>
						<sci:legalval selected="true">FitSummary</sci:legalval>
						<sci:legalval selected="true">FitPlot</sci:legalval>
						<sci:legalval>Importance Values</sci:legalval>
						<sci:legalval>Importance Plot</sci:legalval>
					</sci:arg>
					<sci:arg name="CrossValidate" type="BoolType" required="false" visibility="visible" multi="false" expanded="true" legalvalsenforced="false" uimpl="false">
						<sci:help>Specifies whether cross-validation will be performed to tune parameters and evaluate model quality</sci:help>
						<sci:member>CrossValidationFolds</sci:member>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="CrossValidationFolds" type="LongType" required="false" visibility="visible" multi="false" expanded="true" uimpl="false">
						<sci:help>The number of &quot;folds&quot; for cross-validation.  E.g., setting &lt;i&gt;CrossValidationFolds&lt;/i&gt; to 5 implies 5-fold cross-validation, such that 4/5 of the data are used to train a temporary model and the remaining 1/5 to test the model.  The process is repeated 5 times so that each sample is left out once. After cross-validation, the final model is build from all of the data.</sci:help>
						<sci:validscript>parameter() &gt; 1</sci:validscript>
						<sci:enabledscript>Parameter(&apos;CrossValidate&apos;) = true</sci:enabledscript>
						<sci:value>5</sci:value>
					</sci:arg>
					<sci:arg name="XGBoost Options" type="GroupType" required="false" visibility="visible" multi="false" expanded="true" legalvalsenforced="false">
						<sci:help>Options governing the structure and training of the XGBoost model</sci:help>
						<sci:member>Max Depth</sci:member>
						<sci:member>Data Fraction</sci:member>
						<sci:member>Descriptor Fraction</sci:member>
						<sci:member>Weighting Method</sci:member>
						<sci:member>Booster</sci:member>
						<sci:member>Learning Rate</sci:member>
						<sci:member>Max Trees</sci:member>
					</sci:arg>
					<sci:arg name="Max Trees" type="LongType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>Maximum number of trees in model. When using cross-validation, the final model may have fewer trees due to optimization of the model size.</sci:help>
						<sci:value>1000</sci:value>
					</sci:arg>
					<sci:arg name="Learning Rate" type="StringType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>The contribution of each new tree is scaled by this factor. Used to help prevent overfitting. Typically must be tuned in order to get the best model. Lower values for &lt;i&gt;Learning Rate&lt;/i&gt; require a larger value for &lt;i&gt;Number of Trees&lt;/i&gt;. 

You may specify a single value, a comma-separated list of values, or any R expression generating a vector of values. If you enter multiple values, a temporary model is built for each value. If &lt;i&gt;CrossValidate&lt;/i&gt; is set to True, cross-validation is performed for each value. The combination of parameter values giving the best fit or best cross-validation predictions is used to build the final model from all the data.

(Also known as &quot;eta&quot; parameter.) 

Range: (0, 1]</sci:help>
						<sci:value>0.3</sci:value>
					</sci:arg>
					<sci:arg name="Max Depth" type="StringType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>Maximum depth of each tree in model. Typically must be tuned in order to get the best model. 

You may specify a single value, a comma-separated list of values, or any R expression generating a vector of values. If you enter multiple values, a temporary model is built for each value. If &lt;i&gt;CrossValidate&lt;/i&gt; is set to True, cross-validation is performed for each value. The combination of parameter values giving the best fit or best cross-validation predictions is used to build the final model from all the data.
</sci:help>
						<sci:value>7</sci:value>
					</sci:arg>
					<sci:arg name="Data Fraction" type="StringType" required="false" visibility="visible" multi="false" uimpl="false">
						<sci:help>Random fraction of data to use when building each tree in model. Typically must be tuned in order to get the best model. 

You may specify a single value, a comma-separated list of values, or any R expression generating a vector of values. If you enter multiple values, a temporary model is built for each value. If &lt;i&gt;CrossValidate&lt;/i&gt; is set to True, cross-validation is performed for each value. The combination of parameter values giving the best fit or best cross-validation predictions is used to build the final model from all the data.

Range: (0, 1].</sci:help>
						<sci:value>1.0</sci:value>
					</sci:arg>
					<sci:arg name="Descriptor Fraction" type="StringType" required="false" visibility="visible" multi="false">
						<sci:help>Random fraction of descriptors to consider when building each tree in model. Typically must be tuned in order to get the best model. 

You may specify a single value, a comma-separated list of values, or any R expression generating a vector of values. If you enter multiple values, a temporary model is built for each value. If &lt;i&gt;CrossValidate&lt;/i&gt; is set to True, cross-validation is performed for each value. The combination of parameter values giving the best fit or best cross-validation predictions is used to build the final model from all the data.

Range: (0, 1].</sci:help>
						<sci:value>0.7</sci:value>
					</sci:arg>
					<sci:arg name="Weighting Method" type="StringType" required="false" visibility="visible" multi="false" uimpl="false">
						<sci:help>For classification models only, specifies the scheme to use in order to determine the relative importance of a sample.  Options are:
&lt;ul&gt;
&lt;li&gt;Uniform: Each sample is weighted equally.
&lt;li&gt;By Class: Each sample is weighted in inverse proportion to the number of samples in its class. Thus, minority classes are up-weighted in imbalanced data sets.
&lt;li&gt;By Class Sqrt: Uses the square-root of the By Class weighting. Provides a less extreme up-weighting of minority classes that appears to work better in some cases.
&lt;/ul&gt;</sci:help>
						<sci:enabledscript>SetDisabledDetails(&quot;This parameter can be enabled by setting TypeOfPropertyToLearn to Categorical&quot;);
parameter(&quot;TypeOfPropertyToLearn&quot;) eq &quot;Categorical&quot;</sci:enabledscript>
						<sci:legalval>Uniform</sci:legalval>
						<sci:legalval selected="true">By Class</sci:legalval>
						<sci:legalval>By Class Sqrt</sci:legalval>
					</sci:arg>
					<sci:arg name="Booster" type="StringType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>Specifies the boosting algorithm to use. Options are:
&lt;ul&gt;
&lt;li&gt;gbtree: conventional gradient-boosting tree approach.
&lt;li&gt;dart: gradient-boosting trees with random dropout. This approach, along with a &lt;i&gt;Dropout Fraction&lt;/i&gt; greater than zero, may reduce overfitting.
&lt;/ul&gt;
&lt;b&gt;Note:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;The &quot;dart&quot; option is only available in version 0.60 and above of the &quot;xgboost&quot; R package. If your R installation has an earlier version, &quot;gbtree&quot; is used irrespective of the value of &lt;i&gt;Booster&lt;/i&gt;.
&lt;/ul&gt;
</sci:help>
						<sci:member>Dropout Fraction</sci:member>
						<sci:legalval selected="true">gbtree</sci:legalval>
						<sci:legalval>dart</sci:legalval>
					</sci:arg>
					<sci:arg name="Dropout Fraction" type="DoubleType" required="false" visibility="visible" multi="false">
						<sci:help>For the dart &lt;i&gt;Booster&lt;/i&gt;, specifies the random fraction of trees to ignore at each training iteration.</sci:help>
						<sci:enabledscript>parameter(&apos;Booster&apos;) eq &apos;dart&apos;</sci:enabledscript>
						<sci:value>0.2</sci:value>
					</sci:arg>
					<sci:arg name="Learn Options" type="StringType" required="false" visibility="visible" multi="true" expanded="true" uimpl="false">
						<sci:help>Specifies additional preferences affecting the building of the model and information saved with the model. Options are:
&lt;ul&gt;

&lt;li&gt;Save Training Properties: Saves the properties of the training data in the model component for later use. This allows you to use &lt;a href=&quot;javascript:DoLink(&apos;{ABCDEFED-AAAA-BBBB-CCCC-DDDDEEEEFFFF}&apos;)&quot;&gt;New Model from Old&lt;/a&gt; to rebuild the model with new data added to the original data. In addition, you can determine the distance of a sample to the closest training samples when making predictions with the model. (Use &lt;i&gt;Numeric Distance Function&lt;/i&gt; to specify the distance measure to use.) For identifying training samples, the model uses the &lt;b&gt;Name&lt;/b&gt; property. If no such property exists in your training data, the names &lt;b&gt;Train1&lt;/b&gt;, &lt;b&gt;Train2&lt;/b&gt;, etc. are used. The &quot;Save Training Properties&quot; option increases the on-disk size of the model component in proportion to the quantity of training data.

&lt;li&gt;Track Property Ranges: Tracks the ranges of property values seen in the input data in order to alert you to any out-of-range values found when you make predictions with the model. This helps indicate the model&apos;s domain of applicability and the degree to which you can trust the predicted values. If you choose the &lt;i&gt;ModelName&lt;/i&gt;_Applicability output when making predictions, you are warned when the value of any property is outside the range of that property&apos;s values in the training data. If you wish to also track structural features of the data, use &lt;i&gt;Model Domain Fingerprint&lt;/i&gt; to specify the molecular fingerprint to use for feature tracking.

&lt;li&gt;Perform OPS Analysis: Performs a principal components analysis to determine the optimum prediction space (OPS) of the model as an indicator of the model&apos;s applicability when making predictions. The OPS approach typically results in tighter boundaries around the training data than does simply tracking the property ranges. If you choose the &lt;i&gt;ModelName&lt;/i&gt;_Applicability output when making predictions with the model on new data, the model output indicates whether each new sample lies within or outside the training data range for each principal component. If you wish to also track structural features of the data, use &lt;i&gt;Model Domain Fingerprint&lt;/i&gt; to specify the molecular fingerprint to use for feature tracking. If you select this option, you do not need to select &quot;Track Property Ranges&quot;; the property range tracking is done as part of the OPS analysis.

&lt;/ul&gt;

&lt;b&gt;See Also:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;For more on the optimum prediction space approach, see U.S. Patent 6,036,349, &quot;Method and apparatus for validation of model-based predictions.&quot; You can find it at &lt;a href=&quot;javascript:DoLink(&apos;http://patft.uspto.gov/netahtml/PTO/srchnum.htm&apos;)&quot;&gt;the US Patent Number Search site.&lt;/a&gt;
&lt;/ul&gt;
</sci:help>
						<sci:member>Model Domain Fingerprint</sci:member>
						<sci:member>Additional Properties</sci:member>
						<sci:member>Numeric Distance Function</sci:member>
						<sci:member>Fingerprint Distance Function</sci:member>
						<sci:legalval>Save Training Properties</sci:legalval>
						<sci:legalval>Track Property Ranges</sci:legalval>
						<sci:legalval>Perform OPS Analysis</sci:legalval>
					</sci:arg>
					<sci:arg name="Numeric Distance Function" type="StringType" required="true" visibility="visible" multi="false" uimpl="false">
						<sci:help>For numeric properties and categorical properties other than fingerprints, specifies the function to use for computing the distance between two data records. This distance is used by the built model to determine the closest training samples when you specify that the model should output the closest samples.

&lt;p&gt;The expressions for the following distance functions assume that each record has numerical properties x&lt;sub&gt;1&lt;/sub&gt;, x&lt;sub&gt;2&lt;/sub&gt;,&amp;hellip;, with x&lt;sub&gt;1A&lt;/sub&gt;, x&lt;sub&gt;2A&lt;/sub&gt;,&amp;hellip; the values for record A and x&lt;sub&gt;1B&lt;/sub&gt;, x&lt;sub&gt;2B&lt;/sub&gt;,&amp;hellip; the values for record B. 
&lt;p&gt;
Options and their mathematical definitions are:
&lt;ul&gt;
&lt;li&gt;Euclidean: Distance (D) is the square-root of the sum of squared differences between corresponding property values: D = [&amp;sum;(x&lt;sub&gt;iA&lt;/sub&gt;&amp;minus; x&lt;sub&gt;iB&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt;]&lt;sup&gt;1/2&lt;/sup&gt;. Possible values range from 0 upward.
&lt;li&gt;Manhattan: Distance is the sum of the absolute value of the differences between corresponding property values: D = &amp;sum;&amp;nbsp;|x&lt;sub&gt;iA&lt;/sub&gt;&amp;minus; x&lt;sub&gt;iB&lt;/sub&gt;|. Possible values range from 0 upward.
&lt;li&gt;Mahalanobis: A generalization of the Euclidean distance that accounts for correlations between different properties. The distance is defined as: D = [&amp;sum;(x&lt;sub&gt;iA&lt;/sub&gt;&amp;minus; x&lt;sub&gt;iB&lt;/sub&gt;)(&lt;b&gt;S&lt;/b&gt;&lt;sup&gt;&amp;minus;1&lt;/sup&gt;)&lt;sub&gt;ij&lt;/sub&gt;(x&lt;sub&gt;jA&lt;/sub&gt;&amp;minus; x&lt;sub&gt;jB&lt;/sub&gt;)]&lt;sup&gt;1/2&lt;/sup&gt;, where &lt;b&gt;S&lt;/b&gt;&lt;sup&gt;&amp;minus;1&lt;/sup&gt; is the inverse of the covariance matrix for the entire data set. Possible values range from 0 upward.
&lt;li&gt;One Minus Correlation: Distance is 1 minus the &lt;a href=&quot;javascript:DoLink(&apos;http://en.wikipedia.org/wiki/Correlation&apos;)&quot;&gt;Pearson correlation coefficient&lt;/a&gt; between the vectors of property values for the two records. Possible values range from 0 to 2. (With two or fewer properties on each record, this is not a meaningful distance function.)
&lt;li&gt;One Minus Squared Correlation: Distance is 1 minus the square of the Pearson correlation coefficient between the vectors of property values for the two records. Use this function if you wish both strong correlation and strong anti-correlation to indicate that two records are &quot;near&quot;. Possible values range from 0 to 1. (With two or fewer properties on each record, this is not a meaningful distance function.)
&lt;li&gt;Cosine: Distance is 1 minus the cosine of the angle between the vectors defined by the properties of the two records: D = 1 &amp;minus; &amp;sum;&amp;nbsp;x&lt;sub&gt;iA&lt;/sub&gt;x&lt;sub&gt;iB&lt;/sub&gt; / [&amp;sum;(x&lt;sub&gt;iA&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt;&amp;nbsp;&amp;sum;(x&lt;sub&gt;iB&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt;]&lt;sup&gt;1/2&lt;/sup&gt;. Possible values range from 0 to 2.
&lt;li&gt;Dice: Distance is a generalization to continuous properties of the Dice distance for binary fingerprints: D = 1 &amp;minus; 2 &amp;sum;&amp;nbsp;x&lt;sub&gt;iA&lt;/sub&gt;x&lt;sub&gt;iB&lt;/sub&gt; / [&amp;sum;(x&lt;sub&gt;iA&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt; + &amp;sum;(x&lt;sub&gt;iB&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt;]. Possible values range from 0 to 2.
&lt;li&gt;Tanimoto: Distance is a generalization to continuous properties of the Tanimoto distance for binary fingerprints: D = 1 &amp;minus; &amp;sum;&amp;nbsp;x&lt;sub&gt;iA&lt;/sub&gt;x&lt;sub&gt;iB&lt;/sub&gt; / [&amp;sum;(x&lt;sub&gt;iA&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt; + &amp;sum;(x&lt;sub&gt;iB&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt; &amp;minus; &amp;sum;&amp;nbsp;x&lt;sub&gt;iA&lt;/sub&gt;x&lt;sub&gt;iB&lt;/sub&gt;]. Possible values range from 0 to 1.3333.
&lt;/ul&gt;
&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;For Euclidean, Manhattan, and Mahalanobis distances, the difference between two string (categorical) values is considered 0 if the strings are identical, or 1 if they are not.  For Cosine, Dice, and Tanimoto distances, the product of two string values is considered 1 if the strings are identical, or 0 if they are not. String properties are ignored for both correlation options.
&lt;li&gt;If a property is an array, then differences or products are taken element-by-element for the entire array. If the array on one record is shorter than on the other, unmatched elements of the longer array are ignored.
&lt;li&gt;For the Mahalanobis option, if the data are so highly-correlated that the covariance matrix is singular or nearly so, then the &lt;a href=&quot;javascript:DoLink(&apos;http://en.wikipedia.org/wiki/Moore-Penrose_pseudoinverse&apos;)&quot;&gt;Moore-Penrose pseudoinverse&lt;/a&gt; is used instead of the inverse. If even the pseudoinverse cannot be computed (due to &lt;a href=&quot;javascript:DoLink(&apos;http://en.wikipedia.org/wiki/Singular_value_decomposition&apos;)&quot;&gt;SVD&lt;/a&gt; non-convergence), an error occurs. In this case, you must use an alternative distance function.
&lt;li&gt;If you specify both numeric and fingerprint properties to use in the distance calculations, separate contributions to the distance are computed for the two types of property. The overall distance is the average of the two: D = 0.5(D&lt;sub&gt;numeric&lt;/sub&gt; + D&lt;sub&gt;FP&lt;/sub&gt;). Take care to specify appropriate &lt;i&gt;Numeric Scaling&lt;/i&gt; options for this case in order to prevent one or the other of these distance contributions from dominating.
&lt;/ul&gt;
&lt;b&gt;See Also:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;For more on several of the distance measures described here, see: &lt;a href=&quot;javascript:DoLink(&apos;http://www.dddc.ac.cn/embo04/material/Willett_1998.pdf&apos;)&quot;&gt; P. Willett, J.M. Barnard, and G.M. Downs, &quot;Chemical Similarity Searching,&quot; &lt;i&gt;J. Chem. Inf. Comput. Sci.&lt;/i&gt;, &lt;b&gt;38&lt;/b&gt;, 983 (1998)&lt;/a&gt;.
&lt;li&gt;For more on the Mahalanobis distance, see &lt;a href=&quot;javascript:DoLink(&apos;http://en.wikipedia.org/wiki/Mahalanobis_distance&apos;)&quot;&gt;here&lt;/a&gt;.
&lt;/ul&gt;</sci:help>
						<sci:member>Numeric Scaling</sci:member>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, select &quot;Save Training Properties&quot; as one of the Learn Options&apos;);

contains(Parameter(&apos;Learn Options&apos;), &apos;Save Training Properties&apos;);</sci:enabledscript>
						<sci:legalval selected="true">Euclidean</sci:legalval>
						<sci:legalval>Manhattan</sci:legalval>
						<sci:legalval>Mahalanobis</sci:legalval>
						<sci:legalval>One Minus Correlation</sci:legalval>
						<sci:legalval>One Minus Squared Correlation</sci:legalval>
						<sci:legalval>Cosine</sci:legalval>
						<sci:legalval>Dice</sci:legalval>
						<sci:legalval>Tanimoto</sci:legalval>
					</sci:arg>
					<sci:arg name="Numeric Scaling" type="StringType" required="false" visibility="visible" multi="true" uimpl="false">
						<sci:help>Settings controlling the scaling of numeric data when computing distances.  Options are:
&lt;ul&gt;
&lt;li&gt;Mean-Center and Scale: Shifts and scales each property to have a mean of 0 and standard deviation of 1.  For Euclidean, Manhattan, Cosine, Dice, and Tanimoto distances, this is a recommended option, as it puts all numeric properties on equal footing.  Without such scaling, properties with a large typical magnitude (e.g., 1000) dominate the calculated distance, while properties with a small typical magnitude (e.g., 1) have minimal effect. (For Mahalanobis and correlation distances, this option has no effect on the calculated distance.)
&lt;li&gt;Scale by Number of Dimensions: For Euclidean, Manhattan, and Mahalanobis distances only, divides the computed distance by P (Manhattan) or P&lt;sup&gt;1/2&lt;/sup&gt; (Euclidean and Mahalanobis), where P is the number of properties (or total number of elements if some properties are arrays). This ensures that the typical magnitude of computed distances remains unchanged as you vary the number of properties in the calculation.
&lt;li&gt;Correct for Missing Values: For Euclidean and Manhattan distances only, multiplies the computed distance by P&lt;sub&gt;exp&lt;/sub&gt;/P (Manhattan) or (P&lt;sub&gt;exp&lt;/sub&gt;/P)&lt;sup&gt;1/2&lt;/sup&gt; (Euclidean), where P&lt;sub&gt;exp&lt;/sub&gt; is the expected number of properties (or expected total number of elements if some properties are arrays) in the absence of missing values. This ensures that the typical magnitude of computed distances remains unchanged when some properties are missing. Specifically, it ensures that distances to data records with missing properties are not unusually small as an artifact of the missing data. This option does not apply if &quot;Scale by Number of Dimensions&quot; is selected, as that option already corrects for missing properties implicitly.
&lt;/ul&gt;
If none of the above options are selected, no rescaling is applied to the data. This is appropriate if all numeric properties already have the same characteristic scale or represent components of a vector in the same space (e.g., spatial x, y, z coordinates), and no properties are missing from any of the data records.
&lt;p&gt;
&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;If you specify more than one fingerprint property to use in the distance calculation, then the &quot;Scale by Number of Dimensions&quot; and &quot;Correct for Missing Values&quot; options apply to the fingerprint component of distance as well as to the numeric component. Specifically, Pfp and Pfp&lt;sub&gt;exp&lt;/sub&gt; are used in the scaling of the summed fingerprint distances, where Pfp is the number of fingerprint properties and Pfp&lt;sub&gt;exp&lt;/sub&gt; is the expected number.
&lt;li&gt;&quot;Scale by Number of Dimensions&quot; also applies to fingerprint distances when you specify Euclidean or Manhattan as the &lt;i&gt;Fingerprint Distance Function&lt;/i&gt;. In this case, the distance for each fingerprint property is divided by C (Manhattan) or C&lt;sup&gt;1/2&lt;/sup&gt; (Euclidean), where C is the total count of features over both data records (i.e., the &quot;or&quot; bit count).
&lt;/ul&gt;</sci:help>
						<sci:legalval selected="true">Mean-Center and Scale</sci:legalval>
						<sci:legalval selected="true">Scale by Number of Dimensions</sci:legalval>
						<sci:legalval>Correct for Missing Values</sci:legalval>
					</sci:arg>
					<sci:arg name="Fingerprint Distance Function" type="StringType" required="false" visibility="visible" multi="false" expanded="true" uimpl="false">
						<sci:help>For fingerprint properties, specifies the function to use for computing the distance between two data records. This distance is used by the built model to determine the closest training samples when you specify that the model should output the closest samples.

&lt;p&gt;The expressions for the following distance functions assume that each record has a single fingerprint property, with quantities SA, SB, and SC defined as follows:
&lt;p&gt;
SA: Number of fingerprint features common to both records. (Number of &quot;and&quot; bits.)&lt;br&gt;
SB: Number of features present in the first record but absent from the second.&lt;br&gt;
SC: Number of features present in the second record but absent from the first.
&lt;p&gt;
Options and their mathematical definitions are:
&lt;ul&gt;
&lt;li&gt;Cosine: Distance (D) is 1 minus the cosine of the angle between the two fingerprints when treated as binary vectors (vectors whose elements must be 0 or 1): D = 1 &amp;minus; SA / [(SA + SB)(SA + SC)]&lt;sup&gt;1/2&lt;/sup&gt;. Possible values range from 0 to 1.
&lt;li&gt;Dice: Distance is 1 minus the number of &quot;and&quot; bits scaled by the mean number of &quot;on&quot; bits for both records: D = 1 &amp;minus; 2 SA / (2SA + SB + SC). Possible values range from 0 to 1.
&lt;li&gt;Tanimoto: Distance is 1 minus the number of &quot;and&quot; bits scaled by the number of &quot;or&quot; bits: D = 1 &amp;minus; SA / (SA + SB + SC). Possible values range from 0 to 1.
&lt;li&gt;Euclidean: Distance is the square-root of the number of &quot;on&quot; bits in the squared difference between the two fingerprints when treated as vectors. For a binary fingerprint, this can be expressed as: D = (SB + SC)&lt;sup&gt;1/2&lt;/sup&gt;. Possible values range from 0 to the total number of features possible in a single fingerprint.
&lt;li&gt;Manhattan: Distance is the number of &quot;on&quot; bits in the absolute difference between the two fingerprints when treated as vectors. For a binary fingerprint, this can be expressed as: D = SB + SC. Possible values range from 0 to the total number of features possible in a single fingerprint.
&lt;/ul&gt;
&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;When more than one fingerprint property is present, a separate distance value is computed for each, and the results are summed or averaged (depending on the &lt;i&gt;Numeric Scaling&lt;/i&gt; options).
&lt;li&gt;If you specify both numeric and fingerprint properties to use in the distance calculations, separate contributions to the distance are computed for the two types of property. The overall distance is the average of the two: D = 0.5(D&lt;sub&gt;numeric&lt;/sub&gt; + D&lt;sub&gt;FP&lt;/sub&gt;). Take care to specify appropriate &lt;i&gt;Numeric Scaling&lt;/i&gt; options for this case in order to prevent one or the other of these distance contributions from dominating.
&lt;/ul&gt;
&lt;b&gt;See Also:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;For more on the distance measures described here, see: &lt;a href=&quot;javascript:DoLink(&apos;http://www.dddc.ac.cn/embo04/material/Willett_1998.pdf&apos;)&quot;&gt; P. Willett, J.M. Barnard, and G.M. Downs, &quot;Chemical Similarity Searching,&quot; &lt;i&gt;J. Chem. Inf. Comput. Sci.&lt;/i&gt;, &lt;b&gt;38&lt;/b&gt;, 983 (1998)&lt;/a&gt;. Also see: J.C. Gower, &quot;Measures of Similarity, Dissimilarity, and Distance,&quot; in &lt;i&gt;Encyclopedia of Statistical Sciences&lt;/i&gt;, S. Kotz, N.L. Johnson, Read C.B., eds., Vol. 5, p. 397 (1985).
&lt;/ul&gt;
</sci:help>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, select &quot;Save Training Properties&quot; as one of the Learn Options&apos;);

contains(Parameter(&apos;Learn Options&apos;), &apos;Save Training Properties&apos;);</sci:enabledscript>
						<sci:legalval>Cosine</sci:legalval>
						<sci:legalval>Dice</sci:legalval>
						<sci:legalval selected="true">Tanimoto</sci:legalval>
						<sci:legalval>Euclidean</sci:legalval>
						<sci:legalval>Manhattan</sci:legalval>
					</sci:arg>
					<sci:arg name="Model Domain Fingerprint" type="StringType" required="false" visibility="visible" multi="false" expanded="true" uimpl="false">
						<sci:help>Name of fingerprint property to use in order to determine whether a test sample is within the applicability domain of the learned model. Any features seen in a test sample but not in any training sample will be noted in the &lt;i&gt;ModelName&lt;/i&gt;_Applicability property when making predictions with the model.
&lt;p&gt;
Select None if you do not wish to track fingerprint features.</sci:help>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, select &quot;Track Property Ranges&quot; or &quot;Perform OPS Analysis&quot; as one of the Learn Options&apos;);

contains(Parameter(&apos;Learn Options&apos;), &apos;Track Property Ranges&apos;) or contains(Parameter(&apos;Learn Options&apos;), &apos;Perform OPS Analysis&apos;)</sci:enabledscript>
						<sci:legalval>None</sci:legalval>
						<sci:legalval>FCFP_0</sci:legalval>
						<sci:legalval selected="true">FCFP_2</sci:legalval>
						<sci:legalval>FCFP_4</sci:legalval>
						<sci:legalval>FCFP_6</sci:legalval>
						<sci:legalval>ECFP_0</sci:legalval>
						<sci:legalval>ECFP_2</sci:legalval>
						<sci:legalval>ECFP_4</sci:legalval>
						<sci:legalval>ECFP_6</sci:legalval>
					</sci:arg>
					<sci:arg name="Additional Properties" type="StringType" required="false" visibility="visible" multi="false" uimpl="false">
						<sci:help>Comma-separated list of properties to be saved with the model when &quot;Save Training Properties&quot; is selected as one of the &lt;i&gt;Learn Options&lt;/i&gt;. These properties are in addition to those used to build the model, as specified by &lt;i&gt;UseProperties&lt;/i&gt;. When making predictions with the model, the values of the &lt;i&gt;Additional Properties&lt;/i&gt; are shown for the closest training samples when you select the &quot;_ClosestSample&quot; option from the list of available outputs on the model component.
&lt;p&gt;
&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;In the model output with the &quot;_ClosestSample&quot; option, each property in &lt;i&gt;Additional Properties&lt;/i&gt; is renamed to &lt;i&gt;ModelName&lt;/i&gt;_Closest_&lt;i&gt;PropertyName&lt;/i&gt; where &lt;i&gt;PropertyName&lt;/i&gt; is the original name of the property. 
&lt;li&gt;If you set &lt;i&gt;Number of Closest&lt;/i&gt; on the model component to a value greater than 1, the additional property values are appended to form arrays if possible. If this is not possible (e.g., for a binary image property), only the property value for the single closest sample is output.
&lt;/ul&gt;
</sci:help>
						<sci:enabledscript>SetDisabledDetails(&apos;To enable, select &quot;Save Training Properties&quot; as one of the Learn Options&apos;);

contains(Parameter(&apos;Learn Options&apos;), &apos;Save Training Properties&apos;)</sci:enabledscript>
					</sci:arg>
					<sci:arg name="Additional Options" type="GroupType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>Contains less commonly used parameters</sci:help>
						<sci:member>ShowRInputOutput</sci:member>
						<sci:member>Destination Folder</sci:member>
						<sci:member>PlotWidth</sci:member>
						<sci:member>PlotHeight</sci:member>
						<sci:member>Convert Fingerprints To</sci:member>
						<sci:member>Seed</sci:member>
						<sci:member>Num Threads</sci:member>
					</sci:arg>
					<sci:arg name="Seed" type="LongType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>Seed for random number generator</sci:help>
						<sci:value>12345</sci:value>
					</sci:arg>
					<sci:arg name="Num Threads" type="LongType" required="false" visibility="visible" multi="false">
						<sci:help>Number of CPU threads to use when building model. A value equal to the number of cores on the machine gives the best results.</sci:help>
						<sci:value>4</sci:value>
					</sci:arg>
					<sci:arg name="Convert Fingerprints To" type="StringType" required="false" visibility="visible" multi="false" expanded="true" uimpl="false">
						<sci:help>Specifies the format into which fingerprints are to be transformed in order to be compatible with the R data frame format.  Options are:
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed-Length Array of Bits: Fingerprints are &quot;folded&quot; to a smaller size given by &lt;i&gt;Fixed Length&lt;/i&gt;, with each member of the fixed length array equal to 0 or 1.  For each &quot;on&quot; bit B in the original fingerprint, the array element whose index is B modulo L is set to 1, where L is the fixed length.
&lt;li&gt;Fixed-Length Array of Counts: Fingerprints are &quot;folded&quot; to a smaller size given by &lt;i&gt;Fixed Length&lt;/i&gt;, with each member of the fixed length array equal to 0 or greater.  For each &quot;on&quot; bit B in the original fingerprint, the value of the array element whose index is B modulo L is incremented by 1.
&lt;/ul&gt;</sci:help>
						<sci:member>Fixed Length</sci:member>
						<sci:legalval selected="true">Fixed-Length Array of Bits</sci:legalval>
						<sci:legalval>Fixed-Length Array of Counts</sci:legalval>
					</sci:arg>
					<sci:arg name="Fixed Length" type="LongType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>If Convert Fingerprints To is given a fixed-length type, then this is the fixed-length.  Bits larger than this length are folded into this range using a mod operation.</sci:help>
						<sci:value>2024</sci:value>
					</sci:arg>
					<sci:arg name="PlotWidth" type="LongType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>Width in pixels of any plots produced by this component.  Use the Set R Default Options component for additional plot settings.</sci:help>
						<sci:value>600</sci:value>
					</sci:arg>
					<sci:arg name="PlotHeight" type="LongType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>Height in pixels of any plots produced by this component.  Use the Set R Default Options component for additional plot settings.</sci:help>
						<sci:value>600</sci:value>
					</sci:arg>
					<sci:arg name="ShowRInputOutput" type="StringType" required="false" visibility="visible" multi="true" expanded="true">
						<sci:help>Specifies R input or output to display in Notepad. Options are:
&lt;ul&gt;
&lt;li&gt;Script: Displays the R script generated by this component for execution in R.
&lt;li&gt;StdOutput: Displays the &quot;standard output&quot; from R. This includes the script as executed in R and any output or errors from R.
&lt;/ul&gt;
</sci:help>
						<sci:legalval>Script</sci:legalval>
						<sci:legalval>StdOutput</sci:legalval>
					</sci:arg>
					<sci:arg name="Destination Folder" type="StringType" required="true" visibility="visible" multi="false">
						<sci:help>Name of component database folder in which the learned model is to be saved.</sci:help>
						<sci:value>$(Username)/LearnedProperties/R Models</sci:value>
					</sci:arg>
					<sci:arg name="DeclareLocal" type="TextType" required="false" visibility="visible" multi="false" expanded="true" legalvalsenforced="false" implbase="{C9F1A065-ADF1-4FA7-987E-201C6F365EAB}" uimpl="true">
						<sci:value>ExtraModelParameters,RExitStatus,PlotName,RFunctionsFile,pass,ShowRScript,ShowRStdOutput,i,s,calcProps,FitSummary,RModelBin,DoSummary,CalculatedProperties,PointInfoText,DoPlot,RParScript,RPlotWidth,RPlotHeight,STRProtectedSection,DoImportancePlot,DoImportance,RFfpname,proptokens</sci:value>
					</sci:arg>
					<sci:arg name="Parallel Processing Options" type="StringType" required="false" visibility="visible" multi="false" uimpl="true">
						<sci:help>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This is a prototype feature, which we are making available
because we feel it is a useful technique to improve data throughput speeds in many situations. In particular, it can help to optimize resource use on multi-CPU and multi-core machines and on server clusters.
We welcome your feedback on scenarios where it works well, scenarios where it does not, and any other opinions you have about this utility.
&lt;/p&gt;&lt;hr/&gt;&lt;p&gt;
When set to True, this set of options allow the subprotocol to execute in parallel on one or more independent Pipeline Pilot servers, running local or remote.  Additional parameters control the number of data records to send in each process batch, the list of Pipeline Pilot servers to use, the number of protocol processes that can be executed on each server, and whether to preserve the order of the processed data records.
&lt;/p&gt;&lt;p&gt;
Use this option judiciously, since it will not increase throughput in all circumstances. In general, it will yield improved performance when the parallelization benefits outweigh the data transfer overhead for the specified batch size.
&lt;/p&gt;&lt;p&gt;
For more information on the parallel subprotocol options, see &lt;a href=&quot;javascript:DoLink(&apos;scihelpdocs/user/subprots/subprot_parallel_processing.htm&apos;)&quot;&gt;Parallel Processing Subprotocols&lt;/a&gt;.
&lt;/p&gt;
</sci:help>
						<sci:member>Parallel Processing Options Batch Size</sci:member>
						<sci:member>Parallel Processing Options Server</sci:member>
						<sci:member>Parallel Processing Options Preserve Order</sci:member>
						<sci:value>$(R_Run_Remote)</sci:value>
					</sci:arg>
					<sci:arg name="Parallel Processing Options Batch Size" type="LongType" required="true" visibility="visible" multi="false" uimpl="true">
						<sci:help>The number of records to send to the remote server(s) for each subprotocol execution.  In general, performance is optimized when the amount of time required to process each batch is at least 10 seconds (note that this can vary depending on the characteristics of the remote server&apos;s hardware)</sci:help>
						<sci:enabledscript>SetDisabledDetails(&quot;This parameter is only applicable if &apos;Parallel Processing Options&apos; is &apos;True&apos;&quot;);
Parameter(&apos;Parallel Processing Options&apos;);</sci:enabledscript>
						<sci:value>100000000</sci:value>
					</sci:arg>
					<sci:arg name="Parallel Processing Options Server" type="StringType" required="false" visibility="visible" multi="true" expanded="true" legalvalsenforced="false" uimpl="true">
						<sci:help>&lt;p&gt;
Comma separated list of Pipeline Pilot servers on which to execute the parallel subprotocol.  The server names should be in the same format as the Pipeline Pilot Client&apos;s change server dialog (server-name:port-number).
&lt;/p&gt;&lt;p&gt;
Specifying &lt;b&gt;localhost&lt;/b&gt; as a server will cause the subprotocol to use its own Pipeline Pilot server.  This can be helpful on multi-CPU/multi-core systems (where the subprotocol jobs are spawned on the same machine) and Pipeline Pilot Linux clusters (where &apos;localhost&apos; requests spawning the subprotocol jobs on the same cluster).
&lt;/p&gt;</sci:help>
						<sci:member>Parallel Processing Options Server Processes</sci:member>
						<sci:validscript>SetInvalidDetails(&apos;This parameter is required.&apos;);
Parameter() ne &apos;&apos;;</sci:validscript>
						<sci:enabledscript>SetDisabledDetails(&quot;This parameter is only applicable if &apos;Parallel Processing Options&apos; is &apos;True&apos;&quot;);
Parameter(&apos;Parallel Processing Options&apos;);</sci:enabledscript>
						<sci:value>$(R_Server)</sci:value>
					</sci:arg>
					<sci:arg name="Parallel Processing Options Server Processes" type="StringType" required="false" visibility="visible" multi="false" uimpl="true">
						<sci:help>Comma separated list of maximum number of batches that can be simultaneously executed on each remote server.  The number of entries in this parameter must equal the number of servers. If &apos;*&apos; is specified as the number of processes, then that server will only launch as many batches as the administrator of the remote server has permitted.</sci:help>
						<sci:validscript>/* Server Processes must have the same number of comma separated entries as the Server parameter and must have a value*/
#processes := parameter();
expand(&apos;,&apos;, #processes);
#servers := parameter(&apos;Parallel Processing Options Server&apos;);
expand(&apos;,&apos;, #servers);

if (numvalues(#processes) == 0) then
	SetInvalidDetails(&apos;This parameter is required.&apos;);
else
	SetInvalidDetails(&apos;The number of server processes (&apos; . numvalues(#processes) . &apos;) must equal the number of servers (&apos; . numvalues(#servers) . &apos;).&apos;);
end if;
numvalues(#processes) &gt; 0 and numvalues(#processes) == numvalues(#servers);</sci:validscript>
						<sci:enabledscript>SetDisabledDetails(&quot;This parameter is only applicable if &apos;Parallel Processing Options&apos; is &apos;True&apos;&quot;);
Parameter(&apos;Parallel Processing Options&apos;);</sci:enabledscript>
						<sci:value>1</sci:value>
					</sci:arg>
					<sci:arg name="Parallel Processing Options Preserve Order" type="BoolType" required="false" visibility="visible" multi="false" uimpl="true">
						<sci:help>Whether to preserve the order of the data as it enters and leaves the remote subprotocol.</sci:help>
						<sci:enabledscript>SetDisabledDetails(&quot;This parameter is only applicable if &apos;Parallel Processing Options&apos; is &apos;True&apos;&quot;);
Parameter(&apos;Parallel Processing Options&apos;);</sci:enabledscript>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval selected="true">ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true"/>
					<sci:arg name="ProtocolAutoLayout" type="BoolType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>Protocol AutoLayout</sci:help>
						<sci:value>1</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false" expanded="true">
						<sci:value>LEARNNODE</sci:value>
					</sci:arg>
					<sci:arg name="ComponentRevision" type="LongType" required="true" visibility="nevershow" multi="false" expanded="true">
						<sci:help>Component Revision</sci:help>
						<sci:value>100</sci:value>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>The component this component is based upon.</sci:help>
						<sci:value>SubProtocol</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:value>{B0EAC4A8-BD46-48FA-9576-E2879B54A29C}</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:value>1530 -95</sci:value>
					</sci:arg>
					<sci:arg name="ProtocolScale" type="LongType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>Protocol Scale</sci:help>
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ByReference" type="BoolType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>By Ref</sci:help>
						<sci:value>1</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true" expanded="true">
						<sci:value>100</sci:value>
						<sci:value>Builds an extreme gradient boosting model using R package &quot;xgboost&quot;</sci:value>
						<sci:value>The XGBoost method can build accurate regression or classification models in a fraction of the time taken by many other machine learning methods. However, the following parameters may require tuning in order to yield the best model:
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;Max Trees&lt;/i&gt; (Note: When using cross-validation, setting a sufficiently large values of &lt;i&gt;Max Trees&lt;/i&gt; allows automatic tuning in one pass.)
&lt;li&gt;&lt;i&gt;Learning Rate&lt;/i&gt;
&lt;li&gt;&lt;i&gt;Max Depth&lt;/i&gt;
&lt;li&gt;&lt;i&gt;Data Fraction&lt;/i&gt;
&lt;li&gt;&lt;i&gt;Descriptor Fraction&lt;/i&gt;
&lt;/ul&gt;
The last four parameters allow you to comma-separated lists of values oover which to tune. &lt;i&gt;Booster&lt;/i&gt; and &lt;i&gt;Dropout Fraction&lt;/i&gt; might require tuning as well, though their default values generally yield good models. To optimize these or other parameters, use &lt;a href=&quot;javascript:DoLink(&apos;{1FD83ABD-D6E8-4B1D-895B-BEEFB000B17E}&apos;)&quot;&gt;Create Validation Learner&lt;/a&gt; to create a validation learner component based on this one.
&lt;p&gt;
The model is built for either a continuous or categorical property specified by &lt;i&gt;Name&lt;/i&gt;, based on a set of properties specified by &lt;i&gt;UseProperties&lt;/i&gt;.  Use &lt;i&gt;TypeOfPropertyToLearn&lt;/i&gt; to specify whether the property is continuous or categorical.
&lt;p&gt;
Output is a single data record containing one or both of the following, according to the value of &lt;i&gt;ROutput&lt;/i&gt;:
&lt;ul&gt;
&lt;li&gt;FitSummary: a summary of the fit. You can view the summary with the &lt;a href=&quot;javascript:DoLink(&apos;{522F4A0B-DD0C-4C26-83DD-29A7B09F4461}&apos;)&quot;&gt;Notepad Viewer&lt;/a&gt;.
&lt;li&gt;FitPlot: a plot of the fitted property values against the actual values, and a plot of the residuals for a continuous response property, or a ROC plot of the true positive versus false positive rate for a categorical property. You can view the plots with the &lt;a href=&quot;javascript:DoLink(&apos;{45979297-7C23-4374-BE33-1424E90A09A6}&apos;)&quot;&gt;R Plot Viewer&lt;/a&gt; or include it in a report using &lt;a href=&quot;javascript:DoLink(&apos;{18EC3917-FF6E-4031-A70C-5C9E94335D50}&apos;)&quot;&gt;Image from Data&lt;/a&gt; in the Reporting Collection.
&lt;/ul&gt;
Once the model has been fitted, a new component with a name given by &lt;i&gt;LearnedPropertyName&lt;/i&gt; is created on your user tab, in the folder specified by &lt;i&gt;Destination Folder&lt;/i&gt;.  This component contains the fitted model and can be used to make predictions for new  sets of data.  The output produced by the model component is a property whose name is also given by &lt;i&gt;LearnedPropertyName&lt;/i&gt; and contains the predicted numerical response value for each input data record if the &lt;i&gt;Name&lt;/i&gt; property is continuous, or the predicted class (category) and the score for each possible class if it is categorical. 
&lt;p&gt;
&lt;b&gt;See Also:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;For more on the XGBoost method, see &lt;a href=&quot;javascript:DoLink(&apos;http://xgboost.readthedocs.io/en/latest/&apos;)&quot;&gt;http://xgboost.readthedocs.io/en/latest/&lt;/a&gt;,
&lt;li&gt;To evaluate a classification model against a test set of data, use the &lt;a href=&quot;javascript:DoLink(&apos;{2E590EF8-6E3A-4554-A131-8D3AD568DFDA}&apos;)&quot;&gt;ROC Plot Viewer&lt;/a&gt; or &lt;a href=&quot;javascript:DoLink(&apos;{6F75B0E4-F5FF-4490-88CC-F53D2E3316E9}&apos;)&quot;&gt;Enrichment Plot Viewer&lt;/a&gt;.
&lt;li&gt;To display ROC plots and compare ROC scores between multiple classification models, use the &lt;a href=&quot;javascript:DoLink(&apos;{27910028-CF29-49E9-B23C-EF951C8B184A}&apos;)&quot;&gt;Classification Model Evaluation Viewer&lt;/a&gt;. If your data contain more than two classes, this viewer reports a composite ROC score based on an average over all of the classes in the data, in addition to the individual components contributing to the average.
&lt;li&gt;To display plots of actual-versus-predicted values and compare RMS error between multiple regression models, use the &lt;a href=&quot;javascript:DoLink(&apos;{677F9529-03FC-4A18-8619-03A0F657F3B1}&apos;)&quot;&gt;Regression Model Evaluation Viewer&lt;/a&gt;.
&lt;li&gt;&lt;a href=&quot;javascript:DoLink(&apos;sciapps/scitegic/rstats/docs/r_stats.pdf&apos;)&quot;&gt;R Statistics Components User Guide &lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;javascript:DoLink(&apos;http://www.r-project.org/&apos;)&quot;&gt;R Project for Statistical Computing Web Site&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;javascript:DoLink(&apos;http://finzi.psych.upenn.edu/search.html&apos;)&quot;&gt;R Help Search Web Site&lt;/a&gt;
&lt;/ul&gt;
</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value>Data to be learned</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value>Model summary and plots</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value>Records with missing or invalid values</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>The server version when this component was registered</sci:help>
						<sci:value>18.1.0.1481</sci:value>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true"/>
					<sci:arg name="Protocol Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>Protocol Sticky Notes</sci:help>
					</sci:arg>
					<sci:arg name="ProtocolScale2" type="LongType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>Protocol Scale</sci:help>
						<sci:value>100</sci:value>
					</sci:arg>
					<sci:arg name="Protocol Options" type="StringType" required="false" visibility="nevershow" multi="true" expanded="true">
						<sci:help>Protocol Options</sci:help>
						<sci:legalval selected="true">Make Shortcut by Default</sci:legalval>
						<sci:legalval>Cant Replace With Copy</sci:legalval>
						<sci:legalval>Cant Open</sci:legalval>
					</sci:arg>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/rstats</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Thu Jul 06 10:27:24 2017</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false" expanded="true">
						<sci:value>Learn R XGBoost Model</sci:value>
					</sci:arg>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>27</sci:value>
					</sci:arg>
					<sci:arg name="SubProtocolMadeLinkIntoCopy" type="BoolType" required="false" visibility="nevershow" multi="false">
						<sci:help>Subprotocol Made Link Into Copy</sci:help>
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Analysis and Statistics\R Statistics\Learners\Learn R XGBoost Model</sci:value>
					</sci:arg>
				</sci:component>
				<sci:protocol/>
			</sci:data>
			<sci:data object="SciTegic.MDLSDReader.1">
				<sci:component name="SD Reader" version="2">
					<sci:arg name="Source" type="URLType" required="true" visibility="visible" multi="false" expanded="true">
						<sci:help>The file or URL source to read</sci:help>
						<sci:member>Maximum</sci:member>
						<sci:member>SourceTag</sci:member>
						<sci:member>Keep Properties</sci:member>
						<sci:member>UTF-8 Auto Detect</sci:member>
					</sci:arg>
					<sci:arg name="Maximum" type="LongType" required="false" visibility="visible" multi="false">
						<sci:help>The maximum number of data records to read (all if value is empty)</sci:help>
					</sci:arg>
					<sci:arg name="SourceTag" type="StringType" required="true" visibility="visible" multi="false">
						<sci:help>&lt;p&gt;The type of tag to create to identify the source of data records. A property called 
&lt;b&gt;SourceTag&lt;/b&gt; is created and holds the value indicated.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;None&lt;/b&gt;: 
No SourceTag property is created and any existing ones are removed.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Filename&lt;/b&gt;: 
The name of the file read.&lt;/li&gt;&lt;li&gt;&lt;b&gt;FilenameAndExtension&lt;/b&gt;: The name of the 
file read with its file extension.&lt;/li&gt;&lt;li&gt;&lt;b&gt;FullFilename&lt;/b&gt;: The name of the 
file read, including the directory path.&lt;/li&gt;&lt;li&gt;&lt;b&gt;ZipFilename&lt;/b&gt;: When reading 
a compressed zip file, the filename within the compressed archive.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Number&lt;/b&gt;: 
When multiple files are read in this component, they are numbered 1,2,3...&lt;/li&gt;&lt;li&gt;&lt;b&gt;Letter&lt;/b&gt;: 
When multiple files are read in this component, they are lettered A, B, C...&lt;/li&gt;&lt;li&gt;&lt;b&gt;KeepCurrent&lt;/b&gt;: 
Keeps the current value of SourceTag.&lt;/li&gt;&lt;/ul&gt;</sci:help>
						<sci:legalval selected="true">None</sci:legalval>
						<sci:legalval>Filename</sci:legalval>
						<sci:legalval>FilenameAndExtension</sci:legalval>
						<sci:legalval>FullFilename</sci:legalval>
						<sci:legalval>ZipFilename</sci:legalval>
						<sci:legalval>Number</sci:legalval>
						<sci:legalval>Letter</sci:legalval>
						<sci:legalval>KeepCurrent</sci:legalval>
					</sci:arg>
					<sci:arg name="Keep Properties" type="PropertyPreviewType" required="false" visibility="visible" multi="false">
						<sci:help>A list of properties the reader should retain for each data record that is output. If a value is not defined, retains all properties. If the parameter contains the value &quot;-&quot; (minus sign), properties are not retained.</sci:help>
					</sci:arg>
					<sci:arg name="UTF-8 Auto Detect" type="BoolType" required="false" visibility="visible" multi="false" legalvalsenforced="false" uimpl="false">
						<sci:help>&lt;p&gt;UTF-8 is a type of character encoding used to represent international characters with multiple bytes whereas basic Latin characters remain as a single byte.  Files can be stored with a Byte Order Mark (BOM) to indicate that the type of character encoding.&lt;/p&gt;
&lt;p&gt;When reading files that do not have a BOM, this parameter allows the reader to attempt to automatically detect UTF-8 encodings and convert as needed.  However, be aware that automatic detection is not always reliable.  In some cases, valid text stored in different character encodings can appear to be valid UTF-8.  In these cases, the automatic detection will result in garbled text.  When this occurs, you can consider using the &lt;a href=&quot;javascript:DoLink(&apos;{B0B1B56C-3DF6-444C-BB78-B43211188F63}&apos;)&quot;&gt;Binary Reader&lt;/a&gt; to read the file, then converting using the Pilotscript function &lt;b&gt;ConvertBytesToString&lt;/b&gt;&lt;/p&gt;</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="Additional Options" type="GroupType" required="false" visibility="visible" multi="false" legalvalsenforced="false">
						<sci:help>Contains less commonly used parameters</sci:help>
						<sci:member>ReadProperties</sci:member>
						<sci:member>PutNameInProperty</sci:member>
						<sci:member>ReadQueryInfo</sci:member>
						<sci:member>PutCommentInProperty</sci:member>
						<sci:member>SD Format Options</sci:member>
						<sci:member>Global Templates</sci:member>
					</sci:arg>
					<sci:arg name="SD Format Options" type="StringType" required="false" visibility="visible" multi="true">
						<sci:help>&lt;p&gt;Options available for the SD Reader:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Properties Can Contain $$$$:&lt;/b&gt;  By the CTFile standard, a property can contain a &apos;$$$$&apos;-line.  
Properties or data field values are terminated by a blank line.  Only then will the &apos;$$$$&apos;-line 
terminate the full data block.  Setting this option off will terminate the data block upon any read of 
a &apos;$$$$&apos;-line.  This option is available to provide compatibility with some 3rd Party SD files.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;One-space Lines Terminate Properties:&lt;/b&gt;  By the CTFile standard, properties or data fields values are 
terminated by a blank line. Selecting this option will terminate the data block when encountering a line 
containing a space as the only character in the line.  This option is available to provide compatibility 
with some 3rd Party SD files.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unwrap Long Property Lines:&lt;/b&gt;  By the CTFile standard, lines in property fields cannot exceed 200 characters.  When this option is selected and a property line of exactly 200 characters is found, the newline character will be ignored and property string will continue on the next line.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Read Unknown Stereo Parity:&lt;/b&gt;  When selected, the SD Reader will use the &apos;Atom Parity&apos; value (parity of 
&apos;3&apos;) to mark unknown stereo centers in 3D mol files.  This will leave these atoms marked as 
&apos;unknown stereo&apos; and will not calculate the stereo from the coordinates.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Complex Data Header Lines:&lt;/b&gt; Data header lines are the lines in the SD format that precede the actual data. They can contain the data field name (enclosed in angular brackets &lt;&gt;), the data field number (as DTn), the external registry number (enclosed in parentheses), and other optional information. When this parameter is set to False, only the data field name is parsed and used to set the corresponding property name. All the other information in the line is ignored. When the parameter is set to true, all the information is parsed. The property name is set from either the field name in &lt;&gt; or the DTn. If both are present the field name takes priority and the DTn number is saved as an additional property named &lt;b&gt;FieldName#DTn&lt;/b&gt;. The external registry number is saved as &lt;b&gt;FieldName#ExtRegNum&lt;/b&gt; and any other information is saved as &lt;b&gt;FieldName#OtherDataFieldInfo&lt;/b&gt;. When the molecules are written to an SD file, the data header lines are reconstructed from these properties. The default state of this parameter is False, as parsing, preserving, and eventually writing all the information in the data header lines can be costly, specially for SD files with many data fields.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Convert From H2 And H+ Atom Types:&lt;/b&gt; &apos;H2&apos; and &apos;H+&apos; are two non-standard element types that can be assigned to atoms by the BIOVIA Draw sketcher. They represent unattached Hydrogen (a Hydrogen molecule) and charged Hydrogen (a proton), respectively. When this parameter is selected, these atom types are converted to standard hydrogen atoms upon reading, with charges of 0 for H2 and +1 for H+. Otherwise, these atoms are read and perceived as unknown atom types, with &apos;H2&apos; and &apos;H+&apos; as the atom labels.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Convert Radicals To Pi Systems:&lt;/b&gt; When selected, pi bonds will be perceived between adjacent atoms marked with radicals and any adjacent metal atom.  Once pi bonds are perceived, subsequent exports will represent the pi bonds using the V3000 format and one-to-many coordination bonds (type 9) unless the writer&apos;s &lt;i&gt;Convert Pi Systems To Radicals&lt;/i&gt; option is used to convert the pi systems back. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Convert GEN+DAT to Polymer Repeat Units:&lt;/b&gt; When selected, this option will automatically convert input GEN sgroups with linked DAT sgroups having the special fieldname of &apos;rc&apos; and numeric or numeric range data internally into polymer repeat sgroups.  This usage is a special type of NONS (Non-Specific Structure) convention that was prototyped in previous releases.  Disabling this conversion will have a higher likelihood of producing a structure that can be registered into Direct databases. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Always Keep Enhanced Stereo:&lt;/b&gt; Preserves any enhanced stereo collections that are read in from V3000 MOL file.  When disabled, stereo structures will be checked to see if they can be represented more simply using only the Chiral Flag.  That is, structures with only ABS centers can be represented without enhanced stereo by setting the Chiral Flag on and structures with all centers in a single AND group can be represented without enhanced stereo by setting the Chiral Flag off.  Enhanced stereo collections that do not fit into the above cases are always preserved.&lt;/li&gt;
&lt;/ul&gt;</sci:help>
						<sci:legalval selected="true">Properties Can Contain $$$$</sci:legalval>
						<sci:legalval>One-space Lines Terminate Properties</sci:legalval>
						<sci:legalval selected="true">Unwrap Long Property Lines</sci:legalval>
						<sci:legalval>Read Unknown Stereo Parity</sci:legalval>
						<sci:legalval>Process Complex Data Header Lines</sci:legalval>
						<sci:legalval selected="true">Convert From H2 And H+ Atom Types</sci:legalval>
						<sci:legalval>Convert Radicals To Pi Systems</sci:legalval>
						<sci:legalval selected="true">Convert GEN+DAT to Polymer Repeat Units</sci:legalval>
						<sci:legalval>Always Keep Enhanced Stereo</sci:legalval>
					</sci:arg>
					<sci:arg name="ReadProperties" type="BoolType" required="true" visibility="visible" multi="false">
						<sci:help>Select True to read the properties for each molecule (in addition to the structures)</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="ReadQueryInfo" type="BoolType" required="true" visibility="visible" multi="false">
						<sci:help>If properties starting with &quot;QueryInfo&quot; are present, use them to set up query information on the atoms and bonds. (This is how, for example, SMARTS query information can be preserved when writing to an SD format file.) For molecules saved in MOL/SD format, this information only contains information that cannot be written out in the connection table.</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="PutNameInProperty" type="StringType" required="false" visibility="visible" multi="false">
						<sci:help>What to call the property that holds the name of each molecule</sci:help>
						<sci:value>Name</sci:value>
					</sci:arg>
					<sci:arg name="PutCommentInProperty" type="StringType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>What to call the property that holds the comment associated with each molecule</sci:help>
					</sci:arg>
					<sci:arg name="Global Templates" type="URLType" required="false" visibility="visible" multi="false">
						<sci:help>V3000 SD or MOL files containing template definitions for amino acid, nucleic acid or other residues or monomers. These templates can then be refered to by molecules read by the SD reader.&lt;p&gt;
The default template file included in the Chemistry collection, &lt;i&gt;data\Direct\Direct_templates.mol&lt;/i&gt; contains definitions for 22 amino acids and 8 DNA and RNA templates.</sci:help>
						<sci:value>data\HELM\SCSRtemplates.mol</sci:value>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval>ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval>ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="HasConvertPiSystemOption" type="BoolType" required="false" visibility="nevershow" multi="false" legalvalsenforced="false">
						<sci:help>Hidden flag specifying the presence of the &quot;Convert Radicals To Pi Systems&quot; option.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="AllowUnknownDoubleBondsFromCoordinates" type="BoolType" required="false" visibility="nevershow" multi="false">
						<sci:help>According to the CTfile specifications, the cis/trans character of double bonds with bond stereo set to zero is determined from the coordinates. This parameter controls whether or not to assign unknown bond stereo to double bonds for which the stereo could not be determined from the coordinates, either because there are no coordinates or because of colinearity issues.  When the parameter is set to False and the stereo could not be determined, no specific stereo configuration is assigned to the double bond, but it is not marked as unknown stereo.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/chemistry</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Wed Apr 06 11:41:13 2016</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>screening set</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:value>DOCUMENTNODE</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>{CA65B896-4FE6-4E3A-B884-DC16B53B8D26}</sci:value>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The component this component is based upon.</sci:help>
						<sci:value>SD Reader</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>90 -520</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
						<sci:value>100</sci:value>
						<sci:value>Reads MOL (molecule CTAB) files and SD (structured data) files</sci:value>
						<sci:value>&lt;p&gt;Creates a molecular data record for each molecule represented in the &lt;i&gt;Source&lt;/i&gt; 
data file.  All properties contained in the file are read into the data records.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;This 
component can also read zipped (.zip) and URL-based files.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;See 
Also:&lt;/b&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;To write files in MOL or SD format, use the &lt;a href=&quot;javascript:DoLink(&apos;{DC8EE7B0-0620-42FE-944C-B4CD1E79480E}&apos;)&quot;&gt;SD 
Writer&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;To convert a molecule to and from between text properties in CTAB 
format, use &lt;a href=&quot;javascript:DoLink(&apos;{E622FBD9-9FA9-451A-A102-1800B5F28B6D}&apos;)&quot;&gt;Molecule 
to CTAB&lt;/a&gt; and &lt;a href=&quot;javascript:DoLink(&apos;{7D354B65-DDD8-4EA4-83A7-21501A8A6852}&apos;)&quot;&gt;Molecule 
from CTAB&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Other related CTFile format file readers include &lt;a href=&quot;javascript:DoLink(&apos;{169AB4E5-A470-477B-AA65-50464411036C}&apos;)&quot;&gt;RG 
Reader&lt;/a&gt;, &lt;a href=&quot;javascript:DoLink(&apos;{036731AA-0015-4606-9750-7D9D020F21C8}&apos;)&quot;&gt;RXN 
Reader&lt;/a&gt; and &lt;a href=&quot;javascript:DoLink(&apos;{55431CCB-06EA-4741-B95B-633C877E3E9B}&apos;)&quot;&gt;RD 
Reader&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;</sci:value>
						<sci:value>None</sci:value>
						<sci:value/>
						<sci:value>Molecule</sci:value>
						<sci:value>Data fields in the SD file will be added to the property fields</sci:value>
						<sci:value>None</sci:value>
						<sci:value/>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>%VERSION 3%</sci:value>
						<sci:value>1010 -495 592 202</sci:value>
						<sci:value>255 255 0</sci:value>
						<sci:value>Read screening compounds (sdf)</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The server version when this component was registered</sci:help>
						<sci:value>17.1.0.59</sci:value>
					</sci:arg>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>10</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Chemistry\Data Access and Manipulation\Readers\SD Reader</sci:value>
					</sci:arg>
				</sci:component>
			</sci:data>
			<sci:data object="Scitegic.ShortcutComponent.1">
				<sci:component name="Shortcut Component" version="2">
					<sci:arg name="Component Name" type="StringType" required="true" visibility="visible" multi="false" expanded="true">
						<sci:help>Name of the component which will process the data. You can give either a short name such as &quot;alogpmodel&quot;, or a fully-specified name such as &quot;myname/LearnedProperties/alogpmodel&quot;, or
evan a universal identifier (GUID) such as &quot;{ABCDDCBA-CC5A-4517-8D55-6BB4D53DE12E}&quot;.

If a name is given, the search is conducted starting on the user&apos;s tab, then the Protocols tab, then the Components tab.</sci:help>
						<sci:member>Use Parameters</sci:member>
						<sci:value>QSAR_SelectivityWindow_regression</sci:value>
					</sci:arg>
					<sci:arg name="Use Parameters" type="StringType" required="false" visibility="visible" multi="false" expanded="true">
						<sci:help>Define whether to pass on the parameters from this component to the target component or to extract the parameter names and values from the Parameter Settings value.</sci:help>
						<sci:member>Parameter Settings</sci:member>
						<sci:legalval selected="true">From This Component</sci:legalval>
						<sci:legalval>From Parameter Settings</sci:legalval>
					</sci:arg>
					<sci:arg name="Parameter Settings" type="StringType" required="false" visibility="visible" multi="true">
						<sci:help>&lt;p&gt;A list of parameter settings to be applied to the target component, specified as an array. Each item in the array is one parameter setting, formatted as:&lt;/p&gt;
&lt;pre style=&quot;color:brown&quot;&gt;
&amp;lt;name&amp;gt;=&amp;lt;value&amp;gt;
&lt;/pre&gt;
Example:
&lt;pre style=&quot;color:brown&quot;&gt;
Property1=Total
Property2=NumSamples
Statistic=Mean
&lt;/pre&gt;
&lt;h5&gt;Parameter Arrays&lt;/h5&gt;
&lt;p&gt;To define an array parameter value, simply repeat the parameter name for each array item.
&lt;/p&gt;
&lt;pre style=&quot;color:brown&quot;&gt;
Catalog Number=6753
City List=Rome
City List=Athens
City List=Lisbon
&lt;/pre&gt;
&lt;h5&gt;Parameter Metadata&lt;/h5&gt;
&lt;p&gt;
You can also define metadata values for a parameter on the component. To do this, use a ^^ indicator to identify the parameter/metadata name pair. In the following example, the Measurement parameter has two metadata items, named Unit and Precision:
&lt;pre style=&quot;color:brown&quot;&gt;
Measurement=1000
Measurement^^Unit=Float
Measurement^^Precision=6
&lt;/pre&gt;
&lt;h5&gt;Parameter Group Series&lt;/h5&gt;
&lt;p&gt;
In general, a parameter value defined in the &lt;i&gt;Parameter Settings&lt;/i&gt; list should match a named parameter that exists on the target component for the shortcut. If there is no match, the parameter value is ignored. The only exception is for ordered series of parameter groups. In this case, a new parameter can be created using a parameter in the base parameter group (number 1) as a template. In this example, the target component includes the following parameter group:
&lt;/p&gt;
&lt;pre style=&quot;color:brown&quot;&gt;
List 1
List 1 Language
List 1 Format
&lt;/pre&gt;
The parameter list for the shortcut component might be:
&lt;pre style=&quot;color:brown&quot;&gt;
List 1 Language=English
List 1 Format=Left
List 2=
List 2 Language=Spanish
List 2 Format=Flow
List 3=
List 3 Language=French
List 3 Format=Center
&lt;/pre&gt;
&lt;p&gt;The first 2 items above simply define values for existing parameters in the base parameter group. The remaining items define two new parameter groups (group2 and group 3) with their values. 
&lt;/p&gt;&lt;p&gt;
You could also define metadata on the new parameters:
&lt;/p&gt;
&lt;pre style=&quot;color:brown&quot;&gt;
List 2=
List 2^^Filename=esp.txt
List 2 Language=Spanish
List 2 Format=Flow
List 2 Format^^Style=Bold
&lt;/pre&gt;</sci:help>
						<sci:enabledscript>SetDisabledDetails(
	       &apos;To enable &apos;.ParameterName().&apos;, set Use Parameters to &quot;From Parameter Settings&quot;&apos;);
	Parameter(&apos;Use Parameters&apos;) eq &apos;From Parameter Settings&apos;;</sci:enabledscript>
					</sci:arg>
					<sci:arg name="Protect Globals" type="StringType" required="false" visibility="visible" multi="false">
						<sci:help>Controls whether to protect global values from change by the referenced component. Options are:
&lt;ul&gt;
&lt;li&gt;Don&apos;t Protect: allows the referenced component to access and change any globals. 
&lt;li&gt;Use Copy: allows the referenced component to access a copy made of the globals 
at initialization time. It may change these globals or create new ones, but these 
changes will not be transferred outside the component itself. 
&lt;li&gt;Use Copy of Read-Only: gives the referenced component a copy of read-only globals, 
but does not pass in writable globals. (Writable globals are more likely to be temporary 
in scope, and passing in information using them is not recommended. If you need the value of 
these, you may add parameters to the Shortcut Component to pass them in.)
You may create new globals, but they will remain local to the component; further, trying to assign an existing global 
will cause an error. These strict semantics help avoid unintentional problems caused by altering system-wide globals or using
temporary state-dependent globals.
&lt;/ul&gt; 

&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;WARNING:  If the reference component specified by &quot;Component Name&quot; is a subprotocol and the &quot;Protect Globals&quot; parameter is set to any value other than &quot;Don&apos;t Protect&quot;, the protocol will crash resulting in a &quot;No Server Process&quot; error.&lt;/li&gt;
&lt;/ul&gt;
</sci:help>
						<sci:member>Copy Hierarchical Data</sci:member>
						<sci:legalval selected="true">Don&apos;t Protect</sci:legalval>
						<sci:legalval>Use Copy</sci:legalval>
						<sci:legalval>Use Copy of Read-Only</sci:legalval>
					</sci:arg>
					<sci:arg name="Copy Hierarchical Data" type="BoolType" required="false" visibility="visible" multi="false" legalvalsenforced="false">
						<sci:help>&lt;p&gt;If set to true, any copy of the global data passed to the component will also contain any hierarchical properties. Otherwise, only properties defined on the root node will be passed.&lt;/p&gt;

&lt;p&gt;Has no effect unless the &apos;Use Copy&apos; or &apos;Use Read-Only Copy&apos; values of the &apos;Protect Globals&apos; parameter are selected.&lt;/p&gt;</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="Link to Any Ancestor" type="BoolType" required="false" visibility="visible" multi="false" legalvalsenforced="false" uimpl="true">
						<sci:help>If the component you are referring to has a link to a parent property, that property is expected to be on the parent protocol of the Shortcut Component. 

Sadly, sometimes additional layers of subprotocols might be added. In this case, setting Link to Any Ancestor to &quot;True&quot; causes the shortcut to walk all ancestor protocols looking for resolution of the links. </sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval selected="true">ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="Use New Parameter Copy" type="BoolType" required="false" visibility="nevershow" multi="false" legalvalsenforced="false">
						<sci:help>Whether to use the newer version of parameter copying</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/generic</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Tue Feb 10 11:18:55 2015</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>Shortcut Component</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:value>ComponentNode</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>{ABCDDCBA-CC5A-4517-8D55-6BB4D53DE12E}</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint2" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>Component Point</sci:help>
						<sci:value>370 -50</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>378 -520</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
						<sci:value>100</sci:value>
						<sci:value>Run the component specified by name.</sci:value>
						<sci:value>&lt;p&gt;
This component can act as a shortcut to any other component in the system.  This means that it is replaced at run time with a copy of the target component it refers to. By default, the target component is run with parameters copied from this component. Alternatively, a list of parameter settings can be specified in a single array parameter.
&lt;/p&gt;
&lt;p&gt;
(The &quot;Shortcut Component&quot; is so-named because its operation is quite similar to that of a shortcut of a subprotocol, which gets the newest copy at run-time and sets the parameters from the values on the shortcut.)
&lt;/p&gt;
&lt;p&gt;
The component can be useful when you wish to write a protocol that uses a component that may not yet be in the system, such as a learned model. Another use is component substitution at run time, based upon protocol parameters or earlier results in the protocol.
&lt;/p&gt;
&lt;p&gt;
You can adjust the component port configuration to match those of the target component ports.
&lt;/p&gt;
&lt;p&gt;
If a name is given, the search is conducted starting on the user&apos;s tab, then the Protocols tab, then the Components tab.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;WARNING:  If the reference component specified by &quot;Component Name&quot; is a subprotocol and the &quot;Protect Globals&quot; parameter is set to any value other than &quot;Don&apos;t Protect&quot;, the protocol will crash resulting in a &quot;No Server Process&quot; error.&lt;/li&gt;
&lt;/ul&gt;
</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>Generic</sci:value>
						<sci:value/>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The component this component is based upon</sci:help>
						<sci:value>Shortcut Component</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The server version when this component was registered</sci:help>
						<sci:value>9.5.0.788</sci:value>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>11</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Data Access and Manipulation\Utilities\Subprotocol Utilities\Shortcut Component</sci:value>
					</sci:arg>
				</sci:component>
			</sci:data>
			<sci:data object="SciTegic.EvaluateExpression.1">
				<sci:component name="Custom Manipulator (PilotScript)" version="2">
					<sci:arg name="Expression" type="ExpressionType" required="true" visibility="visible" multi="false" expanded="true" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>Expression (or list of expressions separated by semi-colons) to evaluate.</sci:help>
						<sci:member>Initial Expression</sci:member>
						<sci:member>Final Expression</sci:member>
						<sci:member>Keep Calculated Properties</sci:member>
						<sci:value>IF QSAR_SelectivityWindow_regression &gt;= 0.5 THEN
	predicted_class := &quot;A1&quot;;
ELSIF QSAR_SelectivityWindow_regression &lt;= -2 THEN
	predicted_class := &quot;A2A&quot;;
ELSIF QSAR_SelectivityWindow_regression &gt;= -1 AND QSAR_SelectivityWindow_regression &lt; 0.5 THEN
	predicted_class := &quot;dual&quot;;
END IF;</sci:value>
					</sci:arg>
					<sci:arg name="Initial Expression" type="ExpressionType" required="false" visibility="visible" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>&lt;p&gt;
This expression is executed only the first time data passes into the component.
&lt;p/&gt; 
Since there is no data available at initialization time, only expressions referencing local or global properties are allowed.
&lt;/p&gt;</sci:help>
					</sci:arg>
					<sci:arg name="Final Expression" type="ExpressionType" required="false" visibility="visible" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>&lt;p&gt;
This expression is executed only at finalization (after the last data passes out of the component).
&lt;p/&gt; 
Since there is no data available at finalization time, only expressions referencing local or global properties are allowed.
&lt;/p&gt;</sci:help>
					</sci:arg>
					<sci:arg name="Keep Calculated Properties" type="BoolType" required="true" visibility="visible" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>Adds any properties calculated in this component to a data record&apos;s property list.</sci:help>
						<sci:legalval selected="true">True</sci:legalval>
						<sci:legalval>False</sci:legalval>
					</sci:arg>
					<sci:arg name="ComponentAttributes" type="StringType" required="false" visibility="hidden" multi="true">
						<sci:help>Component Attributes</sci:help>
						<sci:legalval selected="true">ComponentTakesInput</sci:legalval>
						<sci:legalval selected="true">ComponentReturnsPass</sci:legalval>
						<sci:legalval>ComponentReturnsFail</sci:legalval>
						<sci:legalval>ComponentRunsLocal</sci:legalval>
					</sci:arg>
					<sci:arg name="OnDataTypeError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an expected data type is not found during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="OnGeneralError" type="StringType" required="true" visibility="hidden" multi="false">
						<sci:help>When an recoverable error occurs during processing:  
  Halt: Terminate the execution of the network
  Fail: Continue execution of the network, passing data out the Fail(red) port
  Pass: Continue execution of the network, passing data out the Pass(green) port</sci:help>
						<sci:legalval selected="true">Halt</sci:legalval>
						<sci:legalval>Fail</sci:legalval>
						<sci:legalval>Pass</sci:legalval>
					</sci:arg>
					<sci:arg name="CustomErrorText" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>Custom Error Message</sci:help>
					</sci:arg>
					<sci:arg name="Do Screen" type="BoolType" required="false" visibility="nevershow" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>When TRUE, controls which exit port is used for
each data record by evaluating the final expression
(or only one) listed in the &quot;Expression&quot; parameter.
   -Pass (green) port when expression true
   -Fail (red) port when expression false</sci:help>
						<sci:legalval>True</sci:legalval>
						<sci:legalval selected="true">False</sci:legalval>
					</sci:arg>
					<sci:arg name="ExpressionVersion" type="LongType" required="false" visibility="nevershow" multi="false" implbase="{0995D675-7EE2-432C-95DF-E91C14052B22}">
						<sci:help>Version of expression parser to use.</sci:help>
						<sci:value>2</sci:value>
					</sci:arg>
					<sci:arg name="Registrant" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The user who registered this component.</sci:help>
						<sci:value>scitegic/generic</sci:value>
					</sci:arg>
					<sci:arg name="RegistrationDate" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The date this component was registered.</sci:help>
						<sci:value>Mon Jan 21 09:55:43 2008</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisplayName" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentAutoDisplayName" type="ExpressionType" required="false" visibility="nevershow" multi="false">
						<sci:help>Automatically update the component display name when the &quot;Expression&quot; property is changed. This feature is turned off after the user manually changes the display name of the component in Protocol workspace.</sci:help>
						<sci:value>#displayName := trim(Parameter(&apos;Expression&apos;, 2));
if(strlength(#displayName) &gt; 0) then	
	/* Find the first line break */
	#nl := FindSubstring(#displayName, &quot;\r&quot;);
	if #nl &lt;= 0 then
		#nl := FindSubstring(#displayName, &quot;\n&quot;);
	end if;

	/* Keep the first line only */
	if (#nl &gt; 0) then
		StrErase(#displayName, #nl);
	end if;
	
	#displayName;
else
	&quot;&quot;;
end if;</sci:value>
					</sci:arg>
					<sci:arg name="DerivedFrom" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The component this component is based upon.</sci:help>
						<sci:value>Custom Manipulator (PilotScript)</sci:value>
					</sci:arg>
					<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
						<sci:value>EXPRESSIONNODE</sci:value>
					</sci:arg>
					<sci:arg name="ComponentDisabled" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:value>0</sci:value>
					</sci:arg>
					<sci:arg name="ComponentGUID" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>{0995D675-7EE2-432C-95DF-E91C14052B22}</sci:value>
					</sci:arg>
					<sci:arg name="ComponentPoint" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:value>666 -520</sci:value>
					</sci:arg>
					<sci:arg name="ComponentHelp" type="StringType" required="false" visibility="nevershow" multi="true">
						<sci:value>100</sci:value>
						<sci:value>Applies a PilotScript expression to each data record
</sci:value>
						<sci:value>&lt;p&gt;PilotScript is the native scripting language in Pipeline Pilot.  It is based on PL/SQL and allows you to query or alter the properties on data records.  For example, the expression:

&lt;blockquote&gt;
&lt;code&gt;A := 10;&lt;/code&gt;
&lt;/blockquote&gt;
creates a property named &quot;A&quot; and sets the value to &quot;10&quot;.&lt;/p&gt;

&lt;p&gt;For each incoming data record the PilotScript statements in &lt;i&gt;Expression&lt;/i&gt; are evaluated.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Notes:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;To initialize global variables such as counters, use &lt;i&gt;Initial Expression&lt;/i&gt;.&lt;/li&gt; 
&lt;li&gt;To clean up global variables or calculate final results use &lt;i&gt;Final Expression&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Parameters on Custom Manipulators do not become global variables that can be accessed via &lt;i&gt;@ParameterName&lt;/i&gt; syntax.  They must be accessed by using the &lt;i&gt;Parameter(&apos;ParameterName&apos;)&lt;/i&gt; function or by using token substitution via &lt;i&gt;$(ParameterName)&lt;/i&gt; syntax.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;See Also:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For more information on PilotScript, see &lt;a href=&quot;javascript:DoLink(&apos;scihelpdocs/user/pscript/pscript_overview.htm&apos;)&quot;&gt;PilotScript Overview&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To use PilotScript to filter data records use &lt;a href=&quot;javascript:DoLink(&apos;{DD58ECD1-516F-48FE-A5DB-8328AED680F2}&apos;)&quot;&gt;Custom Filter (PilotScript)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</sci:value>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>Generic</sci:value>
						<sci:value/>
						<sci:value>None</sci:value>
						<sci:value/>
					</sci:arg>
					<sci:arg name="RegistrationVersion" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The server version when this component was registered</sci:help>
						<sci:value>7.0.0.35</sci:value>
					</sci:arg>
					<sci:arg name="Component Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false"/>
					<sci:arg name="ComponentLocalID" type="LongType" required="false" visibility="nevershow" multi="false">
						<sci:help>Local Component Identifier</sci:help>
						<sci:value>28</sci:value>
					</sci:arg>
					<sci:arg name="Component Path" type="StringType" required="false" visibility="nevershow" multi="false">
						<sci:help>The original path within the database of this component.</sci:help>
						<sci:value>Components\Data Access and Manipulation\Property Manipulators\Custom Manipulator (PilotScript)</sci:value>
					</sci:arg>
				</sci:component>
			</sci:data>
			<sci:connectid from="22" to="29" type="true"/>
			<sci:connectid from="29" to="24" type="true"/>
			<sci:connectid from="24" to="25" type="true"/>
			<sci:connectid from="25" to="26" type="true"/>
			<sci:connectid from="26" to="27" type="true"/>
			<sci:connectid from="10" to="11" type="true"/>
			<sci:connectid from="11" to="28" type="true"/>
			<sci:version iVal="2"/>
		</sci:protocol>
	</sci:dbitem>
<!-- Exported protocol -->
<sci:component name="8.0 Protocol Warning" version="2">
<sci:arg name="ComponentIcon" type="StringType" required="true" visibility="nevershow" multi="false">
<sci:help>Component Icon</sci:help>
<sci:value>PROTOCOLNODE</sci:value>
</sci:arg>
<sci:arg name="Protocol Sticky Notes" type="StringType" required="false" visibility="nevershow" multi="false">
<sci:help>Protocol Sticky Notes</sci:help>
<sci:value>%VERSION 3%</sci:value>
<sci:value>400 -219 1222 221</sci:value>
<sci:value>250 120 20</sci:value>
<sci:value>WARNING! This is a Pipeline Pilot protocol written in version 8.0 or later. It contains features that are not supported in earlier versions of Pipeline Pilot.</sci:value>
</sci:arg>
</sci:component>
</sci:data>
