<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="utils"/>
<classpathentry kind="src" path="test"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre7"/>
<classpathentry kind="lib" path="lib/activation.jar"/>
<classpathentry kind="lib" path="lib/axis.jar" sourcepath="D:/axis-1_2RC2-src/axis-1_2RC2"/>
<classpathentry kind="lib" path="lib/commons-discovery.jar"/>
<classpathentry kind="lib" path="lib/saaj.jar"/>
<classpathentry kind="lib" path="lib/wsdl4j.jar"/>
<classpathentry kind="lib" path="lib/xercesImpl.jar"/>
- <classpathentry kind="lib" path="lib/xml-apis.jar"/>
<classpathentry kind="lib" path="lib/castor-1.1-cycle-xml.jar" sourcepath="C:/Documents and Settings/JimP/workspace-3.3/castor/src/main/java"/>
<classpathentry kind="lib" path="lib/JGoogleAnalytics_0.3.jar" sourcepath="/JGoogleAnalytics/src/main/java"/>
<classpathentry kind="lib" path="lib/vamsas-client.jar"/>
<classpathentry kind="lib" path="lib/spring-web-3.0.5.RELEASE.jar"/>
<classpathentry kind="lib" path="lib/groovy-all-1.8.2.jar"/>
<classpathentry kind="lib" path="lib/min-jabaws-client-2.1.0.jar" sourcepath="/clustengine"/>
- <classpathentry kind="lib" path="lib/VARNAv3-9.jar" sourcepath="/Users/jimp/Documents/Jalview/VARNA/VARNAv3-9-src.jar"/>
<classpathentry kind="lib" path="lib/json_simple-1.1.jar" sourcepath="/Users/jimp/Downloads/json_simple-1.1-all.zip"/>
<classpathentry kind="lib" path="lib/slf4j-api-1.7.7.jar"/>
<classpathentry kind="lib" path="lib/log4j-to-slf4j-2.0-rc2.jar"/>
<classpathentry kind="lib" path="lib/slf4j-log4j12-1.7.7.jar"/>
+ <classpathentry kind="lib" path="lib/VARNAv3-91.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/plugin.jar"/>
+ <classpathentry kind="lib" path="lib/xml-apis.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/plugin17"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="classes"/>
</classpath>
--- /dev/null
+# force text file line endings to LF (Unix style) on commit
+# see https://help.github.com/articles/dealing-with-line-endings/#per-repository-settings
+* text=auto
+
+# see also http://git-scm.com/book/en/Customizing-Git-Git-Configuration#Formatting-and-Whitespace
+# Users should set a git/config entry of
+# core.autocrlf = true # for Windows
+# core.autocrlf = input # for Mac
\ No newline at end of file
--- /dev/null
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=4
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=76
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
--- /dev/null
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Jalview
+formatter_settings_version=12
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=false
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=true
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--JBuilder XML Project-->\r
-<project>\r
- <property category="debug.0" name="SmartStepRedefineClasses" value="0"/>\r
- <property category="debug.0" name="SmartStepSkipStaticInitializers" value="0"/>\r
- <property category="debug.0" name="SmartStepSkipSynthetics" value="0"/>\r
- <property category="editor.general" name="line_ending.style" value="2"/>\r
- <property category="generalFormatting" name="lineEndingStyle" value="2"/>\r
- <property category="generalFormatting2" name="lineEndingStyle" value="2"/>\r
- <property category="generalFormatting2" name="overrideBasicFormatting" value="1"/>\r
- <property category="javaFormatting" name="classBraceNextLine" value="1"/>\r
- <property category="javaFormatting" name="methodBraceNextLine" value="1"/>\r
- <property category="javaFormatting" name="otherBraceNextLine" value="1"/>\r
- <property category="javaFormatting" name="packagePrefixGroups" value="java;javax;BLANK_LINE;java.awt;javax.swing;BLANK_LINE;org;(*)"/>\r
- <property category="javaFormatting" name="throwsOnNewLine" value="1"/>\r
- <property category="javadoc" name="custom.tags.1" value="todo;a;To Do:"/>\r
- <property category="runtime" name="DefaultConfiguration" value="-1"/>\r
- <property category="runtime.0" name="BuildTargetOnRun" value="com.borland.jbuilder.build.ProjectBuilder$ProjectBuildAction;make"/>\r
- <property category="runtime.0" name="ConfigurationName" value="Applet"/>\r
- <property category="runtime.0" name="RunnableType" value="com.borland.jbuilder.runtime.AppletRunner"/>\r
- <property category="runtime.0" name="applet.appletviewer" value="1"/>\r
- <property category="runtime.0" name="applet.class" value="jalview.bin.JalviewLite"/>\r
- <property category="runtime.0" name="applet.html" value="classes/applet.html"/>\r
- <property category="serverservices" name="single.server.name" value="Tomcat 4.0"/>\r
- <property category="sys" name="AuthorLabel" value="@author"/>\r
- <property category="sys" name="BackupPath" value="bak"/>\r
- <property category="sys" name="CheckStable" value="1"/>\r
- <property category="sys" name="Company" value=""/>\r
- <property category="sys" name="CompanyLabel" value="Company:"/>\r
- <property category="sys" name="Copyright" value="Copyright (c) 2004"/>\r
- <property category="sys" name="CopyrightLabel" value="Copyright:"/>\r
- <property category="sys" name="DefaultPath" value="src"/>\r
- <property category="sys" name="Description" value=""/>\r
- <property category="sys" name="DescriptionLabel" value="Description:"/>\r
- <property category="sys" name="DocPath" value="doc"/>\r
- <property category="sys" name="ExcludeClassEnabled" value="0"/>\r
- <property category="sys" name="IncludeTestPath" value="1"/>\r
- <property category="sys" name="InstanceVisibility" value="2"/>\r
- <property category="sys" name="JDK" value="java version 1.1.8_010"/>\r
- <property category="sys" name="LastTag" value="0"/>\r
- <property category="sys" name="Libraries" value=""/>\r
- <property category="sys" name="MakeStable" value="0"/>\r
- <property category="sys" name="OutPath" value="classes"/>\r
- <property category="sys" name="SourcePath" value="src;test"/>\r
- <property category="sys" name="TestPath" value="src"/>\r
- <property category="sys" name="Title" value=""/>\r
- <property category="sys" name="TitleLabel" value="Title:"/>\r
- <property category="sys" name="Version" value="1.0"/>\r
- <property category="sys" name="VersionLabel" value="@version"/>\r
- <property category="sys" name="WorkingDirectory" value="."/>\r
- <property category="sys" name="enable.auto.packages" value="false"/>\r
- <node name="jalview.appletgui" type="Package"/>\r
- <node name="jalview.datamodel" type="Package"/>\r
- <node name="jalview.jbappletgui" type="Package"/>\r
- <node name="jalview.math" type="Package"/>\r
- <node name="jalview.schemes" type="Package"/>\r
- <file path="src/jalview/analysis/AAFrequency.java"/>\r
- <file path="src/jalview/io/AlignFile.java"/>\r
- <file path="src/jalview/analysis/AlignmentSorter.java"/>\r
- <file path="src/jalview/analysis/AlignSeq.java"/>\r
- <file path="src/jalview/io/BLCFile.java"/>\r
- <file path="src/jalview/io/ClustalFile.java"/>\r
- <file path="src/jalview/analysis/Conservation.java"/>\r
- <file path="src/jalview/io/FastaFile.java"/>\r
- <file path="src/jalview/io/FileParse.java"/>\r
- <file path="src/jalview/io/FormatAdapter.java"/>\r
- <file path="src/jalview/io/IdentifyFile.java"/>\r
- <file path="src/jalview/bin/JalviewLite.java"/>\r
- <file path="src/jalview/io/MSFfile.java"/>\r
- <file path="src/jalview/io/NewickFile.java"/>\r
- <file path="src/jalview/analysis/NJTree.java"/>\r
- <file path="src/jalview/analysis/PCA.java"/>\r
- <file path="src/jalview/io/PfamFile.java"/>\r
- <file path="src/jalview/io/PIRFile.java"/>\r
-</project>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<!--JBuilder XML Project-->
+<project>
+ <property category="debug.0" name="SmartStepRedefineClasses" value="0"/>
+ <property category="debug.0" name="SmartStepSkipStaticInitializers" value="0"/>
+ <property category="debug.0" name="SmartStepSkipSynthetics" value="0"/>
+ <property category="editor.general" name="line_ending.style" value="2"/>
+ <property category="generalFormatting" name="lineEndingStyle" value="2"/>
+ <property category="generalFormatting2" name="lineEndingStyle" value="2"/>
+ <property category="generalFormatting2" name="overrideBasicFormatting" value="1"/>
+ <property category="javaFormatting" name="classBraceNextLine" value="1"/>
+ <property category="javaFormatting" name="methodBraceNextLine" value="1"/>
+ <property category="javaFormatting" name="otherBraceNextLine" value="1"/>
+ <property category="javaFormatting" name="packagePrefixGroups" value="java;javax;BLANK_LINE;java.awt;javax.swing;BLANK_LINE;org;(*)"/>
+ <property category="javaFormatting" name="throwsOnNewLine" value="1"/>
+ <property category="javadoc" name="custom.tags.1" value="todo;a;To Do:"/>
+ <property category="runtime" name="DefaultConfiguration" value="-1"/>
+ <property category="runtime.0" name="BuildTargetOnRun" value="com.borland.jbuilder.build.ProjectBuilder$ProjectBuildAction;make"/>
+ <property category="runtime.0" name="ConfigurationName" value="Applet"/>
+ <property category="runtime.0" name="RunnableType" value="com.borland.jbuilder.runtime.AppletRunner"/>
+ <property category="runtime.0" name="applet.appletviewer" value="1"/>
+ <property category="runtime.0" name="applet.class" value="jalview.bin.JalviewLite"/>
+ <property category="runtime.0" name="applet.html" value="classes/applet.html"/>
+ <property category="serverservices" name="single.server.name" value="Tomcat 4.0"/>
+ <property category="sys" name="AuthorLabel" value="@author"/>
+ <property category="sys" name="BackupPath" value="bak"/>
+ <property category="sys" name="CheckStable" value="1"/>
+ <property category="sys" name="Company" value=""/>
+ <property category="sys" name="CompanyLabel" value="Company:"/>
+ <property category="sys" name="Copyright" value="Copyright (c) 2004"/>
+ <property category="sys" name="CopyrightLabel" value="Copyright:"/>
+ <property category="sys" name="DefaultPath" value="src"/>
+ <property category="sys" name="Description" value=""/>
+ <property category="sys" name="DescriptionLabel" value="Description:"/>
+ <property category="sys" name="DocPath" value="doc"/>
+ <property category="sys" name="ExcludeClassEnabled" value="0"/>
+ <property category="sys" name="IncludeTestPath" value="1"/>
+ <property category="sys" name="InstanceVisibility" value="2"/>
+ <property category="sys" name="JDK" value="java version 1.1.8_010"/>
+ <property category="sys" name="LastTag" value="0"/>
+ <property category="sys" name="Libraries" value=""/>
+ <property category="sys" name="MakeStable" value="0"/>
+ <property category="sys" name="OutPath" value="classes"/>
+ <property category="sys" name="SourcePath" value="src;test"/>
+ <property category="sys" name="TestPath" value="src"/>
+ <property category="sys" name="Title" value=""/>
+ <property category="sys" name="TitleLabel" value="Title:"/>
+ <property category="sys" name="Version" value="1.0"/>
+ <property category="sys" name="VersionLabel" value="@version"/>
+ <property category="sys" name="WorkingDirectory" value="."/>
+ <property category="sys" name="enable.auto.packages" value="false"/>
+ <node name="jalview.appletgui" type="Package"/>
+ <node name="jalview.datamodel" type="Package"/>
+ <node name="jalview.jbappletgui" type="Package"/>
+ <node name="jalview.math" type="Package"/>
+ <node name="jalview.schemes" type="Package"/>
+ <file path="src/jalview/analysis/AAFrequency.java"/>
+ <file path="src/jalview/io/AlignFile.java"/>
+ <file path="src/jalview/analysis/AlignmentSorter.java"/>
+ <file path="src/jalview/analysis/AlignSeq.java"/>
+ <file path="src/jalview/io/BLCFile.java"/>
+ <file path="src/jalview/io/ClustalFile.java"/>
+ <file path="src/jalview/analysis/Conservation.java"/>
+ <file path="src/jalview/io/FastaFile.java"/>
+ <file path="src/jalview/io/FileParse.java"/>
+ <file path="src/jalview/io/FormatAdapter.java"/>
+ <file path="src/jalview/io/IdentifyFile.java"/>
+ <file path="src/jalview/bin/JalviewLite.java"/>
+ <file path="src/jalview/io/MSFfile.java"/>
+ <file path="src/jalview/io/NewickFile.java"/>
+ <file path="src/jalview/analysis/NJTree.java"/>
+ <file path="src/jalview/analysis/PCA.java"/>
+ <file path="src/jalview/io/PfamFile.java"/>
+ <file path="src/jalview/io/PIRFile.java"/>
+</project>
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--JBuilder XML Project-->\r
-<project>\r
- <property category="debug.0" name="SmartStepRedefineClasses" value="0"/>\r
- <property category="debug.0" name="SmartStepSkipStaticInitializers" value="0"/>\r
- <property category="debug.0" name="SmartStepSkipSynthetics" value="0"/>\r
- <property category="generalFormatting2" name="overrideBasicFormatting" value="1"/>\r
- <property category="javaFormatting" name="EventStyle" value="0"/>\r
- <property category="javaFormatting" name="classBraceNextLine" value="1"/>\r
- <property category="javaFormatting" name="methodBraceNextLine" value="1"/>\r
- <property category="javaFormatting" name="otherBraceNextLine" value="1"/>\r
- <property category="javaFormatting" name="packagePrefixGroups" value="java;javax;BLANK_LINE;java.awt;javax.swing;BLANK_LINE;org;(*)"/>\r
- <property category="javaFormatting" name="throwsOnNewLine" value="1"/>\r
- <property category="optimize.0" name="OptimizableType" value="com.borland.jbuilder.optimize.IntroOptimizeitProfiler"/>\r
- <property category="runtime.0" name="BuildTargetOnRun" value="com.borland.jbuilder.build.ProjectBuilder$ProjectBuildAction;make"/>\r
- <property category="runtime.0" name="ConfigurationName" value="JalviewX"/>\r
- <property category="runtime.0" name="RunnableType" value="com.borland.jbuilder.runtime.ApplicationRunner"/>\r
- <property category="runtime.0" name="application.class" value="jalview.bin.Jalview"/>\r
- <property category="serverservices" name="single.server.name" value="Tomcat 4.0"/>\r
- <property category="sys" name="AuthorLabel" value="@author"/>\r
- <property category="sys" name="BackupPath" value="bak"/>\r
- <property category="sys" name="Company" value="Dundee University"/>\r
- <property category="sys" name="CompanyLabel" value="Company:"/>\r
- <property category="sys" name="Copyright" value="Copyright (c) 2004"/>\r
- <property category="sys" name="CopyrightLabel" value="Copyright:"/>\r
- <property category="sys" name="DefaultPath" value="src"/>\r
- <property category="sys" name="Description" value=""/>\r
- <property category="sys" name="DescriptionLabel" value="Description:"/>\r
- <property category="sys" name="DocPath" value="doc"/>\r
- <property category="sys" name="ExcludeClassEnabled" value="0"/>\r
- <property category="sys" name="IncludeTestPath" value="1"/>\r
- <property category="sys" name="JDK" value="java version 1.4.2_04-b05"/>\r
- <property category="sys" name="JvmVersion" value="1.4"/>\r
- <property category="sys" name="Libraries" value="all"/>\r
- <property category="sys" name="OutPath" value="classes"/>\r
- <property category="sys" name="SourcePath" value="src;test"/>\r
- <property category="sys" name="SourceVersion" value="1.4"/>\r
- <property category="sys" name="TestPath" value="test"/>\r
- <property category="sys" name="Title" value=""/>\r
- <property category="sys" name="TitleLabel" value="Title:"/>\r
- <property category="sys" name="Version" value="1.0"/>\r
- <property category="sys" name="VersionLabel" value="@version"/>\r
- <property category="sys" name="WorkingDirectory" value="."/>\r
- <property category="sys" name="uidesign.size.jalview.jbgui.GPreferences" value="453,333"/>\r
- <property category="sys" name="uidesign.size.jalview.jbgui.GSequenceLink" value="400,112"/>\r
- <file path="build.xml"/>\r
-</project>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<!--JBuilder XML Project-->
+<project>
+ <property category="debug.0" name="SmartStepRedefineClasses" value="0"/>
+ <property category="debug.0" name="SmartStepSkipStaticInitializers" value="0"/>
+ <property category="debug.0" name="SmartStepSkipSynthetics" value="0"/>
+ <property category="generalFormatting2" name="overrideBasicFormatting" value="1"/>
+ <property category="javaFormatting" name="EventStyle" value="0"/>
+ <property category="javaFormatting" name="classBraceNextLine" value="1"/>
+ <property category="javaFormatting" name="methodBraceNextLine" value="1"/>
+ <property category="javaFormatting" name="otherBraceNextLine" value="1"/>
+ <property category="javaFormatting" name="packagePrefixGroups" value="java;javax;BLANK_LINE;java.awt;javax.swing;BLANK_LINE;org;(*)"/>
+ <property category="javaFormatting" name="throwsOnNewLine" value="1"/>
+ <property category="optimize.0" name="OptimizableType" value="com.borland.jbuilder.optimize.IntroOptimizeitProfiler"/>
+ <property category="runtime.0" name="BuildTargetOnRun" value="com.borland.jbuilder.build.ProjectBuilder$ProjectBuildAction;make"/>
+ <property category="runtime.0" name="ConfigurationName" value="JalviewX"/>
+ <property category="runtime.0" name="RunnableType" value="com.borland.jbuilder.runtime.ApplicationRunner"/>
+ <property category="runtime.0" name="application.class" value="jalview.bin.Jalview"/>
+ <property category="serverservices" name="single.server.name" value="Tomcat 4.0"/>
+ <property category="sys" name="AuthorLabel" value="@author"/>
+ <property category="sys" name="BackupPath" value="bak"/>
+ <property category="sys" name="Company" value="Dundee University"/>
+ <property category="sys" name="CompanyLabel" value="Company:"/>
+ <property category="sys" name="Copyright" value="Copyright (c) 2004"/>
+ <property category="sys" name="CopyrightLabel" value="Copyright:"/>
+ <property category="sys" name="DefaultPath" value="src"/>
+ <property category="sys" name="Description" value=""/>
+ <property category="sys" name="DescriptionLabel" value="Description:"/>
+ <property category="sys" name="DocPath" value="doc"/>
+ <property category="sys" name="ExcludeClassEnabled" value="0"/>
+ <property category="sys" name="IncludeTestPath" value="1"/>
+ <property category="sys" name="JDK" value="java version 1.4.2_04-b05"/>
+ <property category="sys" name="JvmVersion" value="1.4"/>
+ <property category="sys" name="Libraries" value="all"/>
+ <property category="sys" name="OutPath" value="classes"/>
+ <property category="sys" name="SourcePath" value="src;test"/>
+ <property category="sys" name="SourceVersion" value="1.4"/>
+ <property category="sys" name="TestPath" value="test"/>
+ <property category="sys" name="Title" value=""/>
+ <property category="sys" name="TitleLabel" value="Title:"/>
+ <property category="sys" name="Version" value="1.0"/>
+ <property category="sys" name="VersionLabel" value="@version"/>
+ <property category="sys" name="WorkingDirectory" value="."/>
+ <property category="sys" name="uidesign.size.jalview.jbgui.GPreferences" value="453,333"/>
+ <property category="sys" name="uidesign.size.jalview.jbgui.GSequenceLink" value="400,112"/>
+ <file path="build.xml"/>
+</project>
-jalview.release=Release_2_8_2_Branch\r
-jalview.version=2.8.2\r
+jalview.release=Release_2_8_2_Branch
+jalview.version=2.8.2
<property name="outputJar" value="jalview.jar" />
<!-- Jalview Applet JMol Jar Dependency -->
<property name="jmolJar" value="JmolApplet-12.2.4.jar" />
- <property name="varnaJar" value="VARNAv3-9.jar" />
+ <property name="varnaJar" value="VARNAv3-91.jar" />
<property name="jalviewLiteJar" value="jalviewApplet.jar" />
<!-- switch to indicate if we should obfuscate jalviewLite -->
<!-- <property name="donotobfuscate" value="true"/> -->
-<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<!--\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)\r
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
- * \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE. See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.\r
--->\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
- <head>Jalview i18n</head>\r
- <body>\r
-<h1>Best practices</h1>\r
-<ol>\r
-<li>Follow the standards described in this guide</li>\r
-<li>Always use properties files for user interface text; never include displayable text in code</li>\r
-<li>Use properties files only for user interface text (Messages_xx.properties) and config files for configuration settings (jalview.properties).</li>\r
-<li>Use a proper naming schema for keys in your resource bundles. The name of the keys should provide some information about the context of the displayed text. This helps the translators during the translation process.</li>\r
-<li>Group keys by view, ie. edit.title, edit.instructions, list.title, list.instructions, create.title, etc</li>\r
-<li>Never use displayable text when executing comparisons within the logic of the tool (separate codified values from displayable text)</li>\r
-<li>Always use the MessageManager class for retrieving properties values, and invoke MessageManager methods dynamically, to accommodate dynamic user preferences (see MessageManager below).</li>\r
-<li>All numbers and dates should be formatted specific to the user's locale (e.g. java.text.NumberFormat and java.text.DateFormat)</li>\r
-<li>Test code in more than one language</li>\r
-</ol>\r
-<h1>MessageManager</h1>\r
-<p>The jalview.util.MessageManager class is a wrapper class for the ResourceBundle class. It provides dynamic language/locale support for individual users, and is recommended for all Jalview code.</p>\r
-<p>To use it within your code, you only have to invoke MessageManager with the text key in Messages_xx.properties:</p>\r
-<p>JButton ok = new JButton(MessageManager.getString("button.ok"));</p>\r
-<p>This will set JButton text to the one included at button.ok key. In English JButton text will be OK, while in Spanish will be Aceptar. This is the big thing of i18n. :)</p>\r
-<h1>Don't rely comparisons on labels</h1>\r
-<p>Don't use this type of coding:\r
- threshold.addItem("No Threshold");<br>\r
- threshold.addItem("Above Threshold");<br>\r
- threshold.addItem("Below Threshold");<br>\r
- [...]<br>\r
- if (threshold.getSelectedItem().equals("Above Threshold"))<br>\r
- {</br>\r
- aboveThreshold = AnnotationColourGradient.ABOVE_THRESHOLD;<br>\r
- }<br>\r
- else if (threshold.getSelectedItem().equals("Below Threshold"))<br>\r
- {<br>\r
- aboveThreshold = AnnotationColourGradient.BELOW_THRESHOLD;<br>\r
- }<br>\r
-</p>\r
-<p>Once text has been translated, these equals will fail as the label won't be the English ones. It should be used getSelectedIndex() instead of getSelectedItem(). If you do the proper way, the code will look like this:<br>\r
- threshold.addItem(MessageManager.getString("label.threshold_feature_no_thereshold"));<br>\r
- threshold.addItem(MessageManager.getString("label.threshold_feature_above_thereshold"));<br>\r
- threshold.addItem(MessageManager.getString("label.threshold_feature_below_thereshold"));<br>\r
- [...]<br>\r
- if (threshold.getSelectedIndex()==1)<br>\r
- {<br>\r
- aboveThreshold = AnnotationColourGradient.ABOVE_THRESHOLD;<br>\r
- }<br>\r
- else if (threshold.getSelectedIndex()==2)<br>\r
- {<br>\r
- aboveThreshold = AnnotationColourGradient.BELOW_THRESHOLD;<br>\r
- }<br> \r
-</p>\r
-<h1>How to translate Jalview</h1>\r
-<p>Anyone interested in localizing/translating Jalview is strongly encouraged to join the <a href="mailto:jalview-dev@jalview.org">Jalview Development List</a> list. We would recommend that you read this entire page before proceeding.</p>\r
-<p>If you are planning on working on a Jalview translation, please send us an email (<a href="mailto:jalview-dev@jalview.org">Jalview Development List</a>). There may be someone else already working on translating Jalview to your target language.</p>\r
-<p>Once you have downloaded the source code (available at <a href="http://www.jalview.org/download">http://www.jalview.org/download</a>), you must edit {jalview.home}/resources/lang/Messages_xx.properties, where xx refers to your language country code. If it doesn't exits, rename Messages.properties to Messages_xx.properties.</p>\r
-<p>Next step...start transtalation!</p>\r
-<p>Once you have it translated, we would appreciate if you contribute it forwarding the file to <a href="mailto:jalview-dev@jalview.org">Jalview Development List</a>. We will commit it to the code base as soon as possible. Thanks so much for this in advance!</p>\r
-</body>\r
-</html>\r
-\r
+<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
+ * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>Jalview i18n</head>
+ <body>
+<h1>Best practices</h1>
+<ol>
+<li>Follow the standards described in this guide</li>
+<li>Always use properties files for user interface text; never include displayable text in code</li>
+<li>Use properties files only for user interface text (Messages_xx.properties) and config files for configuration settings (jalview.properties).</li>
+<li>Use a proper naming schema for keys in your resource bundles. The name of the keys should provide some information about the context of the displayed text. This helps the translators during the translation process.</li>
+<li>Group keys by view, ie. edit.title, edit.instructions, list.title, list.instructions, create.title, etc</li>
+<li>Never use displayable text when executing comparisons within the logic of the tool (separate codified values from displayable text)</li>
+<li>Always use the MessageManager class for retrieving properties values, and invoke MessageManager methods dynamically, to accommodate dynamic user preferences (see MessageManager below).</li>
+<li>All numbers and dates should be formatted specific to the user's locale (e.g. java.text.NumberFormat and java.text.DateFormat)</li>
+<li>Test code in more than one language</li>
+</ol>
+<h1>MessageManager</h1>
+<p>The jalview.util.MessageManager class is a wrapper class for the ResourceBundle class. It provides dynamic language/locale support for individual users, and is recommended for all Jalview code.</p>
+<p>To use it within your code, you only have to invoke MessageManager with the text key in Messages_xx.properties:</p>
+<p>JButton ok = new JButton(MessageManager.getString("button.ok"));</p>
+<p>This will set JButton text to the one included at button.ok key. In English JButton text will be OK, while in Spanish will be Aceptar. This is the big thing of i18n. :)</p>
+<h1>Don't rely comparisons on labels</h1>
+<p>Don't use this type of coding:
+ threshold.addItem("No Threshold");<br>
+ threshold.addItem("Above Threshold");<br>
+ threshold.addItem("Below Threshold");<br>
+ [...]<br>
+ if (threshold.getSelectedItem().equals("Above Threshold"))<br>
+ {</br>
+ aboveThreshold = AnnotationColourGradient.ABOVE_THRESHOLD;<br>
+ }<br>
+ else if (threshold.getSelectedItem().equals("Below Threshold"))<br>
+ {<br>
+ aboveThreshold = AnnotationColourGradient.BELOW_THRESHOLD;<br>
+ }<br>
+</p>
+<p>Once text has been translated, these equals will fail as the label won't be the English ones. It should be used getSelectedIndex() instead of getSelectedItem(). If you do the proper way, the code will look like this:<br>
+ threshold.addItem(MessageManager.getString("label.threshold_feature_no_thereshold"));<br>
+ threshold.addItem(MessageManager.getString("label.threshold_feature_above_thereshold"));<br>
+ threshold.addItem(MessageManager.getString("label.threshold_feature_below_thereshold"));<br>
+ [...]<br>
+ if (threshold.getSelectedIndex()==1)<br>
+ {<br>
+ aboveThreshold = AnnotationColourGradient.ABOVE_THRESHOLD;<br>
+ }<br>
+ else if (threshold.getSelectedIndex()==2)<br>
+ {<br>
+ aboveThreshold = AnnotationColourGradient.BELOW_THRESHOLD;<br>
+ }<br>
+</p>
+<h1>How to translate Jalview</h1>
+<p>Anyone interested in localizing/translating Jalview is strongly encouraged to join the <a href="mailto:jalview-dev@jalview.org">Jalview Development List</a> list. We would recommend that you read this entire page before proceeding.</p>
+<p>If you are planning on working on a Jalview translation, please send us an email (<a href="mailto:jalview-dev@jalview.org">Jalview Development List</a>). There may be someone else already working on translating Jalview to your target language.</p>
+<p>Once you have downloaded the source code (available at <a href="http://www.jalview.org/download">http://www.jalview.org/download</a>), you must edit {jalview.home}/resources/lang/Messages_xx.properties, where xx refers to your language country code. If it doesn't exits, rename Messages.properties to Messages_xx.properties.</p>
+<p>Next step...start transtalation!</p>
+<p>Once you have it translated, we would appreciate if you contribute it forwarding the file to <a href="mailto:jalview-dev@jalview.org">Jalview Development List</a>. We will commit it to the code base as soon as possible. Thanks so much for this in advance!</p>
+</body>
+</html>
+
-HEADER OXIDOREDUCTASE/ELECTRON TRANSPORT 08-MAY-00 1GAQ \r
-ATOM 2 CA GLU A 19 20.491 30.713 36.290 1.00 74.29 C \r
-ATOM 11 CA SER A 20 24.056 29.774 37.264 1.00 72.09 C \r
-ATOM 17 CA LYS A 21 27.517 31.289 37.563 1.00 70.09 C \r
-ATOM 26 CA LYS A 22 28.794 27.865 36.481 1.00 68.64 C \r
-ATOM 35 CA GLN A 23 29.484 26.806 32.884 1.00 70.46 C \r
-ATOM 44 CA GLU A 24 26.420 25.175 31.360 1.00 72.08 C \r
-ATOM 53 CA GLU A 25 26.736 26.049 27.683 1.00 70.43 C \r
-ATOM 62 CA GLY A 26 28.299 22.912 26.233 1.00 63.14 C \r
-ATOM 66 CA VAL A 27 26.863 20.704 28.982 1.00 54.50 C \r
-ATOM 73 CA VAL A 28 25.030 17.390 28.655 1.00 48.32 C \r
-ATOM 80 CA THR A 29 23.728 14.677 30.991 1.00 44.86 C \r
-ATOM 87 CA ASN A 30 22.327 11.164 30.703 1.00 45.42 C \r
-ATOM 95 CA LEU A 31 23.332 10.459 27.102 1.00 45.42 C \r
-ATOM 103 CA TYR A 32 23.549 6.898 28.380 1.00 45.88 C \r
-ATOM 115 CA LYS A 33 21.656 5.321 31.262 1.00 47.27 C \r
-ATOM 124 CA PRO A 34 21.991 2.046 33.248 1.00 48.99 C \r
-ATOM 131 CA LYS A 35 19.339 0.560 30.970 1.00 52.75 C \r
-ATOM 140 CA GLU A 36 21.580 0.855 27.886 1.00 53.33 C \r
-ATOM 149 CA PRO A 37 25.154 2.015 28.678 1.00 47.54 C \r
-ATOM 156 CA TYR A 38 27.929 2.872 26.249 1.00 41.98 C \r
-ATOM 168 CA VAL A 39 30.355 -0.017 25.909 1.00 41.48 C \r
-ATOM 175 CA GLY A 40 33.823 1.485 25.966 1.00 37.59 C \r
-ATOM 179 CA ARG A 41 37.165 -0.277 26.122 1.00 39.77 C \r
-ATOM 190 CA CYS A 42 40.148 -0.029 28.442 1.00 36.51 C \r
-ATOM 196 CA LEU A 43 43.095 1.441 26.554 1.00 36.13 C \r
-ATOM 204 CA LEU A 44 45.231 2.023 29.649 1.00 33.55 C \r
-ATOM 212 CA ASN A 45 45.140 1.026 33.307 1.00 27.79 C \r
-ATOM 220 CA THR A 46 48.056 1.800 35.617 1.00 28.75 C \r
-ATOM 227 CA LYS A 47 48.542 1.776 39.388 1.00 30.31 C \r
-ATOM 236 CA ILE A 48 49.564 5.317 40.376 1.00 31.32 C \r
-ATOM 244 CA THR A 49 50.339 4.682 44.059 1.00 37.62 C \r
-ATOM 251 CA GLY A 50 53.585 3.317 45.460 1.00 44.49 C \r
-ATOM 255 CA ASP A 51 53.706 -0.448 46.087 1.00 52.89 C \r
-ATOM 263 CA ASP A 52 53.910 0.545 49.751 1.00 55.23 C \r
-ATOM 271 CA ALA A 53 50.816 2.767 50.056 1.00 53.34 C \r
-ATOM 276 CA PRO A 54 47.904 1.940 52.405 1.00 50.60 C \r
-ATOM 283 CA GLY A 55 45.420 1.579 49.561 1.00 50.35 C \r
-ATOM 287 CA GLU A 56 46.098 1.286 45.836 1.00 42.53 C \r
-ATOM 296 CA THR A 57 44.534 3.816 43.480 1.00 41.14 C \r
-ATOM 303 CA TRP A 58 44.540 3.423 39.708 1.00 35.60 C \r
-ATOM 317 CA HIS A 59 44.468 5.853 36.796 1.00 31.89 C \r
-ATOM 327 CA MET A 60 42.658 4.227 33.866 1.00 31.65 C \r
-ATOM 335 CA VAL A 61 41.716 5.345 30.350 1.00 30.43 C \r
-ATOM 342 CA PHE A 62 38.669 4.172 28.360 1.00 34.36 C \r
-ATOM 353 CA SER A 63 37.657 4.908 24.772 1.00 34.69 C \r
-ATOM 359 CA THR A 64 34.448 6.828 23.951 1.00 36.96 C \r
-ATOM 366 CA GLU A 65 34.691 7.644 20.254 1.00 40.08 C \r
-ATOM 375 CA GLY A 66 33.742 11.183 21.285 1.00 40.22 C \r
-ATOM 379 CA LYS A 67 30.272 9.763 22.003 1.00 41.93 C \r
-ATOM 388 CA ILE A 68 30.279 11.116 25.577 1.00 41.52 C \r
-ATOM 396 CA PRO A 69 30.791 14.926 25.537 1.00 42.35 C \r
-ATOM 403 CA TYR A 70 31.228 15.232 29.299 1.00 39.84 C \r
-ATOM 415 CA ARG A 71 32.639 18.451 30.768 1.00 44.14 C \r
-ATOM 426 CA GLU A 72 35.122 19.278 33.515 1.00 43.82 C \r
-ATOM 435 CA GLY A 73 33.472 18.458 36.835 1.00 41.97 C \r
-ATOM 439 CA GLN A 74 30.929 15.874 35.657 1.00 37.19 C \r
-ATOM 448 CA SER A 75 31.285 12.124 36.138 1.00 38.28 C \r
-ATOM 454 CA ILE A 76 30.458 8.792 34.539 1.00 36.84 C \r
-ATOM 462 CA GLY A 77 28.983 5.620 35.918 1.00 35.39 C \r
-ATOM 466 CA VAL A 78 30.311 2.108 35.530 1.00 32.05 C \r
-ATOM 473 CA ILE A 79 28.458 -1.201 35.591 1.00 32.67 C \r
-ATOM 481 CA ALA A 80 30.745 -4.018 36.644 1.00 35.36 C \r
-ATOM 486 CA ASP A 81 30.359 -7.373 34.872 1.00 38.72 C \r
-ATOM 494 CA GLY A 82 28.308 -10.332 36.110 1.00 45.79 C \r
-ATOM 498 CA VAL A 83 25.820 -10.242 39.001 1.00 52.24 C \r
-ATOM 505 CA ASP A 84 25.838 -10.250 42.834 1.00 60.54 C \r
-ATOM 513 CA LYS A 85 25.014 -13.158 45.196 1.00 66.72 C \r
-ATOM 522 CA ASN A 86 21.414 -13.062 43.904 1.00 67.37 C \r
-ATOM 530 CA GLY A 87 21.724 -13.423 40.136 1.00 64.74 C \r
-ATOM 534 CA LYS A 88 20.971 -9.733 39.570 1.00 61.12 C \r
-ATOM 543 CA PRO A 89 23.054 -7.201 37.561 1.00 54.68 C \r
-ATOM 550 CA HIS A 90 25.224 -4.957 39.755 1.00 44.44 C \r
-ATOM 560 CA LYS A 91 23.940 -1.433 40.260 1.00 40.48 C \r
-ATOM 569 CA VAL A 92 25.803 1.546 38.843 1.00 38.45 C \r
-ATOM 576 CA ARG A 93 28.709 2.986 40.828 1.00 38.93 C \r
-ATOM 587 CA LEU A 94 29.778 6.584 40.096 1.00 34.37 C \r
-ATOM 595 CA TYR A 95 33.309 7.878 39.513 1.00 30.27 C \r
-ATOM 607 CA SER A 96 34.425 11.475 39.057 1.00 29.44 C \r
-ATOM 613 CA ILE A 97 36.029 12.090 35.662 1.00 27.61 C \r
-ATOM 621 CA ALA A 98 39.769 12.693 36.069 1.00 31.12 C \r
-ATOM 626 CA SER A 99 40.393 13.712 32.475 1.00 32.42 C \r
-ATOM 632 CA SER A 100 39.566 17.142 31.059 1.00 36.14 C \r
-ATOM 638 CA ALA A 101 37.097 17.367 28.154 1.00 41.07 C \r
-ATOM 643 CA ILE A 102 39.764 16.549 25.527 1.00 47.65 C \r
-ATOM 651 CA GLY A 103 41.172 13.692 27.599 1.00 46.77 C \r
-ATOM 655 CA ASP A 104 44.730 12.612 28.289 1.00 43.82 C \r
-ATOM 663 CA PHE A 105 45.115 12.065 24.522 1.00 41.52 C \r
-ATOM 674 CA GLY A 106 43.862 15.455 23.328 1.00 41.66 C \r
-ATOM 678 CA ASP A 107 41.355 13.883 20.926 1.00 40.90 C \r
-ATOM 686 CA SER A 108 38.132 14.250 22.954 1.00 42.95 C \r
-ATOM 692 CA LYS A 109 37.967 10.535 22.224 1.00 44.74 C \r
-ATOM 701 CA THR A 110 38.731 9.184 25.704 1.00 41.09 C \r
-ATOM 708 CA VAL A 111 37.728 9.519 29.374 1.00 39.03 C \r
-ATOM 715 CA SER A 112 39.912 8.705 32.399 1.00 37.17 C \r
-ATOM 721 CA LEU A 113 39.098 7.476 35.935 1.00 32.10 C \r
-ATOM 729 CA CYS A 114 40.964 7.578 39.261 1.00 30.65 C \r
-ATOM 735 CA VAL A 115 39.724 4.459 41.060 1.00 33.45 C \r
-ATOM 742 CA LYS A 116 40.668 3.524 44.628 1.00 34.75 C \r
-ATOM 751 CA ARG A 117 40.376 -0.250 45.123 1.00 32.85 C \r
-ATOM 762 CA LEU A 118 38.137 -1.094 48.077 1.00 30.50 C \r
-ATOM 770 CA ILE A 119 39.376 -3.752 50.459 1.00 34.34 C \r
-ATOM 778 CA TYR A 120 38.699 -4.266 54.125 1.00 31.39 C \r
-ATOM 790 CA THR A 121 38.264 -7.086 56.567 1.00 28.83 C \r
-ATOM 797 CA ASN A 122 34.792 -7.477 58.109 1.00 26.51 C \r
-ATOM 805 CA ASP A 123 33.626 -8.382 61.634 1.00 31.58 C \r
-ATOM 813 CA ALA A 124 34.191 -12.077 60.901 1.00 27.84 C \r
-ATOM 818 CA GLY A 125 37.759 -11.844 59.728 1.00 32.39 C \r
-ATOM 822 CA GLU A 126 36.809 -12.146 56.073 1.00 35.82 C \r
-ATOM 831 CA ILE A 127 38.655 -9.932 53.598 1.00 38.42 C \r
-ATOM 839 CA VAL A 128 36.025 -8.261 51.421 1.00 33.73 C \r
-ATOM 846 CA LYS A 129 36.482 -6.484 48.090 1.00 31.87 C \r
-ATOM 855 CA GLY A 130 34.363 -3.680 46.686 1.00 26.91 C \r
-ATOM 859 CA VAL A 131 32.680 -5.051 43.569 1.00 27.89 C \r
-ATOM 866 CA CYS A 132 33.074 -2.246 41.018 1.00 28.46 C \r
-ATOM 872 CA SER A 133 36.266 -0.553 42.213 1.00 31.33 C \r
-ATOM 878 CA ASN A 134 37.861 -3.983 41.984 1.00 30.29 C \r
-ATOM 886 CA PHE A 135 36.318 -4.795 38.623 1.00 31.48 C \r
-ATOM 897 CA LEU A 136 37.926 -1.553 37.520 1.00 27.81 C \r
-ATOM 905 CA CYS A 137 41.417 -1.976 38.955 1.00 25.91 C \r
-ATOM 911 CA ASP A 138 41.605 -5.419 37.338 1.00 30.22 C \r
-ATOM 919 CA LEU A 139 40.462 -4.306 33.874 1.00 32.69 C \r
-ATOM 927 CA GLN A 140 42.851 -5.511 31.186 1.00 36.80 C \r
-ATOM 936 CA PRO A 141 43.380 -3.220 28.170 1.00 36.16 C \r
-ATOM 943 CA GLY A 142 40.864 -4.420 25.586 1.00 31.10 C \r
-ATOM 947 CA ASP A 143 38.129 -5.298 28.055 1.00 30.62 C \r
-ATOM 955 CA ASN A 144 34.690 -3.847 27.645 1.00 33.52 C \r
-ATOM 963 CA VAL A 145 33.430 -1.522 30.361 1.00 37.08 C \r
-ATOM 970 CA GLN A 146 29.817 -0.374 30.523 1.00 37.65 C \r
-ATOM 979 CA ILE A 147 29.547 3.413 31.045 1.00 30.95 C \r
-ATOM 987 CA THR A 148 26.637 5.791 31.832 1.00 29.95 C \r
-ATOM 994 CA GLY A 149 26.297 9.581 31.843 1.00 32.81 C \r
-ATOM 998 CA PRO A 150 27.785 12.148 31.800 1.00 34.98 C \r
-ATOM 1005 CA VAL A 151 26.376 12.668 35.275 1.00 36.53 C \r
-ATOM 1012 CA GLY A 152 26.196 15.756 37.474 1.00 43.09 C \r
-ATOM 1016 CA LYS A 153 26.048 19.528 37.068 1.00 48.37 C \r
-ATOM 1025 CA GLU A 154 26.921 20.540 40.633 1.00 49.70 C \r
-ATOM 1034 CA MET A 155 30.710 20.266 40.235 1.00 47.30 C \r
-ATOM 1042 CA LEU A 156 30.882 22.020 36.869 1.00 50.36 C \r
-ATOM 1050 CA MET A 157 33.362 24.883 36.404 1.00 55.29 C \r
-ATOM 1058 CA PRO A 158 32.521 28.612 36.605 1.00 54.88 C \r
-ATOM 1065 CA LYS A 159 32.291 30.776 33.464 1.00 54.92 C \r
-ATOM 1074 CA ASP A 160 34.497 33.503 34.939 1.00 57.22 C \r
-ATOM 1082 CA PRO A 161 38.055 32.687 33.759 1.00 58.62 C \r
-ATOM 1089 CA ASN A 162 39.524 35.240 36.163 1.00 60.44 C \r
-ATOM 1097 CA ALA A 163 37.814 33.910 39.279 1.00 55.80 C \r
-ATOM 1102 CA THR A 164 39.596 32.487 42.316 1.00 51.04 C \r
-ATOM 1109 CA ILE A 165 38.966 28.771 42.756 1.00 50.26 C \r
-ATOM 1117 CA ILE A 166 39.774 26.773 45.885 1.00 47.54 C \r
-ATOM 1125 CA MET A 167 39.883 23.014 45.324 1.00 46.38 C \r
-ATOM 1133 CA LEU A 168 39.700 20.963 48.522 1.00 42.18 C \r
-ATOM 1141 CA ALA A 169 40.377 17.316 47.770 1.00 36.41 C \r
-ATOM 1146 CA THR A 170 41.005 14.086 49.622 1.00 32.98 C \r
-ATOM 1153 CA GLY A 171 42.027 10.802 48.014 1.00 31.36 C \r
-ATOM 1157 CA THR A 172 40.386 10.037 44.680 1.00 30.48 C \r
-ATOM 1164 CA GLY A 173 38.640 13.335 45.359 1.00 33.99 C \r
-ATOM 1168 CA ILE A 174 41.418 15.036 43.394 1.00 35.66 C \r
-ATOM 1176 CA ALA A 175 39.758 13.585 40.300 1.00 36.00 C \r
-ATOM 1181 CA PRO A 176 37.445 16.385 39.155 1.00 39.41 C \r
-ATOM 1188 CA PHE A 177 40.109 18.971 39.976 1.00 43.21 C \r
-ATOM 1199 CA ARG A 178 42.726 17.119 37.955 1.00 41.09 C \r
-ATOM 1210 CA SER A 179 40.235 17.536 35.124 1.00 39.92 C \r
-ATOM 1216 CA PHE A 180 39.808 21.204 36.009 1.00 39.23 C \r
-ATOM 1227 CA LEU A 181 43.528 21.949 35.995 1.00 39.50 C \r
-ATOM 1235 CA TRP A 182 44.305 20.081 32.770 1.00 41.47 C \r
-ATOM 1249 CA LYS A 183 42.141 22.654 30.972 1.00 48.08 C \r
-ATOM 1258 CA MET A 184 43.477 25.547 33.062 1.00 52.79 C \r
-ATOM 1266 CA PHE A 185 47.102 25.043 32.014 1.00 57.35 C \r
-ATOM 1277 CA PHE A 186 48.075 21.921 30.051 1.00 55.98 C \r
-ATOM 1288 CA GLU A 187 45.758 23.173 27.297 1.00 54.44 C \r
-ATOM 1297 CA LYS A 188 44.908 26.236 25.196 1.00 51.29 C \r
-ATOM 1306 CA HIS A 189 41.395 27.080 24.003 1.00 51.35 C \r
-ATOM 1316 CA ASP A 190 40.108 29.972 21.873 1.00 54.30 C \r
-ATOM 1324 CA ASP A 191 37.199 30.481 24.249 1.00 53.95 C \r
-ATOM 1332 CA TYR A 192 38.816 29.937 27.634 1.00 50.68 C \r
-ATOM 1344 CA LYS A 193 41.916 31.388 29.230 1.00 51.00 C \r
-ATOM 1353 CA PHE A 194 42.322 30.967 32.956 1.00 52.09 C \r
-ATOM 1364 CA ASN A 195 43.672 34.234 34.312 1.00 56.46 C \r
-ATOM 1372 CA GLY A 196 42.616 34.078 37.969 1.00 57.17 C \r
-ATOM 1376 CA LEU A 197 43.874 31.920 40.843 1.00 57.92 C \r
-ATOM 1384 CA GLY A 198 43.549 28.151 41.086 1.00 56.67 C \r
-ATOM 1388 CA TRP A 199 44.258 26.886 44.592 1.00 51.55 C \r
-ATOM 1402 CA LEU A 200 44.411 23.170 45.379 1.00 49.17 C \r
-ATOM 1410 CA PHE A 201 44.558 21.335 48.709 1.00 48.60 C \r
-ATOM 1421 CA LEU A 202 45.122 17.570 48.598 1.00 45.34 C \r
-ATOM 1429 CA GLY A 203 44.885 15.480 51.742 1.00 48.55 C \r
-ATOM 1433 CA VAL A 204 46.225 11.936 51.755 1.00 50.23 C \r
-ATOM 1440 CA PRO A 205 47.942 9.740 54.365 1.00 51.51 C \r
-ATOM 1447 CA THR A 206 51.284 9.148 52.648 1.00 50.21 C \r
-ATOM 1454 CA SER A 207 53.551 10.483 49.894 1.00 49.38 C \r
-ATOM 1460 CA SER A 208 53.267 7.061 48.259 1.00 43.49 C \r
-ATOM 1466 CA SER A 209 49.588 8.049 48.093 1.00 42.57 C \r
-ATOM 1472 CA LEU A 210 49.990 11.424 46.364 1.00 42.65 C \r
-ATOM 1480 CA LEU A 211 48.121 11.446 43.035 1.00 39.33 C \r
-ATOM 1488 CA TYR A 212 49.516 13.214 39.935 1.00 40.89 C \r
-ATOM 1500 CA LYS A 213 52.128 15.234 41.873 1.00 45.88 C \r
-ATOM 1509 CA GLU A 214 54.518 15.406 38.899 1.00 53.22 C \r
-ATOM 1518 CA GLU A 215 51.680 16.911 36.889 1.00 55.16 C \r
-ATOM 1527 CA PHE A 216 50.757 19.475 39.514 1.00 60.55 C \r
-ATOM 1538 CA GLY A 217 54.488 20.153 39.524 1.00 66.64 C \r
-ATOM 1542 CA LYS A 218 54.575 21.110 35.850 1.00 68.86 C \r
-ATOM 1551 CA MET A 219 51.398 23.159 36.265 1.00 66.97 C \r
-ATOM 1559 CA LYS A 220 53.138 25.090 39.061 1.00 65.97 C \r
-ATOM 1568 CA GLU A 221 55.654 26.250 36.459 1.00 70.02 C \r
-ATOM 1577 CA ARG A 222 53.584 26.507 33.294 1.00 73.48 C \r
-ATOM 1588 CA ALA A 223 52.005 29.449 35.175 1.00 76.21 C \r
-ATOM 1593 CA PRO A 224 53.272 29.877 38.804 1.00 79.25 C \r
-ATOM 1600 CA GLU A 225 51.296 33.124 39.020 1.00 81.84 C \r
-ATOM 1609 CA ASN A 226 47.873 31.528 38.622 1.00 78.84 C \r
-ATOM 1617 CA PHE A 227 48.418 28.176 40.350 1.00 75.28 C \r
-ATOM 1628 CA ARG A 228 49.090 27.305 43.996 1.00 72.05 C \r
-ATOM 1639 CA VAL A 229 49.165 23.724 45.323 1.00 68.82 C \r
-ATOM 1646 CA ASP A 230 49.258 22.581 48.958 1.00 66.54 C \r
-ATOM 1654 CA TYR A 231 49.605 18.943 49.968 1.00 60.31 C \r
-ATOM 1666 CA ALA A 232 48.551 17.560 53.332 1.00 57.39 C \r
-ATOM 1671 CA VAL A 233 50.260 14.228 53.945 1.00 57.14 C \r
-ATOM 1678 CA SER A 234 48.465 13.579 57.244 1.00 60.81 C \r
-ATOM 1684 CA ARG A 235 50.959 11.010 58.514 1.00 60.74 C \r
-ATOM 1695 CA GLU A 236 54.268 12.594 57.481 1.00 59.17 C \r
-ATOM 1704 CA GLN A 237 53.494 16.197 58.450 1.00 59.62 C \r
-ATOM 1713 CA THR A 238 52.590 18.236 61.521 1.00 63.18 C \r
-ATOM 1720 CA ASN A 239 52.019 21.937 62.188 1.00 66.71 C \r
-ATOM 1728 CA ALA A 240 52.096 23.767 65.537 1.00 70.06 C \r
-ATOM 1733 CA ALA A 241 51.302 21.400 68.410 1.00 72.44 C \r
-ATOM 1738 CA GLY A 242 52.383 18.324 66.438 1.00 72.38 C \r
-ATOM 1742 CA GLU A 243 48.826 18.169 65.110 1.00 69.71 C \r
-ATOM 1751 CA ARG A 244 48.674 15.776 62.148 1.00 67.21 C \r
-ATOM 1762 CA MET A 245 48.712 17.796 58.933 1.00 64.20 C \r
-ATOM 1770 CA TYR A 246 45.246 17.082 57.556 1.00 60.65 C \r
-ATOM 1782 CA ILE A 247 43.617 18.437 54.409 1.00 62.98 C \r
-ATOM 1790 CA GLN A 248 42.035 21.001 56.761 1.00 64.64 C \r
-ATOM 1799 CA THR A 249 45.057 21.461 59.009 1.00 63.37 C \r
-ATOM 1806 CA ARG A 250 46.891 22.664 55.903 1.00 62.47 C \r
-ATOM 1817 CA MET A 251 44.123 25.201 55.251 1.00 63.35 C \r
-ATOM 1825 CA ALA A 252 44.571 26.305 58.854 1.00 65.73 C \r
-ATOM 1830 CA GLU A 253 47.973 27.809 58.076 1.00 65.97 C \r
-ATOM 1839 CA TYR A 254 46.267 30.063 55.517 1.00 65.83 C \r
-ATOM 1851 CA LYS A 255 42.991 30.559 57.379 1.00 70.30 C \r
-ATOM 1860 CA GLU A 256 43.578 34.326 57.320 1.00 73.73 C \r
-ATOM 1869 CA GLU A 257 44.189 34.738 53.593 1.00 71.52 C \r
-ATOM 1878 CA LEU A 258 41.459 32.202 52.893 1.00 73.38 C \r
-ATOM 1886 CA TRP A 259 38.790 34.074 54.853 1.00 76.72 C \r
-ATOM 1900 CA GLU A 260 39.721 37.275 53.006 1.00 78.61 C \r
-ATOM 1909 CA LEU A 261 38.580 35.553 49.815 1.00 75.71 C \r
-ATOM 1917 CA LEU A 262 35.391 33.881 51.047 1.00 73.74 C \r
-ATOM 1925 CA LYS A 263 33.562 37.165 50.535 1.00 73.64 C \r
-ATOM 1934 CA LYS A 264 34.299 38.143 46.954 1.00 72.48 C \r
-ATOM 1943 CA ASP A 265 31.954 37.554 43.993 1.00 69.65 C \r
-ATOM 1951 CA ASN A 266 34.660 35.649 42.106 1.00 65.06 C \r
-ATOM 1959 CA THR A 267 35.835 33.117 44.683 1.00 58.24 C \r
-ATOM 1966 CA TYR A 268 34.459 29.646 43.909 1.00 51.04 C \r
-ATOM 1978 CA VAL A 269 35.192 26.827 46.382 1.00 44.95 C \r
-ATOM 1985 CA TYR A 270 35.012 23.150 45.368 1.00 44.96 C \r
-ATOM 1997 CA MET A 271 35.162 20.122 47.656 1.00 41.72 C \r
-ATOM 2005 CA CYS A 272 35.314 16.468 46.632 1.00 37.19 C \r
-ATOM 2011 CA GLY A 273 36.343 13.080 47.951 1.00 37.65 C \r
-ATOM 2015 CA LEU A 274 36.040 10.886 51.020 1.00 39.39 C \r
-ATOM 2023 CA LYS A 275 33.076 12.283 52.955 1.00 44.86 C \r
-ATOM 2032 CA GLY A 276 34.322 13.183 56.400 1.00 49.16 C \r
-ATOM 2036 CA MET A 277 36.932 15.608 55.168 1.00 53.30 C \r
-ATOM 2044 CA GLU A 278 33.917 17.921 55.165 1.00 56.74 C \r
-ATOM 2053 CA LYS A 279 33.531 18.089 58.947 1.00 59.30 C \r
-ATOM 2062 CA GLY A 280 36.982 19.413 59.776 1.00 58.94 C \r
-ATOM 2066 CA ILE A 281 36.705 22.048 57.063 1.00 61.43 C \r
-ATOM 2074 CA ASP A 282 33.453 23.402 58.515 1.00 67.06 C \r
-ATOM 2082 CA ASP A 283 35.050 23.189 61.972 1.00 74.12 C \r
-ATOM 2090 CA ILE A 284 37.991 25.422 61.040 1.00 78.49 C \r
-ATOM 2098 CA MET A 285 35.456 27.566 59.201 1.00 82.25 C \r
-ATOM 2106 CA VAL A 286 32.941 27.959 62.027 1.00 83.44 C \r
-ATOM 2113 CA SER A 287 35.610 29.113 64.469 1.00 83.43 C \r
-ATOM 2119 CA LEU A 288 36.927 31.601 61.887 1.00 85.53 C \r
-ATOM 2127 CA ALA A 289 33.506 33.025 60.970 1.00 86.85 C \r
-ATOM 2132 CA GLU A 290 31.841 32.696 64.387 1.00 89.26 C \r
-ATOM 2141 CA LYS A 291 34.438 35.312 65.347 1.00 88.73 C \r
-ATOM 2150 CA ASP A 292 33.635 37.891 62.652 1.00 88.03 C \r
-ATOM 2158 CA GLY A 293 30.219 37.450 61.081 1.00 87.88 C \r
-ATOM 2162 CA ILE A 294 27.319 35.051 61.511 1.00 84.61 C \r
-ATOM 2170 CA ASP A 295 27.665 31.329 62.188 1.00 82.45 C \r
-ATOM 2178 CA TRP A 296 29.539 29.627 59.355 1.00 80.12 C \r
-ATOM 2192 CA PHE A 297 26.527 27.452 58.512 1.00 78.99 C \r
-ATOM 2203 CA ASP A 298 24.167 30.241 57.486 1.00 76.37 C \r
-ATOM 2211 CA TYR A 299 27.074 31.748 55.561 1.00 74.07 C \r
-ATOM 2223 CA LYS A 300 27.679 28.620 53.473 1.00 74.31 C \r
-ATOM 2232 CA LYS A 301 24.059 29.146 52.464 1.00 75.97 C \r
-ATOM 2241 CA GLN A 302 24.921 32.563 51.018 1.00 75.38 C \r
-ATOM 2250 CA LEU A 303 27.896 31.099 49.155 1.00 72.10 C \r
-ATOM 2258 CA LYS A 304 25.917 28.207 47.690 1.00 72.08 C \r
-ATOM 2267 CA ARG A 305 23.595 31.021 46.594 1.00 74.82 C \r
-ATOM 2278 CA GLY A 306 26.071 32.136 43.958 1.00 71.84 C \r
-ATOM 2282 CA ASP A 307 27.505 28.682 43.220 1.00 67.23 C \r
-ATOM 2290 CA GLN A 308 30.620 29.291 45.346 1.00 60.18 C \r
-ATOM 2299 CA TRP A 309 30.585 26.177 47.537 1.00 52.25 C \r
-ATOM 2313 CA ASN A 310 29.894 22.997 45.597 1.00 45.03 C \r
-ATOM 2321 CA VAL A 311 30.327 19.716 47.403 1.00 39.13 C \r
-ATOM 2328 CA GLU A 312 30.507 16.190 46.110 1.00 35.17 C \r
-ATOM 2337 CA VAL A 313 31.761 13.957 48.861 1.00 30.12 C \r
-ATOM 2344 CA TYR A 314 31.112 10.230 49.021 1.00 28.23 C \r
-ATOM 2358 CA ALA B 1 2.311 24.702 44.475 1.00 74.17 C \r
-ATOM 2363 CA THR B 2 3.590 24.207 48.055 1.00 74.76 C \r
-ATOM 2370 CA TYR B 3 3.069 20.876 49.837 1.00 73.52 C \r
-ATOM 2382 CA ASN B 4 3.748 19.874 53.435 1.00 75.75 C \r
-ATOM 2390 CA VAL B 5 6.618 17.399 53.868 1.00 75.95 C \r
-ATOM 2397 CA LYS B 6 7.769 15.523 56.983 1.00 77.70 C \r
-ATOM 2406 CA LEU B 7 11.351 14.325 57.458 1.00 78.91 C \r
-ATOM 2414 CA ILE B 8 11.807 11.511 59.985 1.00 81.00 C \r
-ATOM 2422 CA THR B 9 15.560 12.046 60.247 1.00 87.49 C \r
-ATOM 2429 CA PRO B 10 17.662 9.793 62.539 1.00 92.94 C \r
-ATOM 2436 CA GLU B 11 18.161 13.147 64.282 1.00 96.61 C \r
-ATOM 2445 CA GLY B 12 14.579 14.154 65.041 1.00 97.52 C \r
-ATOM 2449 CA GLU B 13 11.602 14.823 62.748 1.00 96.90 C \r
-ATOM 2458 CA VAL B 14 11.547 17.892 60.480 1.00 96.63 C \r
-ATOM 2465 CA GLU B 15 8.340 19.701 59.440 1.00 94.86 C \r
-ATOM 2474 CA LEU B 16 9.471 21.479 56.254 1.00 91.55 C \r
-ATOM 2482 CA GLN B 17 7.281 23.141 53.598 1.00 89.75 C \r
-ATOM 2491 CA VAL B 18 8.485 22.069 50.145 1.00 87.92 C \r
-ATOM 2498 CA PRO B 19 6.906 23.558 46.964 1.00 86.35 C \r
-ATOM 2505 CA ASP B 20 5.990 21.744 43.717 1.00 86.29 C \r
-ATOM 2513 CA ASP B 21 8.578 22.751 41.083 1.00 83.78 C \r
-ATOM 2521 CA VAL B 22 11.385 22.401 43.639 1.00 80.98 C \r
-ATOM 2528 CA TYR B 23 13.439 19.280 44.481 1.00 77.04 C \r
-ATOM 2540 CA ILE B 24 13.212 18.196 48.120 1.00 76.45 C \r
-ATOM 2548 CA LEU B 25 16.959 18.133 48.851 1.00 75.15 C \r
-ATOM 2556 CA ASP B 26 17.154 21.745 47.689 1.00 75.80 C \r
-ATOM 2564 CA GLN B 27 14.616 22.906 50.280 1.00 76.31 C \r
-ATOM 2573 CA ALA B 28 16.562 20.957 52.914 1.00 78.86 C \r
-ATOM 2578 CA GLU B 29 19.698 23.011 52.198 1.00 81.51 C \r
-ATOM 2587 CA GLU B 30 17.491 26.106 52.510 1.00 83.25 C \r
-ATOM 2596 CA ASP B 31 15.857 25.933 55.935 1.00 81.92 C \r
-ATOM 2604 CA GLY B 32 19.280 24.859 57.151 1.00 79.08 C \r
-ATOM 2608 CA ILE B 33 18.621 21.130 57.157 1.00 76.93 C \r
-ATOM 2616 CA ASP B 34 21.528 18.731 56.618 1.00 73.53 C \r
-ATOM 2624 CA LEU B 35 20.738 15.738 54.421 1.00 67.74 C \r
-ATOM 2632 CA PRO B 36 23.138 13.391 52.547 1.00 65.90 C \r
-ATOM 2639 CA TYR B 37 23.916 14.226 48.912 1.00 64.85 C \r
-ATOM 2651 CA SER B 38 26.659 13.373 46.412 1.00 62.58 C \r
-ATOM 2657 CA CYS B 39 26.193 13.603 42.652 1.00 60.99 C \r
-ATOM 2663 CA ARG B 40 22.908 15.441 43.251 1.00 58.35 C \r
-ATOM 2674 CA ALA B 41 21.699 14.108 39.886 1.00 56.38 C \r
-ATOM 2679 CA GLY B 42 19.886 10.955 40.991 1.00 56.66 C \r
-ATOM 2683 CA SER B 43 22.465 8.336 40.010 1.00 58.55 C \r
-ATOM 2689 CA CYS B 44 23.548 7.052 43.447 1.00 56.27 C \r
-ATOM 2695 CA SER B 45 22.057 5.987 46.791 1.00 58.20 C \r
-ATOM 2701 CA SER B 46 23.574 8.773 48.890 1.00 59.13 C \r
-ATOM 2707 CA CYS B 47 20.220 10.475 49.517 1.00 65.64 C \r
-ATOM 2713 CA ALA B 48 17.911 7.436 49.610 1.00 69.71 C \r
-ATOM 2718 CA GLY B 49 14.733 7.635 51.681 1.00 73.09 C \r
-ATOM 2722 CA LYS B 50 11.712 5.340 52.183 1.00 73.77 C \r
-ATOM 2731 CA VAL B 51 8.551 7.412 51.568 1.00 76.51 C \r
-ATOM 2738 CA VAL B 52 5.237 7.081 53.429 1.00 78.85 C \r
-ATOM 2745 CA SER B 53 2.180 9.376 53.647 1.00 79.57 C \r
-ATOM 2751 CA GLY B 54 2.118 10.991 50.218 1.00 76.32 C \r
-ATOM 2755 CA SER B 55 3.577 10.944 46.726 1.00 76.31 C \r
-ATOM 2761 CA VAL B 56 6.436 12.592 44.828 1.00 77.50 C \r
-ATOM 2768 CA ASP B 57 7.691 12.960 41.243 1.00 76.83 C \r
-ATOM 2776 CA GLN B 58 11.150 11.483 40.555 1.00 76.66 C \r
-ATOM 2785 CA SER B 59 10.976 10.827 36.792 1.00 80.19 C \r
-ATOM 2791 CA ASP B 60 14.688 11.644 36.510 1.00 83.51 C \r
-ATOM 2799 CA GLN B 61 15.175 8.137 37.916 1.00 85.74 C \r
-ATOM 2808 CA SER B 62 18.644 7.080 36.699 1.00 85.85 C \r
-ATOM 2814 CA TYR B 63 19.324 5.049 39.852 1.00 84.49 C \r
-ATOM 2826 CA LEU B 64 15.683 4.296 40.629 1.00 89.06 C \r
-ATOM 2834 CA ASP B 65 15.356 0.604 39.742 1.00 92.21 C \r
-ATOM 2842 CA ASP B 66 12.421 -1.791 39.331 1.00 92.35 C \r
-ATOM 2850 CA GLY B 67 10.747 -2.542 42.659 1.00 89.07 C \r
-ATOM 2854 CA GLN B 68 12.336 0.632 44.010 1.00 88.41 C \r
-ATOM 2863 CA ILE B 69 9.483 2.828 42.742 1.00 86.11 C \r
-ATOM 2871 CA ALA B 70 7.060 0.441 44.446 1.00 81.10 C \r
-ATOM 2876 CA ASP B 71 8.985 -0.310 47.648 1.00 76.82 C \r
-ATOM 2884 CA GLY B 72 8.653 3.423 48.186 1.00 73.00 C \r
-ATOM 2888 CA TRP B 73 12.342 4.386 48.095 1.00 67.93 C \r
-ATOM 2902 CA VAL B 74 13.052 8.007 47.136 1.00 63.84 C \r
-ATOM 2909 CA LEU B 75 16.093 9.940 45.892 1.00 58.37 C \r
-ATOM 2917 CA THR B 76 15.524 13.198 47.826 1.00 55.82 C \r
-ATOM 2924 CA CYS B 77 17.941 15.109 45.556 1.00 58.23 C \r
-ATOM 2930 CA HIS B 78 15.777 14.389 42.513 1.00 64.55 C \r
-ATOM 2940 CA ALA B 79 12.108 14.429 43.512 1.00 68.40 C \r
-ATOM 2945 CA TYR B 80 9.442 17.152 43.581 1.00 69.69 C \r
-ATOM 2957 CA PRO B 81 6.414 16.584 45.842 1.00 71.39 C \r
-ATOM 2964 CA THR B 82 3.015 16.014 44.179 1.00 73.67 C \r
-ATOM 2971 CA SER B 83 1.278 15.771 47.557 1.00 76.90 C \r
-ATOM 2977 CA ASP B 84 1.940 16.119 51.289 1.00 75.20 C \r
-ATOM 2985 CA VAL B 85 4.840 13.765 52.050 1.00 71.37 C \r
-ATOM 2992 CA VAL B 86 6.363 11.824 54.956 1.00 70.12 C \r
-ATOM 2999 CA ILE B 87 9.770 10.300 54.188 1.00 74.18 C \r
-ATOM 3007 CA GLU B 88 12.211 8.403 56.410 1.00 78.53 C \r
-ATOM 3012 CA THR B 89 15.541 9.964 55.407 1.00 79.79 C \r
-ATOM 3019 CA HIS B 90 19.062 8.538 55.881 1.00 79.40 C \r
-ATOM 3029 CA LYS B 91 17.584 5.099 55.099 1.00 84.52 C \r
-ATOM 3038 CA GLU B 92 20.016 2.596 53.549 1.00 91.64 C \r
-ATOM 3047 CA GLU B 93 20.192 -0.858 51.981 1.00 98.97 C \r
-ATOM 3056 CA GLU B 94 23.321 -2.924 51.298 1.00106.32 C \r
-ATOM 3065 CA LEU B 95 22.104 -6.552 51.453 1.00111.32 C \r
-ATOM 3073 CA THR B 96 18.778 -8.417 51.866 1.00116.01 C \r
-ATOM 3080 CA GLY B 97 18.877 -11.302 49.394 1.00116.63 C \r
-ATOM 3084 CA ALA B 98 22.056 -9.833 47.910 1.00116.02 C \r
-ATOM 3091 CA GLU C 19 26.080 -2.480 15.294 1.00 73.96 C \r
-ATOM 3100 CA SER C 20 23.405 0.198 14.956 1.00 67.27 C \r
-ATOM 3106 CA LYS C 21 22.937 3.927 15.380 1.00 59.27 C \r
-ATOM 3115 CA LYS C 22 19.198 3.481 15.874 1.00 58.42 C \r
-ATOM 3124 CA GLN C 23 17.251 3.141 19.137 1.00 59.89 C \r
-ATOM 3133 CA GLU C 24 17.931 -0.276 20.610 1.00 62.66 C \r
-ATOM 3142 CA GLU C 25 16.850 -0.453 24.226 1.00 64.27 C \r
-ATOM 3151 CA GLY C 26 13.211 -0.817 25.116 1.00 61.78 C \r
-ATOM 3155 CA VAL C 27 12.703 -2.073 21.582 1.00 58.37 C \r
-ATOM 3162 CA VAL C 28 10.779 -5.347 21.485 1.00 54.17 C \r
-ATOM 3169 CA THR C 29 9.481 -7.339 18.549 1.00 52.79 C \r
-ATOM 3176 CA ASN C 30 6.670 -9.775 17.786 1.00 51.30 C \r
-ATOM 3184 CA LEU C 31 4.863 -9.997 21.112 1.00 51.05 C \r
-ATOM 3192 CA TYR C 32 1.766 -11.297 19.327 1.00 50.51 C \r
-ATOM 3204 CA LYS C 33 1.373 -13.532 16.266 1.00 49.49 C \r
-ATOM 3213 CA PRO C 34 -1.609 -14.150 13.925 1.00 50.98 C \r
-ATOM 3220 CA LYS C 35 -2.450 -17.248 16.011 1.00 55.46 C \r
-ATOM 3229 CA GLU C 36 -2.977 -15.400 19.288 1.00 53.79 C \r
-ATOM 3238 CA PRO C 37 -3.251 -11.638 18.607 1.00 49.32 C \r
-ATOM 3245 CA TYR C 38 -3.674 -9.050 21.318 1.00 46.76 C \r
-ATOM 3257 CA VAL C 39 -7.276 -7.947 21.418 1.00 43.68 C \r
-ATOM 3264 CA GLY C 40 -7.415 -4.194 21.922 1.00 41.62 C \r
-ATOM 3268 CA ARG C 41 -10.273 -1.719 21.954 1.00 40.07 C \r
-ATOM 3279 CA CYS C 42 -11.026 1.064 19.477 1.00 36.37 C \r
-ATOM 3285 CA LEU C 43 -11.330 4.206 21.583 1.00 31.09 C \r
-ATOM 3293 CA LEU C 44 -11.337 6.671 18.673 1.00 28.46 C \r
-ATOM 3301 CA ASN C 45 -11.792 6.653 14.923 1.00 26.74 C \r
-ATOM 3309 CA THR C 46 -11.954 9.920 13.013 1.00 25.29 C \r
-ATOM 3316 CA LYS C 47 -11.667 10.775 9.352 1.00 21.50 C \r
-ATOM 3325 CA ILE C 48 -8.895 13.355 9.121 1.00 19.33 C \r
-ATOM 3333 CA THR C 49 -9.125 14.281 5.442 1.00 20.38 C \r
-ATOM 3340 CA GLY C 50 -11.630 16.676 3.855 1.00 20.12 C \r
-ATOM 3344 CA ASP C 51 -14.895 15.345 2.412 1.00 21.75 C \r
-ATOM 3352 CA ASP C 52 -13.889 16.693 -0.999 1.00 21.19 C \r
-ATOM 3360 CA ALA C 53 -10.651 14.683 -0.749 1.00 21.06 C \r
-ATOM 3365 CA PRO C 54 -10.036 11.974 -3.413 1.00 21.39 C \r
-ATOM 3372 CA GLY C 55 -9.982 9.067 -0.977 1.00 24.42 C \r
-ATOM 3376 CA GLU C 56 -10.374 9.298 2.857 1.00 22.08 C \r
-ATOM 3385 CA THR C 57 -7.723 8.611 5.517 1.00 20.31 C \r
-ATOM 3392 CA TRP C 58 -8.541 7.849 9.162 1.00 19.33 C \r
-ATOM 3406 CA HIS C 59 -6.758 8.520 12.438 1.00 22.68 C \r
-ATOM 3416 CA MET C 60 -7.645 5.951 15.108 1.00 27.16 C \r
-ATOM 3424 CA VAL C 61 -6.672 5.224 18.723 1.00 29.32 C \r
-ATOM 3431 CA PHE C 62 -6.669 1.704 20.220 1.00 34.23 C \r
-ATOM 3442 CA SER C 63 -6.102 0.643 23.847 1.00 37.05 C \r
-ATOM 3448 CA THR C 64 -3.096 -1.517 24.798 1.00 41.86 C \r
-ATOM 3455 CA GLU C 65 -3.169 -1.652 28.621 1.00 48.33 C \r
-ATOM 3464 CA GLY C 66 0.537 -0.885 28.318 1.00 52.45 C \r
-ATOM 3468 CA LYS C 67 0.955 -4.385 26.891 1.00 54.14 C \r
-ATOM 3477 CA ILE C 68 2.429 -3.211 23.570 1.00 51.52 C \r
-ATOM 3485 CA PRO C 69 5.602 -1.279 24.487 1.00 49.85 C \r
-ATOM 3492 CA TYR C 70 6.523 -0.180 20.967 1.00 44.48 C \r
-ATOM 3504 CA ARG C 71 9.185 2.353 19.993 1.00 40.96 C \r
-ATOM 3515 CA GLU C 72 8.727 5.317 17.688 1.00 33.49 C \r
-ATOM 3524 CA GLY C 73 8.913 3.876 14.164 1.00 30.16 C \r
-ATOM 3528 CA GLN C 74 7.423 0.399 14.427 1.00 31.26 C \r
-ATOM 3537 CA SER C 75 4.187 -0.913 12.966 1.00 33.65 C \r
-ATOM 3543 CA ILE C 76 1.454 -3.212 14.278 1.00 33.75 C \r
-ATOM 3551 CA GLY C 77 -0.295 -5.923 12.356 1.00 34.32 C \r
-ATOM 3555 CA VAL C 78 -4.060 -6.111 12.164 1.00 36.67 C \r
-ATOM 3562 CA ILE C 79 -6.137 -9.230 11.507 1.00 41.91 C \r
-ATOM 3570 CA ALA C 80 -9.427 -8.086 10.024 1.00 44.06 C \r
-ATOM 3575 CA ASP C 81 -12.530 -9.927 11.224 1.00 47.03 C \r
-ATOM 3583 CA GLY C 82 -13.972 -12.487 8.829 1.00 53.52 C \r
-ATOM 3587 CA VAL C 83 -12.521 -14.951 6.324 1.00 62.57 C \r
-ATOM 3594 CA ASP C 84 -11.856 -14.200 2.630 1.00 71.97 C \r
-ATOM 3602 CA LYS C 85 -12.935 -17.403 0.861 1.00 76.86 C \r
-ATOM 3611 CA ASN C 86 -13.690 -18.960 4.253 1.00 76.52 C \r
-ATOM 3619 CA GLY C 87 -10.006 -19.837 4.066 1.00 76.22 C \r
-ATOM 3623 CA LYS C 88 -8.802 -19.138 7.616 1.00 71.60 C \r
-ATOM 3632 CA PRO C 89 -8.651 -15.577 8.944 1.00 64.14 C \r
-ATOM 3639 CA HIS C 90 -7.547 -12.649 6.805 1.00 52.35 C \r
-ATOM 3649 CA LYS C 91 -3.753 -12.529 6.474 1.00 46.81 C \r
-ATOM 3658 CA VAL C 92 -2.180 -9.868 8.686 1.00 43.48 C \r
-ATOM 3665 CA ARG C 93 -1.491 -6.414 7.232 1.00 36.99 C \r
-ATOM 3676 CA LEU C 94 0.983 -3.882 8.601 1.00 32.95 C \r
-ATOM 3684 CA TYR C 95 0.340 -0.239 9.510 1.00 24.84 C \r
-ATOM 3696 CA SER C 96 3.003 2.101 10.803 1.00 23.32 C \r
-ATOM 3702 CA ILE C 97 2.244 3.502 14.236 1.00 24.12 C \r
-ATOM 3710 CA ALA C 98 1.243 7.179 13.932 1.00 22.32 C \r
-ATOM 3715 CA SER C 99 1.572 7.636 17.676 1.00 25.69 C \r
-ATOM 3721 CA SER C 100 4.752 7.924 19.726 1.00 28.83 C \r
-ATOM 3727 CA ALA C 101 5.741 5.521 22.508 1.00 35.61 C \r
-ATOM 3732 CA ILE C 102 3.906 7.635 25.079 1.00 38.39 C \r
-ATOM 3740 CA GLY C 103 0.899 7.826 22.742 1.00 31.93 C \r
-ATOM 3744 CA ASP C 104 -1.803 10.384 21.986 1.00 28.77 C \r
-ATOM 3752 CA PHE C 105 -3.050 10.293 25.607 1.00 37.05 C \r
-ATOM 3763 CA GLY C 106 0.503 10.389 26.967 1.00 39.36 C \r
-ATOM 3767 CA ASP C 107 -0.221 7.437 29.266 1.00 41.44 C \r
-ATOM 3775 CA SER C 108 1.566 4.766 27.217 1.00 42.18 C \r
-ATOM 3781 CA LYS C 109 -1.747 2.877 27.156 1.00 42.45 C \r
-ATOM 3790 CA THR C 110 -2.698 3.586 23.515 1.00 38.10 C \r
-ATOM 3797 CA VAL C 111 -1.603 2.971 19.906 1.00 32.79 C \r
-ATOM 3804 CA SER C 112 -2.671 5.020 16.872 1.00 29.60 C \r
-ATOM 3810 CA LEU C 113 -2.713 4.324 13.126 1.00 25.68 C \r
-ATOM 3818 CA CYS C 114 -3.142 6.498 9.999 1.00 24.23 C \r
-ATOM 3824 CA VAL C 115 -5.345 4.496 7.641 1.00 22.80 C \r
-ATOM 3831 CA LYS C 116 -6.221 5.196 4.015 1.00 22.11 C \r
-ATOM 3840 CA ARG C 117 -9.458 3.521 2.955 1.00 25.68 C \r
-ATOM 3851 CA LEU C 118 -8.447 1.440 -0.100 1.00 28.80 C \r
-ATOM 3859 CA ILE C 119 -11.140 1.661 -2.792 1.00 31.75 C \r
-ATOM 3867 CA TYR C 120 -10.086 0.716 -6.312 1.00 32.93 C \r
-ATOM 3879 CA THR C 121 -11.388 -0.733 -9.598 1.00 36.84 C \r
-ATOM 3886 CA ASN C 122 -10.258 -4.257 -10.546 1.00 36.90 C \r
-ATOM 3894 CA ASP C 123 -9.574 -5.562 -14.056 1.00 45.45 C \r
-ATOM 3902 CA ALA C 124 -13.196 -6.758 -14.269 1.00 44.66 C \r
-ATOM 3907 CA GLY C 125 -14.207 -3.102 -14.023 1.00 45.49 C \r
-ATOM 3911 CA GLU C 126 -16.059 -3.511 -10.722 1.00 45.54 C \r
-ATOM 3920 CA ILE C 127 -15.507 -1.321 -7.638 1.00 39.70 C \r
-ATOM 3928 CA VAL C 128 -13.846 -3.171 -4.762 1.00 38.09 C \r
-ATOM 3935 CA LYS C 129 -12.759 -2.512 -1.198 1.00 33.77 C \r
-ATOM 3944 CA GLY C 130 -9.566 -3.363 0.599 1.00 31.98 C \r
-ATOM 3948 CA VAL C 131 -10.443 -5.797 3.385 1.00 33.16 C \r
-ATOM 3955 CA CYS C 132 -8.241 -4.645 6.257 1.00 29.97 C \r
-ATOM 3961 CA SER C 133 -8.238 -0.898 5.607 1.00 30.67 C \r
-ATOM 3967 CA ASN C 134 -12.022 -0.902 5.268 1.00 30.35 C \r
-ATOM 3975 CA PHE C 135 -12.375 -2.946 8.424 1.00 29.86 C \r
-ATOM 3986 CA LEU C 136 -10.223 -0.334 10.195 1.00 29.42 C \r
-ATOM 3994 CA CYS C 137 -11.779 2.834 8.813 1.00 32.27 C \r
-ATOM 4000 CA ASP C 138 -15.116 1.280 9.724 1.00 34.29 C \r
-ATOM 4008 CA LEU C 139 -14.287 0.699 13.399 1.00 37.51 C \r
-ATOM 4016 CA GLN C 140 -16.635 2.170 16.028 1.00 43.76 C \r
-ATOM 4025 CA PRO C 141 -15.630 3.032 19.581 1.00 42.77 C \r
-ATOM 4032 CA GLY C 142 -16.082 -0.210 21.478 1.00 42.83 C \r
-ATOM 4036 CA ASP C 143 -15.117 -2.625 18.696 1.00 40.91 C \r
-ATOM 4044 CA ASN C 144 -12.182 -4.947 19.288 1.00 45.66 C \r
-ATOM 4052 CA VAL C 145 -9.056 -5.146 17.145 1.00 46.95 C \r
-ATOM 4059 CA GLN C 146 -6.707 -8.107 16.606 1.00 48.69 C \r
-ATOM 4068 CA ILE C 147 -3.249 -6.538 17.123 1.00 46.84 C \r
-ATOM 4076 CA THR C 148 -0.010 -8.392 16.264 1.00 46.26 C \r
-ATOM 4083 CA GLY C 149 3.543 -7.117 16.634 1.00 45.60 C \r
-ATOM 4087 CA PRO C 150 5.248 -4.818 17.394 1.00 44.97 C \r
-ATOM 4094 CA VAL C 151 7.423 -5.293 14.321 1.00 44.50 C \r
-ATOM 4101 CA GLY C 152 10.289 -3.716 12.438 1.00 45.33 C \r
-ATOM 4105 CA LYS C 153 13.599 -2.161 13.435 1.00 48.64 C \r
-ATOM 4114 CA GLU C 154 14.166 -0.437 10.074 1.00 48.20 C \r
-ATOM 4123 CA MET C 155 12.437 2.888 10.737 1.00 41.77 C \r
-ATOM 4131 CA LEU C 156 13.839 3.081 14.267 1.00 38.27 C \r
-ATOM 4139 CA MET C 157 15.076 6.540 15.308 1.00 34.29 C \r
-ATOM 4147 CA PRO C 158 18.782 7.419 15.339 1.00 34.05 C \r
-ATOM 4154 CA LYS C 159 20.262 7.521 18.845 1.00 35.82 C \r
-ATOM 4163 CA ASP C 160 22.076 10.792 18.273 1.00 35.95 C \r
-ATOM 4171 CA PRO C 161 19.683 13.401 19.809 1.00 35.63 C \r
-ATOM 4178 CA ASN C 162 21.563 15.948 17.758 1.00 33.92 C \r
-ATOM 4186 CA ALA C 163 21.028 14.172 14.487 1.00 30.82 C \r
-ATOM 4191 CA THR C 164 19.693 15.722 11.305 1.00 25.18 C \r
-ATOM 4198 CA ILE C 165 16.617 13.601 10.636 1.00 19.91 C \r
-ATOM 4206 CA ILE C 166 15.351 13.978 7.060 1.00 13.76 C \r
-ATOM 4214 CA MET C 167 11.843 12.550 6.703 1.00 14.98 C \r
-ATOM 4222 CA LEU C 168 10.385 11.831 3.251 1.00 16.64 C \r
-ATOM 4230 CA ALA C 169 6.747 10.808 3.007 1.00 15.85 C \r
-ATOM 4235 CA THR C 170 3.765 10.346 0.737 1.00 14.23 C \r
-ATOM 4242 CA GLY C 171 0.255 9.724 2.035 1.00 13.78 C \r
-ATOM 4246 CA THR C 172 -0.103 7.560 5.139 1.00 17.62 C \r
-ATOM 4253 CA GLY C 173 3.646 7.343 4.821 1.00 17.20 C \r
-ATOM 4257 CA ILE C 174 3.469 10.213 7.270 1.00 15.91 C \r
-ATOM 4265 CA ALA C 175 2.586 7.783 10.110 1.00 15.63 C \r
-ATOM 4270 CA PRO C 176 6.023 6.933 11.582 1.00 17.04 C \r
-ATOM 4277 CA PHE C 177 7.215 10.514 11.327 1.00 18.21 C \r
-ATOM 4288 CA ARG C 178 4.268 11.745 13.359 1.00 22.35 C \r
-ATOM 4299 CA SER C 179 5.563 9.289 15.983 1.00 25.22 C \r
-ATOM 4305 CA PHE C 180 9.139 10.593 15.614 1.00 25.98 C \r
-ATOM 4316 CA LEU C 181 7.925 14.180 15.767 1.00 29.12 C \r
-ATOM 4324 CA TRP C 182 5.625 13.641 18.714 1.00 31.35 C \r
-ATOM 4338 CA LYS C 183 8.488 12.385 20.871 1.00 30.92 C \r
-ATOM 4347 CA MET C 184 10.841 15.050 19.503 1.00 24.85 C \r
-ATOM 4355 CA PHE C 185 8.741 18.202 20.114 1.00 22.97 C \r
-ATOM 4366 CA PHE C 186 5.604 17.337 22.076 1.00 27.77 C \r
-ATOM 4377 CA GLU C 187 7.117 15.432 25.009 1.00 37.71 C \r
-ATOM 4386 CA LYS C 188 9.542 15.977 27.878 1.00 53.59 C \r
-ATOM 4395 CA HIS C 189 12.355 13.416 28.180 1.00 63.67 C \r
-ATOM 4405 CA ASP C 190 15.318 13.181 30.569 1.00 66.93 C \r
-ATOM 4413 CA ASP C 191 17.480 11.106 28.238 1.00 59.79 C \r
-ATOM 4421 CA TYR C 192 16.190 12.725 25.047 1.00 51.96 C \r
-ATOM 4433 CA LYS C 193 16.700 16.406 24.324 1.00 47.01 C \r
-ATOM 4442 CA PHE C 194 16.580 16.471 20.530 1.00 39.85 C \r
-ATOM 4453 CA ASN C 195 18.572 19.494 19.409 1.00 37.52 C \r
-ATOM 4461 CA GLY C 196 19.361 18.548 15.845 1.00 32.08 C \r
-ATOM 4465 CA LEU C 197 17.310 19.266 12.766 1.00 28.26 C \r
-ATOM 4473 CA GLY C 198 14.051 17.526 11.928 1.00 25.05 C \r
-ATOM 4477 CA TRP C 199 13.211 18.137 8.269 1.00 19.81 C \r
-ATOM 4491 CA LEU C 200 9.908 16.742 7.059 1.00 13.86 C \r
-ATOM 4499 CA PHE C 201 8.855 16.521 3.429 1.00 14.83 C \r
-ATOM 4510 CA LEU C 202 5.288 15.361 2.717 1.00 16.12 C \r
-ATOM 4518 CA GLY C 203 3.701 14.731 -0.681 1.00 13.79 C \r
-ATOM 4522 CA VAL C 204 -0.051 14.414 -1.182 1.00 11.75 C \r
-ATOM 4529 CA PRO C 205 -2.113 15.264 -4.308 1.00 14.66 C \r
-ATOM 4536 CA THR C 206 -4.553 17.737 -2.778 1.00 16.37 C \r
-ATOM 4543 CA SER C 207 -4.756 20.169 0.120 1.00 18.01 C \r
-ATOM 4549 CA SER C 208 -7.780 18.225 1.280 1.00 17.59 C \r
-ATOM 4555 CA SER C 209 -5.452 15.198 1.550 1.00 16.19 C \r
-ATOM 4561 CA LEU C 210 -2.972 16.940 3.860 1.00 14.22 C \r
-ATOM 4569 CA LEU C 211 -2.255 14.980 7.059 1.00 14.43 C \r
-ATOM 4577 CA TYR C 212 -1.624 16.449 10.549 1.00 18.94 C \r
-ATOM 4589 CA LYS C 213 -0.818 19.896 9.150 1.00 22.61 C \r
-ATOM 4598 CA GLU C 214 -2.039 21.572 12.352 1.00 25.73 C \r
-ATOM 4607 CA GLU C 215 0.152 19.413 14.514 1.00 19.23 C \r
-ATOM 4616 CA PHE C 216 3.216 20.178 12.439 1.00 17.80 C \r
-ATOM 4627 CA GLY C 217 2.478 23.890 12.512 1.00 19.90 C \r
-ATOM 4631 CA LYS C 218 2.578 24.001 16.294 1.00 25.54 C \r
-ATOM 4640 CA MET C 219 5.810 22.021 16.188 1.00 26.79 C \r
-ATOM 4648 CA LYS C 220 7.224 24.606 13.819 1.00 31.85 C \r
-ATOM 4657 CA GLU C 221 6.071 27.341 16.219 1.00 38.62 C \r
-ATOM 4666 CA ARG C 222 7.760 25.760 19.233 1.00 39.10 C \r
-ATOM 4677 CA ALA C 223 11.124 24.971 17.668 1.00 35.43 C \r
-ATOM 4682 CA PRO C 224 11.696 27.100 14.528 1.00 32.99 C \r
-ATOM 4689 CA GLU C 225 15.425 26.331 14.360 1.00 33.87 C \r
-ATOM 4698 CA ASN C 226 15.038 22.591 14.986 1.00 30.46 C \r
-ATOM 4706 CA PHE C 227 12.088 21.755 12.732 1.00 24.98 C \r
-ATOM 4717 CA ARG C 228 11.351 22.384 9.075 1.00 19.87 C \r
-ATOM 4728 CA VAL C 229 8.435 21.010 7.118 1.00 14.21 C \r
-ATOM 4735 CA ASP C 230 7.739 21.452 3.398 1.00 12.26 C \r
-ATOM 4743 CA TYR C 231 4.627 20.147 1.722 1.00 14.42 C \r
-ATOM 4755 CA ALA C 232 4.334 19.003 -1.872 1.00 9.99 C \r
-ATOM 4760 CA VAL C 233 0.778 19.232 -3.168 1.00 10.49 C \r
-ATOM 4767 CA SER C 234 1.043 17.769 -6.694 1.00 19.00 C \r
-ATOM 4773 CA ARG C 235 -2.240 19.042 -8.206 1.00 23.13 C \r
-ATOM 4784 CA GLU C 236 -2.069 22.459 -6.578 1.00 17.58 C \r
-ATOM 4793 CA GLN C 237 1.546 23.511 -6.623 1.00 15.89 C \r
-ATOM 4802 CA THR C 238 4.202 24.018 -9.275 1.00 17.86 C \r
-ATOM 4809 CA ASN C 239 7.922 24.800 -9.182 1.00 15.15 C \r
-ATOM 4817 CA ALA C 240 9.558 27.791 -10.892 1.00 21.51 C \r
-ATOM 4822 CA ALA C 241 9.475 25.887 -14.174 1.00 24.05 C \r
-ATOM 4827 CA GLY C 242 5.741 25.110 -13.938 1.00 26.25 C \r
-ATOM 4831 CA GLU C 243 5.999 21.359 -13.153 1.00 25.92 C \r
-ATOM 4840 CA ARG C 244 3.679 19.536 -10.704 1.00 24.04 C \r
-ATOM 4851 CA MET C 245 5.076 19.643 -7.174 1.00 18.58 C \r
-ATOM 4859 CA TYR C 246 5.784 16.047 -6.100 1.00 14.16 C \r
-ATOM 4871 CA ILE C 247 7.910 15.343 -3.034 1.00 16.78 C \r
-ATOM 4879 CA GLN C 248 11.089 15.070 -5.120 1.00 18.72 C \r
-ATOM 4888 CA THR C 249 10.168 18.255 -6.921 1.00 20.93 C \r
-ATOM 4895 CA ARG C 250 9.962 20.031 -3.567 1.00 19.25 C \r
-ATOM 4906 CA MET C 251 13.275 18.471 -2.561 1.00 19.40 C \r
-ATOM 4914 CA ALA C 252 14.910 19.812 -5.760 1.00 20.48 C \r
-ATOM 4919 CA GLU C 253 14.456 23.418 -4.569 1.00 18.19 C \r
-ATOM 4928 CA TYR C 254 16.804 22.515 -1.673 1.00 17.80 C \r
-ATOM 4940 CA LYS C 255 19.038 20.415 -3.902 1.00 20.66 C \r
-ATOM 4949 CA GLU C 256 22.452 21.603 -2.682 1.00 16.05 C \r
-ATOM 4958 CA GLU C 257 21.544 21.914 0.993 1.00 15.89 C \r
-ATOM 4967 CA LEU C 258 20.377 18.297 0.919 1.00 20.74 C \r
-ATOM 4975 CA TRP C 259 23.388 16.939 -0.965 1.00 23.45 C \r
-ATOM 4989 CA GLU C 260 25.645 18.669 1.563 1.00 24.08 C \r
-ATOM 4998 CA LEU C 261 23.573 17.378 4.477 1.00 24.74 C \r
-ATOM 5006 CA LEU C 262 24.020 13.928 2.938 1.00 26.14 C \r
-ATOM 5014 CA LYS C 263 27.792 14.091 3.402 1.00 25.40 C \r
-ATOM 5023 CA LYS C 264 27.457 14.521 7.176 1.00 31.47 C \r
-ATOM 5032 CA ASP C 265 27.877 11.474 9.425 1.00 35.31 C \r
-ATOM 5040 CA ASN C 266 24.934 12.482 11.620 1.00 29.63 C \r
-ATOM 5048 CA THR C 267 22.321 12.795 8.832 1.00 28.00 C \r
-ATOM 5055 CA TYR C 268 19.556 10.160 8.808 1.00 27.00 C \r
-ATOM 5067 CA VAL C 269 17.143 9.903 5.884 1.00 24.65 C \r
-ATOM 5074 CA TYR C 270 13.890 8.016 6.276 1.00 23.37 C \r
-ATOM 5086 CA MET C 271 11.373 7.327 3.518 1.00 18.93 C \r
-ATOM 5094 CA CYS C 272 7.834 6.074 4.043 1.00 18.24 C \r
-ATOM 5100 CA GLY C 273 4.784 5.874 1.826 1.00 22.39 C \r
-ATOM 5104 CA LEU C 274 3.837 4.483 -1.568 1.00 26.95 C \r
-ATOM 5112 CA LYS C 275 6.305 2.384 -3.532 1.00 32.36 C \r
-ATOM 5121 CA GLY C 276 7.741 4.199 -6.514 1.00 37.46 C \r
-ATOM 5125 CA MET C 277 7.714 7.455 -4.608 1.00 28.76 C \r
-ATOM 5133 CA GLU C 278 11.430 6.639 -4.425 1.00 32.22 C \r
-ATOM 5142 CA LYS C 279 12.017 6.321 -8.153 1.00 29.94 C \r
-ATOM 5151 CA GLY C 280 11.317 10.057 -8.293 1.00 24.18 C \r
-ATOM 5155 CA ILE C 281 13.766 10.673 -5.460 1.00 23.68 C \r
-ATOM 5163 CA ASP C 282 16.431 8.365 -6.934 1.00 26.58 C \r
-ATOM 5171 CA ASP C 283 16.211 10.530 -10.054 1.00 28.70 C \r
-ATOM 5179 CA ILE C 284 17.089 13.937 -8.538 1.00 27.28 C \r
-ATOM 5187 CA MET C 285 19.706 12.222 -6.388 1.00 27.45 C \r
-ATOM 5195 CA VAL C 286 21.377 10.712 -9.470 1.00 30.74 C \r
-ATOM 5202 CA SER C 287 21.619 14.159 -11.061 1.00 32.14 C \r
-ATOM 5208 CA LEU C 288 23.240 15.463 -7.873 1.00 34.20 C \r
-ATOM 5216 CA ALA C 289 25.801 12.653 -7.874 1.00 40.16 C \r
-ATOM 5221 CA GLU C 290 26.837 12.825 -11.536 1.00 41.84 C \r
-ATOM 5230 CA LYS C 291 27.855 16.387 -10.793 1.00 43.17 C \r
-ATOM 5239 CA ASP C 292 30.299 15.115 -8.139 1.00 41.84 C \r
-ATOM 5247 CA GLY C 293 31.237 12.232 -10.420 1.00 46.12 C \r
-ATOM 5251 CA ILE C 294 30.053 9.669 -7.864 1.00 45.54 C \r
-ATOM 5259 CA ASP C 295 27.399 6.998 -8.480 1.00 41.14 C \r
-ATOM 5267 CA TRP C 296 24.222 7.605 -6.479 1.00 30.67 C \r
-ATOM 5281 CA PHE C 297 23.381 3.910 -6.151 1.00 31.97 C \r
-ATOM 5292 CA ASP C 298 26.856 2.916 -4.907 1.00 38.12 C \r
-ATOM 5300 CA TYR C 299 26.671 5.875 -2.540 1.00 39.05 C \r
-ATOM 5312 CA LYS C 300 23.196 4.971 -1.294 1.00 41.63 C \r
-ATOM 5321 CA LYS C 301 24.542 1.489 -0.577 1.00 43.40 C \r
-ATOM 5330 CA GLN C 302 27.207 3.064 1.608 1.00 43.79 C \r
-ATOM 5339 CA LEU C 303 24.476 5.181 3.238 1.00 41.51 C \r
-ATOM 5347 CA LYS C 304 22.138 2.343 4.264 1.00 45.18 C \r
-ATOM 5356 CA ARG C 305 25.322 0.535 5.256 1.00 46.65 C \r
-ATOM 5367 CA GLY C 306 25.613 3.181 7.945 1.00 40.29 C \r
-ATOM 5371 CA ASP C 307 21.954 3.487 8.940 1.00 41.21 C \r
-ATOM 5379 CA GLN C 308 21.463 6.730 7.023 1.00 35.55 C \r
-ATOM 5388 CA TRP C 309 18.961 5.674 4.361 1.00 31.22 C \r
-ATOM 5402 CA ASN C 310 16.018 3.728 5.752 1.00 31.61 C \r
-ATOM 5410 CA VAL C 311 13.120 2.841 3.452 1.00 32.13 C \r
-ATOM 5417 CA GLU C 312 9.705 1.332 4.261 1.00 31.51 C \r
-ATOM 5426 CA VAL C 313 7.466 1.606 1.209 1.00 26.39 C \r
-ATOM 5433 CA TYR C 314 4.403 -0.343 0.111 1.00 25.42 C \r
+HEADER OXIDOREDUCTASE/ELECTRON TRANSPORT 08-MAY-00 1GAQ
+ATOM 2 CA GLU A 19 20.491 30.713 36.290 1.00 74.29 C
+ATOM 11 CA SER A 20 24.056 29.774 37.264 1.00 72.09 C
+ATOM 17 CA LYS A 21 27.517 31.289 37.563 1.00 70.09 C
+ATOM 26 CA LYS A 22 28.794 27.865 36.481 1.00 68.64 C
+ATOM 35 CA GLN A 23 29.484 26.806 32.884 1.00 70.46 C
+ATOM 44 CA GLU A 24 26.420 25.175 31.360 1.00 72.08 C
+ATOM 53 CA GLU A 25 26.736 26.049 27.683 1.00 70.43 C
+ATOM 62 CA GLY A 26 28.299 22.912 26.233 1.00 63.14 C
+ATOM 66 CA VAL A 27 26.863 20.704 28.982 1.00 54.50 C
+ATOM 73 CA VAL A 28 25.030 17.390 28.655 1.00 48.32 C
+ATOM 80 CA THR A 29 23.728 14.677 30.991 1.00 44.86 C
+ATOM 87 CA ASN A 30 22.327 11.164 30.703 1.00 45.42 C
+ATOM 95 CA LEU A 31 23.332 10.459 27.102 1.00 45.42 C
+ATOM 103 CA TYR A 32 23.549 6.898 28.380 1.00 45.88 C
+ATOM 115 CA LYS A 33 21.656 5.321 31.262 1.00 47.27 C
+ATOM 124 CA PRO A 34 21.991 2.046 33.248 1.00 48.99 C
+ATOM 131 CA LYS A 35 19.339 0.560 30.970 1.00 52.75 C
+ATOM 140 CA GLU A 36 21.580 0.855 27.886 1.00 53.33 C
+ATOM 149 CA PRO A 37 25.154 2.015 28.678 1.00 47.54 C
+ATOM 156 CA TYR A 38 27.929 2.872 26.249 1.00 41.98 C
+ATOM 168 CA VAL A 39 30.355 -0.017 25.909 1.00 41.48 C
+ATOM 175 CA GLY A 40 33.823 1.485 25.966 1.00 37.59 C
+ATOM 179 CA ARG A 41 37.165 -0.277 26.122 1.00 39.77 C
+ATOM 190 CA CYS A 42 40.148 -0.029 28.442 1.00 36.51 C
+ATOM 196 CA LEU A 43 43.095 1.441 26.554 1.00 36.13 C
+ATOM 204 CA LEU A 44 45.231 2.023 29.649 1.00 33.55 C
+ATOM 212 CA ASN A 45 45.140 1.026 33.307 1.00 27.79 C
+ATOM 220 CA THR A 46 48.056 1.800 35.617 1.00 28.75 C
+ATOM 227 CA LYS A 47 48.542 1.776 39.388 1.00 30.31 C
+ATOM 236 CA ILE A 48 49.564 5.317 40.376 1.00 31.32 C
+ATOM 244 CA THR A 49 50.339 4.682 44.059 1.00 37.62 C
+ATOM 251 CA GLY A 50 53.585 3.317 45.460 1.00 44.49 C
+ATOM 255 CA ASP A 51 53.706 -0.448 46.087 1.00 52.89 C
+ATOM 263 CA ASP A 52 53.910 0.545 49.751 1.00 55.23 C
+ATOM 271 CA ALA A 53 50.816 2.767 50.056 1.00 53.34 C
+ATOM 276 CA PRO A 54 47.904 1.940 52.405 1.00 50.60 C
+ATOM 283 CA GLY A 55 45.420 1.579 49.561 1.00 50.35 C
+ATOM 287 CA GLU A 56 46.098 1.286 45.836 1.00 42.53 C
+ATOM 296 CA THR A 57 44.534 3.816 43.480 1.00 41.14 C
+ATOM 303 CA TRP A 58 44.540 3.423 39.708 1.00 35.60 C
+ATOM 317 CA HIS A 59 44.468 5.853 36.796 1.00 31.89 C
+ATOM 327 CA MET A 60 42.658 4.227 33.866 1.00 31.65 C
+ATOM 335 CA VAL A 61 41.716 5.345 30.350 1.00 30.43 C
+ATOM 342 CA PHE A 62 38.669 4.172 28.360 1.00 34.36 C
+ATOM 353 CA SER A 63 37.657 4.908 24.772 1.00 34.69 C
+ATOM 359 CA THR A 64 34.448 6.828 23.951 1.00 36.96 C
+ATOM 366 CA GLU A 65 34.691 7.644 20.254 1.00 40.08 C
+ATOM 375 CA GLY A 66 33.742 11.183 21.285 1.00 40.22 C
+ATOM 379 CA LYS A 67 30.272 9.763 22.003 1.00 41.93 C
+ATOM 388 CA ILE A 68 30.279 11.116 25.577 1.00 41.52 C
+ATOM 396 CA PRO A 69 30.791 14.926 25.537 1.00 42.35 C
+ATOM 403 CA TYR A 70 31.228 15.232 29.299 1.00 39.84 C
+ATOM 415 CA ARG A 71 32.639 18.451 30.768 1.00 44.14 C
+ATOM 426 CA GLU A 72 35.122 19.278 33.515 1.00 43.82 C
+ATOM 435 CA GLY A 73 33.472 18.458 36.835 1.00 41.97 C
+ATOM 439 CA GLN A 74 30.929 15.874 35.657 1.00 37.19 C
+ATOM 448 CA SER A 75 31.285 12.124 36.138 1.00 38.28 C
+ATOM 454 CA ILE A 76 30.458 8.792 34.539 1.00 36.84 C
+ATOM 462 CA GLY A 77 28.983 5.620 35.918 1.00 35.39 C
+ATOM 466 CA VAL A 78 30.311 2.108 35.530 1.00 32.05 C
+ATOM 473 CA ILE A 79 28.458 -1.201 35.591 1.00 32.67 C
+ATOM 481 CA ALA A 80 30.745 -4.018 36.644 1.00 35.36 C
+ATOM 486 CA ASP A 81 30.359 -7.373 34.872 1.00 38.72 C
+ATOM 494 CA GLY A 82 28.308 -10.332 36.110 1.00 45.79 C
+ATOM 498 CA VAL A 83 25.820 -10.242 39.001 1.00 52.24 C
+ATOM 505 CA ASP A 84 25.838 -10.250 42.834 1.00 60.54 C
+ATOM 513 CA LYS A 85 25.014 -13.158 45.196 1.00 66.72 C
+ATOM 522 CA ASN A 86 21.414 -13.062 43.904 1.00 67.37 C
+ATOM 530 CA GLY A 87 21.724 -13.423 40.136 1.00 64.74 C
+ATOM 534 CA LYS A 88 20.971 -9.733 39.570 1.00 61.12 C
+ATOM 543 CA PRO A 89 23.054 -7.201 37.561 1.00 54.68 C
+ATOM 550 CA HIS A 90 25.224 -4.957 39.755 1.00 44.44 C
+ATOM 560 CA LYS A 91 23.940 -1.433 40.260 1.00 40.48 C
+ATOM 569 CA VAL A 92 25.803 1.546 38.843 1.00 38.45 C
+ATOM 576 CA ARG A 93 28.709 2.986 40.828 1.00 38.93 C
+ATOM 587 CA LEU A 94 29.778 6.584 40.096 1.00 34.37 C
+ATOM 595 CA TYR A 95 33.309 7.878 39.513 1.00 30.27 C
+ATOM 607 CA SER A 96 34.425 11.475 39.057 1.00 29.44 C
+ATOM 613 CA ILE A 97 36.029 12.090 35.662 1.00 27.61 C
+ATOM 621 CA ALA A 98 39.769 12.693 36.069 1.00 31.12 C
+ATOM 626 CA SER A 99 40.393 13.712 32.475 1.00 32.42 C
+ATOM 632 CA SER A 100 39.566 17.142 31.059 1.00 36.14 C
+ATOM 638 CA ALA A 101 37.097 17.367 28.154 1.00 41.07 C
+ATOM 643 CA ILE A 102 39.764 16.549 25.527 1.00 47.65 C
+ATOM 651 CA GLY A 103 41.172 13.692 27.599 1.00 46.77 C
+ATOM 655 CA ASP A 104 44.730 12.612 28.289 1.00 43.82 C
+ATOM 663 CA PHE A 105 45.115 12.065 24.522 1.00 41.52 C
+ATOM 674 CA GLY A 106 43.862 15.455 23.328 1.00 41.66 C
+ATOM 678 CA ASP A 107 41.355 13.883 20.926 1.00 40.90 C
+ATOM 686 CA SER A 108 38.132 14.250 22.954 1.00 42.95 C
+ATOM 692 CA LYS A 109 37.967 10.535 22.224 1.00 44.74 C
+ATOM 701 CA THR A 110 38.731 9.184 25.704 1.00 41.09 C
+ATOM 708 CA VAL A 111 37.728 9.519 29.374 1.00 39.03 C
+ATOM 715 CA SER A 112 39.912 8.705 32.399 1.00 37.17 C
+ATOM 721 CA LEU A 113 39.098 7.476 35.935 1.00 32.10 C
+ATOM 729 CA CYS A 114 40.964 7.578 39.261 1.00 30.65 C
+ATOM 735 CA VAL A 115 39.724 4.459 41.060 1.00 33.45 C
+ATOM 742 CA LYS A 116 40.668 3.524 44.628 1.00 34.75 C
+ATOM 751 CA ARG A 117 40.376 -0.250 45.123 1.00 32.85 C
+ATOM 762 CA LEU A 118 38.137 -1.094 48.077 1.00 30.50 C
+ATOM 770 CA ILE A 119 39.376 -3.752 50.459 1.00 34.34 C
+ATOM 778 CA TYR A 120 38.699 -4.266 54.125 1.00 31.39 C
+ATOM 790 CA THR A 121 38.264 -7.086 56.567 1.00 28.83 C
+ATOM 797 CA ASN A 122 34.792 -7.477 58.109 1.00 26.51 C
+ATOM 805 CA ASP A 123 33.626 -8.382 61.634 1.00 31.58 C
+ATOM 813 CA ALA A 124 34.191 -12.077 60.901 1.00 27.84 C
+ATOM 818 CA GLY A 125 37.759 -11.844 59.728 1.00 32.39 C
+ATOM 822 CA GLU A 126 36.809 -12.146 56.073 1.00 35.82 C
+ATOM 831 CA ILE A 127 38.655 -9.932 53.598 1.00 38.42 C
+ATOM 839 CA VAL A 128 36.025 -8.261 51.421 1.00 33.73 C
+ATOM 846 CA LYS A 129 36.482 -6.484 48.090 1.00 31.87 C
+ATOM 855 CA GLY A 130 34.363 -3.680 46.686 1.00 26.91 C
+ATOM 859 CA VAL A 131 32.680 -5.051 43.569 1.00 27.89 C
+ATOM 866 CA CYS A 132 33.074 -2.246 41.018 1.00 28.46 C
+ATOM 872 CA SER A 133 36.266 -0.553 42.213 1.00 31.33 C
+ATOM 878 CA ASN A 134 37.861 -3.983 41.984 1.00 30.29 C
+ATOM 886 CA PHE A 135 36.318 -4.795 38.623 1.00 31.48 C
+ATOM 897 CA LEU A 136 37.926 -1.553 37.520 1.00 27.81 C
+ATOM 905 CA CYS A 137 41.417 -1.976 38.955 1.00 25.91 C
+ATOM 911 CA ASP A 138 41.605 -5.419 37.338 1.00 30.22 C
+ATOM 919 CA LEU A 139 40.462 -4.306 33.874 1.00 32.69 C
+ATOM 927 CA GLN A 140 42.851 -5.511 31.186 1.00 36.80 C
+ATOM 936 CA PRO A 141 43.380 -3.220 28.170 1.00 36.16 C
+ATOM 943 CA GLY A 142 40.864 -4.420 25.586 1.00 31.10 C
+ATOM 947 CA ASP A 143 38.129 -5.298 28.055 1.00 30.62 C
+ATOM 955 CA ASN A 144 34.690 -3.847 27.645 1.00 33.52 C
+ATOM 963 CA VAL A 145 33.430 -1.522 30.361 1.00 37.08 C
+ATOM 970 CA GLN A 146 29.817 -0.374 30.523 1.00 37.65 C
+ATOM 979 CA ILE A 147 29.547 3.413 31.045 1.00 30.95 C
+ATOM 987 CA THR A 148 26.637 5.791 31.832 1.00 29.95 C
+ATOM 994 CA GLY A 149 26.297 9.581 31.843 1.00 32.81 C
+ATOM 998 CA PRO A 150 27.785 12.148 31.800 1.00 34.98 C
+ATOM 1005 CA VAL A 151 26.376 12.668 35.275 1.00 36.53 C
+ATOM 1012 CA GLY A 152 26.196 15.756 37.474 1.00 43.09 C
+ATOM 1016 CA LYS A 153 26.048 19.528 37.068 1.00 48.37 C
+ATOM 1025 CA GLU A 154 26.921 20.540 40.633 1.00 49.70 C
+ATOM 1034 CA MET A 155 30.710 20.266 40.235 1.00 47.30 C
+ATOM 1042 CA LEU A 156 30.882 22.020 36.869 1.00 50.36 C
+ATOM 1050 CA MET A 157 33.362 24.883 36.404 1.00 55.29 C
+ATOM 1058 CA PRO A 158 32.521 28.612 36.605 1.00 54.88 C
+ATOM 1065 CA LYS A 159 32.291 30.776 33.464 1.00 54.92 C
+ATOM 1074 CA ASP A 160 34.497 33.503 34.939 1.00 57.22 C
+ATOM 1082 CA PRO A 161 38.055 32.687 33.759 1.00 58.62 C
+ATOM 1089 CA ASN A 162 39.524 35.240 36.163 1.00 60.44 C
+ATOM 1097 CA ALA A 163 37.814 33.910 39.279 1.00 55.80 C
+ATOM 1102 CA THR A 164 39.596 32.487 42.316 1.00 51.04 C
+ATOM 1109 CA ILE A 165 38.966 28.771 42.756 1.00 50.26 C
+ATOM 1117 CA ILE A 166 39.774 26.773 45.885 1.00 47.54 C
+ATOM 1125 CA MET A 167 39.883 23.014 45.324 1.00 46.38 C
+ATOM 1133 CA LEU A 168 39.700 20.963 48.522 1.00 42.18 C
+ATOM 1141 CA ALA A 169 40.377 17.316 47.770 1.00 36.41 C
+ATOM 1146 CA THR A 170 41.005 14.086 49.622 1.00 32.98 C
+ATOM 1153 CA GLY A 171 42.027 10.802 48.014 1.00 31.36 C
+ATOM 1157 CA THR A 172 40.386 10.037 44.680 1.00 30.48 C
+ATOM 1164 CA GLY A 173 38.640 13.335 45.359 1.00 33.99 C
+ATOM 1168 CA ILE A 174 41.418 15.036 43.394 1.00 35.66 C
+ATOM 1176 CA ALA A 175 39.758 13.585 40.300 1.00 36.00 C
+ATOM 1181 CA PRO A 176 37.445 16.385 39.155 1.00 39.41 C
+ATOM 1188 CA PHE A 177 40.109 18.971 39.976 1.00 43.21 C
+ATOM 1199 CA ARG A 178 42.726 17.119 37.955 1.00 41.09 C
+ATOM 1210 CA SER A 179 40.235 17.536 35.124 1.00 39.92 C
+ATOM 1216 CA PHE A 180 39.808 21.204 36.009 1.00 39.23 C
+ATOM 1227 CA LEU A 181 43.528 21.949 35.995 1.00 39.50 C
+ATOM 1235 CA TRP A 182 44.305 20.081 32.770 1.00 41.47 C
+ATOM 1249 CA LYS A 183 42.141 22.654 30.972 1.00 48.08 C
+ATOM 1258 CA MET A 184 43.477 25.547 33.062 1.00 52.79 C
+ATOM 1266 CA PHE A 185 47.102 25.043 32.014 1.00 57.35 C
+ATOM 1277 CA PHE A 186 48.075 21.921 30.051 1.00 55.98 C
+ATOM 1288 CA GLU A 187 45.758 23.173 27.297 1.00 54.44 C
+ATOM 1297 CA LYS A 188 44.908 26.236 25.196 1.00 51.29 C
+ATOM 1306 CA HIS A 189 41.395 27.080 24.003 1.00 51.35 C
+ATOM 1316 CA ASP A 190 40.108 29.972 21.873 1.00 54.30 C
+ATOM 1324 CA ASP A 191 37.199 30.481 24.249 1.00 53.95 C
+ATOM 1332 CA TYR A 192 38.816 29.937 27.634 1.00 50.68 C
+ATOM 1344 CA LYS A 193 41.916 31.388 29.230 1.00 51.00 C
+ATOM 1353 CA PHE A 194 42.322 30.967 32.956 1.00 52.09 C
+ATOM 1364 CA ASN A 195 43.672 34.234 34.312 1.00 56.46 C
+ATOM 1372 CA GLY A 196 42.616 34.078 37.969 1.00 57.17 C
+ATOM 1376 CA LEU A 197 43.874 31.920 40.843 1.00 57.92 C
+ATOM 1384 CA GLY A 198 43.549 28.151 41.086 1.00 56.67 C
+ATOM 1388 CA TRP A 199 44.258 26.886 44.592 1.00 51.55 C
+ATOM 1402 CA LEU A 200 44.411 23.170 45.379 1.00 49.17 C
+ATOM 1410 CA PHE A 201 44.558 21.335 48.709 1.00 48.60 C
+ATOM 1421 CA LEU A 202 45.122 17.570 48.598 1.00 45.34 C
+ATOM 1429 CA GLY A 203 44.885 15.480 51.742 1.00 48.55 C
+ATOM 1433 CA VAL A 204 46.225 11.936 51.755 1.00 50.23 C
+ATOM 1440 CA PRO A 205 47.942 9.740 54.365 1.00 51.51 C
+ATOM 1447 CA THR A 206 51.284 9.148 52.648 1.00 50.21 C
+ATOM 1454 CA SER A 207 53.551 10.483 49.894 1.00 49.38 C
+ATOM 1460 CA SER A 208 53.267 7.061 48.259 1.00 43.49 C
+ATOM 1466 CA SER A 209 49.588 8.049 48.093 1.00 42.57 C
+ATOM 1472 CA LEU A 210 49.990 11.424 46.364 1.00 42.65 C
+ATOM 1480 CA LEU A 211 48.121 11.446 43.035 1.00 39.33 C
+ATOM 1488 CA TYR A 212 49.516 13.214 39.935 1.00 40.89 C
+ATOM 1500 CA LYS A 213 52.128 15.234 41.873 1.00 45.88 C
+ATOM 1509 CA GLU A 214 54.518 15.406 38.899 1.00 53.22 C
+ATOM 1518 CA GLU A 215 51.680 16.911 36.889 1.00 55.16 C
+ATOM 1527 CA PHE A 216 50.757 19.475 39.514 1.00 60.55 C
+ATOM 1538 CA GLY A 217 54.488 20.153 39.524 1.00 66.64 C
+ATOM 1542 CA LYS A 218 54.575 21.110 35.850 1.00 68.86 C
+ATOM 1551 CA MET A 219 51.398 23.159 36.265 1.00 66.97 C
+ATOM 1559 CA LYS A 220 53.138 25.090 39.061 1.00 65.97 C
+ATOM 1568 CA GLU A 221 55.654 26.250 36.459 1.00 70.02 C
+ATOM 1577 CA ARG A 222 53.584 26.507 33.294 1.00 73.48 C
+ATOM 1588 CA ALA A 223 52.005 29.449 35.175 1.00 76.21 C
+ATOM 1593 CA PRO A 224 53.272 29.877 38.804 1.00 79.25 C
+ATOM 1600 CA GLU A 225 51.296 33.124 39.020 1.00 81.84 C
+ATOM 1609 CA ASN A 226 47.873 31.528 38.622 1.00 78.84 C
+ATOM 1617 CA PHE A 227 48.418 28.176 40.350 1.00 75.28 C
+ATOM 1628 CA ARG A 228 49.090 27.305 43.996 1.00 72.05 C
+ATOM 1639 CA VAL A 229 49.165 23.724 45.323 1.00 68.82 C
+ATOM 1646 CA ASP A 230 49.258 22.581 48.958 1.00 66.54 C
+ATOM 1654 CA TYR A 231 49.605 18.943 49.968 1.00 60.31 C
+ATOM 1666 CA ALA A 232 48.551 17.560 53.332 1.00 57.39 C
+ATOM 1671 CA VAL A 233 50.260 14.228 53.945 1.00 57.14 C
+ATOM 1678 CA SER A 234 48.465 13.579 57.244 1.00 60.81 C
+ATOM 1684 CA ARG A 235 50.959 11.010 58.514 1.00 60.74 C
+ATOM 1695 CA GLU A 236 54.268 12.594 57.481 1.00 59.17 C
+ATOM 1704 CA GLN A 237 53.494 16.197 58.450 1.00 59.62 C
+ATOM 1713 CA THR A 238 52.590 18.236 61.521 1.00 63.18 C
+ATOM 1720 CA ASN A 239 52.019 21.937 62.188 1.00 66.71 C
+ATOM 1728 CA ALA A 240 52.096 23.767 65.537 1.00 70.06 C
+ATOM 1733 CA ALA A 241 51.302 21.400 68.410 1.00 72.44 C
+ATOM 1738 CA GLY A 242 52.383 18.324 66.438 1.00 72.38 C
+ATOM 1742 CA GLU A 243 48.826 18.169 65.110 1.00 69.71 C
+ATOM 1751 CA ARG A 244 48.674 15.776 62.148 1.00 67.21 C
+ATOM 1762 CA MET A 245 48.712 17.796 58.933 1.00 64.20 C
+ATOM 1770 CA TYR A 246 45.246 17.082 57.556 1.00 60.65 C
+ATOM 1782 CA ILE A 247 43.617 18.437 54.409 1.00 62.98 C
+ATOM 1790 CA GLN A 248 42.035 21.001 56.761 1.00 64.64 C
+ATOM 1799 CA THR A 249 45.057 21.461 59.009 1.00 63.37 C
+ATOM 1806 CA ARG A 250 46.891 22.664 55.903 1.00 62.47 C
+ATOM 1817 CA MET A 251 44.123 25.201 55.251 1.00 63.35 C
+ATOM 1825 CA ALA A 252 44.571 26.305 58.854 1.00 65.73 C
+ATOM 1830 CA GLU A 253 47.973 27.809 58.076 1.00 65.97 C
+ATOM 1839 CA TYR A 254 46.267 30.063 55.517 1.00 65.83 C
+ATOM 1851 CA LYS A 255 42.991 30.559 57.379 1.00 70.30 C
+ATOM 1860 CA GLU A 256 43.578 34.326 57.320 1.00 73.73 C
+ATOM 1869 CA GLU A 257 44.189 34.738 53.593 1.00 71.52 C
+ATOM 1878 CA LEU A 258 41.459 32.202 52.893 1.00 73.38 C
+ATOM 1886 CA TRP A 259 38.790 34.074 54.853 1.00 76.72 C
+ATOM 1900 CA GLU A 260 39.721 37.275 53.006 1.00 78.61 C
+ATOM 1909 CA LEU A 261 38.580 35.553 49.815 1.00 75.71 C
+ATOM 1917 CA LEU A 262 35.391 33.881 51.047 1.00 73.74 C
+ATOM 1925 CA LYS A 263 33.562 37.165 50.535 1.00 73.64 C
+ATOM 1934 CA LYS A 264 34.299 38.143 46.954 1.00 72.48 C
+ATOM 1943 CA ASP A 265 31.954 37.554 43.993 1.00 69.65 C
+ATOM 1951 CA ASN A 266 34.660 35.649 42.106 1.00 65.06 C
+ATOM 1959 CA THR A 267 35.835 33.117 44.683 1.00 58.24 C
+ATOM 1966 CA TYR A 268 34.459 29.646 43.909 1.00 51.04 C
+ATOM 1978 CA VAL A 269 35.192 26.827 46.382 1.00 44.95 C
+ATOM 1985 CA TYR A 270 35.012 23.150 45.368 1.00 44.96 C
+ATOM 1997 CA MET A 271 35.162 20.122 47.656 1.00 41.72 C
+ATOM 2005 CA CYS A 272 35.314 16.468 46.632 1.00 37.19 C
+ATOM 2011 CA GLY A 273 36.343 13.080 47.951 1.00 37.65 C
+ATOM 2015 CA LEU A 274 36.040 10.886 51.020 1.00 39.39 C
+ATOM 2023 CA LYS A 275 33.076 12.283 52.955 1.00 44.86 C
+ATOM 2032 CA GLY A 276 34.322 13.183 56.400 1.00 49.16 C
+ATOM 2036 CA MET A 277 36.932 15.608 55.168 1.00 53.30 C
+ATOM 2044 CA GLU A 278 33.917 17.921 55.165 1.00 56.74 C
+ATOM 2053 CA LYS A 279 33.531 18.089 58.947 1.00 59.30 C
+ATOM 2062 CA GLY A 280 36.982 19.413 59.776 1.00 58.94 C
+ATOM 2066 CA ILE A 281 36.705 22.048 57.063 1.00 61.43 C
+ATOM 2074 CA ASP A 282 33.453 23.402 58.515 1.00 67.06 C
+ATOM 2082 CA ASP A 283 35.050 23.189 61.972 1.00 74.12 C
+ATOM 2090 CA ILE A 284 37.991 25.422 61.040 1.00 78.49 C
+ATOM 2098 CA MET A 285 35.456 27.566 59.201 1.00 82.25 C
+ATOM 2106 CA VAL A 286 32.941 27.959 62.027 1.00 83.44 C
+ATOM 2113 CA SER A 287 35.610 29.113 64.469 1.00 83.43 C
+ATOM 2119 CA LEU A 288 36.927 31.601 61.887 1.00 85.53 C
+ATOM 2127 CA ALA A 289 33.506 33.025 60.970 1.00 86.85 C
+ATOM 2132 CA GLU A 290 31.841 32.696 64.387 1.00 89.26 C
+ATOM 2141 CA LYS A 291 34.438 35.312 65.347 1.00 88.73 C
+ATOM 2150 CA ASP A 292 33.635 37.891 62.652 1.00 88.03 C
+ATOM 2158 CA GLY A 293 30.219 37.450 61.081 1.00 87.88 C
+ATOM 2162 CA ILE A 294 27.319 35.051 61.511 1.00 84.61 C
+ATOM 2170 CA ASP A 295 27.665 31.329 62.188 1.00 82.45 C
+ATOM 2178 CA TRP A 296 29.539 29.627 59.355 1.00 80.12 C
+ATOM 2192 CA PHE A 297 26.527 27.452 58.512 1.00 78.99 C
+ATOM 2203 CA ASP A 298 24.167 30.241 57.486 1.00 76.37 C
+ATOM 2211 CA TYR A 299 27.074 31.748 55.561 1.00 74.07 C
+ATOM 2223 CA LYS A 300 27.679 28.620 53.473 1.00 74.31 C
+ATOM 2232 CA LYS A 301 24.059 29.146 52.464 1.00 75.97 C
+ATOM 2241 CA GLN A 302 24.921 32.563 51.018 1.00 75.38 C
+ATOM 2250 CA LEU A 303 27.896 31.099 49.155 1.00 72.10 C
+ATOM 2258 CA LYS A 304 25.917 28.207 47.690 1.00 72.08 C
+ATOM 2267 CA ARG A 305 23.595 31.021 46.594 1.00 74.82 C
+ATOM 2278 CA GLY A 306 26.071 32.136 43.958 1.00 71.84 C
+ATOM 2282 CA ASP A 307 27.505 28.682 43.220 1.00 67.23 C
+ATOM 2290 CA GLN A 308 30.620 29.291 45.346 1.00 60.18 C
+ATOM 2299 CA TRP A 309 30.585 26.177 47.537 1.00 52.25 C
+ATOM 2313 CA ASN A 310 29.894 22.997 45.597 1.00 45.03 C
+ATOM 2321 CA VAL A 311 30.327 19.716 47.403 1.00 39.13 C
+ATOM 2328 CA GLU A 312 30.507 16.190 46.110 1.00 35.17 C
+ATOM 2337 CA VAL A 313 31.761 13.957 48.861 1.00 30.12 C
+ATOM 2344 CA TYR A 314 31.112 10.230 49.021 1.00 28.23 C
+ATOM 2358 CA ALA B 1 2.311 24.702 44.475 1.00 74.17 C
+ATOM 2363 CA THR B 2 3.590 24.207 48.055 1.00 74.76 C
+ATOM 2370 CA TYR B 3 3.069 20.876 49.837 1.00 73.52 C
+ATOM 2382 CA ASN B 4 3.748 19.874 53.435 1.00 75.75 C
+ATOM 2390 CA VAL B 5 6.618 17.399 53.868 1.00 75.95 C
+ATOM 2397 CA LYS B 6 7.769 15.523 56.983 1.00 77.70 C
+ATOM 2406 CA LEU B 7 11.351 14.325 57.458 1.00 78.91 C
+ATOM 2414 CA ILE B 8 11.807 11.511 59.985 1.00 81.00 C
+ATOM 2422 CA THR B 9 15.560 12.046 60.247 1.00 87.49 C
+ATOM 2429 CA PRO B 10 17.662 9.793 62.539 1.00 92.94 C
+ATOM 2436 CA GLU B 11 18.161 13.147 64.282 1.00 96.61 C
+ATOM 2445 CA GLY B 12 14.579 14.154 65.041 1.00 97.52 C
+ATOM 2449 CA GLU B 13 11.602 14.823 62.748 1.00 96.90 C
+ATOM 2458 CA VAL B 14 11.547 17.892 60.480 1.00 96.63 C
+ATOM 2465 CA GLU B 15 8.340 19.701 59.440 1.00 94.86 C
+ATOM 2474 CA LEU B 16 9.471 21.479 56.254 1.00 91.55 C
+ATOM 2482 CA GLN B 17 7.281 23.141 53.598 1.00 89.75 C
+ATOM 2491 CA VAL B 18 8.485 22.069 50.145 1.00 87.92 C
+ATOM 2498 CA PRO B 19 6.906 23.558 46.964 1.00 86.35 C
+ATOM 2505 CA ASP B 20 5.990 21.744 43.717 1.00 86.29 C
+ATOM 2513 CA ASP B 21 8.578 22.751 41.083 1.00 83.78 C
+ATOM 2521 CA VAL B 22 11.385 22.401 43.639 1.00 80.98 C
+ATOM 2528 CA TYR B 23 13.439 19.280 44.481 1.00 77.04 C
+ATOM 2540 CA ILE B 24 13.212 18.196 48.120 1.00 76.45 C
+ATOM 2548 CA LEU B 25 16.959 18.133 48.851 1.00 75.15 C
+ATOM 2556 CA ASP B 26 17.154 21.745 47.689 1.00 75.80 C
+ATOM 2564 CA GLN B 27 14.616 22.906 50.280 1.00 76.31 C
+ATOM 2573 CA ALA B 28 16.562 20.957 52.914 1.00 78.86 C
+ATOM 2578 CA GLU B 29 19.698 23.011 52.198 1.00 81.51 C
+ATOM 2587 CA GLU B 30 17.491 26.106 52.510 1.00 83.25 C
+ATOM 2596 CA ASP B 31 15.857 25.933 55.935 1.00 81.92 C
+ATOM 2604 CA GLY B 32 19.280 24.859 57.151 1.00 79.08 C
+ATOM 2608 CA ILE B 33 18.621 21.130 57.157 1.00 76.93 C
+ATOM 2616 CA ASP B 34 21.528 18.731 56.618 1.00 73.53 C
+ATOM 2624 CA LEU B 35 20.738 15.738 54.421 1.00 67.74 C
+ATOM 2632 CA PRO B 36 23.138 13.391 52.547 1.00 65.90 C
+ATOM 2639 CA TYR B 37 23.916 14.226 48.912 1.00 64.85 C
+ATOM 2651 CA SER B 38 26.659 13.373 46.412 1.00 62.58 C
+ATOM 2657 CA CYS B 39 26.193 13.603 42.652 1.00 60.99 C
+ATOM 2663 CA ARG B 40 22.908 15.441 43.251 1.00 58.35 C
+ATOM 2674 CA ALA B 41 21.699 14.108 39.886 1.00 56.38 C
+ATOM 2679 CA GLY B 42 19.886 10.955 40.991 1.00 56.66 C
+ATOM 2683 CA SER B 43 22.465 8.336 40.010 1.00 58.55 C
+ATOM 2689 CA CYS B 44 23.548 7.052 43.447 1.00 56.27 C
+ATOM 2695 CA SER B 45 22.057 5.987 46.791 1.00 58.20 C
+ATOM 2701 CA SER B 46 23.574 8.773 48.890 1.00 59.13 C
+ATOM 2707 CA CYS B 47 20.220 10.475 49.517 1.00 65.64 C
+ATOM 2713 CA ALA B 48 17.911 7.436 49.610 1.00 69.71 C
+ATOM 2718 CA GLY B 49 14.733 7.635 51.681 1.00 73.09 C
+ATOM 2722 CA LYS B 50 11.712 5.340 52.183 1.00 73.77 C
+ATOM 2731 CA VAL B 51 8.551 7.412 51.568 1.00 76.51 C
+ATOM 2738 CA VAL B 52 5.237 7.081 53.429 1.00 78.85 C
+ATOM 2745 CA SER B 53 2.180 9.376 53.647 1.00 79.57 C
+ATOM 2751 CA GLY B 54 2.118 10.991 50.218 1.00 76.32 C
+ATOM 2755 CA SER B 55 3.577 10.944 46.726 1.00 76.31 C
+ATOM 2761 CA VAL B 56 6.436 12.592 44.828 1.00 77.50 C
+ATOM 2768 CA ASP B 57 7.691 12.960 41.243 1.00 76.83 C
+ATOM 2776 CA GLN B 58 11.150 11.483 40.555 1.00 76.66 C
+ATOM 2785 CA SER B 59 10.976 10.827 36.792 1.00 80.19 C
+ATOM 2791 CA ASP B 60 14.688 11.644 36.510 1.00 83.51 C
+ATOM 2799 CA GLN B 61 15.175 8.137 37.916 1.00 85.74 C
+ATOM 2808 CA SER B 62 18.644 7.080 36.699 1.00 85.85 C
+ATOM 2814 CA TYR B 63 19.324 5.049 39.852 1.00 84.49 C
+ATOM 2826 CA LEU B 64 15.683 4.296 40.629 1.00 89.06 C
+ATOM 2834 CA ASP B 65 15.356 0.604 39.742 1.00 92.21 C
+ATOM 2842 CA ASP B 66 12.421 -1.791 39.331 1.00 92.35 C
+ATOM 2850 CA GLY B 67 10.747 -2.542 42.659 1.00 89.07 C
+ATOM 2854 CA GLN B 68 12.336 0.632 44.010 1.00 88.41 C
+ATOM 2863 CA ILE B 69 9.483 2.828 42.742 1.00 86.11 C
+ATOM 2871 CA ALA B 70 7.060 0.441 44.446 1.00 81.10 C
+ATOM 2876 CA ASP B 71 8.985 -0.310 47.648 1.00 76.82 C
+ATOM 2884 CA GLY B 72 8.653 3.423 48.186 1.00 73.00 C
+ATOM 2888 CA TRP B 73 12.342 4.386 48.095 1.00 67.93 C
+ATOM 2902 CA VAL B 74 13.052 8.007 47.136 1.00 63.84 C
+ATOM 2909 CA LEU B 75 16.093 9.940 45.892 1.00 58.37 C
+ATOM 2917 CA THR B 76 15.524 13.198 47.826 1.00 55.82 C
+ATOM 2924 CA CYS B 77 17.941 15.109 45.556 1.00 58.23 C
+ATOM 2930 CA HIS B 78 15.777 14.389 42.513 1.00 64.55 C
+ATOM 2940 CA ALA B 79 12.108 14.429 43.512 1.00 68.40 C
+ATOM 2945 CA TYR B 80 9.442 17.152 43.581 1.00 69.69 C
+ATOM 2957 CA PRO B 81 6.414 16.584 45.842 1.00 71.39 C
+ATOM 2964 CA THR B 82 3.015 16.014 44.179 1.00 73.67 C
+ATOM 2971 CA SER B 83 1.278 15.771 47.557 1.00 76.90 C
+ATOM 2977 CA ASP B 84 1.940 16.119 51.289 1.00 75.20 C
+ATOM 2985 CA VAL B 85 4.840 13.765 52.050 1.00 71.37 C
+ATOM 2992 CA VAL B 86 6.363 11.824 54.956 1.00 70.12 C
+ATOM 2999 CA ILE B 87 9.770 10.300 54.188 1.00 74.18 C
+ATOM 3007 CA GLU B 88 12.211 8.403 56.410 1.00 78.53 C
+ATOM 3012 CA THR B 89 15.541 9.964 55.407 1.00 79.79 C
+ATOM 3019 CA HIS B 90 19.062 8.538 55.881 1.00 79.40 C
+ATOM 3029 CA LYS B 91 17.584 5.099 55.099 1.00 84.52 C
+ATOM 3038 CA GLU B 92 20.016 2.596 53.549 1.00 91.64 C
+ATOM 3047 CA GLU B 93 20.192 -0.858 51.981 1.00 98.97 C
+ATOM 3056 CA GLU B 94 23.321 -2.924 51.298 1.00106.32 C
+ATOM 3065 CA LEU B 95 22.104 -6.552 51.453 1.00111.32 C
+ATOM 3073 CA THR B 96 18.778 -8.417 51.866 1.00116.01 C
+ATOM 3080 CA GLY B 97 18.877 -11.302 49.394 1.00116.63 C
+ATOM 3084 CA ALA B 98 22.056 -9.833 47.910 1.00116.02 C
+ATOM 3091 CA GLU C 19 26.080 -2.480 15.294 1.00 73.96 C
+ATOM 3100 CA SER C 20 23.405 0.198 14.956 1.00 67.27 C
+ATOM 3106 CA LYS C 21 22.937 3.927 15.380 1.00 59.27 C
+ATOM 3115 CA LYS C 22 19.198 3.481 15.874 1.00 58.42 C
+ATOM 3124 CA GLN C 23 17.251 3.141 19.137 1.00 59.89 C
+ATOM 3133 CA GLU C 24 17.931 -0.276 20.610 1.00 62.66 C
+ATOM 3142 CA GLU C 25 16.850 -0.453 24.226 1.00 64.27 C
+ATOM 3151 CA GLY C 26 13.211 -0.817 25.116 1.00 61.78 C
+ATOM 3155 CA VAL C 27 12.703 -2.073 21.582 1.00 58.37 C
+ATOM 3162 CA VAL C 28 10.779 -5.347 21.485 1.00 54.17 C
+ATOM 3169 CA THR C 29 9.481 -7.339 18.549 1.00 52.79 C
+ATOM 3176 CA ASN C 30 6.670 -9.775 17.786 1.00 51.30 C
+ATOM 3184 CA LEU C 31 4.863 -9.997 21.112 1.00 51.05 C
+ATOM 3192 CA TYR C 32 1.766 -11.297 19.327 1.00 50.51 C
+ATOM 3204 CA LYS C 33 1.373 -13.532 16.266 1.00 49.49 C
+ATOM 3213 CA PRO C 34 -1.609 -14.150 13.925 1.00 50.98 C
+ATOM 3220 CA LYS C 35 -2.450 -17.248 16.011 1.00 55.46 C
+ATOM 3229 CA GLU C 36 -2.977 -15.400 19.288 1.00 53.79 C
+ATOM 3238 CA PRO C 37 -3.251 -11.638 18.607 1.00 49.32 C
+ATOM 3245 CA TYR C 38 -3.674 -9.050 21.318 1.00 46.76 C
+ATOM 3257 CA VAL C 39 -7.276 -7.947 21.418 1.00 43.68 C
+ATOM 3264 CA GLY C 40 -7.415 -4.194 21.922 1.00 41.62 C
+ATOM 3268 CA ARG C 41 -10.273 -1.719 21.954 1.00 40.07 C
+ATOM 3279 CA CYS C 42 -11.026 1.064 19.477 1.00 36.37 C
+ATOM 3285 CA LEU C 43 -11.330 4.206 21.583 1.00 31.09 C
+ATOM 3293 CA LEU C 44 -11.337 6.671 18.673 1.00 28.46 C
+ATOM 3301 CA ASN C 45 -11.792 6.653 14.923 1.00 26.74 C
+ATOM 3309 CA THR C 46 -11.954 9.920 13.013 1.00 25.29 C
+ATOM 3316 CA LYS C 47 -11.667 10.775 9.352 1.00 21.50 C
+ATOM 3325 CA ILE C 48 -8.895 13.355 9.121 1.00 19.33 C
+ATOM 3333 CA THR C 49 -9.125 14.281 5.442 1.00 20.38 C
+ATOM 3340 CA GLY C 50 -11.630 16.676 3.855 1.00 20.12 C
+ATOM 3344 CA ASP C 51 -14.895 15.345 2.412 1.00 21.75 C
+ATOM 3352 CA ASP C 52 -13.889 16.693 -0.999 1.00 21.19 C
+ATOM 3360 CA ALA C 53 -10.651 14.683 -0.749 1.00 21.06 C
+ATOM 3365 CA PRO C 54 -10.036 11.974 -3.413 1.00 21.39 C
+ATOM 3372 CA GLY C 55 -9.982 9.067 -0.977 1.00 24.42 C
+ATOM 3376 CA GLU C 56 -10.374 9.298 2.857 1.00 22.08 C
+ATOM 3385 CA THR C 57 -7.723 8.611 5.517 1.00 20.31 C
+ATOM 3392 CA TRP C 58 -8.541 7.849 9.162 1.00 19.33 C
+ATOM 3406 CA HIS C 59 -6.758 8.520 12.438 1.00 22.68 C
+ATOM 3416 CA MET C 60 -7.645 5.951 15.108 1.00 27.16 C
+ATOM 3424 CA VAL C 61 -6.672 5.224 18.723 1.00 29.32 C
+ATOM 3431 CA PHE C 62 -6.669 1.704 20.220 1.00 34.23 C
+ATOM 3442 CA SER C 63 -6.102 0.643 23.847 1.00 37.05 C
+ATOM 3448 CA THR C 64 -3.096 -1.517 24.798 1.00 41.86 C
+ATOM 3455 CA GLU C 65 -3.169 -1.652 28.621 1.00 48.33 C
+ATOM 3464 CA GLY C 66 0.537 -0.885 28.318 1.00 52.45 C
+ATOM 3468 CA LYS C 67 0.955 -4.385 26.891 1.00 54.14 C
+ATOM 3477 CA ILE C 68 2.429 -3.211 23.570 1.00 51.52 C
+ATOM 3485 CA PRO C 69 5.602 -1.279 24.487 1.00 49.85 C
+ATOM 3492 CA TYR C 70 6.523 -0.180 20.967 1.00 44.48 C
+ATOM 3504 CA ARG C 71 9.185 2.353 19.993 1.00 40.96 C
+ATOM 3515 CA GLU C 72 8.727 5.317 17.688 1.00 33.49 C
+ATOM 3524 CA GLY C 73 8.913 3.876 14.164 1.00 30.16 C
+ATOM 3528 CA GLN C 74 7.423 0.399 14.427 1.00 31.26 C
+ATOM 3537 CA SER C 75 4.187 -0.913 12.966 1.00 33.65 C
+ATOM 3543 CA ILE C 76 1.454 -3.212 14.278 1.00 33.75 C
+ATOM 3551 CA GLY C 77 -0.295 -5.923 12.356 1.00 34.32 C
+ATOM 3555 CA VAL C 78 -4.060 -6.111 12.164 1.00 36.67 C
+ATOM 3562 CA ILE C 79 -6.137 -9.230 11.507 1.00 41.91 C
+ATOM 3570 CA ALA C 80 -9.427 -8.086 10.024 1.00 44.06 C
+ATOM 3575 CA ASP C 81 -12.530 -9.927 11.224 1.00 47.03 C
+ATOM 3583 CA GLY C 82 -13.972 -12.487 8.829 1.00 53.52 C
+ATOM 3587 CA VAL C 83 -12.521 -14.951 6.324 1.00 62.57 C
+ATOM 3594 CA ASP C 84 -11.856 -14.200 2.630 1.00 71.97 C
+ATOM 3602 CA LYS C 85 -12.935 -17.403 0.861 1.00 76.86 C
+ATOM 3611 CA ASN C 86 -13.690 -18.960 4.253 1.00 76.52 C
+ATOM 3619 CA GLY C 87 -10.006 -19.837 4.066 1.00 76.22 C
+ATOM 3623 CA LYS C 88 -8.802 -19.138 7.616 1.00 71.60 C
+ATOM 3632 CA PRO C 89 -8.651 -15.577 8.944 1.00 64.14 C
+ATOM 3639 CA HIS C 90 -7.547 -12.649 6.805 1.00 52.35 C
+ATOM 3649 CA LYS C 91 -3.753 -12.529 6.474 1.00 46.81 C
+ATOM 3658 CA VAL C 92 -2.180 -9.868 8.686 1.00 43.48 C
+ATOM 3665 CA ARG C 93 -1.491 -6.414 7.232 1.00 36.99 C
+ATOM 3676 CA LEU C 94 0.983 -3.882 8.601 1.00 32.95 C
+ATOM 3684 CA TYR C 95 0.340 -0.239 9.510 1.00 24.84 C
+ATOM 3696 CA SER C 96 3.003 2.101 10.803 1.00 23.32 C
+ATOM 3702 CA ILE C 97 2.244 3.502 14.236 1.00 24.12 C
+ATOM 3710 CA ALA C 98 1.243 7.179 13.932 1.00 22.32 C
+ATOM 3715 CA SER C 99 1.572 7.636 17.676 1.00 25.69 C
+ATOM 3721 CA SER C 100 4.752 7.924 19.726 1.00 28.83 C
+ATOM 3727 CA ALA C 101 5.741 5.521 22.508 1.00 35.61 C
+ATOM 3732 CA ILE C 102 3.906 7.635 25.079 1.00 38.39 C
+ATOM 3740 CA GLY C 103 0.899 7.826 22.742 1.00 31.93 C
+ATOM 3744 CA ASP C 104 -1.803 10.384 21.986 1.00 28.77 C
+ATOM 3752 CA PHE C 105 -3.050 10.293 25.607 1.00 37.05 C
+ATOM 3763 CA GLY C 106 0.503 10.389 26.967 1.00 39.36 C
+ATOM 3767 CA ASP C 107 -0.221 7.437 29.266 1.00 41.44 C
+ATOM 3775 CA SER C 108 1.566 4.766 27.217 1.00 42.18 C
+ATOM 3781 CA LYS C 109 -1.747 2.877 27.156 1.00 42.45 C
+ATOM 3790 CA THR C 110 -2.698 3.586 23.515 1.00 38.10 C
+ATOM 3797 CA VAL C 111 -1.603 2.971 19.906 1.00 32.79 C
+ATOM 3804 CA SER C 112 -2.671 5.020 16.872 1.00 29.60 C
+ATOM 3810 CA LEU C 113 -2.713 4.324 13.126 1.00 25.68 C
+ATOM 3818 CA CYS C 114 -3.142 6.498 9.999 1.00 24.23 C
+ATOM 3824 CA VAL C 115 -5.345 4.496 7.641 1.00 22.80 C
+ATOM 3831 CA LYS C 116 -6.221 5.196 4.015 1.00 22.11 C
+ATOM 3840 CA ARG C 117 -9.458 3.521 2.955 1.00 25.68 C
+ATOM 3851 CA LEU C 118 -8.447 1.440 -0.100 1.00 28.80 C
+ATOM 3859 CA ILE C 119 -11.140 1.661 -2.792 1.00 31.75 C
+ATOM 3867 CA TYR C 120 -10.086 0.716 -6.312 1.00 32.93 C
+ATOM 3879 CA THR C 121 -11.388 -0.733 -9.598 1.00 36.84 C
+ATOM 3886 CA ASN C 122 -10.258 -4.257 -10.546 1.00 36.90 C
+ATOM 3894 CA ASP C 123 -9.574 -5.562 -14.056 1.00 45.45 C
+ATOM 3902 CA ALA C 124 -13.196 -6.758 -14.269 1.00 44.66 C
+ATOM 3907 CA GLY C 125 -14.207 -3.102 -14.023 1.00 45.49 C
+ATOM 3911 CA GLU C 126 -16.059 -3.511 -10.722 1.00 45.54 C
+ATOM 3920 CA ILE C 127 -15.507 -1.321 -7.638 1.00 39.70 C
+ATOM 3928 CA VAL C 128 -13.846 -3.171 -4.762 1.00 38.09 C
+ATOM 3935 CA LYS C 129 -12.759 -2.512 -1.198 1.00 33.77 C
+ATOM 3944 CA GLY C 130 -9.566 -3.363 0.599 1.00 31.98 C
+ATOM 3948 CA VAL C 131 -10.443 -5.797 3.385 1.00 33.16 C
+ATOM 3955 CA CYS C 132 -8.241 -4.645 6.257 1.00 29.97 C
+ATOM 3961 CA SER C 133 -8.238 -0.898 5.607 1.00 30.67 C
+ATOM 3967 CA ASN C 134 -12.022 -0.902 5.268 1.00 30.35 C
+ATOM 3975 CA PHE C 135 -12.375 -2.946 8.424 1.00 29.86 C
+ATOM 3986 CA LEU C 136 -10.223 -0.334 10.195 1.00 29.42 C
+ATOM 3994 CA CYS C 137 -11.779 2.834 8.813 1.00 32.27 C
+ATOM 4000 CA ASP C 138 -15.116 1.280 9.724 1.00 34.29 C
+ATOM 4008 CA LEU C 139 -14.287 0.699 13.399 1.00 37.51 C
+ATOM 4016 CA GLN C 140 -16.635 2.170 16.028 1.00 43.76 C
+ATOM 4025 CA PRO C 141 -15.630 3.032 19.581 1.00 42.77 C
+ATOM 4032 CA GLY C 142 -16.082 -0.210 21.478 1.00 42.83 C
+ATOM 4036 CA ASP C 143 -15.117 -2.625 18.696 1.00 40.91 C
+ATOM 4044 CA ASN C 144 -12.182 -4.947 19.288 1.00 45.66 C
+ATOM 4052 CA VAL C 145 -9.056 -5.146 17.145 1.00 46.95 C
+ATOM 4059 CA GLN C 146 -6.707 -8.107 16.606 1.00 48.69 C
+ATOM 4068 CA ILE C 147 -3.249 -6.538 17.123 1.00 46.84 C
+ATOM 4076 CA THR C 148 -0.010 -8.392 16.264 1.00 46.26 C
+ATOM 4083 CA GLY C 149 3.543 -7.117 16.634 1.00 45.60 C
+ATOM 4087 CA PRO C 150 5.248 -4.818 17.394 1.00 44.97 C
+ATOM 4094 CA VAL C 151 7.423 -5.293 14.321 1.00 44.50 C
+ATOM 4101 CA GLY C 152 10.289 -3.716 12.438 1.00 45.33 C
+ATOM 4105 CA LYS C 153 13.599 -2.161 13.435 1.00 48.64 C
+ATOM 4114 CA GLU C 154 14.166 -0.437 10.074 1.00 48.20 C
+ATOM 4123 CA MET C 155 12.437 2.888 10.737 1.00 41.77 C
+ATOM 4131 CA LEU C 156 13.839 3.081 14.267 1.00 38.27 C
+ATOM 4139 CA MET C 157 15.076 6.540 15.308 1.00 34.29 C
+ATOM 4147 CA PRO C 158 18.782 7.419 15.339 1.00 34.05 C
+ATOM 4154 CA LYS C 159 20.262 7.521 18.845 1.00 35.82 C
+ATOM 4163 CA ASP C 160 22.076 10.792 18.273 1.00 35.95 C
+ATOM 4171 CA PRO C 161 19.683 13.401 19.809 1.00 35.63 C
+ATOM 4178 CA ASN C 162 21.563 15.948 17.758 1.00 33.92 C
+ATOM 4186 CA ALA C 163 21.028 14.172 14.487 1.00 30.82 C
+ATOM 4191 CA THR C 164 19.693 15.722 11.305 1.00 25.18 C
+ATOM 4198 CA ILE C 165 16.617 13.601 10.636 1.00 19.91 C
+ATOM 4206 CA ILE C 166 15.351 13.978 7.060 1.00 13.76 C
+ATOM 4214 CA MET C 167 11.843 12.550 6.703 1.00 14.98 C
+ATOM 4222 CA LEU C 168 10.385 11.831 3.251 1.00 16.64 C
+ATOM 4230 CA ALA C 169 6.747 10.808 3.007 1.00 15.85 C
+ATOM 4235 CA THR C 170 3.765 10.346 0.737 1.00 14.23 C
+ATOM 4242 CA GLY C 171 0.255 9.724 2.035 1.00 13.78 C
+ATOM 4246 CA THR C 172 -0.103 7.560 5.139 1.00 17.62 C
+ATOM 4253 CA GLY C 173 3.646 7.343 4.821 1.00 17.20 C
+ATOM 4257 CA ILE C 174 3.469 10.213 7.270 1.00 15.91 C
+ATOM 4265 CA ALA C 175 2.586 7.783 10.110 1.00 15.63 C
+ATOM 4270 CA PRO C 176 6.023 6.933 11.582 1.00 17.04 C
+ATOM 4277 CA PHE C 177 7.215 10.514 11.327 1.00 18.21 C
+ATOM 4288 CA ARG C 178 4.268 11.745 13.359 1.00 22.35 C
+ATOM 4299 CA SER C 179 5.563 9.289 15.983 1.00 25.22 C
+ATOM 4305 CA PHE C 180 9.139 10.593 15.614 1.00 25.98 C
+ATOM 4316 CA LEU C 181 7.925 14.180 15.767 1.00 29.12 C
+ATOM 4324 CA TRP C 182 5.625 13.641 18.714 1.00 31.35 C
+ATOM 4338 CA LYS C 183 8.488 12.385 20.871 1.00 30.92 C
+ATOM 4347 CA MET C 184 10.841 15.050 19.503 1.00 24.85 C
+ATOM 4355 CA PHE C 185 8.741 18.202 20.114 1.00 22.97 C
+ATOM 4366 CA PHE C 186 5.604 17.337 22.076 1.00 27.77 C
+ATOM 4377 CA GLU C 187 7.117 15.432 25.009 1.00 37.71 C
+ATOM 4386 CA LYS C 188 9.542 15.977 27.878 1.00 53.59 C
+ATOM 4395 CA HIS C 189 12.355 13.416 28.180 1.00 63.67 C
+ATOM 4405 CA ASP C 190 15.318 13.181 30.569 1.00 66.93 C
+ATOM 4413 CA ASP C 191 17.480 11.106 28.238 1.00 59.79 C
+ATOM 4421 CA TYR C 192 16.190 12.725 25.047 1.00 51.96 C
+ATOM 4433 CA LYS C 193 16.700 16.406 24.324 1.00 47.01 C
+ATOM 4442 CA PHE C 194 16.580 16.471 20.530 1.00 39.85 C
+ATOM 4453 CA ASN C 195 18.572 19.494 19.409 1.00 37.52 C
+ATOM 4461 CA GLY C 196 19.361 18.548 15.845 1.00 32.08 C
+ATOM 4465 CA LEU C 197 17.310 19.266 12.766 1.00 28.26 C
+ATOM 4473 CA GLY C 198 14.051 17.526 11.928 1.00 25.05 C
+ATOM 4477 CA TRP C 199 13.211 18.137 8.269 1.00 19.81 C
+ATOM 4491 CA LEU C 200 9.908 16.742 7.059 1.00 13.86 C
+ATOM 4499 CA PHE C 201 8.855 16.521 3.429 1.00 14.83 C
+ATOM 4510 CA LEU C 202 5.288 15.361 2.717 1.00 16.12 C
+ATOM 4518 CA GLY C 203 3.701 14.731 -0.681 1.00 13.79 C
+ATOM 4522 CA VAL C 204 -0.051 14.414 -1.182 1.00 11.75 C
+ATOM 4529 CA PRO C 205 -2.113 15.264 -4.308 1.00 14.66 C
+ATOM 4536 CA THR C 206 -4.553 17.737 -2.778 1.00 16.37 C
+ATOM 4543 CA SER C 207 -4.756 20.169 0.120 1.00 18.01 C
+ATOM 4549 CA SER C 208 -7.780 18.225 1.280 1.00 17.59 C
+ATOM 4555 CA SER C 209 -5.452 15.198 1.550 1.00 16.19 C
+ATOM 4561 CA LEU C 210 -2.972 16.940 3.860 1.00 14.22 C
+ATOM 4569 CA LEU C 211 -2.255 14.980 7.059 1.00 14.43 C
+ATOM 4577 CA TYR C 212 -1.624 16.449 10.549 1.00 18.94 C
+ATOM 4589 CA LYS C 213 -0.818 19.896 9.150 1.00 22.61 C
+ATOM 4598 CA GLU C 214 -2.039 21.572 12.352 1.00 25.73 C
+ATOM 4607 CA GLU C 215 0.152 19.413 14.514 1.00 19.23 C
+ATOM 4616 CA PHE C 216 3.216 20.178 12.439 1.00 17.80 C
+ATOM 4627 CA GLY C 217 2.478 23.890 12.512 1.00 19.90 C
+ATOM 4631 CA LYS C 218 2.578 24.001 16.294 1.00 25.54 C
+ATOM 4640 CA MET C 219 5.810 22.021 16.188 1.00 26.79 C
+ATOM 4648 CA LYS C 220 7.224 24.606 13.819 1.00 31.85 C
+ATOM 4657 CA GLU C 221 6.071 27.341 16.219 1.00 38.62 C
+ATOM 4666 CA ARG C 222 7.760 25.760 19.233 1.00 39.10 C
+ATOM 4677 CA ALA C 223 11.124 24.971 17.668 1.00 35.43 C
+ATOM 4682 CA PRO C 224 11.696 27.100 14.528 1.00 32.99 C
+ATOM 4689 CA GLU C 225 15.425 26.331 14.360 1.00 33.87 C
+ATOM 4698 CA ASN C 226 15.038 22.591 14.986 1.00 30.46 C
+ATOM 4706 CA PHE C 227 12.088 21.755 12.732 1.00 24.98 C
+ATOM 4717 CA ARG C 228 11.351 22.384 9.075 1.00 19.87 C
+ATOM 4728 CA VAL C 229 8.435 21.010 7.118 1.00 14.21 C
+ATOM 4735 CA ASP C 230 7.739 21.452 3.398 1.00 12.26 C
+ATOM 4743 CA TYR C 231 4.627 20.147 1.722 1.00 14.42 C
+ATOM 4755 CA ALA C 232 4.334 19.003 -1.872 1.00 9.99 C
+ATOM 4760 CA VAL C 233 0.778 19.232 -3.168 1.00 10.49 C
+ATOM 4767 CA SER C 234 1.043 17.769 -6.694 1.00 19.00 C
+ATOM 4773 CA ARG C 235 -2.240 19.042 -8.206 1.00 23.13 C
+ATOM 4784 CA GLU C 236 -2.069 22.459 -6.578 1.00 17.58 C
+ATOM 4793 CA GLN C 237 1.546 23.511 -6.623 1.00 15.89 C
+ATOM 4802 CA THR C 238 4.202 24.018 -9.275 1.00 17.86 C
+ATOM 4809 CA ASN C 239 7.922 24.800 -9.182 1.00 15.15 C
+ATOM 4817 CA ALA C 240 9.558 27.791 -10.892 1.00 21.51 C
+ATOM 4822 CA ALA C 241 9.475 25.887 -14.174 1.00 24.05 C
+ATOM 4827 CA GLY C 242 5.741 25.110 -13.938 1.00 26.25 C
+ATOM 4831 CA GLU C 243 5.999 21.359 -13.153 1.00 25.92 C
+ATOM 4840 CA ARG C 244 3.679 19.536 -10.704 1.00 24.04 C
+ATOM 4851 CA MET C 245 5.076 19.643 -7.174 1.00 18.58 C
+ATOM 4859 CA TYR C 246 5.784 16.047 -6.100 1.00 14.16 C
+ATOM 4871 CA ILE C 247 7.910 15.343 -3.034 1.00 16.78 C
+ATOM 4879 CA GLN C 248 11.089 15.070 -5.120 1.00 18.72 C
+ATOM 4888 CA THR C 249 10.168 18.255 -6.921 1.00 20.93 C
+ATOM 4895 CA ARG C 250 9.962 20.031 -3.567 1.00 19.25 C
+ATOM 4906 CA MET C 251 13.275 18.471 -2.561 1.00 19.40 C
+ATOM 4914 CA ALA C 252 14.910 19.812 -5.760 1.00 20.48 C
+ATOM 4919 CA GLU C 253 14.456 23.418 -4.569 1.00 18.19 C
+ATOM 4928 CA TYR C 254 16.804 22.515 -1.673 1.00 17.80 C
+ATOM 4940 CA LYS C 255 19.038 20.415 -3.902 1.00 20.66 C
+ATOM 4949 CA GLU C 256 22.452 21.603 -2.682 1.00 16.05 C
+ATOM 4958 CA GLU C 257 21.544 21.914 0.993 1.00 15.89 C
+ATOM 4967 CA LEU C 258 20.377 18.297 0.919 1.00 20.74 C
+ATOM 4975 CA TRP C 259 23.388 16.939 -0.965 1.00 23.45 C
+ATOM 4989 CA GLU C 260 25.645 18.669 1.563 1.00 24.08 C
+ATOM 4998 CA LEU C 261 23.573 17.378 4.477 1.00 24.74 C
+ATOM 5006 CA LEU C 262 24.020 13.928 2.938 1.00 26.14 C
+ATOM 5014 CA LYS C 263 27.792 14.091 3.402 1.00 25.40 C
+ATOM 5023 CA LYS C 264 27.457 14.521 7.176 1.00 31.47 C
+ATOM 5032 CA ASP C 265 27.877 11.474 9.425 1.00 35.31 C
+ATOM 5040 CA ASN C 266 24.934 12.482 11.620 1.00 29.63 C
+ATOM 5048 CA THR C 267 22.321 12.795 8.832 1.00 28.00 C
+ATOM 5055 CA TYR C 268 19.556 10.160 8.808 1.00 27.00 C
+ATOM 5067 CA VAL C 269 17.143 9.903 5.884 1.00 24.65 C
+ATOM 5074 CA TYR C 270 13.890 8.016 6.276 1.00 23.37 C
+ATOM 5086 CA MET C 271 11.373 7.327 3.518 1.00 18.93 C
+ATOM 5094 CA CYS C 272 7.834 6.074 4.043 1.00 18.24 C
+ATOM 5100 CA GLY C 273 4.784 5.874 1.826 1.00 22.39 C
+ATOM 5104 CA LEU C 274 3.837 4.483 -1.568 1.00 26.95 C
+ATOM 5112 CA LYS C 275 6.305 2.384 -3.532 1.00 32.36 C
+ATOM 5121 CA GLY C 276 7.741 4.199 -6.514 1.00 37.46 C
+ATOM 5125 CA MET C 277 7.714 7.455 -4.608 1.00 28.76 C
+ATOM 5133 CA GLU C 278 11.430 6.639 -4.425 1.00 32.22 C
+ATOM 5142 CA LYS C 279 12.017 6.321 -8.153 1.00 29.94 C
+ATOM 5151 CA GLY C 280 11.317 10.057 -8.293 1.00 24.18 C
+ATOM 5155 CA ILE C 281 13.766 10.673 -5.460 1.00 23.68 C
+ATOM 5163 CA ASP C 282 16.431 8.365 -6.934 1.00 26.58 C
+ATOM 5171 CA ASP C 283 16.211 10.530 -10.054 1.00 28.70 C
+ATOM 5179 CA ILE C 284 17.089 13.937 -8.538 1.00 27.28 C
+ATOM 5187 CA MET C 285 19.706 12.222 -6.388 1.00 27.45 C
+ATOM 5195 CA VAL C 286 21.377 10.712 -9.470 1.00 30.74 C
+ATOM 5202 CA SER C 287 21.619 14.159 -11.061 1.00 32.14 C
+ATOM 5208 CA LEU C 288 23.240 15.463 -7.873 1.00 34.20 C
+ATOM 5216 CA ALA C 289 25.801 12.653 -7.874 1.00 40.16 C
+ATOM 5221 CA GLU C 290 26.837 12.825 -11.536 1.00 41.84 C
+ATOM 5230 CA LYS C 291 27.855 16.387 -10.793 1.00 43.17 C
+ATOM 5239 CA ASP C 292 30.299 15.115 -8.139 1.00 41.84 C
+ATOM 5247 CA GLY C 293 31.237 12.232 -10.420 1.00 46.12 C
+ATOM 5251 CA ILE C 294 30.053 9.669 -7.864 1.00 45.54 C
+ATOM 5259 CA ASP C 295 27.399 6.998 -8.480 1.00 41.14 C
+ATOM 5267 CA TRP C 296 24.222 7.605 -6.479 1.00 30.67 C
+ATOM 5281 CA PHE C 297 23.381 3.910 -6.151 1.00 31.97 C
+ATOM 5292 CA ASP C 298 26.856 2.916 -4.907 1.00 38.12 C
+ATOM 5300 CA TYR C 299 26.671 5.875 -2.540 1.00 39.05 C
+ATOM 5312 CA LYS C 300 23.196 4.971 -1.294 1.00 41.63 C
+ATOM 5321 CA LYS C 301 24.542 1.489 -0.577 1.00 43.40 C
+ATOM 5330 CA GLN C 302 27.207 3.064 1.608 1.00 43.79 C
+ATOM 5339 CA LEU C 303 24.476 5.181 3.238 1.00 41.51 C
+ATOM 5347 CA LYS C 304 22.138 2.343 4.264 1.00 45.18 C
+ATOM 5356 CA ARG C 305 25.322 0.535 5.256 1.00 46.65 C
+ATOM 5367 CA GLY C 306 25.613 3.181 7.945 1.00 40.29 C
+ATOM 5371 CA ASP C 307 21.954 3.487 8.940 1.00 41.21 C
+ATOM 5379 CA GLN C 308 21.463 6.730 7.023 1.00 35.55 C
+ATOM 5388 CA TRP C 309 18.961 5.674 4.361 1.00 31.22 C
+ATOM 5402 CA ASN C 310 16.018 3.728 5.752 1.00 31.61 C
+ATOM 5410 CA VAL C 311 13.120 2.841 3.452 1.00 32.13 C
+ATOM 5417 CA GLU C 312 9.705 1.332 4.261 1.00 31.51 C
+ATOM 5426 CA VAL C 313 7.466 1.606 1.209 1.00 26.39 C
+ATOM 5433 CA TYR C 314 4.403 -0.343 0.111 1.00 25.42 C
-(((FER_BRANA:128.0,FER3_RAPSA:128.0):50.75,FER_CAPAA:178.75):121.94443,(Q93Z60_ARATH:271.45456,((O80429_MAIZE:183.0,FER1_MAIZE:183.0):30.5,((Q7XA98_TRIPR:90.0,FER1_PEA:90.0):83.32143,(((FER2_ARATH:64.0,FER1_ARATH:64.0):94.375,(FER1_SPIOL:124.5,FER1_MESCR:124.5):33.875):6.4166718,((Q93XJ9_SOLTU:33.5,FER1_SOLLC:33.5):49.0,FER_CAPAN:82.5):82.29167):8.529755):40.178574):57.95456):29.239868);\r
+(((FER_BRANA:128.0,FER3_RAPSA:128.0):50.75,FER_CAPAA:178.75):121.94443,(Q93Z60_ARATH:271.45456,((O80429_MAIZE:183.0,FER1_MAIZE:183.0):30.5,((Q7XA98_TRIPR:90.0,FER1_PEA:90.0):83.32143,(((FER2_ARATH:64.0,FER1_ARATH:64.0):94.375,(FER1_SPIOL:124.5,FER1_MESCR:124.5):33.875):6.4166718,((Q93XJ9_SOLTU:33.5,FER1_SOLLC:33.5):49.0,FER_CAPAN:82.5):82.29167):8.529755):40.178574):57.95456):29.239868);
-/**\r
- * Copyright 2010 Tim Down.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
+/**
+ * Copyright 2010 Tim Down.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
var Hashtable=(function(){var p="function";var n=(typeof Array.prototype.splice==p)?function(s,r){s.splice(r,1)}:function(u,t){var s,v,r;if(t===u.length-1){u.length=t}else{s=u.slice(t+1);u.length=t;for(v=0,r=s.length;v<r;++v){u[t+v]=s[v]}}};function a(t){var r;if(typeof t=="string"){return t}else{if(typeof t.hashCode==p){r=t.hashCode();return(typeof r=="string")?r:a(r)}else{if(typeof t.toString==p){return t.toString()}else{try{return String(t)}catch(s){return Object.prototype.toString.call(t)}}}}}function g(r,s){return r.equals(s)}function e(r,s){return(typeof s.equals==p)?s.equals(r):(r===s)}function c(r){return function(s){if(s===null){throw new Error("null is not a valid "+r)}else{if(typeof s=="undefined"){throw new Error(r+" must not be undefined")}}}}var q=c("key"),l=c("value");function d(u,s,t,r){this[0]=u;this.entries=[];this.addEntry(s,t);if(r!==null){this.getEqualityFunction=function(){return r}}}var h=0,j=1,f=2;function o(r){return function(t){var s=this.entries.length,v,u=this.getEqualityFunction(t);while(s--){v=this.entries[s];if(u(t,v[0])){switch(r){case h:return true;case j:return v;case f:return[s,v[1]]}}}return false}}function k(r){return function(u){var v=u.length;for(var t=0,s=this.entries.length;t<s;++t){u[v+t]=this.entries[t][r]}}}d.prototype={getEqualityFunction:function(r){return(typeof r.equals==p)?g:e},getEntryForKey:o(j),getEntryAndIndexForKey:o(f),removeEntryForKey:function(s){var r=this.getEntryAndIndexForKey(s);if(r){n(this.entries,r[0]);return r[1]}return null},addEntry:function(r,s){this.entries[this.entries.length]=[r,s]},keys:k(0),values:k(1),getEntries:function(s){var u=s.length;for(var t=0,r=this.entries.length;t<r;++t){s[u+t]=this.entries[t].slice(0)}},containsKey:o(h),containsValue:function(s){var r=this.entries.length;while(r--){if(s===this.entries[r][1]){return true}}return false}};function m(s,t){var r=s.length,u;while(r--){u=s[r];if(t===u[0]){return r}}return null}function i(r,s){var t=r[s];return(t&&(t instanceof d))?t:null}function b(t,r){var w=this;var v=[];var u={};var x=(typeof t==p)?t:a;var s=(typeof r==p)?r:null;this.put=function(B,C){q(B);l(C);var D=x(B),E,A,z=null;E=i(u,D);if(E){A=E.getEntryForKey(B);if(A){z=A[1];A[1]=C}else{E.addEntry(B,C)}}else{E=new d(D,B,C,s);v[v.length]=E;u[D]=E}return z};this.get=function(A){q(A);var B=x(A);var C=i(u,B);if(C){var z=C.getEntryForKey(A);if(z){return z[1]}}return null};this.containsKey=function(A){q(A);var z=x(A);var B=i(u,z);return B?B.containsKey(A):false};this.containsValue=function(A){l(A);var z=v.length;while(z--){if(v[z].containsValue(A)){return true}}return false};this.clear=function(){v.length=0;u={}};this.isEmpty=function(){return !v.length};var y=function(z){return function(){var A=[],B=v.length;while(B--){v[B][z](A)}return A}};this.keys=y("keys");this.values=y("values");this.entries=y("getEntries");this.remove=function(B){q(B);var C=x(B),z,A=null;var D=i(u,C);if(D){A=D.removeEntryForKey(B);if(A!==null){if(!D.entries.length){z=m(v,C);n(v,z);delete u[C]}}}return A};this.size=function(){var A=0,z=v.length;while(z--){A+=v[z].entries.length}return A};this.each=function(C){var z=w.entries(),A=z.length,B;while(A--){B=z[A];C(B[0],B[1])}};this.putAll=function(H,C){var B=H.entries();var E,F,D,z,A=B.length;var G=(typeof C==p);while(A--){E=B[A];F=E[0];D=E[1];if(G&&(z=w.get(F))){D=C(F,z,D)}w.put(F,D)}};this.clone=function(){var z=new b(t,r);z.putAll(w);return z}}return b})();
\ No newline at end of file
-/* Jmol 12.0 script library Jmol.js 9:48 PM 1/31/2011 Bob Hanson\r
-\r
- checkbox heirarchy -- see http://chemapps.stolaf.edu/jmol/docs/examples-11/check.htm\r
-\r
- based on:\r
- *\r
- * Copyright (C) 2004-2005 Miguel, Jmol Development, www.jmol.org\r
- *\r
- * Contact: hansonr@stolaf.edu\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\r
- * 02111-1307 USA.\r
- */\r
-\r
-// for documentation see www.jmol.org/jslibrary\r
-\r
-try{if(typeof(_jmol)!="undefined")exit()\r
-\r
-// place "?NOAPPLET" on your command line to check applet control action with a textarea\r
-// place "?JMOLJAR=xxxxx" to use a specific jar file\r
-\r
-// bob hanson -- jmolResize(w,h) -- resizes absolutely or by percent (w or h 0.5 means 50%)\r
-// angel herraez -- update of jmolResize(w,h,targetSuffix) so it is not tied to first applet\r
-// bob hanson -- jmolEvaluate -- evaluates molecular math 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptMessage -- returns all "scriptStatus" messages 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptEcho -- returns all "scriptEcho" messages 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptWait -- 11:31 AM 5/2/2006\r
-// bob hanson -- remove trailing separatorHTML in radio groups -- 12:18 PM 5/6/2006\r
-// bob hanson -- adds support for dynamic DOM script nodes 7:04 AM 5/19/2006\r
-// bob hanson -- adds try/catch for wiki - multiple code passes 7:05 AM 5/19/2006\r
-// bob hanson -- auto-initiates to defaultdir/defaultjar -- change as desired.\r
-// bob hanson -- adding save/restore orientation w/ and w/o delay 11:49 AM 5/25/2006\r
-// bob hanson -- adding AjaxJS service 11:16 AM 6/3/2006\r
-// bob hanson -- fix for iframes not available for finding applet\r
-// bob hanson -- added applet fake ?NOAPPLET URL flag\r
-// bob hanson -- added jmolSetCallback(calbackName, funcName) 3:32 PM 6/13/2006\r
-// used PRIOR to jmolApplet() or jmolAppletInline()\r
-// added 4th array element in jmolRadioGroup -- title\r
-// added <span> and id around link, checkbox, radio, menu\r
-// fixing AJAX loads for MSIE/Opera-Mozilla incompatibility\r
-// -- renamed Jmol-11.js from Jmol-new.js; JmolApplet.jar from JmolAppletProto.jar\r
-// renamed Jmol.js for Jmol 11 distribution\r
-// -- modified jmolRestoreOrientation() to be immediate, no 1-second delay\r
-// bob hanson -- jmolScriptWait always returns a string -- 11:23 AM 9/16/2006\r
-// bh -- jmolCommandInput()\r
-// bh -- jmolSetTranslation(TF) -- forces translation even if there might be message callback issues\r
-// bh -- minor fixes suggested by Angel\r
-// bh -- adds jmolSetSyncId() and jmolGetSyncId()\r
-// bh 3/2008 -- adds jmolAppendInlineScript() and jmolAppendInlineArray()\r
-// bh 3/2008 -- fixes IE7 bug in relation to jmolLoadInlineArray()\r
-// bh 6/2008 -- adds jmolSetAppletWindow()\r
-// Angel H. 6/2008 -- added html <label> tags to checkboxes and radio buttons [in jmolCheckbox() and _jmolRadio() functions]\r
-// bh 7/2008 -- code fix "for(i..." not "for(var i..."\r
-// bh 12/2008 -- jmolLoadInline, jmolLoadInlineArray, jmolLoadInlineScript, jmolAppendInlineScript, jmolAppendInlineArray all return error message or null (Jmol 11.7.16)\r
-// bh 12/2008 -- jmolScriptWaitOutput() -- waits for script to complete and delivers output normally sent to console\r
-\r
-// bh 5/2009 -- Support for XHTML using jmolSetXHTML(id)\r
-// ah & bh 6/2009 -- New jmolResizeApplet() more flexible, similar to jmolApplet() size syntax\r
-// bh 11/2009 -- care in accessing top.document\r
-// bh 12/2009 -- added jmolSetParameter(name, value)\r
-// bh 12/2009 -- added PARAMS=name:value;name:value;name:value... for command line\r
-// bh 12/2009 -- overhaul of target checking\r
-// bh 1/2010 -- all _xxxx() methods ALWAYS have complete argument list\r
-// bh 1/2010 -- adds option to run a JavaScript function from any Jmol control. \r
-// This is accomplished by passing an array rather than a script:\r
-// jmolHref([myfunc,"my param 1", "my param 2"], "testing")\r
-// function myfunc(jmolControlObject, [myfunc,"my param 1", "my param 2"], target){...}\r
-// and allows much more flexibility with responding to controls\r
-// bh 4/2010 -- added jmolSetMemoryMb(nMb)\r
-// ah 1/2011 -- wider detection of browsers; more browsers now use the object tag instead of the applet tag; \r
-// fix of object tag (removed classid) accounts for change of behavior in Chrome\r
-// bh 3/2011 -- added jmolLoadAjax_STOLAF_NIH\r
-\r
-var defaultdir = "."\r
-var defaultjar = "JmolApplet.jar"\r
-\r
-\r
-// Note added 12:41 PM 9/21/2008 by Bob Hanson, hansonr@stolaf.edu:\r
-\r
-// JMOLJAR=xxxxx.jar on the URL for this page will override\r
-// the JAR file specified in the jmolInitialize() call.\r
-\r
-// The idea is that it can be very useful to test a web page with different JAR files\r
-// Or for an expert user to substitute a signed applet for an unsigned one\r
-// so as to use a broader range of models or to create JPEG files, for example.\r
-\r
-// If the JAR file is not in the current directory (has any sort of "/" in its name)\r
-// then the user is presented with a warning and asked whether it is OK to change Jar files.\r
-// The default action, if the user just presses "OK" is to NOT allow the change. \r
-// The user must type the word "yes" in the prompt box for the change to be approved.\r
-\r
-// If you don't want people to be able to switch in their own JAR file on your page,\r
-// simply set this next line to read "var allowJMOLJAR = false".\r
-\r
-\r
-var undefined; // for IE 5 ... wherein undefined is undefined\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Basic Scripting infrastruture\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolInitialize(codebaseDirectory, fileNameOrUseSignedApplet) {\r
- if (_jmol.initialized)\r
- return;\r
- _jmol.initialized = true;\r
- if(_jmol.jmoljar) {\r
- var f = _jmol.jmoljar;\r
- if (f.indexOf("/") >= 0) {\r
- alert ("This web page URL is requesting that the applet used be " + f + ". This is a possible security risk, particularly if the applet is signed, because signed applets can read and write files on your local machine or network.")\r
- var ok = prompt("Do you want to use applet " + f + "? ","yes or no")\r
- if (ok == "yes") {\r
- codebaseDirectory = f.substring(0, f.lastIndexOf("/"));\r
- fileNameOrUseSignedApplet = f.substring(f.lastIndexOf("/") + 1);\r
- } else {\r
- _jmolGetJarFilename(fileNameOrUseSignedApplet);\r
- alert("The web page URL was ignored. Continuing using " + _jmol.archivePath + ' in directory "' + codebaseDirectory + '"');\r
- }\r
- } else {\r
- fileNameOrUseSignedApplet = f;\r
- }\r
- }\r
- _jmolSetCodebase(codebaseDirectory);\r
- _jmolGetJarFilename(fileNameOrUseSignedApplet);\r
- _jmolOnloadResetForms();\r
-}\r
-\r
-function jmolSetTranslation(TF) {\r
- _jmol.params.doTranslate = ''+TF;\r
-}\r
-\r
-function _jmolGetJarFilename(fileNameOrFlag) {\r
- _jmol.archivePath =\r
- (typeof(fileNameOrFlag) == "string" ? fileNameOrFlag : (fileNameOrFlag ? "JmolAppletSigned" : "JmolApplet") + "0.jar");\r
-}\r
-\r
-function jmolSetDocument(doc) {\r
- _jmol.currentDocument = doc;\r
-}\r
-\r
-function jmolSetAppletColor(boxbgcolor, boxfgcolor, progresscolor) {\r
- _jmolInitCheck();\r
- _jmol.params.boxbgcolor = boxbgcolor;\r
- if (boxfgcolor)\r
- _jmol.params.boxfgcolor = boxfgcolor\r
- else if (boxbgcolor == "white" || boxbgcolor == "#FFFFFF")\r
- _jmol.params.boxfgcolor = "black";\r
- else\r
- _jmol.params.boxfgcolor = "white";\r
- if (progresscolor)\r
- _jmol.params.progresscolor = progresscolor;\r
- if (_jmol.debugAlert)\r
- alert(" boxbgcolor=" + _jmol.params.boxbgcolor +\r
- " boxfgcolor=" + _jmol.params.boxfgcolor +\r
- " progresscolor=" + _jmol.params.progresscolor);\r
-}\r
-\r
-function jmolSetAppletWindow(w) {\r
- _jmol.appletWindow = w;\r
-}\r
-\r
-function jmolApplet(size, script, nameSuffix) {\r
- _jmolInitCheck();\r
- return _jmolApplet(size, null, script, nameSuffix);\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Basic controls\r
-////////////////////////////////////////////////////////////////\r
-\r
-// undefined means it wasn't there; null means it was explicitly listed as null (so as to skip it)\r
-\r
-function jmolButton(script, label, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolButton" + _jmol.buttonCount);\r
- label != undefined && label != null || (label = script.substring(0, 32));\r
- ++_jmol.buttonCount;\r
- var scriptIndex = _jmolAddScript(script);\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='button' name='" + id + "' id='" + id +\r
- "' value='" + label +\r
- "' onclick='_jmolClick(this," + scriptIndex + _jmol.targetText +\r
- ")' onmouseover='_jmolMouseOver(" + scriptIndex +\r
- ");return true' onmouseout='_jmolMouseOut()' " +\r
- _jmol.buttonCssText + " /></span>";\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolCheckbox(scriptWhenChecked, scriptWhenUnchecked,\r
- labelHtml, isChecked, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolCheckbox" + _jmol.checkboxCount);\r
- ++_jmol.checkboxCount;\r
- if (scriptWhenChecked == undefined || scriptWhenChecked == null ||\r
- scriptWhenUnchecked == undefined || scriptWhenUnchecked == null) {\r
- alert("jmolCheckbox requires two scripts");\r
- return;\r
- }\r
- if (labelHtml == undefined || labelHtml == null) {\r
- alert("jmolCheckbox requires a label");\r
- return;\r
- }\r
- var indexChecked = _jmolAddScript(scriptWhenChecked);\r
- var indexUnchecked = _jmolAddScript(scriptWhenUnchecked);\r
- var eospan = "</span>"\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='checkbox' name='" + id + "' id='" + id +\r
- "' onclick='_jmolCbClick(this," +\r
- indexChecked + "," + indexUnchecked + _jmol.targetText +\r
- ")' onmouseover='_jmolCbOver(this," + indexChecked + "," +\r
- indexUnchecked +\r
- ");return true' onmouseout='_jmolMouseOut()' " +\r
- (isChecked ? "checked='true' " : "")+ _jmol.checkboxCssText + " />" \r
- if (labelHtml.toLowerCase().indexOf("<td>")>=0) {\r
- t += eospan\r
- eospan = "";\r
- }\r
- t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan;\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolStartNewRadioGroup() {\r
- ++_jmol.radioGroupCount;\r
-}\r
-\r
-function jmolRadioGroup(arrayOfRadioButtons, separatorHtml, groupName, id, title) {\r
- /*\r
-\r
- array: [radio1,radio2,radio3...]\r
- where radioN = ["script","label",isSelected,"id","title"]\r
-\r
- */\r
-\r
- _jmolInitCheck();\r
- var type = typeof arrayOfRadioButtons;\r
- if (type != "object" || type == null || ! arrayOfRadioButtons.length) {\r
- alert("invalid arrayOfRadioButtons");\r
- return;\r
- }\r
- separatorHtml != undefined && separatorHtml != null || (separatorHtml = " ");\r
- var len = arrayOfRadioButtons.length;\r
- jmolStartNewRadioGroup();\r
- groupName || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));\r
- var t = "<span id='"+(id ? id : groupName)+"'>";\r
- for (var i = 0; i < len; ++i) {\r
- if (i == len - 1)\r
- separatorHtml = "";\r
- var radio = arrayOfRadioButtons[i];\r
- type = typeof radio;\r
- if (type == "object") {\r
- t += _jmolRadio(radio[0], radio[1], radio[2], separatorHtml, groupName, (radio.length > 3 ? radio[3]: (id ? id : groupName)+"_"+i), (radio.length > 4 ? radio[4] : 0), title);\r
- } else {\r
- t += _jmolRadio(radio, null, null, separatorHtml, groupName, (id ? id : groupName)+"_"+i, title);\r
- }\r
- }\r
- t+="</span>"\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-\r
-function jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {\r
- _jmolInitCheck();\r
- if (_jmol.radioGroupCount == 0)\r
- ++_jmol.radioGroupCount;\r
- var t = _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, (id ? id : groupName + "_" + _jmol.radioCount), title ? title : 0);\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolLink(script, label, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolLink" + _jmol.linkCount);\r
- label != undefined && label != null || (label = script.substring(0, 32));\r
- ++_jmol.linkCount;\r
- var scriptIndex = _jmolAddScript(script);\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><a name='" + id + "' id='" + id + \r
- "' href='javascript:_jmolClick(this," + scriptIndex + _jmol.targetText + ");' onmouseover='_jmolMouseOver(" + scriptIndex +\r
- ");return true;' onmouseout='_jmolMouseOut()' " +\r
- _jmol.linkCssText + ">" + label + "</a></span>";\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolCommandInput(label, size, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolCmd" + _jmol.cmdCount);\r
- label != undefined && label != null || (label = "Execute");\r
- size != undefined && !isNaN(size) || (size = 60);\r
- ++_jmol.cmdCount;\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" + id + "' id='" + id + \r
- "' size='"+size+"' onkeypress='_jmolCommandKeyPress(event,\""+id+"\"" + _jmol.targetText + ")'><input type=button value = '"+label+"' onclick='jmolScript(document.getElementById(\""+id+"\").value" + _jmol.targetText + ")' /></span>";\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function _jmolCommandKeyPress(e, id, target) {\r
- var keycode = (window.event ? window.event.keyCode : e ? e.which : 0);\r
- if (keycode == 13) {\r
- var inputBox = document.getElementById(id)\r
- _jmolScriptExecute(inputBox, inputBox.value, target)\r
- }\r
-}\r
-\r
-function _jmolScriptExecute(element,script,target) {\r
- if (typeof(script) == "object")\r
- script[0](element, script, target)\r
- else\r
- jmolScript(script, target) \r
-}\r
-\r
-function jmolMenu(arrayOfMenuItems, size, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolMenu" + _jmol.menuCount);\r
- ++_jmol.menuCount;\r
- var type = typeof arrayOfMenuItems;\r
- if (type != null && type == "object" && arrayOfMenuItems.length) {\r
- var len = arrayOfMenuItems.length;\r
- if (typeof size != "number" || size == 1)\r
- size = null;\r
- else if (size < 0)\r
- size = len;\r
- var sizeText = size ? " size='" + size + "' " : "";\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><select name='" + id + "' id='" + id +\r
- "' onChange='_jmolMenuSelected(this" + _jmol.targetText + ")'" +\r
- sizeText + _jmol.menuCssText + ">";\r
- for (var i = 0; i < len; ++i) {\r
- var menuItem = arrayOfMenuItems[i];\r
- type = typeof menuItem;\r
- var script, text;\r
- var isSelected = undefined;\r
- if (type == "object" && menuItem != null) {\r
- script = menuItem[0];\r
- text = menuItem[1];\r
- isSelected = menuItem[2];\r
- } else {\r
- script = text = menuItem;\r
- }\r
- text != undefined && text != null || (text = script); \r
- if (script=="#optgroup") {\r
- t += "<optgroup label='" + text + "'>"; \r
- } else if (script=="#optgroupEnd") {\r
- t += "</optgroup>"; \r
- } else { \r
- var scriptIndex = _jmolAddScript(script);\r
- var selectedText = isSelected ? "' selected='true'>" : "'>";\r
- t += "<option value='" + scriptIndex + selectedText + text + "</option>";\r
- }\r
- }\r
- t += "</select></span>";\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
- }\r
-}\r
-\r
-function jmolHtml(html) {\r
- return _jmolDocumentWrite(html);\r
-}\r
-\r
-function jmolBr() {\r
- return _jmolDocumentWrite("<br />");\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// advanced scripting functions\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolDebugAlert(enableAlerts) {\r
- _jmol.debugAlert = (enableAlerts == undefined || enableAlerts)\r
-}\r
-\r
-function jmolAppletInline(size, inlineModel, script, nameSuffix) {\r
- _jmolInitCheck();\r
- return _jmolApplet(size, _jmolSterilizeInline(inlineModel),\r
- script, nameSuffix);\r
-}\r
-\r
-function jmolSetTarget(targetSuffix) {\r
- _jmol.targetSuffix = targetSuffix;\r
- _jmol.targetText = targetSuffix ? ",\"" + targetSuffix + "\"" : ",0";\r
-}\r
-\r
-function jmolScript(script, targetSuffix) {\r
- if (script) {\r
- _jmolCheckBrowser();\r
- if (targetSuffix == "all") {\r
- with (_jmol) {\r
- for (var i = 0; i < appletSuffixes.length; ++i) {\r
- var applet = _jmolGetApplet(appletSuffixes[i]);\r
- if (applet) applet.script(script);\r
- }\r
- }\r
- } else {\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) applet.script(script);\r
- }\r
- }\r
-}\r
-\r
-function jmolLoadInline(model, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- if (typeof(model) == "string")\r
- return applet.loadInlineString(model, "", false);\r
- else\r
- return applet.loadInlineArray(model, "", false);\r
-}\r
-\r
-\r
-function jmolLoadInlineScript(model, script, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- return applet.loadInlineString(model, script, false);\r
-}\r
-\r
-\r
-function jmolLoadInlineArray(ModelArray, script, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- script || (script="")\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- try {\r
- return applet.loadInlineArray(ModelArray, script, false);\r
- } catch (err) {\r
- //IE 7 bug\r
- return applet.loadInlineString(ModelArray.join("\n"), script, false);\r
- }\r
-}\r
-\r
-function jmolAppendInlineArray(ModelArray, script, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- script || (script="")\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- try {\r
- return applet.loadInlineArray(ModelArray, script, true);\r
- } catch (err) {\r
- //IE 7 bug\r
- return applet.loadInlineString(ModelArray.join("\n"), script, true);\r
- }\r
-}\r
-\r
-function jmolAppendInlineScript(model, script, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- return applet.loadInlineString(model, script, true);\r
-}\r
-\r
-function jmolCheckBrowser(action, urlOrMessage, nowOrLater) {\r
- if (typeof action == "string") {\r
- action = action.toLowerCase();\r
- action == "alert" || action == "redirect" || action == "popup" || (action = null);\r
- }\r
- if (typeof action != "string")\r
- alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +\r
- "action must be 'alert', 'redirect', or 'popup'");\r
- else {\r
- if (typeof urlOrMessage != "string")\r
- alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +\r
- "urlOrMessage must be a string");\r
- else {\r
- _jmol.checkBrowserAction = action;\r
- _jmol.checkBrowserUrlOrMessage = urlOrMessage;\r
- }\r
- }\r
- if (typeof nowOrLater == "string" && nowOrLater.toLowerCase() == "now")\r
- _jmolCheckBrowser();\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Cascading Style Sheet Class support\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolSetAppletCssClass(appletCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.appletCssClass = appletCssClass;\r
- _jmol.appletCssText = appletCssClass ? "class='" + appletCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetButtonCssClass(buttonCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.buttonCssClass = buttonCssClass;\r
- _jmol.buttonCssText = buttonCssClass ? "class='" + buttonCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetCheckboxCssClass(checkboxCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.checkboxCssClass = checkboxCssClass;\r
- _jmol.checkboxCssText = checkboxCssClass ? "class='" + checkboxCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetRadioCssClass(radioCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.radioCssClass = radioCssClass;\r
- _jmol.radioCssText = radioCssClass ? "class='" + radioCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetLinkCssClass(linkCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.linkCssClass = linkCssClass;\r
- _jmol.linkCssText = linkCssClass ? "class='" + linkCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetMenuCssClass(menuCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.menuCssClass = menuCssClass;\r
- _jmol.menuCssText = menuCssClass ? "class='" + menuCssClass + "' " : "";\r
- }\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// functions for INTERNAL USE ONLY which are subject to change\r
-// use at your own risk ... you have been WARNED!\r
-////////////////////////////////////////////////////////////////\r
-var _jmol = {\r
- currentDocument: document,\r
-\r
- debugAlert: false,\r
- \r
- codebase: "",\r
- modelbase: ".",\r
- \r
- appletCount: 0,\r
- appletSuffixes: [],\r
- appletWindow: null,\r
- allowedJmolSize: [25, 2048, 300], // min, max, default (pixels)\r
- /* By setting the _jmol.allowedJmolSize[] variable in the webpage \r
- before calling jmolApplet(), limits for applet size can be overriden.\r
- 2048 standard for GeoWall (http://geowall.geo.lsa.umich.edu/home.html)\r
- */ \r
- buttonCount: 0,\r
- checkboxCount: 0,\r
- linkCount: 0,\r
- cmdCount: 0,\r
- menuCount: 0,\r
- radioCount: 0,\r
- radioGroupCount: 0,\r
- \r
- appletCssClass: null,\r
- appletCssText: "",\r
- buttonCssClass: null,\r
- buttonCssText: "",\r
- checkboxCssClass: null,\r
- checkboxCssText: "",\r
- java_arguments: "-Xmx512m",\r
- radioCssClass: null,\r
- radioCssText: "",\r
- linkCssClass: null,\r
- linkCssText: "",\r
- menuCssClass: null,\r
- menuCssText: "",\r
- \r
- targetSuffix: 0,\r
- targetText: ",0",\r
- scripts: [""],\r
- params: {\r
- syncId: ("" + Math.random()).substring(3),\r
- progressbar: "true",\r
- progresscolor: "blue",\r
- boxbgcolor: "black",\r
- boxfgcolor: "white",\r
- boxmessage: "Downloading JmolApplet ..."\r
- },\r
- ua: navigator.userAgent.toLowerCase(),\r
- // uaVersion: parseFloat(navigator.appVersion), // not used\r
- \r
- os: "unknown",\r
- browser: "unknown",\r
- browserVersion: 0,\r
- hasGetElementById: !!document.getElementById,\r
- isJavaEnabled: navigator.javaEnabled(),\r
- // isNetscape47Win: false, // not used, N4.7 is no longer supported even for detection\r
- useIEObject: false,\r
- useHtml4Object: false,\r
- \r
- windowsClassId: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",\r
- windowsCabUrl:\r
- "http://java.sun.com/update/1.6.0/jinstall-6u22-windows-i586.cab",\r
-\r
- isBrowserCompliant: false,\r
- isJavaCompliant: false,\r
- isFullyCompliant: false,\r
-\r
- initialized: false,\r
- initChecked: false,\r
- \r
- browserChecked: false,\r
- checkBrowserAction: "alert",\r
- checkBrowserUrlOrMessage: null,\r
-\r
- archivePath: null, // JmolApplet0.jar OR JmolAppletSigned0.jar\r
-\r
- previousOnloadHandler: null,\r
-\r
- jmoljar: null, \r
- useNoApplet: false,\r
-\r
- ready: {}\r
-}\r
-\r
-with (_jmol) {\r
- function _jmolTestUA(candidate) {\r
- var ua = _jmol.ua;\r
- var index = ua.indexOf(candidate);\r
- if (index < 0)\r
- return false;\r
- _jmol.browser = candidate;\r
- _jmol.browserVersion = parseFloat(ua.substring(index+candidate.length+1));\r
- return true;\r
- }\r
- \r
- function _jmolTestOS(candidate) {\r
- if (_jmol.ua.indexOf(candidate) < 0)\r
- return false;\r
- _jmol.os = candidate;\r
- return true;\r
- }\r
- \r
- _jmolTestUA("konqueror") ||\r
- _jmolTestUA("webkit") ||\r
- _jmolTestUA("omniweb") ||\r
- _jmolTestUA("opera") ||\r
- _jmolTestUA("webtv") ||\r
- _jmolTestUA("icab") ||\r
- _jmolTestUA("msie") ||\r
- (_jmol.ua.indexOf("compatible") < 0 && _jmolTestUA("mozilla")); //Netscape, Mozilla, Seamonkey, Firefox and anything assimilated\r
- \r
- _jmolTestOS("linux") ||\r
- _jmolTestOS("unix") ||\r
- _jmolTestOS("mac") ||\r
- _jmolTestOS("win");\r
-\r
- /* not used:\r
- isNetscape47Win = (os == "win" && browser == "mozilla" &&\r
- browserVersion >= 4.78 && browserVersion <= 4.8);\r
- */\r
-\r
- if (os == "win") {\r
- isBrowserCompliant = hasGetElementById;\r
- } else if (os == "mac") { // mac is the problem child :-(\r
- if (browser == "mozilla" && browserVersion >= 5) {\r
- // miguel 2004 11 17\r
- // checking the plugins array does not work because\r
- // Netscape 7.2 OS X still has Java 1.3.1 listed even though\r
- // javaplugin.sf.net is installed to upgrade to 1.4.2\r
- eval("try {var v = java.lang.System.getProperty('java.version');" +\r
- " _jmol.isBrowserCompliant = v >= '1.4.2';" +\r
- " } catch (e) { }");\r
- } else if (browser == "opera" && browserVersion <= 7.54) {\r
- isBrowserCompliant = false;\r
- } else {\r
- isBrowserCompliant = hasGetElementById &&\r
- !((browser == "msie") ||\r
- (browser == "webkit" && browserVersion < 125.12));\r
- }\r
- } else if (os == "linux" || os == "unix") {\r
- if (browser == "konqueror" && browserVersion <= 3.3)\r
- isBrowserCompliant = false;\r
- else\r
- isBrowserCompliant = hasGetElementById;\r
- } else { // other OS\r
- isBrowserCompliant = hasGetElementById;\r
- }\r
-\r
- // possibly more checks in the future for this\r
- isJavaCompliant = isJavaEnabled;\r
-\r
- isFullyCompliant = isBrowserCompliant && isJavaCompliant;\r
-\r
- useIEObject = (os == "win" && browser == "msie" && browserVersion >= 5.5);\r
- useHtml4Object =\r
- (browser == "mozilla" && browserVersion >= 5) ||\r
- (browser == "opera" && browserVersion >= 8) ||\r
- (browser == "webkit" && browserVersion >= 412.2);\r
- try {\r
- if (top.location.search.indexOf("JMOLJAR=")>=0)\r
- jmoljar = top.location.search.split("JMOLJAR=")[1].split("&")[0];\r
- } catch(e) {\r
- // can't access top.location\r
- }\r
- try {\r
- useNoApplet = (top.location.search.indexOf("NOAPPLET")>=0);\r
- } catch(e) {\r
- // can't access top.document\r
- }\r
-}\r
-\r
-function jmolSetMemoryMb(nMb) {\r
- _jmol.java_arguments = "-Xmx" + Math.round(nMb) + "m"\r
-}\r
-\r
-function jmolSetParameter(name,value) {\r
- _jmol.params[name] = value\r
-}\r
-\r
-function jmolSetCallback(callbackName,funcName) {\r
- _jmol.params[callbackName] = funcName\r
-}\r
-\r
- try {\r
-// note this is done FIRST, so it cannot override a setting done by the developer\r
- if (top.location.search.indexOf("PARAMS=")>=0) {\r
- var pars = unescape(top.location.search.split("PARAMS=")[1].split("&")[0]).split(";");\r
- for (var i = 0; i < pars.length; i++) {\r
- var p = pars[i].split(":");\r
- jmolSetParameter(p[0],p[1]);\r
- }\r
- }\r
- } catch(e) {\r
- // can't access top.location\r
- }\r
-\r
-function jmolSetSyncId(n) {\r
- return _jmol.params["syncId"] = n\r
-}\r
-\r
-function jmolGetSyncId() {\r
- return _jmol.params["syncId"]\r
-}\r
-\r
-function jmolSetLogLevel(n) {\r
- _jmol.params.logLevel = ''+n;\r
-}\r
-\r
- /* AngelH, mar2007:\r
- By (re)setting these variables in the webpage before calling jmolApplet(), \r
- a custom message can be provided (e.g. localized for user's language) when no Java is installed.\r
- */\r
-if (noJavaMsg==undefined) var noJavaMsg = \r
- "You do not have Java applets enabled in your web browser, or your browser is blocking this applet.<br />\n" +\r
- "Check the warning message from your browser and/or enable Java applets in<br />\n" +\r
- "your web browser preferences, or install the Java Runtime Environment from <a href='http://www.java.com'>www.java.com</a><br />";\r
-if (noJavaMsg2==undefined) var noJavaMsg2 = \r
- "You do not have the<br />\n" +\r
- "Java Runtime Environment<br />\n" +\r
- "installed for applet support.<br />\n" +\r
- "Visit <a href='http://www.java.com'>www.java.com</a>";\r
-function _jmolApplet(size, inlineModel, script, nameSuffix) {\r
- /* AngelH, mar2007\r
- Fixed percent / pixel business, to avoid browser errors:\r
- put "px" where needed, avoid where not.\r
-\r
- Bob Hanson, 1/2010\r
- Fixed inline escape changing returns to | \r
- */\r
- with (_jmol) {\r
- nameSuffix == undefined && (nameSuffix = appletCount);\r
- appletSuffixes.push(nameSuffix);\r
- ++appletCount;\r
- script || (script = "select *");\r
- var sz = _jmolGetAppletSize(size);\r
- var widthAndHeight = " width='" + sz[0] + "' height='" + sz[1] + "' ";\r
- var tHeader, tFooter;\r
- codebase || jmolInitialize(".");\r
- if (useIEObject || useHtml4Object) {\r
- params.archive = archivePath;\r
- params.mayscript = 'true';\r
- params.codebase = codebase;\r
- params.code = 'JmolApplet';\r
- tHeader = \r
- "<object name='jmolApplet" + nameSuffix +\r
- "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +\r
- widthAndHeight + "\n";\r
- tFooter = "</object>";\r
- }\r
- if (java_arguments)\r
- params.java_arguments = java_arguments;\r
- if (useIEObject) { // use MSFT IE6 object tag with .cab file reference\r
- tHeader += " classid='" + windowsClassId + "'\n" +\r
- (windowsCabUrl ? " codebase='" + windowsCabUrl + "'\n" : "") + ">\n";\r
- } else if (useHtml4Object) { // use HTML4 object tag\r
- tHeader += " type='application/x-java-applet'\n>\n";\r
- /* " classid='java:JmolApplet'\n" + AH removed this\r
- Chromium Issue 62076: Java Applets using an <object> with a classid paramater don't load.\r
- http://code.google.com/p/chromium/issues/detail?id=62076\r
- They say this is the correct behavior according to the spec, and there's no indication at this point \r
- that WebKit will be changing the handling, so eventually Safari will acquire this behavior too.\r
- Removing the classid parameter seems to be well tolerated by all browsers (even IE!).\r
- */\r
- } else { // use applet tag\r
- tHeader = \r
- "<applet name='jmolApplet" + nameSuffix +\r
- "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +\r
- widthAndHeight + "\n" +\r
- " code='JmolApplet'" +\r
- " archive='" + archivePath + "' codebase='" + codebase + "'\n" +\r
- " mayscript='true'>\n";\r
- tFooter = "</applet>";\r
- }\r
- var visitJava;\r
- if (useIEObject || useHtml4Object) {\r
- var szX = "width:" + sz[0]\r
- if ( szX.indexOf("%")==-1 ) szX+="px" \r
- var szY = "height:" + sz[1]\r
- if ( szY.indexOf("%")==-1 ) szY+="px" \r
- visitJava =\r
- "<p style='background-color:yellow; color:black; " +\r
- szX + ";" + szY + ";" +\r
- // why doesn't this vertical-align work?\r
- "text-align:center;vertical-align:middle;'>\n" +\r
- noJavaMsg +\r
- "</p>";\r
- } else {\r
- visitJava =\r
- "<table bgcolor='yellow'><tr>" +\r
- "<td align='center' valign='middle' " + widthAndHeight + "><font color='black'>\n" +\r
- noJavaMsg2 +\r
- "</font></td></tr></table>";\r
- }\r
- params.loadInline = (inlineModel ? inlineModel : "");\r
- params.script = (script ? _jmolSterilizeScript(script) : "");\r
- var t = tHeader + _jmolParams() + visitJava + tFooter;\r
- jmolSetTarget(nameSuffix);\r
- ready["jmolApplet" + nameSuffix] = false;\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
- }\r
-}\r
-\r
-function _jmolParams() {\r
- var t = "";\r
- for (var i in _jmol.params)\r
- if(_jmol.params[i]!="")\r
- t+=" <param name='"+i+"' value='"+_jmol.params[i]+"' />\n";\r
- return t\r
-}\r
-\r
-function _jmolInitCheck() {\r
- if (_jmol.initChecked)\r
- return;\r
- _jmol.initChecked = true;\r
- jmolInitialize(defaultdir, defaultjar)\r
-}\r
-\r
-function _jmolCheckBrowser() {\r
- with (_jmol) {\r
- if (browserChecked)\r
- return;\r
- browserChecked = true;\r
- \r
- if (isFullyCompliant)\r
- return true;\r
-\r
- if (checkBrowserAction == "redirect")\r
- location.href = checkBrowserUrlOrMessage;\r
- else if (checkBrowserAction == "popup")\r
- _jmolPopup(checkBrowserUrlOrMessage);\r
- else {\r
- var msg = checkBrowserUrlOrMessage;\r
- if (msg == null)\r
- msg = "Your web browser is not fully compatible with Jmol\n\n" +\r
- "browser: " + browser +\r
- " version: " + browserVersion +\r
- " os: " + os +\r
- " isBrowserCompliant: " + isBrowserCompliant +\r
- " isJavaCompliant: " + isJavaCompliant +\r
- "\n\n" + ua;\r
- alert(msg);\r
- }\r
- }\r
- return false;\r
-}\r
-\r
-function jmolSetXHTML(id) {\r
- _jmol.isXHTML = true\r
- _jmol.XhtmlElement = null\r
- _jmol.XhtmlAppendChild = false\r
- if (id){\r
- _jmol.XhtmlElement = document.getElementById(id)\r
- _jmol.XhtmlAppendChild = true\r
- }\r
-}\r
-\r
-function _jmolDocumentWrite(text) {\r
- if (_jmol.currentDocument) {\r
- if (_jmol.isXHTML && !_jmol.XhtmlElement) {\r
- var s = document.getElementsByTagName("script")\r
- _jmol.XhtmlElement = s.item(s.length - 1)\r
- _jmol.XhtmlAppendChild = false\r
- }\r
- if (_jmol.XhtmlElement) {\r
- _jmolDomDocumentWrite(text)\r
- } else {\r
- _jmol.currentDocument.write(text);\r
- }\r
- }\r
- return text;\r
-}\r
-\r
-function _jmolDomDocumentWrite(data) {\r
- var pt = 0\r
- var Ptr = []\r
- Ptr[0] = 0\r
- while (Ptr[0] < data.length) {\r
- var child = _jmolGetDomElement(data, Ptr)\r
- if (!child)break\r
- if (_jmol.XhtmlAppendChild)\r
- _jmol.XhtmlElement.appendChild(child)\r
- else\r
- _jmol.XhtmlElement.parentNode.insertBefore(child, _jmol.XhtmlElement); \r
- }\r
-}\r
-function _jmolGetDomElement(data, Ptr, closetag, lvel) {\r
- var e = document.createElement("span")\r
- e.innerHTML = data\r
- Ptr[0] = data.length\r
- return e\r
-\r
-//unnecessary?\r
-\r
- closetag || (closetag = "")\r
- lvel || (lvel = 0)\r
- var pt0 = Ptr[0]\r
- var pt = pt0\r
- while (pt < data.length && data.charAt(pt) != "<") pt++\r
- if (pt != pt0) {\r
- var text = data.substring(pt0, pt)\r
- Ptr[0] = pt\r
- return document.createTextNode(text)\r
- } \r
- pt0 = ++pt\r
- var ch\r
- while (pt < data.length && "\n\r\t >".indexOf(ch = data.charAt(pt)) < 0) pt++\r
- var tagname = data.substring(pt0, pt)\r
- var e = (tagname == closetag || tagname == "/" ? "" \r
- : document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', tagname)\r
- : document.createElement(tagname));\r
- if (ch == ">") {\r
- Ptr[0] = ++pt\r
- return e\r
- }\r
- while (pt < data.length && (ch = data.charAt(pt)) != ">") {\r
- while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++\r
- pt0 = pt\r
- while (pt < data.length && "\n\r\t =/>".indexOf(ch = data.charAt(pt)) < 0) pt++\r
- var attrname = data.substring(pt0, pt).toLowerCase()\r
- if (attrname && ch != "=") \r
- e.setAttribute(attrname, "true")\r
- while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++\r
- if (ch == "/") {\r
- Ptr[0] = pt + 2\r
- return e\r
- } else if (ch == "=") {\r
- var quote = data.charAt(++pt)\r
- pt0 = ++pt\r
- while (pt < data.length && (ch = data.charAt(pt)) != quote) pt++\r
- var attrvalue = data.substring(pt0, pt)\r
- e.setAttribute(attrname, attrvalue)\r
- pt++\r
- }\r
- }\r
- Ptr[0] = ++pt\r
- while (Ptr[0] < data.length) {\r
- var child = _jmolGetDomElement(data, Ptr, "/" + tagname, lvel+1)\r
- if (!child)break\r
- e.appendChild(child)\r
- }\r
- return e\r
-}\r
-\r
-function _jmolPopup(url) {\r
- var popup = window.open(url, "JmolPopup",\r
- "left=150,top=150,height=400,width=600," +\r
- "directories=yes,location=yes,menubar=yes," +\r
- "toolbar=yes," +\r
- "resizable=yes,scrollbars=yes,status=yes");\r
- if (popup.focus)\r
- poup.focus();\r
-}\r
-\r
-function _jmolReadyCallback(name) {\r
- if (_jmol.debugAlert)\r
- alert(name + " is ready");\r
- _jmol.ready["" + name] = true;\r
-}\r
-\r
-function _jmolSterilizeScript(script) {\r
- script = script.replace(/'/g, "'");\r
- if (_jmol.debugAlert)\r
- alert("script:\n" + script);\r
- return script;\r
-}\r
-\r
-function _jmolSterilizeInline(model) {\r
- model = model.replace(/\r|\n|\r\n/g, (model.indexOf("|") >= 0 ? "\\/n" : "|")).replace(/'/g, "'");\r
- if (_jmol.debugAlert)\r
- alert("inline model:\n" + model);\r
- return model;\r
-}\r
-\r
-function _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {\r
- ++_jmol.radioCount;\r
- groupName != undefined && groupName != null || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));\r
- if (!script)\r
- return "";\r
- labelHtml != undefined && labelHtml != null || (labelHtml = script.substring(0, 32));\r
- separatorHtml || (separatorHtml = "")\r
- var scriptIndex = _jmolAddScript(script);\r
- var eospan = "</span>"\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" \r
- + groupName + "' id='"+id+"' type='radio' onclick='_jmolClick(this," +\r
- scriptIndex + _jmol.targetText + ");return true;' onmouseover='_jmolMouseOver(" +\r
- scriptIndex + ");return true;' onmouseout='_jmolMouseOut()' " +\r
- (isChecked ? "checked='true' " : "") + _jmol.radioCssText + " />"\r
- if (labelHtml.toLowerCase().indexOf("<td>")>=0) {\r
- t += eospan\r
- eospan = "";\r
- }\r
- t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan + separatorHtml;\r
-\r
- return t;\r
-}\r
-\r
-function _jmolFindApplet(target) {\r
- // first look for the target in the current window\r
- var applet = _jmolFindAppletInWindow(_jmol.appletWindow != null ? _jmol.appletWindow : window, target);\r
- // THEN look for the target in child frames\r
- if (applet == undefined)\r
- applet = _jmolSearchFrames(window, target);\r
- // FINALLY look for the target in sibling frames\r
- if (applet == undefined)\r
- applet = _jmolSearchFrames(top, target); // look starting in top frame\r
- return applet;\r
-}\r
-\r
-function _jmolGetApplet(targetSuffix){\r
- var target = "jmolApplet" + (targetSuffix ? targetSuffix : "0");\r
- var applet = _jmolFindApplet(target);\r
- if (applet) return applet\r
- _jmol.alerted || alert("could not find applet " + target);\r
- _jmol.alerted = true;\r
- return null\r
-}\r
-\r
-function _jmolSearchFrames(win, target) {\r
- var applet;\r
- var frames = win.frames;\r
- if (frames && frames.length) { // look in all the frames below this window\r
- try{\r
- for (var i = 0; i < frames.length; ++i) {\r
- applet = _jmolSearchFrames(frames[i], target);\r
- if (applet)\r
- return applet;\r
- }\r
- }catch(e) {\r
- if (_jmol.debugAlert)\r
- alert("Jmol.js _jmolSearchFrames cannot access " + win.name + ".frame[" + i + "] consider using jmolSetAppletWindow()") \r
- }\r
- }\r
- return applet = _jmolFindAppletInWindow(win, target)\r
-}\r
-\r
-function _jmolFindAppletInWindow(win, target) {\r
- var doc = win.document;\r
- if (doc.getElementById(target))\r
- return doc.getElementById(target);\r
- else if (doc.applets)\r
- return doc.applets[target];\r
- else\r
- return doc[target]; \r
-}\r
-\r
-function _jmolAddScript(script) {\r
- if (!script)\r
- return 0;\r
- var index = _jmol.scripts.length;\r
- _jmol.scripts[index] = script;\r
- return index;\r
-}\r
-\r
-function _jmolClick(elementClicked, scriptIndex, targetSuffix) {\r
- _jmol.element = elementClicked;\r
- _jmolScriptExecute(elementClicked, _jmol.scripts[scriptIndex], targetSuffix);\r
-}\r
-\r
-function _jmolMenuSelected(menuObject, targetSuffix) {\r
- var scriptIndex = menuObject.value;\r
- if (scriptIndex != undefined) {\r
- _jmolScriptExecute(menuObject, _jmol.scripts[scriptIndex], targetSuffix);\r
- return;\r
- }\r
- var len = menuObject.length;\r
- if (typeof len == "number") {\r
- for (var i = 0; i < len; ++i) {\r
- if (menuObject[i].selected) {\r
- _jmolClick(menuObject[i], menuObject[i].value, targetSuffix);\r
- return;\r
- }\r
- }\r
- }\r
- alert("?Que? menu selected bug #8734");\r
-}\r
-\r
-\r
-_jmol.checkboxMasters = {};\r
-_jmol.checkboxItems = {};\r
-\r
-function jmolSetCheckboxGroup(chkMaster,chkBox) {\r
- var id = chkMaster;\r
- if(typeof(id)=="number")id = "jmolCheckbox" + id;\r
- chkMaster = document.getElementById(id);\r
- if (!chkMaster)alert("jmolSetCheckboxGroup: master checkbox not found: " + id);\r
- var m = _jmol.checkboxMasters[id] = {};\r
- m.chkMaster = chkMaster;\r
- m.chkGroup = {};\r
- for (var i = 1; i < arguments.length; i++){\r
- var id = arguments[i];\r
- if(typeof(id)=="number")id = "jmolCheckbox" + id;\r
- checkboxItem = document.getElementById(id);\r
- if (!checkboxItem)alert("jmolSetCheckboxGroup: group checkbox not found: " + id);\r
- m.chkGroup[id] = checkboxItem;\r
- _jmol.checkboxItems[id] = m;\r
- }\r
-}\r
-\r
-function _jmolNotifyMaster(m){\r
- //called when a group item is checked\r
- var allOn = true;\r
- var allOff = true;\r
- for (var chkBox in m.chkGroup){\r
- if(m.chkGroup[chkBox].checked)\r
- allOff = false;\r
- else\r
- allOn = false;\r
- }\r
- if (allOn)m.chkMaster.checked = true; \r
- if (allOff)m.chkMaster.checked = false;\r
- if ((allOn || allOff) && _jmol.checkboxItems[m.chkMaster.id])\r
- _jmolNotifyMaster(_jmol.checkboxItems[m.chkMaster.id])\r
-}\r
-\r
-function _jmolNotifyGroup(m, isOn){\r
- //called when a master item is checked\r
- for (var chkBox in m.chkGroup){\r
- var item = m.chkGroup[chkBox]\r
- item.checked = isOn;\r
- if (_jmol.checkboxMasters[item.id])\r
- _jmolNotifyGroup(_jmol.checkboxMasters[item.id], isOn)\r
- }\r
-}\r
-\r
-function _jmolCbClick(ckbox, whenChecked, whenUnchecked, targetSuffix) {\r
- _jmol.control = ckbox\r
- _jmolClick(ckbox, ckbox.checked ? whenChecked : whenUnchecked, targetSuffix);\r
- if(_jmol.checkboxMasters[ckbox.id])\r
- _jmolNotifyGroup(_jmol.checkboxMasters[ckbox.id], ckbox.checked)\r
- if(_jmol.checkboxItems[ckbox.id])\r
- _jmolNotifyMaster(_jmol.checkboxItems[ckbox.id])\r
-}\r
-\r
-function _jmolCbOver(ckbox, whenChecked, whenUnchecked) {\r
- window.status = _jmol.scripts[ckbox.checked ? whenUnchecked : whenChecked];\r
-}\r
-\r
-function _jmolMouseOver(scriptIndex) {\r
- window.status = _jmol.scripts[scriptIndex];\r
-}\r
-\r
-function _jmolMouseOut() {\r
- window.status = " ";\r
- return true;\r
-}\r
-\r
-function _jmolSetCodebase(codebase) {\r
- _jmol.codebase = codebase ? codebase : ".";\r
- if (_jmol.debugAlert)\r
- alert("jmolCodebase=" + _jmol.codebase);\r
-}\r
-\r
-function _jmolOnloadResetForms() {\r
- // must be evaluated ONLY once\r
- _jmol.previousOnloadHandler = window.onload;\r
- window.onload =\r
- function() {\r
- with (_jmol) {\r
- if (buttonCount+checkboxCount+menuCount+radioCount+radioGroupCount > 0) {\r
- var forms = document.forms;\r
- for (var i = forms.length; --i >= 0; )\r
- forms[i].reset();\r
- }\r
- if (previousOnloadHandler)\r
- previousOnloadHandler();\r
- }\r
- }\r
-}\r
-\r
-////////////////////////////////////\r
-/////extensions for getProperty/////\r
-////////////////////////////////////\r
-\r
-\r
-function _jmolEvalJSON(s,key){\r
- s=s+""\r
- if(!s)return []\r
- if(s.charAt(0)!="{"){\r
- if(s.indexOf(" | ")>=0)s=s.replace(/\ \|\ /g, "\n")\r
- return s\r
- }\r
- var A = eval("("+s+")")\r
- if(!A)return\r
- if(key && A[key])A=A[key]\r
- return A\r
-}\r
-\r
-function _jmolEnumerateObject(A,key){\r
- var sout=""\r
- if(typeof(A) == "string" && A!="null"){\r
- sout+="\n"+key+"=\""+A+"\""\r
- }else if(!isNaN(A)||A==null){\r
- sout+="\n"+key+"="+(A+""==""?"null":A)\r
- }else if(A.length){\r
- sout+=key+"=[]"\r
- for(var i=0;i<A.length;i++){\r
- sout+="\n"\r
- if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){\r
- sout+=_jmolEnumerateObject(A[i],key+"["+i+"]")\r
- }else{\r
- sout+=key+"["+i+"]="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])\r
- }\r
- }\r
- }else{\r
- if(key != ""){\r
- sout+=key+"={}"\r
- key+="."\r
- }\r
- \r
- for(var i in A){\r
- sout+="\n"\r
- if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){\r
- sout+=_jmolEnumerateObject(A[i],key+i)\r
- }else{\r
- sout+=key+i+"="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])\r
- }\r
- }\r
- } \r
- return sout\r
-}\r
-\r
-\r
-function _jmolSortKey0(a,b){\r
- return (a[0]<b[0]?1:a[0]>b[0]?-1:0)\r
-}\r
-\r
-function _jmolSortMessages(A){\r
- if(!A || typeof(A)!="object")return []\r
- var B = []\r
- for(var i=A.length-1;i>=0;i--)for(var j=0;j<A[i].length;j++)B[B.length]=A[i][j]\r
- if(B.length == 0) return\r
- B=B.sort(_jmolSortKey0)\r
- return B\r
-}\r
-\r
-/////////additional extensions //////////\r
-\r
-\r
-function _jmolDomScriptLoad(URL){\r
- //open(URL) //to debug\r
- _jmol.servercall=URL\r
- var node = document.getElementById("_jmolScriptNode")\r
- if (node && _jmol.browser!="msie"){\r
- document.getElementsByTagName("HEAD")[0].removeChild(node)\r
- node=null\r
- }\r
- if (node) {\r
- node.setAttribute("src",URL)\r
- } else {\r
- node=document.createElement("script")\r
- node.setAttribute("id","_jmolScriptNode")\r
- node.setAttribute("type","text/javascript")\r
- node.setAttribute("src",URL)\r
- document.getElementsByTagName("HEAD")[0].appendChild(node)\r
- }\r
-}\r
-\r
-\r
-function _jmolExtractPostData(url){\r
- S=url.split("&POST:")\r
- var s=""\r
- for(var i=1;i<S.length;i++){\r
- KV=S[i].split("=")\r
- s+="&POSTKEY"+i+"="+KV[0]\r
- s+="&POSTVALUE"+i+"="+KV[1]\r
- }\r
- return "&url="+escape(S[0])+s\r
-}\r
-\r
-function _jmolLoadModel(targetSuffix,remoteURL,array,isError,errorMessage){\r
- //called by server, but in client\r
- //overload this function to customize return\r
- _jmol.remoteURL=remoteURL\r
- isError && alert(errorMessage)\r
- jmolLoadInlineScript(array.join("\n"),_jmol.optionalscript,targetSuffix)\r
-}\r
-\r
-//////////user property/status functions/////////\r
-\r
-function jmolGetStatus(strStatus,targetSuffix){\r
- return _jmolSortMessages(jmolGetPropertyAsArray("jmolStatus",strStatus,targetSuffix))\r
-}\r
-\r
-function jmolGetPropertyAsArray(sKey,sValue,targetSuffix) {\r
- return _jmolEvalJSON(jmolGetPropertyAsJSON(sKey,sValue,targetSuffix),sKey)\r
-}\r
-\r
-function jmolGetPropertyAsString(sKey,sValue,targetSuffix) {\r
- var applet = _jmolGetApplet(targetSuffix);\r
- sValue == undefined && (sValue="");\r
- return (applet ? applet.getPropertyAsString(sKey,sValue) + "" : "")\r
-}\r
-\r
-function jmolGetPropertyAsJSON(sKey,sValue,targetSuffix) {\r
- sValue == undefined && (sValue = "")\r
- var applet = _jmolGetApplet(targetSuffix);\r
- try {\r
- return (applet ? applet.getPropertyAsJSON(sKey,sValue) + "" : "")\r
- } catch(e) {\r
- return ""\r
- }\r
-}\r
-\r
-function jmolGetPropertyAsJavaObject(sKey,sValue,targetSuffix) {\r
- sValue == undefined && (sValue = "")\r
- var applet = _jmolGetApplet(targetSuffix);\r
- return (applet ? applet.getProperty(sKey,sValue) : null)\r
-}\r
-\r
-\r
-function jmolDecodeJSON(s) {\r
- return _jmolEnumerateObject(_jmolEvalJSON(s),"")\r
-}\r
-\r
-\r
-///////// synchronous scripting ////////\r
-\r
-function jmolScriptWait(script, targetSuffix) {\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
- var s = ""\r
- for(var i=Ret.length;--i>=0;)\r
- for(var j=0;j< Ret[i].length;j++)\r
- s+=Ret[i][j]+"\n"\r
- return s\r
-}\r
-\r
-function jmolScriptWaitOutput(script, targetSuffix) {\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var ret = ""\r
- try{\r
- if (script) {\r
- _jmolCheckBrowser();\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) ret += applet.scriptWaitOutput(script);\r
- }\r
- }catch(e){\r
- }\r
- return ret;\r
-}\r
-\r
-function jmolEvaluate(molecularMath, targetSuffix) {\r
-\r
- //carries out molecular math on a model\r
-\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var result = "" + jmolGetPropertyAsJavaObject("evaluate", molecularMath, targetSuffix);\r
- var s = result.replace(/\-*\d+/,"")\r
- if (s == "" && !isNaN(parseInt(result)))return parseInt(result);\r
- var s = result.replace(/\-*\d*\.\d*/,"")\r
- if (s == "" && !isNaN(parseFloat(result)))return parseFloat(result);\r
- return result;\r
-}\r
-\r
-function jmolScriptEcho(script, targetSuffix) {\r
- // returns a newline-separated list of all echos from a script\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
- var s = ""\r
- for(var i=Ret.length;--i>=0;)\r
- for(var j=Ret[i].length;--j>=0;)\r
- if (Ret[i][j][1] == "scriptEcho")s+=Ret[i][j][3]+"\n"\r
- return s.replace(/ \| /g, "\n")\r
-}\r
-\r
-\r
-function jmolScriptMessage(script, targetSuffix) {\r
- // returns a newline-separated list of all messages from a script, ending with "script completed\n"\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
- var s = ""\r
- for(var i=Ret.length;--i>=0;)\r
- for(var j=Ret[i].length;--j>=0;)\r
- if (Ret[i][j][1] == "scriptStatus")s+=Ret[i][j][3]+"\n"\r
- return s.replace(/ \| /g, "\n")\r
-}\r
-\r
-\r
-function jmolScriptWaitAsArray(script, targetSuffix) {\r
- var ret = ""\r
- try{\r
- jmolGetStatus("scriptEcho,scriptMessage,scriptStatus,scriptError",targetSuffix)\r
- if (script) {\r
- _jmolCheckBrowser();\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) ret += applet.scriptWait(script);\r
- ret = _jmolEvalJSON(ret,"jmolStatus")\r
- if(typeof ret == "object")\r
- return ret\r
- }\r
- }catch(e){\r
- }\r
- return [[ret]]\r
-}\r
-\r
-\r
-\r
-//////////// save/restore orientation /////////////\r
-\r
-function jmolSaveOrientation(id, targetSuffix) { \r
- targetSuffix == undefined && (targetSuffix="0")\r
- return _jmol["savedOrientation"+id] = jmolGetPropertyAsArray("orientationInfo","info",targetSuffix).moveTo\r
-}\r
-\r
-function jmolRestoreOrientation(id, targetSuffix) {\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var s=_jmol["savedOrientation"+id]\r
- if (!s || s == "")return\r
- s=s.replace(/1\.0/,"0")\r
- return jmolScriptWait(s,targetSuffix)\r
-}\r
-\r
-function jmolRestoreOrientationDelayed(id, delay, targetSuffix) {\r
- arguments.length < 2 && (delay=1)\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var s=_jmol["savedOrientation"+id]\r
- if (!s || s == "")return\r
- s=s.replace(/1\.0/,delay)\r
- return jmolScriptWait(s,targetSuffix)\r
-}\r
-\r
-//////////// add parameter /////////////\r
-/*\r
- * for adding callbacks or other parameters. Use:\r
-\r
- jmolSetDocument(0)\r
- var s= jmolApplet(....)\r
- s = jmolAppletAddParam(s,"messageCallback", "myFunctionName")\r
- document.write(s)\r
- jmolSetDocument(document) // if you want to then write buttons and such normally\r
- \r
- */\r
-\r
-function jmolAppletAddParam(appletCode,name,value){\r
- return (value == "" ? appletCode : appletCode.replace(/\<param/,"\n<param name='"+name+"' value='"+value+"' />\n<param"))\r
-}\r
-\r
-///////////////auto load Research Consortium for Structural Biology (RCSB) data ///////////\r
-\r
-function jmolLoadAjax_STOLAF_RCSB(fileformat,pdbid,optionalscript,targetSuffix){\r
-\r
- _jmol.thismodel || (_jmol.thismodel = "1crn")\r
- _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")\r
- _jmol.RCSBserver || (_jmol.RCSBserver="http://www.rcsb.org")\r
- _jmol.defaultURL_RCSB || (_jmol.defaultURL_RCSB=_jmol.RCSBserver+"/pdb/files/1CRN.CIF")\r
- fileformat || (fileformat="PDB")\r
- pdbid || (pdbid=prompt("Enter a 4-digit PDB ID:",_jmol.thismodel))\r
- if(!pdbid || pdbid.length != 4)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- var url=_jmol.defaultURL_RCSB.replace(/1CRN/g,pdbid.toUpperCase())\r
- fileformat=="CIF" || (url=url.replace(/CIF/,fileformat))\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=pdbid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-///////////////auto load NIH CACTVS data -- compound name or SMILES ///////////\r
-\r
-function jmolLoadAjax_STOLAF_NIH(compoundid,optionalscript,targetSuffix){\r
- _jmol.thismodel || (_jmol.thismodel = "aspirin")\r
- _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")\r
- _jmol.defaultURL_NIH || (_jmol.defaultURL_NIH="http://cactus.nci.nih.gov/chemical/structure/FILE/file?format=sdf&get3d=True")\r
- compoundid || (compoundid=prompt("Enter a compound name or a SMILES string:",_jmol.thismodel))\r
- if(!compoundid)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- var url=_jmol.defaultURL_NIH.replace(/FILE/g,compoundid)\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=compoundid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-/////////////// St. Olaf College AJAX server -- ANY URL ///////////\r
-\r
-function jmolLoadAjax_STOLAF_ANY(url, userid, optionalscript,targetSuffix){\r
- _jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm"\r
- _jmol.thisurlANY || (_jmol.thisurlANY = "http://www.stolaf.edu/depts/chemistry/mo/struc/data/ycp3-1.mol")\r
- url || (url=prompt("Enter any (uncompressed file) URL:", _jmol.thisurlANY))\r
- userid || (userid="0")\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.modelArray = []\r
- _jmol.thisurl = url\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
-}\r
-\r
-\r
-/////////////// Mineralogical Society of America (MSA) data /////////\r
-\r
-function jmolLoadAjax_MSA(key,value,optionalscript,targetSuffix){\r
-\r
- _jmol.thiskeyMSA || (_jmol.thiskeyMSA = "mineral")\r
- _jmol.thismodelMSA || (_jmol.thismodelMSA = "quartz")\r
- _jmol.ajaxURL_MSA || (_jmol.ajaxURL_MSA="http://rruff.geo.arizona.edu/AMS/result.php?mineral=quartz&viewing=ajaxjs")\r
- key || (key=prompt("Enter a field:", _jmol.thiskeyMSA))\r
- if(!key)return ""\r
- value || (value=prompt("Enter a "+key+":", _jmol.thismodelMSA))\r
- if(!value)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- optionalscript == 1 && (optionalscript='load "" {1 1 1}')\r
- var url=_jmol.ajaxURL_MSA.replace(/mineral/g,key).replace(/quartz/g,value)\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thiskeyMSA=key\r
- _jmol.thismodelMSA=value\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- loadModel=_jmolLoadModel\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-\r
-function jmolLoadAjaxJS(url, userid, optionalscript,targetSuffix){\r
- userid || (userid="0")\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=userid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.modelArray = []\r
- _jmol.thisurl = url\r
- url+="&returnFunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix\r
- _jmolDomScriptLoad(url)\r
-}\r
-\r
-\r
-//// in case Jmol library has already been loaded:\r
-\r
-}catch(e){}\r
-\r
-///////////////moving atoms //////////////\r
-\r
-// HIGHLY experimental!!\r
-\r
-function jmolSetAtomCoord(i,x,y,z,targetSuffix){\r
- _jmolCheckBrowser();\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) applet.getProperty('jmolViewer').setAtomCoord(i,x,y,z)\r
-}\r
-\r
-function jmolSetAtomCoordRelative(i,x,y,z,targetSuffix){\r
- _jmolCheckBrowser();\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) applet.getProperty('jmolViewer').setAtomCoordRelative(i,x,y,z)\r
-}\r
-\r
-\r
-///////////////applet fake for testing buttons/////////////\r
-\r
-\r
-if(_jmol.useNoApplet){\r
- jmolApplet = function(w){\r
- var s="<table style='background-color:black' width="+w+"><tr height="+w+">"\r
- +"<td align=center valign=center style='background-color:white'>"\r
- +"Applet would be here"\r
- +"<p><textarea id=fakeApplet rows=5 cols=50></textarea>"\r
- +"</td></tr></table>"\r
- return _jmolDocumentWrite(s)\r
- }\r
-\r
- _jmolFindApplet = function(){return jmolApplet0}\r
-\r
- jmolApplet0 = {\r
- script: function(script){document.getElementById("fakeApplet").value="\njmolScript:\n"+script}\r
- ,scriptWait: function(script){document.getElementById("fakeApplet").value="\njmolScriptWait:\n"+script} \r
- ,loadInline: function(data,script){document.getElementById("fakeApplet").value="\njmolLoadInline data:\n"+data+"\n\nscript:\n"+script}\r
- }\r
-}\r
-\r
-\r
-///////////////////////////////////////////\r
-\r
- // This should no longer be needed, jmolResizeApplet() is better; kept for backwards compatibility\r
- /*\r
- Resizes absolutely (pixels) or by percent of window (w or h 0.5 means 50%).\r
- targetSuffix is optional and defaults to zero (first applet in page).\r
- Both w and h are optional, but needed if you want to use targetSuffix.\r
- h defaults to w\r
- w defaults to 100% of window\r
- If either w or h is between 0 and 1, then it is taken as percent/100.\r
- If either w or h is greater than 1, then it is taken as a size (pixels). \r
- */\r
-function jmolResize(w,h,targetSuffix) {\r
- _jmol.alerted = true;\r
- var percentW = (!w ? 100 : w <= 1 && w > 0 ? w * 100 : 0);\r
- var percentH = (!h ? percentW : h <= 1 && h > 0 ? h * 100 : 0);\r
- if (_jmol.browser=="msie") {\r
- var width=document.body.clientWidth;\r
- var height=document.body.clientHeight;\r
- } else {\r
- var netscapeScrollWidth=15;\r
- var width=window.innerWidth - netscapeScrollWidth;\r
- var height=window.innerHeight-netscapeScrollWidth;\r
- }\r
- var applet = _jmolGetApplet(targetSuffix);\r
- if(!applet)return;\r
- applet.style.width = (percentW ? width * percentW/100 : w)+"px";\r
- applet.style.height = (percentH ? height * percentH/100 : (h ? h : w))+"px";\r
- //title=width + " " + height + " " + (new Date());\r
-}\r
-\r
-// 13 Jun 09 -- makes jmolResize() obsolete (kept for backwards compatibility)\r
-function jmolResizeApplet(size,targetSuffix) {\r
- // See _jmolGetAppletSize() for the formats accepted as size [same used by jmolApplet()]\r
- // Special case: an empty value for width or height is accepted, meaning no change in that dimension.\r
- _jmol.alerted = true;\r
- var applet = _jmolGetApplet(targetSuffix);\r
- if(!applet)return;\r
- var sz = _jmolGetAppletSize(size, "px");\r
- sz[0] && (applet.style.width = sz[0]);\r
- sz[1] && (applet.style.height = sz[1]);\r
-}\r
-\r
-function _jmolGetAppletSize(size, units) {\r
- /* Accepts single number or 2-value array, each one can be one of:\r
- percent (text string ending %), decimal 0 to 1 (percent/100), number, or text string (interpreted as nr.)\r
- [width, height] array of strings is returned, with units added if specified.\r
- Percent is relative to container div or element (which should have explicitly set size).\r
- */\r
- var width, height;\r
- if ( (typeof size) == "object" && size != null ) {\r
- width = size[0]; height = size[1];\r
- } else {\r
- width = height = size;\r
- }\r
- return [_jmolFixDim(width, units), _jmolFixDim(height, units)];\r
-}\r
-\r
-function _jmolFixDim(x, units) {\r
- var sx = "" + x;\r
- return (sx.length == 0 ? (units ? "" : _jmol.allowedJmolSize[2])\r
- : sx.indexOf("%") == sx.length-1 ? sx \r
- : (x = parseFloat(x)) <= 1 && x > 0 ? x * 100 + "%"\r
- : (isNaN(x = Math.floor(x)) ? _jmol.allowedJmolSize[2]\r
- : x < _jmol.allowedJmolSize[0] ? _jmol.allowedJmolSize[0]\r
- : x > _jmol.allowedJmolSize[1] ? _jmol.allowedJmolSize[1] \r
- : x) + (units ? units : ""));\r
-}\r
-\r
-\r
-\r
-\r
+/* Jmol 12.0 script library Jmol.js 9:48 PM 1/31/2011 Bob Hanson
+
+ checkbox heirarchy -- see http://chemapps.stolaf.edu/jmol/docs/examples-11/check.htm
+
+ based on:
+ *
+ * Copyright (C) 2004-2005 Miguel, Jmol Development, www.jmol.org
+ *
+ * Contact: hansonr@stolaf.edu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
+ */
+
+// for documentation see www.jmol.org/jslibrary
+
+try{if(typeof(_jmol)!="undefined")exit()
+
+// place "?NOAPPLET" on your command line to check applet control action with a textarea
+// place "?JMOLJAR=xxxxx" to use a specific jar file
+
+// bob hanson -- jmolResize(w,h) -- resizes absolutely or by percent (w or h 0.5 means 50%)
+// angel herraez -- update of jmolResize(w,h,targetSuffix) so it is not tied to first applet
+// bob hanson -- jmolEvaluate -- evaluates molecular math 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptMessage -- returns all "scriptStatus" messages 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptEcho -- returns all "scriptEcho" messages 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptWait -- 11:31 AM 5/2/2006
+// bob hanson -- remove trailing separatorHTML in radio groups -- 12:18 PM 5/6/2006
+// bob hanson -- adds support for dynamic DOM script nodes 7:04 AM 5/19/2006
+// bob hanson -- adds try/catch for wiki - multiple code passes 7:05 AM 5/19/2006
+// bob hanson -- auto-initiates to defaultdir/defaultjar -- change as desired.
+// bob hanson -- adding save/restore orientation w/ and w/o delay 11:49 AM 5/25/2006
+// bob hanson -- adding AjaxJS service 11:16 AM 6/3/2006
+// bob hanson -- fix for iframes not available for finding applet
+// bob hanson -- added applet fake ?NOAPPLET URL flag
+// bob hanson -- added jmolSetCallback(calbackName, funcName) 3:32 PM 6/13/2006
+// used PRIOR to jmolApplet() or jmolAppletInline()
+// added 4th array element in jmolRadioGroup -- title
+// added <span> and id around link, checkbox, radio, menu
+// fixing AJAX loads for MSIE/Opera-Mozilla incompatibility
+// -- renamed Jmol-11.js from Jmol-new.js; JmolApplet.jar from JmolAppletProto.jar
+// renamed Jmol.js for Jmol 11 distribution
+// -- modified jmolRestoreOrientation() to be immediate, no 1-second delay
+// bob hanson -- jmolScriptWait always returns a string -- 11:23 AM 9/16/2006
+// bh -- jmolCommandInput()
+// bh -- jmolSetTranslation(TF) -- forces translation even if there might be message callback issues
+// bh -- minor fixes suggested by Angel
+// bh -- adds jmolSetSyncId() and jmolGetSyncId()
+// bh 3/2008 -- adds jmolAppendInlineScript() and jmolAppendInlineArray()
+// bh 3/2008 -- fixes IE7 bug in relation to jmolLoadInlineArray()
+// bh 6/2008 -- adds jmolSetAppletWindow()
+// Angel H. 6/2008 -- added html <label> tags to checkboxes and radio buttons [in jmolCheckbox() and _jmolRadio() functions]
+// bh 7/2008 -- code fix "for(i..." not "for(var i..."
+// bh 12/2008 -- jmolLoadInline, jmolLoadInlineArray, jmolLoadInlineScript, jmolAppendInlineScript, jmolAppendInlineArray all return error message or null (Jmol 11.7.16)
+// bh 12/2008 -- jmolScriptWaitOutput() -- waits for script to complete and delivers output normally sent to console
+
+// bh 5/2009 -- Support for XHTML using jmolSetXHTML(id)
+// ah & bh 6/2009 -- New jmolResizeApplet() more flexible, similar to jmolApplet() size syntax
+// bh 11/2009 -- care in accessing top.document
+// bh 12/2009 -- added jmolSetParameter(name, value)
+// bh 12/2009 -- added PARAMS=name:value;name:value;name:value... for command line
+// bh 12/2009 -- overhaul of target checking
+// bh 1/2010 -- all _xxxx() methods ALWAYS have complete argument list
+// bh 1/2010 -- adds option to run a JavaScript function from any Jmol control.
+// This is accomplished by passing an array rather than a script:
+// jmolHref([myfunc,"my param 1", "my param 2"], "testing")
+// function myfunc(jmolControlObject, [myfunc,"my param 1", "my param 2"], target){...}
+// and allows much more flexibility with responding to controls
+// bh 4/2010 -- added jmolSetMemoryMb(nMb)
+// ah 1/2011 -- wider detection of browsers; more browsers now use the object tag instead of the applet tag;
+// fix of object tag (removed classid) accounts for change of behavior in Chrome
+// bh 3/2011 -- added jmolLoadAjax_STOLAF_NIH
+
+var defaultdir = "."
+var defaultjar = "JmolApplet.jar"
+
+
+// Note added 12:41 PM 9/21/2008 by Bob Hanson, hansonr@stolaf.edu:
+
+// JMOLJAR=xxxxx.jar on the URL for this page will override
+// the JAR file specified in the jmolInitialize() call.
+
+// The idea is that it can be very useful to test a web page with different JAR files
+// Or for an expert user to substitute a signed applet for an unsigned one
+// so as to use a broader range of models or to create JPEG files, for example.
+
+// If the JAR file is not in the current directory (has any sort of "/" in its name)
+// then the user is presented with a warning and asked whether it is OK to change Jar files.
+// The default action, if the user just presses "OK" is to NOT allow the change.
+// The user must type the word "yes" in the prompt box for the change to be approved.
+
+// If you don't want people to be able to switch in their own JAR file on your page,
+// simply set this next line to read "var allowJMOLJAR = false".
+
+
+var undefined; // for IE 5 ... wherein undefined is undefined
+
+////////////////////////////////////////////////////////////////
+// Basic Scripting infrastruture
+////////////////////////////////////////////////////////////////
+
+function jmolInitialize(codebaseDirectory, fileNameOrUseSignedApplet) {
+ if (_jmol.initialized)
+ return;
+ _jmol.initialized = true;
+ if(_jmol.jmoljar) {
+ var f = _jmol.jmoljar;
+ if (f.indexOf("/") >= 0) {
+ alert ("This web page URL is requesting that the applet used be " + f + ". This is a possible security risk, particularly if the applet is signed, because signed applets can read and write files on your local machine or network.")
+ var ok = prompt("Do you want to use applet " + f + "? ","yes or no")
+ if (ok == "yes") {
+ codebaseDirectory = f.substring(0, f.lastIndexOf("/"));
+ fileNameOrUseSignedApplet = f.substring(f.lastIndexOf("/") + 1);
+ } else {
+ _jmolGetJarFilename(fileNameOrUseSignedApplet);
+ alert("The web page URL was ignored. Continuing using " + _jmol.archivePath + ' in directory "' + codebaseDirectory + '"');
+ }
+ } else {
+ fileNameOrUseSignedApplet = f;
+ }
+ }
+ _jmolSetCodebase(codebaseDirectory);
+ _jmolGetJarFilename(fileNameOrUseSignedApplet);
+ _jmolOnloadResetForms();
+}
+
+function jmolSetTranslation(TF) {
+ _jmol.params.doTranslate = ''+TF;
+}
+
+function _jmolGetJarFilename(fileNameOrFlag) {
+ _jmol.archivePath =
+ (typeof(fileNameOrFlag) == "string" ? fileNameOrFlag : (fileNameOrFlag ? "JmolAppletSigned" : "JmolApplet") + "0.jar");
+}
+
+function jmolSetDocument(doc) {
+ _jmol.currentDocument = doc;
+}
+
+function jmolSetAppletColor(boxbgcolor, boxfgcolor, progresscolor) {
+ _jmolInitCheck();
+ _jmol.params.boxbgcolor = boxbgcolor;
+ if (boxfgcolor)
+ _jmol.params.boxfgcolor = boxfgcolor
+ else if (boxbgcolor == "white" || boxbgcolor == "#FFFFFF")
+ _jmol.params.boxfgcolor = "black";
+ else
+ _jmol.params.boxfgcolor = "white";
+ if (progresscolor)
+ _jmol.params.progresscolor = progresscolor;
+ if (_jmol.debugAlert)
+ alert(" boxbgcolor=" + _jmol.params.boxbgcolor +
+ " boxfgcolor=" + _jmol.params.boxfgcolor +
+ " progresscolor=" + _jmol.params.progresscolor);
+}
+
+function jmolSetAppletWindow(w) {
+ _jmol.appletWindow = w;
+}
+
+function jmolApplet(size, script, nameSuffix) {
+ _jmolInitCheck();
+ return _jmolApplet(size, null, script, nameSuffix);
+}
+
+////////////////////////////////////////////////////////////////
+// Basic controls
+////////////////////////////////////////////////////////////////
+
+// undefined means it wasn't there; null means it was explicitly listed as null (so as to skip it)
+
+function jmolButton(script, label, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolButton" + _jmol.buttonCount);
+ label != undefined && label != null || (label = script.substring(0, 32));
+ ++_jmol.buttonCount;
+ var scriptIndex = _jmolAddScript(script);
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='button' name='" + id + "' id='" + id +
+ "' value='" + label +
+ "' onclick='_jmolClick(this," + scriptIndex + _jmol.targetText +
+ ")' onmouseover='_jmolMouseOver(" + scriptIndex +
+ ");return true' onmouseout='_jmolMouseOut()' " +
+ _jmol.buttonCssText + " /></span>";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolCheckbox(scriptWhenChecked, scriptWhenUnchecked,
+ labelHtml, isChecked, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolCheckbox" + _jmol.checkboxCount);
+ ++_jmol.checkboxCount;
+ if (scriptWhenChecked == undefined || scriptWhenChecked == null ||
+ scriptWhenUnchecked == undefined || scriptWhenUnchecked == null) {
+ alert("jmolCheckbox requires two scripts");
+ return;
+ }
+ if (labelHtml == undefined || labelHtml == null) {
+ alert("jmolCheckbox requires a label");
+ return;
+ }
+ var indexChecked = _jmolAddScript(scriptWhenChecked);
+ var indexUnchecked = _jmolAddScript(scriptWhenUnchecked);
+ var eospan = "</span>"
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='checkbox' name='" + id + "' id='" + id +
+ "' onclick='_jmolCbClick(this," +
+ indexChecked + "," + indexUnchecked + _jmol.targetText +
+ ")' onmouseover='_jmolCbOver(this," + indexChecked + "," +
+ indexUnchecked +
+ ");return true' onmouseout='_jmolMouseOut()' " +
+ (isChecked ? "checked='true' " : "")+ _jmol.checkboxCssText + " />"
+ if (labelHtml.toLowerCase().indexOf("<td>")>=0) {
+ t += eospan
+ eospan = "";
+ }
+ t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan;
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolStartNewRadioGroup() {
+ ++_jmol.radioGroupCount;
+}
+
+function jmolRadioGroup(arrayOfRadioButtons, separatorHtml, groupName, id, title) {
+ /*
+
+ array: [radio1,radio2,radio3...]
+ where radioN = ["script","label",isSelected,"id","title"]
+
+ */
+
+ _jmolInitCheck();
+ var type = typeof arrayOfRadioButtons;
+ if (type != "object" || type == null || ! arrayOfRadioButtons.length) {
+ alert("invalid arrayOfRadioButtons");
+ return;
+ }
+ separatorHtml != undefined && separatorHtml != null || (separatorHtml = " ");
+ var len = arrayOfRadioButtons.length;
+ jmolStartNewRadioGroup();
+ groupName || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
+ var t = "<span id='"+(id ? id : groupName)+"'>";
+ for (var i = 0; i < len; ++i) {
+ if (i == len - 1)
+ separatorHtml = "";
+ var radio = arrayOfRadioButtons[i];
+ type = typeof radio;
+ if (type == "object") {
+ t += _jmolRadio(radio[0], radio[1], radio[2], separatorHtml, groupName, (radio.length > 3 ? radio[3]: (id ? id : groupName)+"_"+i), (radio.length > 4 ? radio[4] : 0), title);
+ } else {
+ t += _jmolRadio(radio, null, null, separatorHtml, groupName, (id ? id : groupName)+"_"+i, title);
+ }
+ }
+ t+="</span>"
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+
+function jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {
+ _jmolInitCheck();
+ if (_jmol.radioGroupCount == 0)
+ ++_jmol.radioGroupCount;
+ var t = _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, (id ? id : groupName + "_" + _jmol.radioCount), title ? title : 0);
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolLink(script, label, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolLink" + _jmol.linkCount);
+ label != undefined && label != null || (label = script.substring(0, 32));
+ ++_jmol.linkCount;
+ var scriptIndex = _jmolAddScript(script);
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><a name='" + id + "' id='" + id +
+ "' href='javascript:_jmolClick(this," + scriptIndex + _jmol.targetText + ");' onmouseover='_jmolMouseOver(" + scriptIndex +
+ ");return true;' onmouseout='_jmolMouseOut()' " +
+ _jmol.linkCssText + ">" + label + "</a></span>";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolCommandInput(label, size, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolCmd" + _jmol.cmdCount);
+ label != undefined && label != null || (label = "Execute");
+ size != undefined && !isNaN(size) || (size = 60);
+ ++_jmol.cmdCount;
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" + id + "' id='" + id +
+ "' size='"+size+"' onkeypress='_jmolCommandKeyPress(event,\""+id+"\"" + _jmol.targetText + ")'><input type=button value = '"+label+"' onclick='jmolScript(document.getElementById(\""+id+"\").value" + _jmol.targetText + ")' /></span>";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function _jmolCommandKeyPress(e, id, target) {
+ var keycode = (window.event ? window.event.keyCode : e ? e.which : 0);
+ if (keycode == 13) {
+ var inputBox = document.getElementById(id)
+ _jmolScriptExecute(inputBox, inputBox.value, target)
+ }
+}
+
+function _jmolScriptExecute(element,script,target) {
+ if (typeof(script) == "object")
+ script[0](element, script, target)
+ else
+ jmolScript(script, target)
+}
+
+function jmolMenu(arrayOfMenuItems, size, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolMenu" + _jmol.menuCount);
+ ++_jmol.menuCount;
+ var type = typeof arrayOfMenuItems;
+ if (type != null && type == "object" && arrayOfMenuItems.length) {
+ var len = arrayOfMenuItems.length;
+ if (typeof size != "number" || size == 1)
+ size = null;
+ else if (size < 0)
+ size = len;
+ var sizeText = size ? " size='" + size + "' " : "";
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><select name='" + id + "' id='" + id +
+ "' onChange='_jmolMenuSelected(this" + _jmol.targetText + ")'" +
+ sizeText + _jmol.menuCssText + ">";
+ for (var i = 0; i < len; ++i) {
+ var menuItem = arrayOfMenuItems[i];
+ type = typeof menuItem;
+ var script, text;
+ var isSelected = undefined;
+ if (type == "object" && menuItem != null) {
+ script = menuItem[0];
+ text = menuItem[1];
+ isSelected = menuItem[2];
+ } else {
+ script = text = menuItem;
+ }
+ text != undefined && text != null || (text = script);
+ if (script=="#optgroup") {
+ t += "<optgroup label='" + text + "'>";
+ } else if (script=="#optgroupEnd") {
+ t += "</optgroup>";
+ } else {
+ var scriptIndex = _jmolAddScript(script);
+ var selectedText = isSelected ? "' selected='true'>" : "'>";
+ t += "<option value='" + scriptIndex + selectedText + text + "</option>";
+ }
+ }
+ t += "</select></span>";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+ }
+}
+
+function jmolHtml(html) {
+ return _jmolDocumentWrite(html);
+}
+
+function jmolBr() {
+ return _jmolDocumentWrite("<br />");
+}
+
+////////////////////////////////////////////////////////////////
+// advanced scripting functions
+////////////////////////////////////////////////////////////////
+
+function jmolDebugAlert(enableAlerts) {
+ _jmol.debugAlert = (enableAlerts == undefined || enableAlerts)
+}
+
+function jmolAppletInline(size, inlineModel, script, nameSuffix) {
+ _jmolInitCheck();
+ return _jmolApplet(size, _jmolSterilizeInline(inlineModel),
+ script, nameSuffix);
+}
+
+function jmolSetTarget(targetSuffix) {
+ _jmol.targetSuffix = targetSuffix;
+ _jmol.targetText = targetSuffix ? ",\"" + targetSuffix + "\"" : ",0";
+}
+
+function jmolScript(script, targetSuffix) {
+ if (script) {
+ _jmolCheckBrowser();
+ if (targetSuffix == "all") {
+ with (_jmol) {
+ for (var i = 0; i < appletSuffixes.length; ++i) {
+ var applet = _jmolGetApplet(appletSuffixes[i]);
+ if (applet) applet.script(script);
+ }
+ }
+ } else {
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) applet.script(script);
+ }
+ }
+}
+
+function jmolLoadInline(model, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ if (typeof(model) == "string")
+ return applet.loadInlineString(model, "", false);
+ else
+ return applet.loadInlineArray(model, "", false);
+}
+
+
+function jmolLoadInlineScript(model, script, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ return applet.loadInlineString(model, script, false);
+}
+
+
+function jmolLoadInlineArray(ModelArray, script, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ script || (script="")
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ try {
+ return applet.loadInlineArray(ModelArray, script, false);
+ } catch (err) {
+ //IE 7 bug
+ return applet.loadInlineString(ModelArray.join("\n"), script, false);
+ }
+}
+
+function jmolAppendInlineArray(ModelArray, script, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ script || (script="")
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ try {
+ return applet.loadInlineArray(ModelArray, script, true);
+ } catch (err) {
+ //IE 7 bug
+ return applet.loadInlineString(ModelArray.join("\n"), script, true);
+ }
+}
+
+function jmolAppendInlineScript(model, script, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ return applet.loadInlineString(model, script, true);
+}
+
+function jmolCheckBrowser(action, urlOrMessage, nowOrLater) {
+ if (typeof action == "string") {
+ action = action.toLowerCase();
+ action == "alert" || action == "redirect" || action == "popup" || (action = null);
+ }
+ if (typeof action != "string")
+ alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
+ "action must be 'alert', 'redirect', or 'popup'");
+ else {
+ if (typeof urlOrMessage != "string")
+ alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
+ "urlOrMessage must be a string");
+ else {
+ _jmol.checkBrowserAction = action;
+ _jmol.checkBrowserUrlOrMessage = urlOrMessage;
+ }
+ }
+ if (typeof nowOrLater == "string" && nowOrLater.toLowerCase() == "now")
+ _jmolCheckBrowser();
+}
+
+////////////////////////////////////////////////////////////////
+// Cascading Style Sheet Class support
+////////////////////////////////////////////////////////////////
+
+function jmolSetAppletCssClass(appletCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.appletCssClass = appletCssClass;
+ _jmol.appletCssText = appletCssClass ? "class='" + appletCssClass + "' " : "";
+ }
+}
+
+function jmolSetButtonCssClass(buttonCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.buttonCssClass = buttonCssClass;
+ _jmol.buttonCssText = buttonCssClass ? "class='" + buttonCssClass + "' " : "";
+ }
+}
+
+function jmolSetCheckboxCssClass(checkboxCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.checkboxCssClass = checkboxCssClass;
+ _jmol.checkboxCssText = checkboxCssClass ? "class='" + checkboxCssClass + "' " : "";
+ }
+}
+
+function jmolSetRadioCssClass(radioCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.radioCssClass = radioCssClass;
+ _jmol.radioCssText = radioCssClass ? "class='" + radioCssClass + "' " : "";
+ }
+}
+
+function jmolSetLinkCssClass(linkCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.linkCssClass = linkCssClass;
+ _jmol.linkCssText = linkCssClass ? "class='" + linkCssClass + "' " : "";
+ }
+}
+
+function jmolSetMenuCssClass(menuCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.menuCssClass = menuCssClass;
+ _jmol.menuCssText = menuCssClass ? "class='" + menuCssClass + "' " : "";
+ }
+}
+
+////////////////////////////////////////////////////////////////
+// functions for INTERNAL USE ONLY which are subject to change
+// use at your own risk ... you have been WARNED!
+////////////////////////////////////////////////////////////////
+var _jmol = {
+ currentDocument: document,
+
+ debugAlert: false,
+
+ codebase: "",
+ modelbase: ".",
+
+ appletCount: 0,
+ appletSuffixes: [],
+ appletWindow: null,
+ allowedJmolSize: [25, 2048, 300], // min, max, default (pixels)
+ /* By setting the _jmol.allowedJmolSize[] variable in the webpage
+ before calling jmolApplet(), limits for applet size can be overriden.
+ 2048 standard for GeoWall (http://geowall.geo.lsa.umich.edu/home.html)
+ */
+ buttonCount: 0,
+ checkboxCount: 0,
+ linkCount: 0,
+ cmdCount: 0,
+ menuCount: 0,
+ radioCount: 0,
+ radioGroupCount: 0,
+
+ appletCssClass: null,
+ appletCssText: "",
+ buttonCssClass: null,
+ buttonCssText: "",
+ checkboxCssClass: null,
+ checkboxCssText: "",
+ java_arguments: "-Xmx512m",
+ radioCssClass: null,
+ radioCssText: "",
+ linkCssClass: null,
+ linkCssText: "",
+ menuCssClass: null,
+ menuCssText: "",
+
+ targetSuffix: 0,
+ targetText: ",0",
+ scripts: [""],
+ params: {
+ syncId: ("" + Math.random()).substring(3),
+ progressbar: "true",
+ progresscolor: "blue",
+ boxbgcolor: "black",
+ boxfgcolor: "white",
+ boxmessage: "Downloading JmolApplet ..."
+ },
+ ua: navigator.userAgent.toLowerCase(),
+ // uaVersion: parseFloat(navigator.appVersion), // not used
+
+ os: "unknown",
+ browser: "unknown",
+ browserVersion: 0,
+ hasGetElementById: !!document.getElementById,
+ isJavaEnabled: navigator.javaEnabled(),
+ // isNetscape47Win: false, // not used, N4.7 is no longer supported even for detection
+ useIEObject: false,
+ useHtml4Object: false,
+
+ windowsClassId: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",
+ windowsCabUrl:
+ "http://java.sun.com/update/1.6.0/jinstall-6u22-windows-i586.cab",
+
+ isBrowserCompliant: false,
+ isJavaCompliant: false,
+ isFullyCompliant: false,
+
+ initialized: false,
+ initChecked: false,
+
+ browserChecked: false,
+ checkBrowserAction: "alert",
+ checkBrowserUrlOrMessage: null,
+
+ archivePath: null, // JmolApplet0.jar OR JmolAppletSigned0.jar
+
+ previousOnloadHandler: null,
+
+ jmoljar: null,
+ useNoApplet: false,
+
+ ready: {}
+}
+
+with (_jmol) {
+ function _jmolTestUA(candidate) {
+ var ua = _jmol.ua;
+ var index = ua.indexOf(candidate);
+ if (index < 0)
+ return false;
+ _jmol.browser = candidate;
+ _jmol.browserVersion = parseFloat(ua.substring(index+candidate.length+1));
+ return true;
+ }
+
+ function _jmolTestOS(candidate) {
+ if (_jmol.ua.indexOf(candidate) < 0)
+ return false;
+ _jmol.os = candidate;
+ return true;
+ }
+
+ _jmolTestUA("konqueror") ||
+ _jmolTestUA("webkit") ||
+ _jmolTestUA("omniweb") ||
+ _jmolTestUA("opera") ||
+ _jmolTestUA("webtv") ||
+ _jmolTestUA("icab") ||
+ _jmolTestUA("msie") ||
+ (_jmol.ua.indexOf("compatible") < 0 && _jmolTestUA("mozilla")); //Netscape, Mozilla, Seamonkey, Firefox and anything assimilated
+
+ _jmolTestOS("linux") ||
+ _jmolTestOS("unix") ||
+ _jmolTestOS("mac") ||
+ _jmolTestOS("win");
+
+ /* not used:
+ isNetscape47Win = (os == "win" && browser == "mozilla" &&
+ browserVersion >= 4.78 && browserVersion <= 4.8);
+ */
+
+ if (os == "win") {
+ isBrowserCompliant = hasGetElementById;
+ } else if (os == "mac") { // mac is the problem child :-(
+ if (browser == "mozilla" && browserVersion >= 5) {
+ // miguel 2004 11 17
+ // checking the plugins array does not work because
+ // Netscape 7.2 OS X still has Java 1.3.1 listed even though
+ // javaplugin.sf.net is installed to upgrade to 1.4.2
+ eval("try {var v = java.lang.System.getProperty('java.version');" +
+ " _jmol.isBrowserCompliant = v >= '1.4.2';" +
+ " } catch (e) { }");
+ } else if (browser == "opera" && browserVersion <= 7.54) {
+ isBrowserCompliant = false;
+ } else {
+ isBrowserCompliant = hasGetElementById &&
+ !((browser == "msie") ||
+ (browser == "webkit" && browserVersion < 125.12));
+ }
+ } else if (os == "linux" || os == "unix") {
+ if (browser == "konqueror" && browserVersion <= 3.3)
+ isBrowserCompliant = false;
+ else
+ isBrowserCompliant = hasGetElementById;
+ } else { // other OS
+ isBrowserCompliant = hasGetElementById;
+ }
+
+ // possibly more checks in the future for this
+ isJavaCompliant = isJavaEnabled;
+
+ isFullyCompliant = isBrowserCompliant && isJavaCompliant;
+
+ useIEObject = (os == "win" && browser == "msie" && browserVersion >= 5.5);
+ useHtml4Object =
+ (browser == "mozilla" && browserVersion >= 5) ||
+ (browser == "opera" && browserVersion >= 8) ||
+ (browser == "webkit" && browserVersion >= 412.2);
+ try {
+ if (top.location.search.indexOf("JMOLJAR=")>=0)
+ jmoljar = top.location.search.split("JMOLJAR=")[1].split("&")[0];
+ } catch(e) {
+ // can't access top.location
+ }
+ try {
+ useNoApplet = (top.location.search.indexOf("NOAPPLET")>=0);
+ } catch(e) {
+ // can't access top.document
+ }
+}
+
+function jmolSetMemoryMb(nMb) {
+ _jmol.java_arguments = "-Xmx" + Math.round(nMb) + "m"
+}
+
+function jmolSetParameter(name,value) {
+ _jmol.params[name] = value
+}
+
+function jmolSetCallback(callbackName,funcName) {
+ _jmol.params[callbackName] = funcName
+}
+
+ try {
+// note this is done FIRST, so it cannot override a setting done by the developer
+ if (top.location.search.indexOf("PARAMS=")>=0) {
+ var pars = unescape(top.location.search.split("PARAMS=")[1].split("&")[0]).split(";");
+ for (var i = 0; i < pars.length; i++) {
+ var p = pars[i].split(":");
+ jmolSetParameter(p[0],p[1]);
+ }
+ }
+ } catch(e) {
+ // can't access top.location
+ }
+
+function jmolSetSyncId(n) {
+ return _jmol.params["syncId"] = n
+}
+
+function jmolGetSyncId() {
+ return _jmol.params["syncId"]
+}
+
+function jmolSetLogLevel(n) {
+ _jmol.params.logLevel = ''+n;
+}
+
+ /* AngelH, mar2007:
+ By (re)setting these variables in the webpage before calling jmolApplet(),
+ a custom message can be provided (e.g. localized for user's language) when no Java is installed.
+ */
+if (noJavaMsg==undefined) var noJavaMsg =
+ "You do not have Java applets enabled in your web browser, or your browser is blocking this applet.<br />\n" +
+ "Check the warning message from your browser and/or enable Java applets in<br />\n" +
+ "your web browser preferences, or install the Java Runtime Environment from <a href='http://www.java.com'>www.java.com</a><br />";
+if (noJavaMsg2==undefined) var noJavaMsg2 =
+ "You do not have the<br />\n" +
+ "Java Runtime Environment<br />\n" +
+ "installed for applet support.<br />\n" +
+ "Visit <a href='http://www.java.com'>www.java.com</a>";
+function _jmolApplet(size, inlineModel, script, nameSuffix) {
+ /* AngelH, mar2007
+ Fixed percent / pixel business, to avoid browser errors:
+ put "px" where needed, avoid where not.
+
+ Bob Hanson, 1/2010
+ Fixed inline escape changing returns to |
+ */
+ with (_jmol) {
+ nameSuffix == undefined && (nameSuffix = appletCount);
+ appletSuffixes.push(nameSuffix);
+ ++appletCount;
+ script || (script = "select *");
+ var sz = _jmolGetAppletSize(size);
+ var widthAndHeight = " width='" + sz[0] + "' height='" + sz[1] + "' ";
+ var tHeader, tFooter;
+ codebase || jmolInitialize(".");
+ if (useIEObject || useHtml4Object) {
+ params.archive = archivePath;
+ params.mayscript = 'true';
+ params.codebase = codebase;
+ params.code = 'JmolApplet';
+ tHeader =
+ "<object name='jmolApplet" + nameSuffix +
+ "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
+ widthAndHeight + "\n";
+ tFooter = "</object>";
+ }
+ if (java_arguments)
+ params.java_arguments = java_arguments;
+ if (useIEObject) { // use MSFT IE6 object tag with .cab file reference
+ tHeader += " classid='" + windowsClassId + "'\n" +
+ (windowsCabUrl ? " codebase='" + windowsCabUrl + "'\n" : "") + ">\n";
+ } else if (useHtml4Object) { // use HTML4 object tag
+ tHeader += " type='application/x-java-applet'\n>\n";
+ /* " classid='java:JmolApplet'\n" + AH removed this
+ Chromium Issue 62076: Java Applets using an <object> with a classid paramater don't load.
+ http://code.google.com/p/chromium/issues/detail?id=62076
+ They say this is the correct behavior according to the spec, and there's no indication at this point
+ that WebKit will be changing the handling, so eventually Safari will acquire this behavior too.
+ Removing the classid parameter seems to be well tolerated by all browsers (even IE!).
+ */
+ } else { // use applet tag
+ tHeader =
+ "<applet name='jmolApplet" + nameSuffix +
+ "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
+ widthAndHeight + "\n" +
+ " code='JmolApplet'" +
+ " archive='" + archivePath + "' codebase='" + codebase + "'\n" +
+ " mayscript='true'>\n";
+ tFooter = "</applet>";
+ }
+ var visitJava;
+ if (useIEObject || useHtml4Object) {
+ var szX = "width:" + sz[0]
+ if ( szX.indexOf("%")==-1 ) szX+="px"
+ var szY = "height:" + sz[1]
+ if ( szY.indexOf("%")==-1 ) szY+="px"
+ visitJava =
+ "<p style='background-color:yellow; color:black; " +
+ szX + ";" + szY + ";" +
+ // why doesn't this vertical-align work?
+ "text-align:center;vertical-align:middle;'>\n" +
+ noJavaMsg +
+ "</p>";
+ } else {
+ visitJava =
+ "<table bgcolor='yellow'><tr>" +
+ "<td align='center' valign='middle' " + widthAndHeight + "><font color='black'>\n" +
+ noJavaMsg2 +
+ "</font></td></tr></table>";
+ }
+ params.loadInline = (inlineModel ? inlineModel : "");
+ params.script = (script ? _jmolSterilizeScript(script) : "");
+ var t = tHeader + _jmolParams() + visitJava + tFooter;
+ jmolSetTarget(nameSuffix);
+ ready["jmolApplet" + nameSuffix] = false;
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+ }
+}
+
+function _jmolParams() {
+ var t = "";
+ for (var i in _jmol.params)
+ if(_jmol.params[i]!="")
+ t+=" <param name='"+i+"' value='"+_jmol.params[i]+"' />\n";
+ return t
+}
+
+function _jmolInitCheck() {
+ if (_jmol.initChecked)
+ return;
+ _jmol.initChecked = true;
+ jmolInitialize(defaultdir, defaultjar)
+}
+
+function _jmolCheckBrowser() {
+ with (_jmol) {
+ if (browserChecked)
+ return;
+ browserChecked = true;
+
+ if (isFullyCompliant)
+ return true;
+
+ if (checkBrowserAction == "redirect")
+ location.href = checkBrowserUrlOrMessage;
+ else if (checkBrowserAction == "popup")
+ _jmolPopup(checkBrowserUrlOrMessage);
+ else {
+ var msg = checkBrowserUrlOrMessage;
+ if (msg == null)
+ msg = "Your web browser is not fully compatible with Jmol\n\n" +
+ "browser: " + browser +
+ " version: " + browserVersion +
+ " os: " + os +
+ " isBrowserCompliant: " + isBrowserCompliant +
+ " isJavaCompliant: " + isJavaCompliant +
+ "\n\n" + ua;
+ alert(msg);
+ }
+ }
+ return false;
+}
+
+function jmolSetXHTML(id) {
+ _jmol.isXHTML = true
+ _jmol.XhtmlElement = null
+ _jmol.XhtmlAppendChild = false
+ if (id){
+ _jmol.XhtmlElement = document.getElementById(id)
+ _jmol.XhtmlAppendChild = true
+ }
+}
+
+function _jmolDocumentWrite(text) {
+ if (_jmol.currentDocument) {
+ if (_jmol.isXHTML && !_jmol.XhtmlElement) {
+ var s = document.getElementsByTagName("script")
+ _jmol.XhtmlElement = s.item(s.length - 1)
+ _jmol.XhtmlAppendChild = false
+ }
+ if (_jmol.XhtmlElement) {
+ _jmolDomDocumentWrite(text)
+ } else {
+ _jmol.currentDocument.write(text);
+ }
+ }
+ return text;
+}
+
+function _jmolDomDocumentWrite(data) {
+ var pt = 0
+ var Ptr = []
+ Ptr[0] = 0
+ while (Ptr[0] < data.length) {
+ var child = _jmolGetDomElement(data, Ptr)
+ if (!child)break
+ if (_jmol.XhtmlAppendChild)
+ _jmol.XhtmlElement.appendChild(child)
+ else
+ _jmol.XhtmlElement.parentNode.insertBefore(child, _jmol.XhtmlElement);
+ }
+}
+function _jmolGetDomElement(data, Ptr, closetag, lvel) {
+ var e = document.createElement("span")
+ e.innerHTML = data
+ Ptr[0] = data.length
+ return e
+
+//unnecessary?
+
+ closetag || (closetag = "")
+ lvel || (lvel = 0)
+ var pt0 = Ptr[0]
+ var pt = pt0
+ while (pt < data.length && data.charAt(pt) != "<") pt++
+ if (pt != pt0) {
+ var text = data.substring(pt0, pt)
+ Ptr[0] = pt
+ return document.createTextNode(text)
+ }
+ pt0 = ++pt
+ var ch
+ while (pt < data.length && "\n\r\t >".indexOf(ch = data.charAt(pt)) < 0) pt++
+ var tagname = data.substring(pt0, pt)
+ var e = (tagname == closetag || tagname == "/" ? ""
+ : document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', tagname)
+ : document.createElement(tagname));
+ if (ch == ">") {
+ Ptr[0] = ++pt
+ return e
+ }
+ while (pt < data.length && (ch = data.charAt(pt)) != ">") {
+ while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++
+ pt0 = pt
+ while (pt < data.length && "\n\r\t =/>".indexOf(ch = data.charAt(pt)) < 0) pt++
+ var attrname = data.substring(pt0, pt).toLowerCase()
+ if (attrname && ch != "=")
+ e.setAttribute(attrname, "true")
+ while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++
+ if (ch == "/") {
+ Ptr[0] = pt + 2
+ return e
+ } else if (ch == "=") {
+ var quote = data.charAt(++pt)
+ pt0 = ++pt
+ while (pt < data.length && (ch = data.charAt(pt)) != quote) pt++
+ var attrvalue = data.substring(pt0, pt)
+ e.setAttribute(attrname, attrvalue)
+ pt++
+ }
+ }
+ Ptr[0] = ++pt
+ while (Ptr[0] < data.length) {
+ var child = _jmolGetDomElement(data, Ptr, "/" + tagname, lvel+1)
+ if (!child)break
+ e.appendChild(child)
+ }
+ return e
+}
+
+function _jmolPopup(url) {
+ var popup = window.open(url, "JmolPopup",
+ "left=150,top=150,height=400,width=600," +
+ "directories=yes,location=yes,menubar=yes," +
+ "toolbar=yes," +
+ "resizable=yes,scrollbars=yes,status=yes");
+ if (popup.focus)
+ poup.focus();
+}
+
+function _jmolReadyCallback(name) {
+ if (_jmol.debugAlert)
+ alert(name + " is ready");
+ _jmol.ready["" + name] = true;
+}
+
+function _jmolSterilizeScript(script) {
+ script = script.replace(/'/g, "'");
+ if (_jmol.debugAlert)
+ alert("script:\n" + script);
+ return script;
+}
+
+function _jmolSterilizeInline(model) {
+ model = model.replace(/\r|\n|\r\n/g, (model.indexOf("|") >= 0 ? "\\/n" : "|")).replace(/'/g, "'");
+ if (_jmol.debugAlert)
+ alert("inline model:\n" + model);
+ return model;
+}
+
+function _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {
+ ++_jmol.radioCount;
+ groupName != undefined && groupName != null || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
+ if (!script)
+ return "";
+ labelHtml != undefined && labelHtml != null || (labelHtml = script.substring(0, 32));
+ separatorHtml || (separatorHtml = "")
+ var scriptIndex = _jmolAddScript(script);
+ var eospan = "</span>"
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='"
+ + groupName + "' id='"+id+"' type='radio' onclick='_jmolClick(this," +
+ scriptIndex + _jmol.targetText + ");return true;' onmouseover='_jmolMouseOver(" +
+ scriptIndex + ");return true;' onmouseout='_jmolMouseOut()' " +
+ (isChecked ? "checked='true' " : "") + _jmol.radioCssText + " />"
+ if (labelHtml.toLowerCase().indexOf("<td>")>=0) {
+ t += eospan
+ eospan = "";
+ }
+ t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan + separatorHtml;
+
+ return t;
+}
+
+function _jmolFindApplet(target) {
+ // first look for the target in the current window
+ var applet = _jmolFindAppletInWindow(_jmol.appletWindow != null ? _jmol.appletWindow : window, target);
+ // THEN look for the target in child frames
+ if (applet == undefined)
+ applet = _jmolSearchFrames(window, target);
+ // FINALLY look for the target in sibling frames
+ if (applet == undefined)
+ applet = _jmolSearchFrames(top, target); // look starting in top frame
+ return applet;
+}
+
+function _jmolGetApplet(targetSuffix){
+ var target = "jmolApplet" + (targetSuffix ? targetSuffix : "0");
+ var applet = _jmolFindApplet(target);
+ if (applet) return applet
+ _jmol.alerted || alert("could not find applet " + target);
+ _jmol.alerted = true;
+ return null
+}
+
+function _jmolSearchFrames(win, target) {
+ var applet;
+ var frames = win.frames;
+ if (frames && frames.length) { // look in all the frames below this window
+ try{
+ for (var i = 0; i < frames.length; ++i) {
+ applet = _jmolSearchFrames(frames[i], target);
+ if (applet)
+ return applet;
+ }
+ }catch(e) {
+ if (_jmol.debugAlert)
+ alert("Jmol.js _jmolSearchFrames cannot access " + win.name + ".frame[" + i + "] consider using jmolSetAppletWindow()")
+ }
+ }
+ return applet = _jmolFindAppletInWindow(win, target)
+}
+
+function _jmolFindAppletInWindow(win, target) {
+ var doc = win.document;
+ if (doc.getElementById(target))
+ return doc.getElementById(target);
+ else if (doc.applets)
+ return doc.applets[target];
+ else
+ return doc[target];
+}
+
+function _jmolAddScript(script) {
+ if (!script)
+ return 0;
+ var index = _jmol.scripts.length;
+ _jmol.scripts[index] = script;
+ return index;
+}
+
+function _jmolClick(elementClicked, scriptIndex, targetSuffix) {
+ _jmol.element = elementClicked;
+ _jmolScriptExecute(elementClicked, _jmol.scripts[scriptIndex], targetSuffix);
+}
+
+function _jmolMenuSelected(menuObject, targetSuffix) {
+ var scriptIndex = menuObject.value;
+ if (scriptIndex != undefined) {
+ _jmolScriptExecute(menuObject, _jmol.scripts[scriptIndex], targetSuffix);
+ return;
+ }
+ var len = menuObject.length;
+ if (typeof len == "number") {
+ for (var i = 0; i < len; ++i) {
+ if (menuObject[i].selected) {
+ _jmolClick(menuObject[i], menuObject[i].value, targetSuffix);
+ return;
+ }
+ }
+ }
+ alert("?Que? menu selected bug #8734");
+}
+
+
+_jmol.checkboxMasters = {};
+_jmol.checkboxItems = {};
+
+function jmolSetCheckboxGroup(chkMaster,chkBox) {
+ var id = chkMaster;
+ if(typeof(id)=="number")id = "jmolCheckbox" + id;
+ chkMaster = document.getElementById(id);
+ if (!chkMaster)alert("jmolSetCheckboxGroup: master checkbox not found: " + id);
+ var m = _jmol.checkboxMasters[id] = {};
+ m.chkMaster = chkMaster;
+ m.chkGroup = {};
+ for (var i = 1; i < arguments.length; i++){
+ var id = arguments[i];
+ if(typeof(id)=="number")id = "jmolCheckbox" + id;
+ checkboxItem = document.getElementById(id);
+ if (!checkboxItem)alert("jmolSetCheckboxGroup: group checkbox not found: " + id);
+ m.chkGroup[id] = checkboxItem;
+ _jmol.checkboxItems[id] = m;
+ }
+}
+
+function _jmolNotifyMaster(m){
+ //called when a group item is checked
+ var allOn = true;
+ var allOff = true;
+ for (var chkBox in m.chkGroup){
+ if(m.chkGroup[chkBox].checked)
+ allOff = false;
+ else
+ allOn = false;
+ }
+ if (allOn)m.chkMaster.checked = true;
+ if (allOff)m.chkMaster.checked = false;
+ if ((allOn || allOff) && _jmol.checkboxItems[m.chkMaster.id])
+ _jmolNotifyMaster(_jmol.checkboxItems[m.chkMaster.id])
+}
+
+function _jmolNotifyGroup(m, isOn){
+ //called when a master item is checked
+ for (var chkBox in m.chkGroup){
+ var item = m.chkGroup[chkBox]
+ item.checked = isOn;
+ if (_jmol.checkboxMasters[item.id])
+ _jmolNotifyGroup(_jmol.checkboxMasters[item.id], isOn)
+ }
+}
+
+function _jmolCbClick(ckbox, whenChecked, whenUnchecked, targetSuffix) {
+ _jmol.control = ckbox
+ _jmolClick(ckbox, ckbox.checked ? whenChecked : whenUnchecked, targetSuffix);
+ if(_jmol.checkboxMasters[ckbox.id])
+ _jmolNotifyGroup(_jmol.checkboxMasters[ckbox.id], ckbox.checked)
+ if(_jmol.checkboxItems[ckbox.id])
+ _jmolNotifyMaster(_jmol.checkboxItems[ckbox.id])
+}
+
+function _jmolCbOver(ckbox, whenChecked, whenUnchecked) {
+ window.status = _jmol.scripts[ckbox.checked ? whenUnchecked : whenChecked];
+}
+
+function _jmolMouseOver(scriptIndex) {
+ window.status = _jmol.scripts[scriptIndex];
+}
+
+function _jmolMouseOut() {
+ window.status = " ";
+ return true;
+}
+
+function _jmolSetCodebase(codebase) {
+ _jmol.codebase = codebase ? codebase : ".";
+ if (_jmol.debugAlert)
+ alert("jmolCodebase=" + _jmol.codebase);
+}
+
+function _jmolOnloadResetForms() {
+ // must be evaluated ONLY once
+ _jmol.previousOnloadHandler = window.onload;
+ window.onload =
+ function() {
+ with (_jmol) {
+ if (buttonCount+checkboxCount+menuCount+radioCount+radioGroupCount > 0) {
+ var forms = document.forms;
+ for (var i = forms.length; --i >= 0; )
+ forms[i].reset();
+ }
+ if (previousOnloadHandler)
+ previousOnloadHandler();
+ }
+ }
+}
+
+////////////////////////////////////
+/////extensions for getProperty/////
+////////////////////////////////////
+
+
+function _jmolEvalJSON(s,key){
+ s=s+""
+ if(!s)return []
+ if(s.charAt(0)!="{"){
+ if(s.indexOf(" | ")>=0)s=s.replace(/\ \|\ /g, "\n")
+ return s
+ }
+ var A = eval("("+s+")")
+ if(!A)return
+ if(key && A[key])A=A[key]
+ return A
+}
+
+function _jmolEnumerateObject(A,key){
+ var sout=""
+ if(typeof(A) == "string" && A!="null"){
+ sout+="\n"+key+"=\""+A+"\""
+ }else if(!isNaN(A)||A==null){
+ sout+="\n"+key+"="+(A+""==""?"null":A)
+ }else if(A.length){
+ sout+=key+"=[]"
+ for(var i=0;i<A.length;i++){
+ sout+="\n"
+ if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){
+ sout+=_jmolEnumerateObject(A[i],key+"["+i+"]")
+ }else{
+ sout+=key+"["+i+"]="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])
+ }
+ }
+ }else{
+ if(key != ""){
+ sout+=key+"={}"
+ key+="."
+ }
+
+ for(var i in A){
+ sout+="\n"
+ if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){
+ sout+=_jmolEnumerateObject(A[i],key+i)
+ }else{
+ sout+=key+i+"="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])
+ }
+ }
+ }
+ return sout
+}
+
+
+function _jmolSortKey0(a,b){
+ return (a[0]<b[0]?1:a[0]>b[0]?-1:0)
+}
+
+function _jmolSortMessages(A){
+ if(!A || typeof(A)!="object")return []
+ var B = []
+ for(var i=A.length-1;i>=0;i--)for(var j=0;j<A[i].length;j++)B[B.length]=A[i][j]
+ if(B.length == 0) return
+ B=B.sort(_jmolSortKey0)
+ return B
+}
+
+/////////additional extensions //////////
+
+
+function _jmolDomScriptLoad(URL){
+ //open(URL) //to debug
+ _jmol.servercall=URL
+ var node = document.getElementById("_jmolScriptNode")
+ if (node && _jmol.browser!="msie"){
+ document.getElementsByTagName("HEAD")[0].removeChild(node)
+ node=null
+ }
+ if (node) {
+ node.setAttribute("src",URL)
+ } else {
+ node=document.createElement("script")
+ node.setAttribute("id","_jmolScriptNode")
+ node.setAttribute("type","text/javascript")
+ node.setAttribute("src",URL)
+ document.getElementsByTagName("HEAD")[0].appendChild(node)
+ }
+}
+
+
+function _jmolExtractPostData(url){
+ S=url.split("&POST:")
+ var s=""
+ for(var i=1;i<S.length;i++){
+ KV=S[i].split("=")
+ s+="&POSTKEY"+i+"="+KV[0]
+ s+="&POSTVALUE"+i+"="+KV[1]
+ }
+ return "&url="+escape(S[0])+s
+}
+
+function _jmolLoadModel(targetSuffix,remoteURL,array,isError,errorMessage){
+ //called by server, but in client
+ //overload this function to customize return
+ _jmol.remoteURL=remoteURL
+ isError && alert(errorMessage)
+ jmolLoadInlineScript(array.join("\n"),_jmol.optionalscript,targetSuffix)
+}
+
+//////////user property/status functions/////////
+
+function jmolGetStatus(strStatus,targetSuffix){
+ return _jmolSortMessages(jmolGetPropertyAsArray("jmolStatus",strStatus,targetSuffix))
+}
+
+function jmolGetPropertyAsArray(sKey,sValue,targetSuffix) {
+ return _jmolEvalJSON(jmolGetPropertyAsJSON(sKey,sValue,targetSuffix),sKey)
+}
+
+function jmolGetPropertyAsString(sKey,sValue,targetSuffix) {
+ var applet = _jmolGetApplet(targetSuffix);
+ sValue == undefined && (sValue="");
+ return (applet ? applet.getPropertyAsString(sKey,sValue) + "" : "")
+}
+
+function jmolGetPropertyAsJSON(sKey,sValue,targetSuffix) {
+ sValue == undefined && (sValue = "")
+ var applet = _jmolGetApplet(targetSuffix);
+ try {
+ return (applet ? applet.getPropertyAsJSON(sKey,sValue) + "" : "")
+ } catch(e) {
+ return ""
+ }
+}
+
+function jmolGetPropertyAsJavaObject(sKey,sValue,targetSuffix) {
+ sValue == undefined && (sValue = "")
+ var applet = _jmolGetApplet(targetSuffix);
+ return (applet ? applet.getProperty(sKey,sValue) : null)
+}
+
+
+function jmolDecodeJSON(s) {
+ return _jmolEnumerateObject(_jmolEvalJSON(s),"")
+}
+
+
+///////// synchronous scripting ////////
+
+function jmolScriptWait(script, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+ var s = ""
+ for(var i=Ret.length;--i>=0;)
+ for(var j=0;j< Ret[i].length;j++)
+ s+=Ret[i][j]+"\n"
+ return s
+}
+
+function jmolScriptWaitOutput(script, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ var ret = ""
+ try{
+ if (script) {
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) ret += applet.scriptWaitOutput(script);
+ }
+ }catch(e){
+ }
+ return ret;
+}
+
+function jmolEvaluate(molecularMath, targetSuffix) {
+
+ //carries out molecular math on a model
+
+ targetSuffix == undefined && (targetSuffix="0")
+ var result = "" + jmolGetPropertyAsJavaObject("evaluate", molecularMath, targetSuffix);
+ var s = result.replace(/\-*\d+/,"")
+ if (s == "" && !isNaN(parseInt(result)))return parseInt(result);
+ var s = result.replace(/\-*\d*\.\d*/,"")
+ if (s == "" && !isNaN(parseFloat(result)))return parseFloat(result);
+ return result;
+}
+
+function jmolScriptEcho(script, targetSuffix) {
+ // returns a newline-separated list of all echos from a script
+ targetSuffix == undefined && (targetSuffix="0")
+ var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+ var s = ""
+ for(var i=Ret.length;--i>=0;)
+ for(var j=Ret[i].length;--j>=0;)
+ if (Ret[i][j][1] == "scriptEcho")s+=Ret[i][j][3]+"\n"
+ return s.replace(/ \| /g, "\n")
+}
+
+
+function jmolScriptMessage(script, targetSuffix) {
+ // returns a newline-separated list of all messages from a script, ending with "script completed\n"
+ targetSuffix == undefined && (targetSuffix="0")
+ var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+ var s = ""
+ for(var i=Ret.length;--i>=0;)
+ for(var j=Ret[i].length;--j>=0;)
+ if (Ret[i][j][1] == "scriptStatus")s+=Ret[i][j][3]+"\n"
+ return s.replace(/ \| /g, "\n")
+}
+
+
+function jmolScriptWaitAsArray(script, targetSuffix) {
+ var ret = ""
+ try{
+ jmolGetStatus("scriptEcho,scriptMessage,scriptStatus,scriptError",targetSuffix)
+ if (script) {
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) ret += applet.scriptWait(script);
+ ret = _jmolEvalJSON(ret,"jmolStatus")
+ if(typeof ret == "object")
+ return ret
+ }
+ }catch(e){
+ }
+ return [[ret]]
+}
+
+
+
+//////////// save/restore orientation /////////////
+
+function jmolSaveOrientation(id, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ return _jmol["savedOrientation"+id] = jmolGetPropertyAsArray("orientationInfo","info",targetSuffix).moveTo
+}
+
+function jmolRestoreOrientation(id, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ var s=_jmol["savedOrientation"+id]
+ if (!s || s == "")return
+ s=s.replace(/1\.0/,"0")
+ return jmolScriptWait(s,targetSuffix)
+}
+
+function jmolRestoreOrientationDelayed(id, delay, targetSuffix) {
+ arguments.length < 2 && (delay=1)
+ targetSuffix == undefined && (targetSuffix="0")
+ var s=_jmol["savedOrientation"+id]
+ if (!s || s == "")return
+ s=s.replace(/1\.0/,delay)
+ return jmolScriptWait(s,targetSuffix)
+}
+
+//////////// add parameter /////////////
+/*
+ * for adding callbacks or other parameters. Use:
+
+ jmolSetDocument(0)
+ var s= jmolApplet(....)
+ s = jmolAppletAddParam(s,"messageCallback", "myFunctionName")
+ document.write(s)
+ jmolSetDocument(document) // if you want to then write buttons and such normally
+
+ */
+
+function jmolAppletAddParam(appletCode,name,value){
+ return (value == "" ? appletCode : appletCode.replace(/\<param/,"\n<param name='"+name+"' value='"+value+"' />\n<param"))
+}
+
+///////////////auto load Research Consortium for Structural Biology (RCSB) data ///////////
+
+function jmolLoadAjax_STOLAF_RCSB(fileformat,pdbid,optionalscript,targetSuffix){
+
+ _jmol.thismodel || (_jmol.thismodel = "1crn")
+ _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")
+ _jmol.RCSBserver || (_jmol.RCSBserver="http://www.rcsb.org")
+ _jmol.defaultURL_RCSB || (_jmol.defaultURL_RCSB=_jmol.RCSBserver+"/pdb/files/1CRN.CIF")
+ fileformat || (fileformat="PDB")
+ pdbid || (pdbid=prompt("Enter a 4-digit PDB ID:",_jmol.thismodel))
+ if(!pdbid || pdbid.length != 4)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ var url=_jmol.defaultURL_RCSB.replace(/1CRN/g,pdbid.toUpperCase())
+ fileformat=="CIF" || (url=url.replace(/CIF/,fileformat))
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=pdbid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+///////////////auto load NIH CACTVS data -- compound name or SMILES ///////////
+
+function jmolLoadAjax_STOLAF_NIH(compoundid,optionalscript,targetSuffix){
+ _jmol.thismodel || (_jmol.thismodel = "aspirin")
+ _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")
+ _jmol.defaultURL_NIH || (_jmol.defaultURL_NIH="http://cactus.nci.nih.gov/chemical/structure/FILE/file?format=sdf&get3d=True")
+ compoundid || (compoundid=prompt("Enter a compound name or a SMILES string:",_jmol.thismodel))
+ if(!compoundid)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ var url=_jmol.defaultURL_NIH.replace(/FILE/g,compoundid)
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=compoundid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+/////////////// St. Olaf College AJAX server -- ANY URL ///////////
+
+function jmolLoadAjax_STOLAF_ANY(url, userid, optionalscript,targetSuffix){
+ _jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm"
+ _jmol.thisurlANY || (_jmol.thisurlANY = "http://www.stolaf.edu/depts/chemistry/mo/struc/data/ycp3-1.mol")
+ url || (url=prompt("Enter any (uncompressed file) URL:", _jmol.thisurlANY))
+ userid || (userid="0")
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ _jmol.optionalscript=optionalscript
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.modelArray = []
+ _jmol.thisurl = url
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+}
+
+
+/////////////// Mineralogical Society of America (MSA) data /////////
+
+function jmolLoadAjax_MSA(key,value,optionalscript,targetSuffix){
+
+ _jmol.thiskeyMSA || (_jmol.thiskeyMSA = "mineral")
+ _jmol.thismodelMSA || (_jmol.thismodelMSA = "quartz")
+ _jmol.ajaxURL_MSA || (_jmol.ajaxURL_MSA="http://rruff.geo.arizona.edu/AMS/result.php?mineral=quartz&viewing=ajaxjs")
+ key || (key=prompt("Enter a field:", _jmol.thiskeyMSA))
+ if(!key)return ""
+ value || (value=prompt("Enter a "+key+":", _jmol.thismodelMSA))
+ if(!value)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ optionalscript == 1 && (optionalscript='load "" {1 1 1}')
+ var url=_jmol.ajaxURL_MSA.replace(/mineral/g,key).replace(/quartz/g,value)
+ _jmol.optionalscript=optionalscript
+ _jmol.thiskeyMSA=key
+ _jmol.thismodelMSA=value
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ loadModel=_jmolLoadModel
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+
+function jmolLoadAjaxJS(url, userid, optionalscript,targetSuffix){
+ userid || (userid="0")
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=userid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.modelArray = []
+ _jmol.thisurl = url
+ url+="&returnFunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix
+ _jmolDomScriptLoad(url)
+}
+
+
+//// in case Jmol library has already been loaded:
+
+}catch(e){}
+
+///////////////moving atoms //////////////
+
+// HIGHLY experimental!!
+
+function jmolSetAtomCoord(i,x,y,z,targetSuffix){
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) applet.getProperty('jmolViewer').setAtomCoord(i,x,y,z)
+}
+
+function jmolSetAtomCoordRelative(i,x,y,z,targetSuffix){
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) applet.getProperty('jmolViewer').setAtomCoordRelative(i,x,y,z)
+}
+
+
+///////////////applet fake for testing buttons/////////////
+
+
+if(_jmol.useNoApplet){
+ jmolApplet = function(w){
+ var s="<table style='background-color:black' width="+w+"><tr height="+w+">"
+ +"<td align=center valign=center style='background-color:white'>"
+ +"Applet would be here"
+ +"<p><textarea id=fakeApplet rows=5 cols=50></textarea>"
+ +"</td></tr></table>"
+ return _jmolDocumentWrite(s)
+ }
+
+ _jmolFindApplet = function(){return jmolApplet0}
+
+ jmolApplet0 = {
+ script: function(script){document.getElementById("fakeApplet").value="\njmolScript:\n"+script}
+ ,scriptWait: function(script){document.getElementById("fakeApplet").value="\njmolScriptWait:\n"+script}
+ ,loadInline: function(data,script){document.getElementById("fakeApplet").value="\njmolLoadInline data:\n"+data+"\n\nscript:\n"+script}
+ }
+}
+
+
+///////////////////////////////////////////
+
+ // This should no longer be needed, jmolResizeApplet() is better; kept for backwards compatibility
+ /*
+ Resizes absolutely (pixels) or by percent of window (w or h 0.5 means 50%).
+ targetSuffix is optional and defaults to zero (first applet in page).
+ Both w and h are optional, but needed if you want to use targetSuffix.
+ h defaults to w
+ w defaults to 100% of window
+ If either w or h is between 0 and 1, then it is taken as percent/100.
+ If either w or h is greater than 1, then it is taken as a size (pixels).
+ */
+function jmolResize(w,h,targetSuffix) {
+ _jmol.alerted = true;
+ var percentW = (!w ? 100 : w <= 1 && w > 0 ? w * 100 : 0);
+ var percentH = (!h ? percentW : h <= 1 && h > 0 ? h * 100 : 0);
+ if (_jmol.browser=="msie") {
+ var width=document.body.clientWidth;
+ var height=document.body.clientHeight;
+ } else {
+ var netscapeScrollWidth=15;
+ var width=window.innerWidth - netscapeScrollWidth;
+ var height=window.innerHeight-netscapeScrollWidth;
+ }
+ var applet = _jmolGetApplet(targetSuffix);
+ if(!applet)return;
+ applet.style.width = (percentW ? width * percentW/100 : w)+"px";
+ applet.style.height = (percentH ? height * percentH/100 : (h ? h : w))+"px";
+ //title=width + " " + height + " " + (new Date());
+}
+
+// 13 Jun 09 -- makes jmolResize() obsolete (kept for backwards compatibility)
+function jmolResizeApplet(size,targetSuffix) {
+ // See _jmolGetAppletSize() for the formats accepted as size [same used by jmolApplet()]
+ // Special case: an empty value for width or height is accepted, meaning no change in that dimension.
+ _jmol.alerted = true;
+ var applet = _jmolGetApplet(targetSuffix);
+ if(!applet)return;
+ var sz = _jmolGetAppletSize(size, "px");
+ sz[0] && (applet.style.width = sz[0]);
+ sz[1] && (applet.style.height = sz[1]);
+}
+
+function _jmolGetAppletSize(size, units) {
+ /* Accepts single number or 2-value array, each one can be one of:
+ percent (text string ending %), decimal 0 to 1 (percent/100), number, or text string (interpreted as nr.)
+ [width, height] array of strings is returned, with units added if specified.
+ Percent is relative to container div or element (which should have explicitly set size).
+ */
+ var width, height;
+ if ( (typeof size) == "object" && size != null ) {
+ width = size[0]; height = size[1];
+ } else {
+ width = height = size;
+ }
+ return [_jmolFixDim(width, units), _jmolFixDim(height, units)];
+}
+
+function _jmolFixDim(x, units) {
+ var sx = "" + x;
+ return (sx.length == 0 ? (units ? "" : _jmol.allowedJmolSize[2])
+ : sx.indexOf("%") == sx.length-1 ? sx
+ : (x = parseFloat(x)) <= 1 && x > 0 ? x * 100 + "%"
+ : (isNaN(x = Math.floor(x)) ? _jmol.allowedJmolSize[2]
+ : x < _jmol.allowedJmolSize[0] ? _jmol.allowedJmolSize[0]
+ : x > _jmol.allowedJmolSize[1] ? _jmol.allowedJmolSize[1]
+ : x) + (units ? units : ""));
+}
+
+
+
+
->FER_CAPAA Ferredoxin\r
------------------------------------------------------------ASYKVKLITPDGP\r
-IEFDCPDDVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV\r
-TIETHKEAELVG-\r
->FER_CAPAN Ferredoxin, chloroplast precursor\r
-MA------SVSATMISTSFMPRKPAVTSL-KPIPNVGE--ALFGLKS-A--NGGKVTCMASYKVKLITPDGP\r
-IEFDCPDNVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV\r
-TIETHKEAELVG-\r
->FER1_SOLLC Ferredoxin-1, chloroplast precursor\r
-MA------SISGTMISTSFLPRKPAVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPEGP\r
-IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGSVDQSDGNFLDEDQEAAGFVLTCVAYPKGDV\r
-TIETHKEEELTA-\r
->Q93XJ9_SOLTU Ferredoxin I precursor\r
-MA------SISGTMISTSFLPRKPVVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPDGP\r
-IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGTVDQSDGKFLDDDQEAAGFVLTCVAYPKCDV\r
-TIETHKEEELTA-\r
->FER1_PEA Ferredoxin-1, chloroplast precursor\r
-MATT---PALYGTAVSTSFLRTQPMPMSV-TTTKAFSN--GFLGLKT-SLKRGDLAVAMASYKVKLVTPDGT\r
-QEFECPSDVYILDHAEEVGIDLPYSCRAGSCSSCAGKVVGGEVDQSDGSFLDDEQIEAGFVLTCVAYPTSDV\r
-VIETHKEEDLTA-\r
->Q7XA98_TRIPR Ferredoxin I\r
-MATT---PALYGTAVSTSFMRRQPVPMSV-ATTTTTKAFPSGFGLKSVSTKRGDLAVAMATYKVKLITPEGP\r
-QEFDCPDDVYILDHAEEVGIELPYSCRAGSCSSCAGKVVNGNVNQEDGSFLDDEQIEGGWVLTCVAFPTSDV\r
-TIETHKEEELTA-\r
->FER1_MESCR Ferredoxin-1, chloroplast precursor\r
-MAAT--TAALSGATMSTAFAPK--TPPMTAALPTNVGR--ALFGLKS-SASR-GRVTAMAAYKVTLVTPEGK\r
-QELECPDDVYILDAAEEAGIDLPYSCRAGSCSSCAGKVTSGSVNQDDGSFLDDDQIKEGWVLTCVAYPTGDV\r
-TIETHKEEELTA-\r
->FER1_SPIOL Ferredoxin-1, chloroplast precursor\r
-MAAT--TTTMMG--MATTFVPKPQAPPMMAALPSNTGR--SLFGLKT-GSR--GGRMTMAAYKVTLVTPTGN\r
-VEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLDDDQIDEGWVLTCAAYPVSDV\r
-TIETHKEEELTA-\r
->FER3_RAPSA Ferredoxin, leaf L-A\r
------------------------------------------------------------ATYKVKFITPEGE\r
-QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDDQIAEGFVLTCAAYPTSDV\r
-TIETHREEDMV--\r
->FER1_ARATH Ferredoxin-1, chloroplast precursor\r
-MAST----ALSSAIVGTSFIRRSPAPISLRSLPSANTQ--SLFGLKS-GTARGGRVTAMATYKVKFITPEGE\r
-LEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDEQIGEGFVLTCAAYPTSDV\r
-TIETHKEEDIV--\r
->FER_BRANA Ferredoxin\r
------------------------------------------------------------ATYKVKFITPEGE\r
-QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGFVDQSDESFLDDDQIAEGFVLTCAAYPTSDV\r
-TIETHKEEELV--\r
->FER2_ARATH Ferredoxin-2, chloroplast precursor\r
-MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE\r
-QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDDEQMSEGYVLTCVAYPTSDV\r
-VIETHKEEAIM--\r
->Q93Z60_ARATH At1g10960/T19D16_12\r
-MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE\r
-QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDD-------------------\r
--------------\r
->FER1_MAIZE Ferredoxin-1, chloroplast precursor\r
-MATVLGSPRAPAFFFSSSSLRAAPAPTAV--ALPAAKV--GIMGRSA-SSRR--RLRAQATYNVKLITPEGE\r
-VELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDV\r
-VIETHKEEELTGA\r
->O80429_MAIZE Ferredoxin\r
-MAAT---------ALSMSILR---APPPCFSSPLRLRV--AVAKPLA-APMRRQLLRAQATYNVKLITPEGE\r
-VELQVPDDVYILDFAEEEGIDLPFSCRAGSCSSCAGKVVSGSVDQSDQSFLNDNQVADGWVLTCAAYPTSDV\r
-VIETHKEDDLL--\r
+>FER_CAPAA Ferredoxin
+-----------------------------------------------------------ASYKVKLITPDGP
+IEFDCPDDVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV
+TIETHKEAELVG-
+>FER_CAPAN Ferredoxin, chloroplast precursor
+MA------SVSATMISTSFMPRKPAVTSL-KPIPNVGE--ALFGLKS-A--NGGKVTCMASYKVKLITPDGP
+IEFDCPDNVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV
+TIETHKEAELVG-
+>FER1_SOLLC Ferredoxin-1, chloroplast precursor
+MA------SISGTMISTSFLPRKPAVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPEGP
+IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGSVDQSDGNFLDEDQEAAGFVLTCVAYPKGDV
+TIETHKEEELTA-
+>Q93XJ9_SOLTU Ferredoxin I precursor
+MA------SISGTMISTSFLPRKPVVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPDGP
+IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGTVDQSDGKFLDDDQEAAGFVLTCVAYPKCDV
+TIETHKEEELTA-
+>FER1_PEA Ferredoxin-1, chloroplast precursor
+MATT---PALYGTAVSTSFLRTQPMPMSV-TTTKAFSN--GFLGLKT-SLKRGDLAVAMASYKVKLVTPDGT
+QEFECPSDVYILDHAEEVGIDLPYSCRAGSCSSCAGKVVGGEVDQSDGSFLDDEQIEAGFVLTCVAYPTSDV
+VIETHKEEDLTA-
+>Q7XA98_TRIPR Ferredoxin I
+MATT---PALYGTAVSTSFMRRQPVPMSV-ATTTTTKAFPSGFGLKSVSTKRGDLAVAMATYKVKLITPEGP
+QEFDCPDDVYILDHAEEVGIELPYSCRAGSCSSCAGKVVNGNVNQEDGSFLDDEQIEGGWVLTCVAFPTSDV
+TIETHKEEELTA-
+>FER1_MESCR Ferredoxin-1, chloroplast precursor
+MAAT--TAALSGATMSTAFAPK--TPPMTAALPTNVGR--ALFGLKS-SASR-GRVTAMAAYKVTLVTPEGK
+QELECPDDVYILDAAEEAGIDLPYSCRAGSCSSCAGKVTSGSVNQDDGSFLDDDQIKEGWVLTCVAYPTGDV
+TIETHKEEELTA-
+>FER1_SPIOL Ferredoxin-1, chloroplast precursor
+MAAT--TTTMMG--MATTFVPKPQAPPMMAALPSNTGR--SLFGLKT-GSR--GGRMTMAAYKVTLVTPTGN
+VEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLDDDQIDEGWVLTCAAYPVSDV
+TIETHKEEELTA-
+>FER3_RAPSA Ferredoxin, leaf L-A
+-----------------------------------------------------------ATYKVKFITPEGE
+QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDDQIAEGFVLTCAAYPTSDV
+TIETHREEDMV--
+>FER1_ARATH Ferredoxin-1, chloroplast precursor
+MAST----ALSSAIVGTSFIRRSPAPISLRSLPSANTQ--SLFGLKS-GTARGGRVTAMATYKVKFITPEGE
+LEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDEQIGEGFVLTCAAYPTSDV
+TIETHKEEDIV--
+>FER_BRANA Ferredoxin
+-----------------------------------------------------------ATYKVKFITPEGE
+QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGFVDQSDESFLDDDQIAEGFVLTCAAYPTSDV
+TIETHKEEELV--
+>FER2_ARATH Ferredoxin-2, chloroplast precursor
+MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE
+QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDDEQMSEGYVLTCVAYPTSDV
+VIETHKEEAIM--
+>Q93Z60_ARATH At1g10960/T19D16_12
+MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE
+QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDD-------------------
+-------------
+>FER1_MAIZE Ferredoxin-1, chloroplast precursor
+MATVLGSPRAPAFFFSSSSLRAAPAPTAV--ALPAAKV--GIMGRSA-SSRR--RLRAQATYNVKLITPEGE
+VELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDV
+VIETHKEEELTGA
+>O80429_MAIZE Ferredoxin
+MAAT---------ALSMSILR---APPPCFSSPLRLRV--AVAKPLA-APMRRQLLRAQATYNVKLITPEGE
+VELQVPDDVYILDFAEEEGIDLPFSCRAGSCSSCAGKVVSGSVDQSDQSFLNDNQVADGWVLTCAAYPTSDV
+VIETHKEDDLL--
-HEADER OXIDOREDUCTASE/ELECTRON TRANSPORT 08-MAY-00 1GAQ \r
-ATOM 2 CA GLU A 19 20.491 30.713 36.290 1.00 74.29 C \r
-ATOM 11 CA SER A 20 24.056 29.774 37.264 1.00 72.09 C \r
-ATOM 17 CA LYS A 21 27.517 31.289 37.563 1.00 70.09 C \r
-ATOM 26 CA LYS A 22 28.794 27.865 36.481 1.00 68.64 C \r
-ATOM 35 CA GLN A 23 29.484 26.806 32.884 1.00 70.46 C \r
-ATOM 44 CA GLU A 24 26.420 25.175 31.360 1.00 72.08 C \r
-ATOM 53 CA GLU A 25 26.736 26.049 27.683 1.00 70.43 C \r
-ATOM 62 CA GLY A 26 28.299 22.912 26.233 1.00 63.14 C \r
-ATOM 66 CA VAL A 27 26.863 20.704 28.982 1.00 54.50 C \r
-ATOM 73 CA VAL A 28 25.030 17.390 28.655 1.00 48.32 C \r
-ATOM 80 CA THR A 29 23.728 14.677 30.991 1.00 44.86 C \r
-ATOM 87 CA ASN A 30 22.327 11.164 30.703 1.00 45.42 C \r
-ATOM 95 CA LEU A 31 23.332 10.459 27.102 1.00 45.42 C \r
-ATOM 103 CA TYR A 32 23.549 6.898 28.380 1.00 45.88 C \r
-ATOM 115 CA LYS A 33 21.656 5.321 31.262 1.00 47.27 C \r
-ATOM 124 CA PRO A 34 21.991 2.046 33.248 1.00 48.99 C \r
-ATOM 131 CA LYS A 35 19.339 0.560 30.970 1.00 52.75 C \r
-ATOM 140 CA GLU A 36 21.580 0.855 27.886 1.00 53.33 C \r
-ATOM 149 CA PRO A 37 25.154 2.015 28.678 1.00 47.54 C \r
-ATOM 156 CA TYR A 38 27.929 2.872 26.249 1.00 41.98 C \r
-ATOM 168 CA VAL A 39 30.355 -0.017 25.909 1.00 41.48 C \r
-ATOM 175 CA GLY A 40 33.823 1.485 25.966 1.00 37.59 C \r
-ATOM 179 CA ARG A 41 37.165 -0.277 26.122 1.00 39.77 C \r
-ATOM 190 CA CYS A 42 40.148 -0.029 28.442 1.00 36.51 C \r
-ATOM 196 CA LEU A 43 43.095 1.441 26.554 1.00 36.13 C \r
-ATOM 204 CA LEU A 44 45.231 2.023 29.649 1.00 33.55 C \r
-ATOM 212 CA ASN A 45 45.140 1.026 33.307 1.00 27.79 C \r
-ATOM 220 CA THR A 46 48.056 1.800 35.617 1.00 28.75 C \r
-ATOM 227 CA LYS A 47 48.542 1.776 39.388 1.00 30.31 C \r
-ATOM 236 CA ILE A 48 49.564 5.317 40.376 1.00 31.32 C \r
-ATOM 244 CA THR A 49 50.339 4.682 44.059 1.00 37.62 C \r
-ATOM 251 CA GLY A 50 53.585 3.317 45.460 1.00 44.49 C \r
-ATOM 255 CA ASP A 51 53.706 -0.448 46.087 1.00 52.89 C \r
-ATOM 263 CA ASP A 52 53.910 0.545 49.751 1.00 55.23 C \r
-ATOM 271 CA ALA A 53 50.816 2.767 50.056 1.00 53.34 C \r
-ATOM 276 CA PRO A 54 47.904 1.940 52.405 1.00 50.60 C \r
-ATOM 283 CA GLY A 55 45.420 1.579 49.561 1.00 50.35 C \r
-ATOM 287 CA GLU A 56 46.098 1.286 45.836 1.00 42.53 C \r
-ATOM 296 CA THR A 57 44.534 3.816 43.480 1.00 41.14 C \r
-ATOM 303 CA TRP A 58 44.540 3.423 39.708 1.00 35.60 C \r
-ATOM 317 CA HIS A 59 44.468 5.853 36.796 1.00 31.89 C \r
-ATOM 327 CA MET A 60 42.658 4.227 33.866 1.00 31.65 C \r
-ATOM 335 CA VAL A 61 41.716 5.345 30.350 1.00 30.43 C \r
-ATOM 342 CA PHE A 62 38.669 4.172 28.360 1.00 34.36 C \r
-ATOM 353 CA SER A 63 37.657 4.908 24.772 1.00 34.69 C \r
-ATOM 359 CA THR A 64 34.448 6.828 23.951 1.00 36.96 C \r
-ATOM 366 CA GLU A 65 34.691 7.644 20.254 1.00 40.08 C \r
-ATOM 375 CA GLY A 66 33.742 11.183 21.285 1.00 40.22 C \r
-ATOM 379 CA LYS A 67 30.272 9.763 22.003 1.00 41.93 C \r
-ATOM 388 CA ILE A 68 30.279 11.116 25.577 1.00 41.52 C \r
-ATOM 396 CA PRO A 69 30.791 14.926 25.537 1.00 42.35 C \r
-ATOM 403 CA TYR A 70 31.228 15.232 29.299 1.00 39.84 C \r
-ATOM 415 CA ARG A 71 32.639 18.451 30.768 1.00 44.14 C \r
-ATOM 426 CA GLU A 72 35.122 19.278 33.515 1.00 43.82 C \r
-ATOM 435 CA GLY A 73 33.472 18.458 36.835 1.00 41.97 C \r
-ATOM 439 CA GLN A 74 30.929 15.874 35.657 1.00 37.19 C \r
-ATOM 448 CA SER A 75 31.285 12.124 36.138 1.00 38.28 C \r
-ATOM 454 CA ILE A 76 30.458 8.792 34.539 1.00 36.84 C \r
-ATOM 462 CA GLY A 77 28.983 5.620 35.918 1.00 35.39 C \r
-ATOM 466 CA VAL A 78 30.311 2.108 35.530 1.00 32.05 C \r
-ATOM 473 CA ILE A 79 28.458 -1.201 35.591 1.00 32.67 C \r
-ATOM 481 CA ALA A 80 30.745 -4.018 36.644 1.00 35.36 C \r
-ATOM 486 CA ASP A 81 30.359 -7.373 34.872 1.00 38.72 C \r
-ATOM 494 CA GLY A 82 28.308 -10.332 36.110 1.00 45.79 C \r
-ATOM 498 CA VAL A 83 25.820 -10.242 39.001 1.00 52.24 C \r
-ATOM 505 CA ASP A 84 25.838 -10.250 42.834 1.00 60.54 C \r
-ATOM 513 CA LYS A 85 25.014 -13.158 45.196 1.00 66.72 C \r
-ATOM 522 CA ASN A 86 21.414 -13.062 43.904 1.00 67.37 C \r
-ATOM 530 CA GLY A 87 21.724 -13.423 40.136 1.00 64.74 C \r
-ATOM 534 CA LYS A 88 20.971 -9.733 39.570 1.00 61.12 C \r
-ATOM 543 CA PRO A 89 23.054 -7.201 37.561 1.00 54.68 C \r
-ATOM 550 CA HIS A 90 25.224 -4.957 39.755 1.00 44.44 C \r
-ATOM 560 CA LYS A 91 23.940 -1.433 40.260 1.00 40.48 C \r
-ATOM 569 CA VAL A 92 25.803 1.546 38.843 1.00 38.45 C \r
-ATOM 576 CA ARG A 93 28.709 2.986 40.828 1.00 38.93 C \r
-ATOM 587 CA LEU A 94 29.778 6.584 40.096 1.00 34.37 C \r
-ATOM 595 CA TYR A 95 33.309 7.878 39.513 1.00 30.27 C \r
-ATOM 607 CA SER A 96 34.425 11.475 39.057 1.00 29.44 C \r
-ATOM 613 CA ILE A 97 36.029 12.090 35.662 1.00 27.61 C \r
-ATOM 621 CA ALA A 98 39.769 12.693 36.069 1.00 31.12 C \r
-ATOM 626 CA SER A 99 40.393 13.712 32.475 1.00 32.42 C \r
-ATOM 632 CA SER A 100 39.566 17.142 31.059 1.00 36.14 C \r
-ATOM 638 CA ALA A 101 37.097 17.367 28.154 1.00 41.07 C \r
-ATOM 643 CA ILE A 102 39.764 16.549 25.527 1.00 47.65 C \r
-ATOM 651 CA GLY A 103 41.172 13.692 27.599 1.00 46.77 C \r
-ATOM 655 CA ASP A 104 44.730 12.612 28.289 1.00 43.82 C \r
-ATOM 663 CA PHE A 105 45.115 12.065 24.522 1.00 41.52 C \r
-ATOM 674 CA GLY A 106 43.862 15.455 23.328 1.00 41.66 C \r
-ATOM 678 CA ASP A 107 41.355 13.883 20.926 1.00 40.90 C \r
-ATOM 686 CA SER A 108 38.132 14.250 22.954 1.00 42.95 C \r
-ATOM 692 CA LYS A 109 37.967 10.535 22.224 1.00 44.74 C \r
-ATOM 701 CA THR A 110 38.731 9.184 25.704 1.00 41.09 C \r
-ATOM 708 CA VAL A 111 37.728 9.519 29.374 1.00 39.03 C \r
-ATOM 715 CA SER A 112 39.912 8.705 32.399 1.00 37.17 C \r
-ATOM 721 CA LEU A 113 39.098 7.476 35.935 1.00 32.10 C \r
-ATOM 729 CA CYS A 114 40.964 7.578 39.261 1.00 30.65 C \r
-ATOM 735 CA VAL A 115 39.724 4.459 41.060 1.00 33.45 C \r
-ATOM 742 CA LYS A 116 40.668 3.524 44.628 1.00 34.75 C \r
-ATOM 751 CA ARG A 117 40.376 -0.250 45.123 1.00 32.85 C \r
-ATOM 762 CA LEU A 118 38.137 -1.094 48.077 1.00 30.50 C \r
-ATOM 770 CA ILE A 119 39.376 -3.752 50.459 1.00 34.34 C \r
-ATOM 778 CA TYR A 120 38.699 -4.266 54.125 1.00 31.39 C \r
-ATOM 790 CA THR A 121 38.264 -7.086 56.567 1.00 28.83 C \r
-ATOM 797 CA ASN A 122 34.792 -7.477 58.109 1.00 26.51 C \r
-ATOM 805 CA ASP A 123 33.626 -8.382 61.634 1.00 31.58 C \r
-ATOM 813 CA ALA A 124 34.191 -12.077 60.901 1.00 27.84 C \r
-ATOM 818 CA GLY A 125 37.759 -11.844 59.728 1.00 32.39 C \r
-ATOM 822 CA GLU A 126 36.809 -12.146 56.073 1.00 35.82 C \r
-ATOM 831 CA ILE A 127 38.655 -9.932 53.598 1.00 38.42 C \r
-ATOM 839 CA VAL A 128 36.025 -8.261 51.421 1.00 33.73 C \r
-ATOM 846 CA LYS A 129 36.482 -6.484 48.090 1.00 31.87 C \r
-ATOM 855 CA GLY A 130 34.363 -3.680 46.686 1.00 26.91 C \r
-ATOM 859 CA VAL A 131 32.680 -5.051 43.569 1.00 27.89 C \r
-ATOM 866 CA CYS A 132 33.074 -2.246 41.018 1.00 28.46 C \r
-ATOM 872 CA SER A 133 36.266 -0.553 42.213 1.00 31.33 C \r
-ATOM 878 CA ASN A 134 37.861 -3.983 41.984 1.00 30.29 C \r
-ATOM 886 CA PHE A 135 36.318 -4.795 38.623 1.00 31.48 C \r
-ATOM 897 CA LEU A 136 37.926 -1.553 37.520 1.00 27.81 C \r
-ATOM 905 CA CYS A 137 41.417 -1.976 38.955 1.00 25.91 C \r
-ATOM 911 CA ASP A 138 41.605 -5.419 37.338 1.00 30.22 C \r
-ATOM 919 CA LEU A 139 40.462 -4.306 33.874 1.00 32.69 C \r
-ATOM 927 CA GLN A 140 42.851 -5.511 31.186 1.00 36.80 C \r
-ATOM 936 CA PRO A 141 43.380 -3.220 28.170 1.00 36.16 C \r
-ATOM 943 CA GLY A 142 40.864 -4.420 25.586 1.00 31.10 C \r
-ATOM 947 CA ASP A 143 38.129 -5.298 28.055 1.00 30.62 C \r
-ATOM 955 CA ASN A 144 34.690 -3.847 27.645 1.00 33.52 C \r
-ATOM 963 CA VAL A 145 33.430 -1.522 30.361 1.00 37.08 C \r
-ATOM 970 CA GLN A 146 29.817 -0.374 30.523 1.00 37.65 C \r
-ATOM 979 CA ILE A 147 29.547 3.413 31.045 1.00 30.95 C \r
-ATOM 987 CA THR A 148 26.637 5.791 31.832 1.00 29.95 C \r
-ATOM 994 CA GLY A 149 26.297 9.581 31.843 1.00 32.81 C \r
-ATOM 998 CA PRO A 150 27.785 12.148 31.800 1.00 34.98 C \r
-ATOM 1005 CA VAL A 151 26.376 12.668 35.275 1.00 36.53 C \r
-ATOM 1012 CA GLY A 152 26.196 15.756 37.474 1.00 43.09 C \r
-ATOM 1016 CA LYS A 153 26.048 19.528 37.068 1.00 48.37 C \r
-ATOM 1025 CA GLU A 154 26.921 20.540 40.633 1.00 49.70 C \r
-ATOM 1034 CA MET A 155 30.710 20.266 40.235 1.00 47.30 C \r
-ATOM 1042 CA LEU A 156 30.882 22.020 36.869 1.00 50.36 C \r
-ATOM 1050 CA MET A 157 33.362 24.883 36.404 1.00 55.29 C \r
-ATOM 1058 CA PRO A 158 32.521 28.612 36.605 1.00 54.88 C \r
-ATOM 1065 CA LYS A 159 32.291 30.776 33.464 1.00 54.92 C \r
-ATOM 1074 CA ASP A 160 34.497 33.503 34.939 1.00 57.22 C \r
-ATOM 1082 CA PRO A 161 38.055 32.687 33.759 1.00 58.62 C \r
-ATOM 1089 CA ASN A 162 39.524 35.240 36.163 1.00 60.44 C \r
-ATOM 1097 CA ALA A 163 37.814 33.910 39.279 1.00 55.80 C \r
-ATOM 1102 CA THR A 164 39.596 32.487 42.316 1.00 51.04 C \r
-ATOM 1109 CA ILE A 165 38.966 28.771 42.756 1.00 50.26 C \r
-ATOM 1117 CA ILE A 166 39.774 26.773 45.885 1.00 47.54 C \r
-ATOM 1125 CA MET A 167 39.883 23.014 45.324 1.00 46.38 C \r
-ATOM 1133 CA LEU A 168 39.700 20.963 48.522 1.00 42.18 C \r
-ATOM 1141 CA ALA A 169 40.377 17.316 47.770 1.00 36.41 C \r
-ATOM 1146 CA THR A 170 41.005 14.086 49.622 1.00 32.98 C \r
-ATOM 1153 CA GLY A 171 42.027 10.802 48.014 1.00 31.36 C \r
-ATOM 1157 CA THR A 172 40.386 10.037 44.680 1.00 30.48 C \r
-ATOM 1164 CA GLY A 173 38.640 13.335 45.359 1.00 33.99 C \r
-ATOM 1168 CA ILE A 174 41.418 15.036 43.394 1.00 35.66 C \r
-ATOM 1176 CA ALA A 175 39.758 13.585 40.300 1.00 36.00 C \r
-ATOM 1181 CA PRO A 176 37.445 16.385 39.155 1.00 39.41 C \r
-ATOM 1188 CA PHE A 177 40.109 18.971 39.976 1.00 43.21 C \r
-ATOM 1199 CA ARG A 178 42.726 17.119 37.955 1.00 41.09 C \r
-ATOM 1210 CA SER A 179 40.235 17.536 35.124 1.00 39.92 C \r
-ATOM 1216 CA PHE A 180 39.808 21.204 36.009 1.00 39.23 C \r
-ATOM 1227 CA LEU A 181 43.528 21.949 35.995 1.00 39.50 C \r
-ATOM 1235 CA TRP A 182 44.305 20.081 32.770 1.00 41.47 C \r
-ATOM 1249 CA LYS A 183 42.141 22.654 30.972 1.00 48.08 C \r
-ATOM 1258 CA MET A 184 43.477 25.547 33.062 1.00 52.79 C \r
-ATOM 1266 CA PHE A 185 47.102 25.043 32.014 1.00 57.35 C \r
-ATOM 1277 CA PHE A 186 48.075 21.921 30.051 1.00 55.98 C \r
-ATOM 1288 CA GLU A 187 45.758 23.173 27.297 1.00 54.44 C \r
-ATOM 1297 CA LYS A 188 44.908 26.236 25.196 1.00 51.29 C \r
-ATOM 1306 CA HIS A 189 41.395 27.080 24.003 1.00 51.35 C \r
-ATOM 1316 CA ASP A 190 40.108 29.972 21.873 1.00 54.30 C \r
-ATOM 1324 CA ASP A 191 37.199 30.481 24.249 1.00 53.95 C \r
-ATOM 1332 CA TYR A 192 38.816 29.937 27.634 1.00 50.68 C \r
-ATOM 1344 CA LYS A 193 41.916 31.388 29.230 1.00 51.00 C \r
-ATOM 1353 CA PHE A 194 42.322 30.967 32.956 1.00 52.09 C \r
-ATOM 1364 CA ASN A 195 43.672 34.234 34.312 1.00 56.46 C \r
-ATOM 1372 CA GLY A 196 42.616 34.078 37.969 1.00 57.17 C \r
-ATOM 1376 CA LEU A 197 43.874 31.920 40.843 1.00 57.92 C \r
-ATOM 1384 CA GLY A 198 43.549 28.151 41.086 1.00 56.67 C \r
-ATOM 1388 CA TRP A 199 44.258 26.886 44.592 1.00 51.55 C \r
-ATOM 1402 CA LEU A 200 44.411 23.170 45.379 1.00 49.17 C \r
-ATOM 1410 CA PHE A 201 44.558 21.335 48.709 1.00 48.60 C \r
-ATOM 1421 CA LEU A 202 45.122 17.570 48.598 1.00 45.34 C \r
-ATOM 1429 CA GLY A 203 44.885 15.480 51.742 1.00 48.55 C \r
-ATOM 1433 CA VAL A 204 46.225 11.936 51.755 1.00 50.23 C \r
-ATOM 1440 CA PRO A 205 47.942 9.740 54.365 1.00 51.51 C \r
-ATOM 1447 CA THR A 206 51.284 9.148 52.648 1.00 50.21 C \r
-ATOM 1454 CA SER A 207 53.551 10.483 49.894 1.00 49.38 C \r
-ATOM 1460 CA SER A 208 53.267 7.061 48.259 1.00 43.49 C \r
-ATOM 1466 CA SER A 209 49.588 8.049 48.093 1.00 42.57 C \r
-ATOM 1472 CA LEU A 210 49.990 11.424 46.364 1.00 42.65 C \r
-ATOM 1480 CA LEU A 211 48.121 11.446 43.035 1.00 39.33 C \r
-ATOM 1488 CA TYR A 212 49.516 13.214 39.935 1.00 40.89 C \r
-ATOM 1500 CA LYS A 213 52.128 15.234 41.873 1.00 45.88 C \r
-ATOM 1509 CA GLU A 214 54.518 15.406 38.899 1.00 53.22 C \r
-ATOM 1518 CA GLU A 215 51.680 16.911 36.889 1.00 55.16 C \r
-ATOM 1527 CA PHE A 216 50.757 19.475 39.514 1.00 60.55 C \r
-ATOM 1538 CA GLY A 217 54.488 20.153 39.524 1.00 66.64 C \r
-ATOM 1542 CA LYS A 218 54.575 21.110 35.850 1.00 68.86 C \r
-ATOM 1551 CA MET A 219 51.398 23.159 36.265 1.00 66.97 C \r
-ATOM 1559 CA LYS A 220 53.138 25.090 39.061 1.00 65.97 C \r
-ATOM 1568 CA GLU A 221 55.654 26.250 36.459 1.00 70.02 C \r
-ATOM 1577 CA ARG A 222 53.584 26.507 33.294 1.00 73.48 C \r
-ATOM 1588 CA ALA A 223 52.005 29.449 35.175 1.00 76.21 C \r
-ATOM 1593 CA PRO A 224 53.272 29.877 38.804 1.00 79.25 C \r
-ATOM 1600 CA GLU A 225 51.296 33.124 39.020 1.00 81.84 C \r
-ATOM 1609 CA ASN A 226 47.873 31.528 38.622 1.00 78.84 C \r
-ATOM 1617 CA PHE A 227 48.418 28.176 40.350 1.00 75.28 C \r
-ATOM 1628 CA ARG A 228 49.090 27.305 43.996 1.00 72.05 C \r
-ATOM 1639 CA VAL A 229 49.165 23.724 45.323 1.00 68.82 C \r
-ATOM 1646 CA ASP A 230 49.258 22.581 48.958 1.00 66.54 C \r
-ATOM 1654 CA TYR A 231 49.605 18.943 49.968 1.00 60.31 C \r
-ATOM 1666 CA ALA A 232 48.551 17.560 53.332 1.00 57.39 C \r
-ATOM 1671 CA VAL A 233 50.260 14.228 53.945 1.00 57.14 C \r
-ATOM 1678 CA SER A 234 48.465 13.579 57.244 1.00 60.81 C \r
-ATOM 1684 CA ARG A 235 50.959 11.010 58.514 1.00 60.74 C \r
-ATOM 1695 CA GLU A 236 54.268 12.594 57.481 1.00 59.17 C \r
-ATOM 1704 CA GLN A 237 53.494 16.197 58.450 1.00 59.62 C \r
-ATOM 1713 CA THR A 238 52.590 18.236 61.521 1.00 63.18 C \r
-ATOM 1720 CA ASN A 239 52.019 21.937 62.188 1.00 66.71 C \r
-ATOM 1728 CA ALA A 240 52.096 23.767 65.537 1.00 70.06 C \r
-ATOM 1733 CA ALA A 241 51.302 21.400 68.410 1.00 72.44 C \r
-ATOM 1738 CA GLY A 242 52.383 18.324 66.438 1.00 72.38 C \r
-ATOM 1742 CA GLU A 243 48.826 18.169 65.110 1.00 69.71 C \r
-ATOM 1751 CA ARG A 244 48.674 15.776 62.148 1.00 67.21 C \r
-ATOM 1762 CA MET A 245 48.712 17.796 58.933 1.00 64.20 C \r
-ATOM 1770 CA TYR A 246 45.246 17.082 57.556 1.00 60.65 C \r
-ATOM 1782 CA ILE A 247 43.617 18.437 54.409 1.00 62.98 C \r
-ATOM 1790 CA GLN A 248 42.035 21.001 56.761 1.00 64.64 C \r
-ATOM 1799 CA THR A 249 45.057 21.461 59.009 1.00 63.37 C \r
-ATOM 1806 CA ARG A 250 46.891 22.664 55.903 1.00 62.47 C \r
-ATOM 1817 CA MET A 251 44.123 25.201 55.251 1.00 63.35 C \r
-ATOM 1825 CA ALA A 252 44.571 26.305 58.854 1.00 65.73 C \r
-ATOM 1830 CA GLU A 253 47.973 27.809 58.076 1.00 65.97 C \r
-ATOM 1839 CA TYR A 254 46.267 30.063 55.517 1.00 65.83 C \r
-ATOM 1851 CA LYS A 255 42.991 30.559 57.379 1.00 70.30 C \r
-ATOM 1860 CA GLU A 256 43.578 34.326 57.320 1.00 73.73 C \r
-ATOM 1869 CA GLU A 257 44.189 34.738 53.593 1.00 71.52 C \r
-ATOM 1878 CA LEU A 258 41.459 32.202 52.893 1.00 73.38 C \r
-ATOM 1886 CA TRP A 259 38.790 34.074 54.853 1.00 76.72 C \r
-ATOM 1900 CA GLU A 260 39.721 37.275 53.006 1.00 78.61 C \r
-ATOM 1909 CA LEU A 261 38.580 35.553 49.815 1.00 75.71 C \r
-ATOM 1917 CA LEU A 262 35.391 33.881 51.047 1.00 73.74 C \r
-ATOM 1925 CA LYS A 263 33.562 37.165 50.535 1.00 73.64 C \r
-ATOM 1934 CA LYS A 264 34.299 38.143 46.954 1.00 72.48 C \r
-ATOM 1943 CA ASP A 265 31.954 37.554 43.993 1.00 69.65 C \r
-ATOM 1951 CA ASN A 266 34.660 35.649 42.106 1.00 65.06 C \r
-ATOM 1959 CA THR A 267 35.835 33.117 44.683 1.00 58.24 C \r
-ATOM 1966 CA TYR A 268 34.459 29.646 43.909 1.00 51.04 C \r
-ATOM 1978 CA VAL A 269 35.192 26.827 46.382 1.00 44.95 C \r
-ATOM 1985 CA TYR A 270 35.012 23.150 45.368 1.00 44.96 C \r
-ATOM 1997 CA MET A 271 35.162 20.122 47.656 1.00 41.72 C \r
-ATOM 2005 CA CYS A 272 35.314 16.468 46.632 1.00 37.19 C \r
-ATOM 2011 CA GLY A 273 36.343 13.080 47.951 1.00 37.65 C \r
-ATOM 2015 CA LEU A 274 36.040 10.886 51.020 1.00 39.39 C \r
-ATOM 2023 CA LYS A 275 33.076 12.283 52.955 1.00 44.86 C \r
-ATOM 2032 CA GLY A 276 34.322 13.183 56.400 1.00 49.16 C \r
-ATOM 2036 CA MET A 277 36.932 15.608 55.168 1.00 53.30 C \r
-ATOM 2044 CA GLU A 278 33.917 17.921 55.165 1.00 56.74 C \r
-ATOM 2053 CA LYS A 279 33.531 18.089 58.947 1.00 59.30 C \r
-ATOM 2062 CA GLY A 280 36.982 19.413 59.776 1.00 58.94 C \r
-ATOM 2066 CA ILE A 281 36.705 22.048 57.063 1.00 61.43 C \r
-ATOM 2074 CA ASP A 282 33.453 23.402 58.515 1.00 67.06 C \r
-ATOM 2082 CA ASP A 283 35.050 23.189 61.972 1.00 74.12 C \r
-ATOM 2090 CA ILE A 284 37.991 25.422 61.040 1.00 78.49 C \r
-ATOM 2098 CA MET A 285 35.456 27.566 59.201 1.00 82.25 C \r
-ATOM 2106 CA VAL A 286 32.941 27.959 62.027 1.00 83.44 C \r
-ATOM 2113 CA SER A 287 35.610 29.113 64.469 1.00 83.43 C \r
-ATOM 2119 CA LEU A 288 36.927 31.601 61.887 1.00 85.53 C \r
-ATOM 2127 CA ALA A 289 33.506 33.025 60.970 1.00 86.85 C \r
-ATOM 2132 CA GLU A 290 31.841 32.696 64.387 1.00 89.26 C \r
-ATOM 2141 CA LYS A 291 34.438 35.312 65.347 1.00 88.73 C \r
-ATOM 2150 CA ASP A 292 33.635 37.891 62.652 1.00 88.03 C \r
-ATOM 2158 CA GLY A 293 30.219 37.450 61.081 1.00 87.88 C \r
-ATOM 2162 CA ILE A 294 27.319 35.051 61.511 1.00 84.61 C \r
-ATOM 2170 CA ASP A 295 27.665 31.329 62.188 1.00 82.45 C \r
-ATOM 2178 CA TRP A 296 29.539 29.627 59.355 1.00 80.12 C \r
-ATOM 2192 CA PHE A 297 26.527 27.452 58.512 1.00 78.99 C \r
-ATOM 2203 CA ASP A 298 24.167 30.241 57.486 1.00 76.37 C \r
-ATOM 2211 CA TYR A 299 27.074 31.748 55.561 1.00 74.07 C \r
-ATOM 2223 CA LYS A 300 27.679 28.620 53.473 1.00 74.31 C \r
-ATOM 2232 CA LYS A 301 24.059 29.146 52.464 1.00 75.97 C \r
-ATOM 2241 CA GLN A 302 24.921 32.563 51.018 1.00 75.38 C \r
-ATOM 2250 CA LEU A 303 27.896 31.099 49.155 1.00 72.10 C \r
-ATOM 2258 CA LYS A 304 25.917 28.207 47.690 1.00 72.08 C \r
-ATOM 2267 CA ARG A 305 23.595 31.021 46.594 1.00 74.82 C \r
-ATOM 2278 CA GLY A 306 26.071 32.136 43.958 1.00 71.84 C \r
-ATOM 2282 CA ASP A 307 27.505 28.682 43.220 1.00 67.23 C \r
-ATOM 2290 CA GLN A 308 30.620 29.291 45.346 1.00 60.18 C \r
-ATOM 2299 CA TRP A 309 30.585 26.177 47.537 1.00 52.25 C \r
-ATOM 2313 CA ASN A 310 29.894 22.997 45.597 1.00 45.03 C \r
-ATOM 2321 CA VAL A 311 30.327 19.716 47.403 1.00 39.13 C \r
-ATOM 2328 CA GLU A 312 30.507 16.190 46.110 1.00 35.17 C \r
-ATOM 2337 CA VAL A 313 31.761 13.957 48.861 1.00 30.12 C \r
-ATOM 2344 CA TYR A 314 31.112 10.230 49.021 1.00 28.23 C \r
-ATOM 2358 CA ALA B 1 2.311 24.702 44.475 1.00 74.17 C \r
-ATOM 2363 CA THR B 2 3.590 24.207 48.055 1.00 74.76 C \r
-ATOM 2370 CA TYR B 3 3.069 20.876 49.837 1.00 73.52 C \r
-ATOM 2382 CA ASN B 4 3.748 19.874 53.435 1.00 75.75 C \r
-ATOM 2390 CA VAL B 5 6.618 17.399 53.868 1.00 75.95 C \r
-ATOM 2397 CA LYS B 6 7.769 15.523 56.983 1.00 77.70 C \r
-ATOM 2406 CA LEU B 7 11.351 14.325 57.458 1.00 78.91 C \r
-ATOM 2414 CA ILE B 8 11.807 11.511 59.985 1.00 81.00 C \r
-ATOM 2422 CA THR B 9 15.560 12.046 60.247 1.00 87.49 C \r
-ATOM 2429 CA PRO B 10 17.662 9.793 62.539 1.00 92.94 C \r
-ATOM 2436 CA GLU B 11 18.161 13.147 64.282 1.00 96.61 C \r
-ATOM 2445 CA GLY B 12 14.579 14.154 65.041 1.00 97.52 C \r
-ATOM 2449 CA GLU B 13 11.602 14.823 62.748 1.00 96.90 C \r
-ATOM 2458 CA VAL B 14 11.547 17.892 60.480 1.00 96.63 C \r
-ATOM 2465 CA GLU B 15 8.340 19.701 59.440 1.00 94.86 C \r
-ATOM 2474 CA LEU B 16 9.471 21.479 56.254 1.00 91.55 C \r
-ATOM 2482 CA GLN B 17 7.281 23.141 53.598 1.00 89.75 C \r
-ATOM 2491 CA VAL B 18 8.485 22.069 50.145 1.00 87.92 C \r
-ATOM 2498 CA PRO B 19 6.906 23.558 46.964 1.00 86.35 C \r
-ATOM 2505 CA ASP B 20 5.990 21.744 43.717 1.00 86.29 C \r
-ATOM 2513 CA ASP B 21 8.578 22.751 41.083 1.00 83.78 C \r
-ATOM 2521 CA VAL B 22 11.385 22.401 43.639 1.00 80.98 C \r
-ATOM 2528 CA TYR B 23 13.439 19.280 44.481 1.00 77.04 C \r
-ATOM 2540 CA ILE B 24 13.212 18.196 48.120 1.00 76.45 C \r
-ATOM 2548 CA LEU B 25 16.959 18.133 48.851 1.00 75.15 C \r
-ATOM 2556 CA ASP B 26 17.154 21.745 47.689 1.00 75.80 C \r
-ATOM 2564 CA GLN B 27 14.616 22.906 50.280 1.00 76.31 C \r
-ATOM 2573 CA ALA B 28 16.562 20.957 52.914 1.00 78.86 C \r
-ATOM 2578 CA GLU B 29 19.698 23.011 52.198 1.00 81.51 C \r
-ATOM 2587 CA GLU B 30 17.491 26.106 52.510 1.00 83.25 C \r
-ATOM 2596 CA ASP B 31 15.857 25.933 55.935 1.00 81.92 C \r
-ATOM 2604 CA GLY B 32 19.280 24.859 57.151 1.00 79.08 C \r
-ATOM 2608 CA ILE B 33 18.621 21.130 57.157 1.00 76.93 C \r
-ATOM 2616 CA ASP B 34 21.528 18.731 56.618 1.00 73.53 C \r
-ATOM 2624 CA LEU B 35 20.738 15.738 54.421 1.00 67.74 C \r
-ATOM 2632 CA PRO B 36 23.138 13.391 52.547 1.00 65.90 C \r
-ATOM 2639 CA TYR B 37 23.916 14.226 48.912 1.00 64.85 C \r
-ATOM 2651 CA SER B 38 26.659 13.373 46.412 1.00 62.58 C \r
-ATOM 2657 CA CYS B 39 26.193 13.603 42.652 1.00 60.99 C \r
-ATOM 2663 CA ARG B 40 22.908 15.441 43.251 1.00 58.35 C \r
-ATOM 2674 CA ALA B 41 21.699 14.108 39.886 1.00 56.38 C \r
-ATOM 2679 CA GLY B 42 19.886 10.955 40.991 1.00 56.66 C \r
-ATOM 2683 CA SER B 43 22.465 8.336 40.010 1.00 58.55 C \r
-ATOM 2689 CA CYS B 44 23.548 7.052 43.447 1.00 56.27 C \r
-ATOM 2695 CA SER B 45 22.057 5.987 46.791 1.00 58.20 C \r
-ATOM 2701 CA SER B 46 23.574 8.773 48.890 1.00 59.13 C \r
-ATOM 2707 CA CYS B 47 20.220 10.475 49.517 1.00 65.64 C \r
-ATOM 2713 CA ALA B 48 17.911 7.436 49.610 1.00 69.71 C \r
-ATOM 2718 CA GLY B 49 14.733 7.635 51.681 1.00 73.09 C \r
-ATOM 2722 CA LYS B 50 11.712 5.340 52.183 1.00 73.77 C \r
-ATOM 2731 CA VAL B 51 8.551 7.412 51.568 1.00 76.51 C \r
-ATOM 2738 CA VAL B 52 5.237 7.081 53.429 1.00 78.85 C \r
-ATOM 2745 CA SER B 53 2.180 9.376 53.647 1.00 79.57 C \r
-ATOM 2751 CA GLY B 54 2.118 10.991 50.218 1.00 76.32 C \r
-ATOM 2755 CA SER B 55 3.577 10.944 46.726 1.00 76.31 C \r
-ATOM 2761 CA VAL B 56 6.436 12.592 44.828 1.00 77.50 C \r
-ATOM 2768 CA ASP B 57 7.691 12.960 41.243 1.00 76.83 C \r
-ATOM 2776 CA GLN B 58 11.150 11.483 40.555 1.00 76.66 C \r
-ATOM 2785 CA SER B 59 10.976 10.827 36.792 1.00 80.19 C \r
-ATOM 2791 CA ASP B 60 14.688 11.644 36.510 1.00 83.51 C \r
-ATOM 2799 CA GLN B 61 15.175 8.137 37.916 1.00 85.74 C \r
-ATOM 2808 CA SER B 62 18.644 7.080 36.699 1.00 85.85 C \r
-ATOM 2814 CA TYR B 63 19.324 5.049 39.852 1.00 84.49 C \r
-ATOM 2826 CA LEU B 64 15.683 4.296 40.629 1.00 89.06 C \r
-ATOM 2834 CA ASP B 65 15.356 0.604 39.742 1.00 92.21 C \r
-ATOM 2842 CA ASP B 66 12.421 -1.791 39.331 1.00 92.35 C \r
-ATOM 2850 CA GLY B 67 10.747 -2.542 42.659 1.00 89.07 C \r
-ATOM 2854 CA GLN B 68 12.336 0.632 44.010 1.00 88.41 C \r
-ATOM 2863 CA ILE B 69 9.483 2.828 42.742 1.00 86.11 C \r
-ATOM 2871 CA ALA B 70 7.060 0.441 44.446 1.00 81.10 C \r
-ATOM 2876 CA ASP B 71 8.985 -0.310 47.648 1.00 76.82 C \r
-ATOM 2884 CA GLY B 72 8.653 3.423 48.186 1.00 73.00 C \r
-ATOM 2888 CA TRP B 73 12.342 4.386 48.095 1.00 67.93 C \r
-ATOM 2902 CA VAL B 74 13.052 8.007 47.136 1.00 63.84 C \r
-ATOM 2909 CA LEU B 75 16.093 9.940 45.892 1.00 58.37 C \r
-ATOM 2917 CA THR B 76 15.524 13.198 47.826 1.00 55.82 C \r
-ATOM 2924 CA CYS B 77 17.941 15.109 45.556 1.00 58.23 C \r
-ATOM 2930 CA HIS B 78 15.777 14.389 42.513 1.00 64.55 C \r
-ATOM 2940 CA ALA B 79 12.108 14.429 43.512 1.00 68.40 C \r
-ATOM 2945 CA TYR B 80 9.442 17.152 43.581 1.00 69.69 C \r
-ATOM 2957 CA PRO B 81 6.414 16.584 45.842 1.00 71.39 C \r
-ATOM 2964 CA THR B 82 3.015 16.014 44.179 1.00 73.67 C \r
-ATOM 2971 CA SER B 83 1.278 15.771 47.557 1.00 76.90 C \r
-ATOM 2977 CA ASP B 84 1.940 16.119 51.289 1.00 75.20 C \r
-ATOM 2985 CA VAL B 85 4.840 13.765 52.050 1.00 71.37 C \r
-ATOM 2992 CA VAL B 86 6.363 11.824 54.956 1.00 70.12 C \r
-ATOM 2999 CA ILE B 87 9.770 10.300 54.188 1.00 74.18 C \r
-ATOM 3007 CA GLU B 88 12.211 8.403 56.410 1.00 78.53 C \r
-ATOM 3012 CA THR B 89 15.541 9.964 55.407 1.00 79.79 C \r
-ATOM 3019 CA HIS B 90 19.062 8.538 55.881 1.00 79.40 C \r
-ATOM 3029 CA LYS B 91 17.584 5.099 55.099 1.00 84.52 C \r
-ATOM 3038 CA GLU B 92 20.016 2.596 53.549 1.00 91.64 C \r
-ATOM 3047 CA GLU B 93 20.192 -0.858 51.981 1.00 98.97 C \r
-ATOM 3056 CA GLU B 94 23.321 -2.924 51.298 1.00106.32 C \r
-ATOM 3065 CA LEU B 95 22.104 -6.552 51.453 1.00111.32 C \r
-ATOM 3073 CA THR B 96 18.778 -8.417 51.866 1.00116.01 C \r
-ATOM 3080 CA GLY B 97 18.877 -11.302 49.394 1.00116.63 C \r
-ATOM 3084 CA ALA B 98 22.056 -9.833 47.910 1.00116.02 C \r
-ATOM 3091 CA GLU C 19 26.080 -2.480 15.294 1.00 73.96 C \r
-ATOM 3100 CA SER C 20 23.405 0.198 14.956 1.00 67.27 C \r
-ATOM 3106 CA LYS C 21 22.937 3.927 15.380 1.00 59.27 C \r
-ATOM 3115 CA LYS C 22 19.198 3.481 15.874 1.00 58.42 C \r
-ATOM 3124 CA GLN C 23 17.251 3.141 19.137 1.00 59.89 C \r
-ATOM 3133 CA GLU C 24 17.931 -0.276 20.610 1.00 62.66 C \r
-ATOM 3142 CA GLU C 25 16.850 -0.453 24.226 1.00 64.27 C \r
-ATOM 3151 CA GLY C 26 13.211 -0.817 25.116 1.00 61.78 C \r
-ATOM 3155 CA VAL C 27 12.703 -2.073 21.582 1.00 58.37 C \r
-ATOM 3162 CA VAL C 28 10.779 -5.347 21.485 1.00 54.17 C \r
-ATOM 3169 CA THR C 29 9.481 -7.339 18.549 1.00 52.79 C \r
-ATOM 3176 CA ASN C 30 6.670 -9.775 17.786 1.00 51.30 C \r
-ATOM 3184 CA LEU C 31 4.863 -9.997 21.112 1.00 51.05 C \r
-ATOM 3192 CA TYR C 32 1.766 -11.297 19.327 1.00 50.51 C \r
-ATOM 3204 CA LYS C 33 1.373 -13.532 16.266 1.00 49.49 C \r
-ATOM 3213 CA PRO C 34 -1.609 -14.150 13.925 1.00 50.98 C \r
-ATOM 3220 CA LYS C 35 -2.450 -17.248 16.011 1.00 55.46 C \r
-ATOM 3229 CA GLU C 36 -2.977 -15.400 19.288 1.00 53.79 C \r
-ATOM 3238 CA PRO C 37 -3.251 -11.638 18.607 1.00 49.32 C \r
-ATOM 3245 CA TYR C 38 -3.674 -9.050 21.318 1.00 46.76 C \r
-ATOM 3257 CA VAL C 39 -7.276 -7.947 21.418 1.00 43.68 C \r
-ATOM 3264 CA GLY C 40 -7.415 -4.194 21.922 1.00 41.62 C \r
-ATOM 3268 CA ARG C 41 -10.273 -1.719 21.954 1.00 40.07 C \r
-ATOM 3279 CA CYS C 42 -11.026 1.064 19.477 1.00 36.37 C \r
-ATOM 3285 CA LEU C 43 -11.330 4.206 21.583 1.00 31.09 C \r
-ATOM 3293 CA LEU C 44 -11.337 6.671 18.673 1.00 28.46 C \r
-ATOM 3301 CA ASN C 45 -11.792 6.653 14.923 1.00 26.74 C \r
-ATOM 3309 CA THR C 46 -11.954 9.920 13.013 1.00 25.29 C \r
-ATOM 3316 CA LYS C 47 -11.667 10.775 9.352 1.00 21.50 C \r
-ATOM 3325 CA ILE C 48 -8.895 13.355 9.121 1.00 19.33 C \r
-ATOM 3333 CA THR C 49 -9.125 14.281 5.442 1.00 20.38 C \r
-ATOM 3340 CA GLY C 50 -11.630 16.676 3.855 1.00 20.12 C \r
-ATOM 3344 CA ASP C 51 -14.895 15.345 2.412 1.00 21.75 C \r
-ATOM 3352 CA ASP C 52 -13.889 16.693 -0.999 1.00 21.19 C \r
-ATOM 3360 CA ALA C 53 -10.651 14.683 -0.749 1.00 21.06 C \r
-ATOM 3365 CA PRO C 54 -10.036 11.974 -3.413 1.00 21.39 C \r
-ATOM 3372 CA GLY C 55 -9.982 9.067 -0.977 1.00 24.42 C \r
-ATOM 3376 CA GLU C 56 -10.374 9.298 2.857 1.00 22.08 C \r
-ATOM 3385 CA THR C 57 -7.723 8.611 5.517 1.00 20.31 C \r
-ATOM 3392 CA TRP C 58 -8.541 7.849 9.162 1.00 19.33 C \r
-ATOM 3406 CA HIS C 59 -6.758 8.520 12.438 1.00 22.68 C \r
-ATOM 3416 CA MET C 60 -7.645 5.951 15.108 1.00 27.16 C \r
-ATOM 3424 CA VAL C 61 -6.672 5.224 18.723 1.00 29.32 C \r
-ATOM 3431 CA PHE C 62 -6.669 1.704 20.220 1.00 34.23 C \r
-ATOM 3442 CA SER C 63 -6.102 0.643 23.847 1.00 37.05 C \r
-ATOM 3448 CA THR C 64 -3.096 -1.517 24.798 1.00 41.86 C \r
-ATOM 3455 CA GLU C 65 -3.169 -1.652 28.621 1.00 48.33 C \r
-ATOM 3464 CA GLY C 66 0.537 -0.885 28.318 1.00 52.45 C \r
-ATOM 3468 CA LYS C 67 0.955 -4.385 26.891 1.00 54.14 C \r
-ATOM 3477 CA ILE C 68 2.429 -3.211 23.570 1.00 51.52 C \r
-ATOM 3485 CA PRO C 69 5.602 -1.279 24.487 1.00 49.85 C \r
-ATOM 3492 CA TYR C 70 6.523 -0.180 20.967 1.00 44.48 C \r
-ATOM 3504 CA ARG C 71 9.185 2.353 19.993 1.00 40.96 C \r
-ATOM 3515 CA GLU C 72 8.727 5.317 17.688 1.00 33.49 C \r
-ATOM 3524 CA GLY C 73 8.913 3.876 14.164 1.00 30.16 C \r
-ATOM 3528 CA GLN C 74 7.423 0.399 14.427 1.00 31.26 C \r
-ATOM 3537 CA SER C 75 4.187 -0.913 12.966 1.00 33.65 C \r
-ATOM 3543 CA ILE C 76 1.454 -3.212 14.278 1.00 33.75 C \r
-ATOM 3551 CA GLY C 77 -0.295 -5.923 12.356 1.00 34.32 C \r
-ATOM 3555 CA VAL C 78 -4.060 -6.111 12.164 1.00 36.67 C \r
-ATOM 3562 CA ILE C 79 -6.137 -9.230 11.507 1.00 41.91 C \r
-ATOM 3570 CA ALA C 80 -9.427 -8.086 10.024 1.00 44.06 C \r
-ATOM 3575 CA ASP C 81 -12.530 -9.927 11.224 1.00 47.03 C \r
-ATOM 3583 CA GLY C 82 -13.972 -12.487 8.829 1.00 53.52 C \r
-ATOM 3587 CA VAL C 83 -12.521 -14.951 6.324 1.00 62.57 C \r
-ATOM 3594 CA ASP C 84 -11.856 -14.200 2.630 1.00 71.97 C \r
-ATOM 3602 CA LYS C 85 -12.935 -17.403 0.861 1.00 76.86 C \r
-ATOM 3611 CA ASN C 86 -13.690 -18.960 4.253 1.00 76.52 C \r
-ATOM 3619 CA GLY C 87 -10.006 -19.837 4.066 1.00 76.22 C \r
-ATOM 3623 CA LYS C 88 -8.802 -19.138 7.616 1.00 71.60 C \r
-ATOM 3632 CA PRO C 89 -8.651 -15.577 8.944 1.00 64.14 C \r
-ATOM 3639 CA HIS C 90 -7.547 -12.649 6.805 1.00 52.35 C \r
-ATOM 3649 CA LYS C 91 -3.753 -12.529 6.474 1.00 46.81 C \r
-ATOM 3658 CA VAL C 92 -2.180 -9.868 8.686 1.00 43.48 C \r
-ATOM 3665 CA ARG C 93 -1.491 -6.414 7.232 1.00 36.99 C \r
-ATOM 3676 CA LEU C 94 0.983 -3.882 8.601 1.00 32.95 C \r
-ATOM 3684 CA TYR C 95 0.340 -0.239 9.510 1.00 24.84 C \r
-ATOM 3696 CA SER C 96 3.003 2.101 10.803 1.00 23.32 C \r
-ATOM 3702 CA ILE C 97 2.244 3.502 14.236 1.00 24.12 C \r
-ATOM 3710 CA ALA C 98 1.243 7.179 13.932 1.00 22.32 C \r
-ATOM 3715 CA SER C 99 1.572 7.636 17.676 1.00 25.69 C \r
-ATOM 3721 CA SER C 100 4.752 7.924 19.726 1.00 28.83 C \r
-ATOM 3727 CA ALA C 101 5.741 5.521 22.508 1.00 35.61 C \r
-ATOM 3732 CA ILE C 102 3.906 7.635 25.079 1.00 38.39 C \r
-ATOM 3740 CA GLY C 103 0.899 7.826 22.742 1.00 31.93 C \r
-ATOM 3744 CA ASP C 104 -1.803 10.384 21.986 1.00 28.77 C \r
-ATOM 3752 CA PHE C 105 -3.050 10.293 25.607 1.00 37.05 C \r
-ATOM 3763 CA GLY C 106 0.503 10.389 26.967 1.00 39.36 C \r
-ATOM 3767 CA ASP C 107 -0.221 7.437 29.266 1.00 41.44 C \r
-ATOM 3775 CA SER C 108 1.566 4.766 27.217 1.00 42.18 C \r
-ATOM 3781 CA LYS C 109 -1.747 2.877 27.156 1.00 42.45 C \r
-ATOM 3790 CA THR C 110 -2.698 3.586 23.515 1.00 38.10 C \r
-ATOM 3797 CA VAL C 111 -1.603 2.971 19.906 1.00 32.79 C \r
-ATOM 3804 CA SER C 112 -2.671 5.020 16.872 1.00 29.60 C \r
-ATOM 3810 CA LEU C 113 -2.713 4.324 13.126 1.00 25.68 C \r
-ATOM 3818 CA CYS C 114 -3.142 6.498 9.999 1.00 24.23 C \r
-ATOM 3824 CA VAL C 115 -5.345 4.496 7.641 1.00 22.80 C \r
-ATOM 3831 CA LYS C 116 -6.221 5.196 4.015 1.00 22.11 C \r
-ATOM 3840 CA ARG C 117 -9.458 3.521 2.955 1.00 25.68 C \r
-ATOM 3851 CA LEU C 118 -8.447 1.440 -0.100 1.00 28.80 C \r
-ATOM 3859 CA ILE C 119 -11.140 1.661 -2.792 1.00 31.75 C \r
-ATOM 3867 CA TYR C 120 -10.086 0.716 -6.312 1.00 32.93 C \r
-ATOM 3879 CA THR C 121 -11.388 -0.733 -9.598 1.00 36.84 C \r
-ATOM 3886 CA ASN C 122 -10.258 -4.257 -10.546 1.00 36.90 C \r
-ATOM 3894 CA ASP C 123 -9.574 -5.562 -14.056 1.00 45.45 C \r
-ATOM 3902 CA ALA C 124 -13.196 -6.758 -14.269 1.00 44.66 C \r
-ATOM 3907 CA GLY C 125 -14.207 -3.102 -14.023 1.00 45.49 C \r
-ATOM 3911 CA GLU C 126 -16.059 -3.511 -10.722 1.00 45.54 C \r
-ATOM 3920 CA ILE C 127 -15.507 -1.321 -7.638 1.00 39.70 C \r
-ATOM 3928 CA VAL C 128 -13.846 -3.171 -4.762 1.00 38.09 C \r
-ATOM 3935 CA LYS C 129 -12.759 -2.512 -1.198 1.00 33.77 C \r
-ATOM 3944 CA GLY C 130 -9.566 -3.363 0.599 1.00 31.98 C \r
-ATOM 3948 CA VAL C 131 -10.443 -5.797 3.385 1.00 33.16 C \r
-ATOM 3955 CA CYS C 132 -8.241 -4.645 6.257 1.00 29.97 C \r
-ATOM 3961 CA SER C 133 -8.238 -0.898 5.607 1.00 30.67 C \r
-ATOM 3967 CA ASN C 134 -12.022 -0.902 5.268 1.00 30.35 C \r
-ATOM 3975 CA PHE C 135 -12.375 -2.946 8.424 1.00 29.86 C \r
-ATOM 3986 CA LEU C 136 -10.223 -0.334 10.195 1.00 29.42 C \r
-ATOM 3994 CA CYS C 137 -11.779 2.834 8.813 1.00 32.27 C \r
-ATOM 4000 CA ASP C 138 -15.116 1.280 9.724 1.00 34.29 C \r
-ATOM 4008 CA LEU C 139 -14.287 0.699 13.399 1.00 37.51 C \r
-ATOM 4016 CA GLN C 140 -16.635 2.170 16.028 1.00 43.76 C \r
-ATOM 4025 CA PRO C 141 -15.630 3.032 19.581 1.00 42.77 C \r
-ATOM 4032 CA GLY C 142 -16.082 -0.210 21.478 1.00 42.83 C \r
-ATOM 4036 CA ASP C 143 -15.117 -2.625 18.696 1.00 40.91 C \r
-ATOM 4044 CA ASN C 144 -12.182 -4.947 19.288 1.00 45.66 C \r
-ATOM 4052 CA VAL C 145 -9.056 -5.146 17.145 1.00 46.95 C \r
-ATOM 4059 CA GLN C 146 -6.707 -8.107 16.606 1.00 48.69 C \r
-ATOM 4068 CA ILE C 147 -3.249 -6.538 17.123 1.00 46.84 C \r
-ATOM 4076 CA THR C 148 -0.010 -8.392 16.264 1.00 46.26 C \r
-ATOM 4083 CA GLY C 149 3.543 -7.117 16.634 1.00 45.60 C \r
-ATOM 4087 CA PRO C 150 5.248 -4.818 17.394 1.00 44.97 C \r
-ATOM 4094 CA VAL C 151 7.423 -5.293 14.321 1.00 44.50 C \r
-ATOM 4101 CA GLY C 152 10.289 -3.716 12.438 1.00 45.33 C \r
-ATOM 4105 CA LYS C 153 13.599 -2.161 13.435 1.00 48.64 C \r
-ATOM 4114 CA GLU C 154 14.166 -0.437 10.074 1.00 48.20 C \r
-ATOM 4123 CA MET C 155 12.437 2.888 10.737 1.00 41.77 C \r
-ATOM 4131 CA LEU C 156 13.839 3.081 14.267 1.00 38.27 C \r
-ATOM 4139 CA MET C 157 15.076 6.540 15.308 1.00 34.29 C \r
-ATOM 4147 CA PRO C 158 18.782 7.419 15.339 1.00 34.05 C \r
-ATOM 4154 CA LYS C 159 20.262 7.521 18.845 1.00 35.82 C \r
-ATOM 4163 CA ASP C 160 22.076 10.792 18.273 1.00 35.95 C \r
-ATOM 4171 CA PRO C 161 19.683 13.401 19.809 1.00 35.63 C \r
-ATOM 4178 CA ASN C 162 21.563 15.948 17.758 1.00 33.92 C \r
-ATOM 4186 CA ALA C 163 21.028 14.172 14.487 1.00 30.82 C \r
-ATOM 4191 CA THR C 164 19.693 15.722 11.305 1.00 25.18 C \r
-ATOM 4198 CA ILE C 165 16.617 13.601 10.636 1.00 19.91 C \r
-ATOM 4206 CA ILE C 166 15.351 13.978 7.060 1.00 13.76 C \r
-ATOM 4214 CA MET C 167 11.843 12.550 6.703 1.00 14.98 C \r
-ATOM 4222 CA LEU C 168 10.385 11.831 3.251 1.00 16.64 C \r
-ATOM 4230 CA ALA C 169 6.747 10.808 3.007 1.00 15.85 C \r
-ATOM 4235 CA THR C 170 3.765 10.346 0.737 1.00 14.23 C \r
-ATOM 4242 CA GLY C 171 0.255 9.724 2.035 1.00 13.78 C \r
-ATOM 4246 CA THR C 172 -0.103 7.560 5.139 1.00 17.62 C \r
-ATOM 4253 CA GLY C 173 3.646 7.343 4.821 1.00 17.20 C \r
-ATOM 4257 CA ILE C 174 3.469 10.213 7.270 1.00 15.91 C \r
-ATOM 4265 CA ALA C 175 2.586 7.783 10.110 1.00 15.63 C \r
-ATOM 4270 CA PRO C 176 6.023 6.933 11.582 1.00 17.04 C \r
-ATOM 4277 CA PHE C 177 7.215 10.514 11.327 1.00 18.21 C \r
-ATOM 4288 CA ARG C 178 4.268 11.745 13.359 1.00 22.35 C \r
-ATOM 4299 CA SER C 179 5.563 9.289 15.983 1.00 25.22 C \r
-ATOM 4305 CA PHE C 180 9.139 10.593 15.614 1.00 25.98 C \r
-ATOM 4316 CA LEU C 181 7.925 14.180 15.767 1.00 29.12 C \r
-ATOM 4324 CA TRP C 182 5.625 13.641 18.714 1.00 31.35 C \r
-ATOM 4338 CA LYS C 183 8.488 12.385 20.871 1.00 30.92 C \r
-ATOM 4347 CA MET C 184 10.841 15.050 19.503 1.00 24.85 C \r
-ATOM 4355 CA PHE C 185 8.741 18.202 20.114 1.00 22.97 C \r
-ATOM 4366 CA PHE C 186 5.604 17.337 22.076 1.00 27.77 C \r
-ATOM 4377 CA GLU C 187 7.117 15.432 25.009 1.00 37.71 C \r
-ATOM 4386 CA LYS C 188 9.542 15.977 27.878 1.00 53.59 C \r
-ATOM 4395 CA HIS C 189 12.355 13.416 28.180 1.00 63.67 C \r
-ATOM 4405 CA ASP C 190 15.318 13.181 30.569 1.00 66.93 C \r
-ATOM 4413 CA ASP C 191 17.480 11.106 28.238 1.00 59.79 C \r
-ATOM 4421 CA TYR C 192 16.190 12.725 25.047 1.00 51.96 C \r
-ATOM 4433 CA LYS C 193 16.700 16.406 24.324 1.00 47.01 C \r
-ATOM 4442 CA PHE C 194 16.580 16.471 20.530 1.00 39.85 C \r
-ATOM 4453 CA ASN C 195 18.572 19.494 19.409 1.00 37.52 C \r
-ATOM 4461 CA GLY C 196 19.361 18.548 15.845 1.00 32.08 C \r
-ATOM 4465 CA LEU C 197 17.310 19.266 12.766 1.00 28.26 C \r
-ATOM 4473 CA GLY C 198 14.051 17.526 11.928 1.00 25.05 C \r
-ATOM 4477 CA TRP C 199 13.211 18.137 8.269 1.00 19.81 C \r
-ATOM 4491 CA LEU C 200 9.908 16.742 7.059 1.00 13.86 C \r
-ATOM 4499 CA PHE C 201 8.855 16.521 3.429 1.00 14.83 C \r
-ATOM 4510 CA LEU C 202 5.288 15.361 2.717 1.00 16.12 C \r
-ATOM 4518 CA GLY C 203 3.701 14.731 -0.681 1.00 13.79 C \r
-ATOM 4522 CA VAL C 204 -0.051 14.414 -1.182 1.00 11.75 C \r
-ATOM 4529 CA PRO C 205 -2.113 15.264 -4.308 1.00 14.66 C \r
-ATOM 4536 CA THR C 206 -4.553 17.737 -2.778 1.00 16.37 C \r
-ATOM 4543 CA SER C 207 -4.756 20.169 0.120 1.00 18.01 C \r
-ATOM 4549 CA SER C 208 -7.780 18.225 1.280 1.00 17.59 C \r
-ATOM 4555 CA SER C 209 -5.452 15.198 1.550 1.00 16.19 C \r
-ATOM 4561 CA LEU C 210 -2.972 16.940 3.860 1.00 14.22 C \r
-ATOM 4569 CA LEU C 211 -2.255 14.980 7.059 1.00 14.43 C \r
-ATOM 4577 CA TYR C 212 -1.624 16.449 10.549 1.00 18.94 C \r
-ATOM 4589 CA LYS C 213 -0.818 19.896 9.150 1.00 22.61 C \r
-ATOM 4598 CA GLU C 214 -2.039 21.572 12.352 1.00 25.73 C \r
-ATOM 4607 CA GLU C 215 0.152 19.413 14.514 1.00 19.23 C \r
-ATOM 4616 CA PHE C 216 3.216 20.178 12.439 1.00 17.80 C \r
-ATOM 4627 CA GLY C 217 2.478 23.890 12.512 1.00 19.90 C \r
-ATOM 4631 CA LYS C 218 2.578 24.001 16.294 1.00 25.54 C \r
-ATOM 4640 CA MET C 219 5.810 22.021 16.188 1.00 26.79 C \r
-ATOM 4648 CA LYS C 220 7.224 24.606 13.819 1.00 31.85 C \r
-ATOM 4657 CA GLU C 221 6.071 27.341 16.219 1.00 38.62 C \r
-ATOM 4666 CA ARG C 222 7.760 25.760 19.233 1.00 39.10 C \r
-ATOM 4677 CA ALA C 223 11.124 24.971 17.668 1.00 35.43 C \r
-ATOM 4682 CA PRO C 224 11.696 27.100 14.528 1.00 32.99 C \r
-ATOM 4689 CA GLU C 225 15.425 26.331 14.360 1.00 33.87 C \r
-ATOM 4698 CA ASN C 226 15.038 22.591 14.986 1.00 30.46 C \r
-ATOM 4706 CA PHE C 227 12.088 21.755 12.732 1.00 24.98 C \r
-ATOM 4717 CA ARG C 228 11.351 22.384 9.075 1.00 19.87 C \r
-ATOM 4728 CA VAL C 229 8.435 21.010 7.118 1.00 14.21 C \r
-ATOM 4735 CA ASP C 230 7.739 21.452 3.398 1.00 12.26 C \r
-ATOM 4743 CA TYR C 231 4.627 20.147 1.722 1.00 14.42 C \r
-ATOM 4755 CA ALA C 232 4.334 19.003 -1.872 1.00 9.99 C \r
-ATOM 4760 CA VAL C 233 0.778 19.232 -3.168 1.00 10.49 C \r
-ATOM 4767 CA SER C 234 1.043 17.769 -6.694 1.00 19.00 C \r
-ATOM 4773 CA ARG C 235 -2.240 19.042 -8.206 1.00 23.13 C \r
-ATOM 4784 CA GLU C 236 -2.069 22.459 -6.578 1.00 17.58 C \r
-ATOM 4793 CA GLN C 237 1.546 23.511 -6.623 1.00 15.89 C \r
-ATOM 4802 CA THR C 238 4.202 24.018 -9.275 1.00 17.86 C \r
-ATOM 4809 CA ASN C 239 7.922 24.800 -9.182 1.00 15.15 C \r
-ATOM 4817 CA ALA C 240 9.558 27.791 -10.892 1.00 21.51 C \r
-ATOM 4822 CA ALA C 241 9.475 25.887 -14.174 1.00 24.05 C \r
-ATOM 4827 CA GLY C 242 5.741 25.110 -13.938 1.00 26.25 C \r
-ATOM 4831 CA GLU C 243 5.999 21.359 -13.153 1.00 25.92 C \r
-ATOM 4840 CA ARG C 244 3.679 19.536 -10.704 1.00 24.04 C \r
-ATOM 4851 CA MET C 245 5.076 19.643 -7.174 1.00 18.58 C \r
-ATOM 4859 CA TYR C 246 5.784 16.047 -6.100 1.00 14.16 C \r
-ATOM 4871 CA ILE C 247 7.910 15.343 -3.034 1.00 16.78 C \r
-ATOM 4879 CA GLN C 248 11.089 15.070 -5.120 1.00 18.72 C \r
-ATOM 4888 CA THR C 249 10.168 18.255 -6.921 1.00 20.93 C \r
-ATOM 4895 CA ARG C 250 9.962 20.031 -3.567 1.00 19.25 C \r
-ATOM 4906 CA MET C 251 13.275 18.471 -2.561 1.00 19.40 C \r
-ATOM 4914 CA ALA C 252 14.910 19.812 -5.760 1.00 20.48 C \r
-ATOM 4919 CA GLU C 253 14.456 23.418 -4.569 1.00 18.19 C \r
-ATOM 4928 CA TYR C 254 16.804 22.515 -1.673 1.00 17.80 C \r
-ATOM 4940 CA LYS C 255 19.038 20.415 -3.902 1.00 20.66 C \r
-ATOM 4949 CA GLU C 256 22.452 21.603 -2.682 1.00 16.05 C \r
-ATOM 4958 CA GLU C 257 21.544 21.914 0.993 1.00 15.89 C \r
-ATOM 4967 CA LEU C 258 20.377 18.297 0.919 1.00 20.74 C \r
-ATOM 4975 CA TRP C 259 23.388 16.939 -0.965 1.00 23.45 C \r
-ATOM 4989 CA GLU C 260 25.645 18.669 1.563 1.00 24.08 C \r
-ATOM 4998 CA LEU C 261 23.573 17.378 4.477 1.00 24.74 C \r
-ATOM 5006 CA LEU C 262 24.020 13.928 2.938 1.00 26.14 C \r
-ATOM 5014 CA LYS C 263 27.792 14.091 3.402 1.00 25.40 C \r
-ATOM 5023 CA LYS C 264 27.457 14.521 7.176 1.00 31.47 C \r
-ATOM 5032 CA ASP C 265 27.877 11.474 9.425 1.00 35.31 C \r
-ATOM 5040 CA ASN C 266 24.934 12.482 11.620 1.00 29.63 C \r
-ATOM 5048 CA THR C 267 22.321 12.795 8.832 1.00 28.00 C \r
-ATOM 5055 CA TYR C 268 19.556 10.160 8.808 1.00 27.00 C \r
-ATOM 5067 CA VAL C 269 17.143 9.903 5.884 1.00 24.65 C \r
-ATOM 5074 CA TYR C 270 13.890 8.016 6.276 1.00 23.37 C \r
-ATOM 5086 CA MET C 271 11.373 7.327 3.518 1.00 18.93 C \r
-ATOM 5094 CA CYS C 272 7.834 6.074 4.043 1.00 18.24 C \r
-ATOM 5100 CA GLY C 273 4.784 5.874 1.826 1.00 22.39 C \r
-ATOM 5104 CA LEU C 274 3.837 4.483 -1.568 1.00 26.95 C \r
-ATOM 5112 CA LYS C 275 6.305 2.384 -3.532 1.00 32.36 C \r
-ATOM 5121 CA GLY C 276 7.741 4.199 -6.514 1.00 37.46 C \r
-ATOM 5125 CA MET C 277 7.714 7.455 -4.608 1.00 28.76 C \r
-ATOM 5133 CA GLU C 278 11.430 6.639 -4.425 1.00 32.22 C \r
-ATOM 5142 CA LYS C 279 12.017 6.321 -8.153 1.00 29.94 C \r
-ATOM 5151 CA GLY C 280 11.317 10.057 -8.293 1.00 24.18 C \r
-ATOM 5155 CA ILE C 281 13.766 10.673 -5.460 1.00 23.68 C \r
-ATOM 5163 CA ASP C 282 16.431 8.365 -6.934 1.00 26.58 C \r
-ATOM 5171 CA ASP C 283 16.211 10.530 -10.054 1.00 28.70 C \r
-ATOM 5179 CA ILE C 284 17.089 13.937 -8.538 1.00 27.28 C \r
-ATOM 5187 CA MET C 285 19.706 12.222 -6.388 1.00 27.45 C \r
-ATOM 5195 CA VAL C 286 21.377 10.712 -9.470 1.00 30.74 C \r
-ATOM 5202 CA SER C 287 21.619 14.159 -11.061 1.00 32.14 C \r
-ATOM 5208 CA LEU C 288 23.240 15.463 -7.873 1.00 34.20 C \r
-ATOM 5216 CA ALA C 289 25.801 12.653 -7.874 1.00 40.16 C \r
-ATOM 5221 CA GLU C 290 26.837 12.825 -11.536 1.00 41.84 C \r
-ATOM 5230 CA LYS C 291 27.855 16.387 -10.793 1.00 43.17 C \r
-ATOM 5239 CA ASP C 292 30.299 15.115 -8.139 1.00 41.84 C \r
-ATOM 5247 CA GLY C 293 31.237 12.232 -10.420 1.00 46.12 C \r
-ATOM 5251 CA ILE C 294 30.053 9.669 -7.864 1.00 45.54 C \r
-ATOM 5259 CA ASP C 295 27.399 6.998 -8.480 1.00 41.14 C \r
-ATOM 5267 CA TRP C 296 24.222 7.605 -6.479 1.00 30.67 C \r
-ATOM 5281 CA PHE C 297 23.381 3.910 -6.151 1.00 31.97 C \r
-ATOM 5292 CA ASP C 298 26.856 2.916 -4.907 1.00 38.12 C \r
-ATOM 5300 CA TYR C 299 26.671 5.875 -2.540 1.00 39.05 C \r
-ATOM 5312 CA LYS C 300 23.196 4.971 -1.294 1.00 41.63 C \r
-ATOM 5321 CA LYS C 301 24.542 1.489 -0.577 1.00 43.40 C \r
-ATOM 5330 CA GLN C 302 27.207 3.064 1.608 1.00 43.79 C \r
-ATOM 5339 CA LEU C 303 24.476 5.181 3.238 1.00 41.51 C \r
-ATOM 5347 CA LYS C 304 22.138 2.343 4.264 1.00 45.18 C \r
-ATOM 5356 CA ARG C 305 25.322 0.535 5.256 1.00 46.65 C \r
-ATOM 5367 CA GLY C 306 25.613 3.181 7.945 1.00 40.29 C \r
-ATOM 5371 CA ASP C 307 21.954 3.487 8.940 1.00 41.21 C \r
-ATOM 5379 CA GLN C 308 21.463 6.730 7.023 1.00 35.55 C \r
-ATOM 5388 CA TRP C 309 18.961 5.674 4.361 1.00 31.22 C \r
-ATOM 5402 CA ASN C 310 16.018 3.728 5.752 1.00 31.61 C \r
-ATOM 5410 CA VAL C 311 13.120 2.841 3.452 1.00 32.13 C \r
-ATOM 5417 CA GLU C 312 9.705 1.332 4.261 1.00 31.51 C \r
-ATOM 5426 CA VAL C 313 7.466 1.606 1.209 1.00 26.39 C \r
-ATOM 5433 CA TYR C 314 4.403 -0.343 0.111 1.00 25.42 C \r
+HEADER OXIDOREDUCTASE/ELECTRON TRANSPORT 08-MAY-00 1GAQ
+ATOM 2 CA GLU A 19 20.491 30.713 36.290 1.00 74.29 C
+ATOM 11 CA SER A 20 24.056 29.774 37.264 1.00 72.09 C
+ATOM 17 CA LYS A 21 27.517 31.289 37.563 1.00 70.09 C
+ATOM 26 CA LYS A 22 28.794 27.865 36.481 1.00 68.64 C
+ATOM 35 CA GLN A 23 29.484 26.806 32.884 1.00 70.46 C
+ATOM 44 CA GLU A 24 26.420 25.175 31.360 1.00 72.08 C
+ATOM 53 CA GLU A 25 26.736 26.049 27.683 1.00 70.43 C
+ATOM 62 CA GLY A 26 28.299 22.912 26.233 1.00 63.14 C
+ATOM 66 CA VAL A 27 26.863 20.704 28.982 1.00 54.50 C
+ATOM 73 CA VAL A 28 25.030 17.390 28.655 1.00 48.32 C
+ATOM 80 CA THR A 29 23.728 14.677 30.991 1.00 44.86 C
+ATOM 87 CA ASN A 30 22.327 11.164 30.703 1.00 45.42 C
+ATOM 95 CA LEU A 31 23.332 10.459 27.102 1.00 45.42 C
+ATOM 103 CA TYR A 32 23.549 6.898 28.380 1.00 45.88 C
+ATOM 115 CA LYS A 33 21.656 5.321 31.262 1.00 47.27 C
+ATOM 124 CA PRO A 34 21.991 2.046 33.248 1.00 48.99 C
+ATOM 131 CA LYS A 35 19.339 0.560 30.970 1.00 52.75 C
+ATOM 140 CA GLU A 36 21.580 0.855 27.886 1.00 53.33 C
+ATOM 149 CA PRO A 37 25.154 2.015 28.678 1.00 47.54 C
+ATOM 156 CA TYR A 38 27.929 2.872 26.249 1.00 41.98 C
+ATOM 168 CA VAL A 39 30.355 -0.017 25.909 1.00 41.48 C
+ATOM 175 CA GLY A 40 33.823 1.485 25.966 1.00 37.59 C
+ATOM 179 CA ARG A 41 37.165 -0.277 26.122 1.00 39.77 C
+ATOM 190 CA CYS A 42 40.148 -0.029 28.442 1.00 36.51 C
+ATOM 196 CA LEU A 43 43.095 1.441 26.554 1.00 36.13 C
+ATOM 204 CA LEU A 44 45.231 2.023 29.649 1.00 33.55 C
+ATOM 212 CA ASN A 45 45.140 1.026 33.307 1.00 27.79 C
+ATOM 220 CA THR A 46 48.056 1.800 35.617 1.00 28.75 C
+ATOM 227 CA LYS A 47 48.542 1.776 39.388 1.00 30.31 C
+ATOM 236 CA ILE A 48 49.564 5.317 40.376 1.00 31.32 C
+ATOM 244 CA THR A 49 50.339 4.682 44.059 1.00 37.62 C
+ATOM 251 CA GLY A 50 53.585 3.317 45.460 1.00 44.49 C
+ATOM 255 CA ASP A 51 53.706 -0.448 46.087 1.00 52.89 C
+ATOM 263 CA ASP A 52 53.910 0.545 49.751 1.00 55.23 C
+ATOM 271 CA ALA A 53 50.816 2.767 50.056 1.00 53.34 C
+ATOM 276 CA PRO A 54 47.904 1.940 52.405 1.00 50.60 C
+ATOM 283 CA GLY A 55 45.420 1.579 49.561 1.00 50.35 C
+ATOM 287 CA GLU A 56 46.098 1.286 45.836 1.00 42.53 C
+ATOM 296 CA THR A 57 44.534 3.816 43.480 1.00 41.14 C
+ATOM 303 CA TRP A 58 44.540 3.423 39.708 1.00 35.60 C
+ATOM 317 CA HIS A 59 44.468 5.853 36.796 1.00 31.89 C
+ATOM 327 CA MET A 60 42.658 4.227 33.866 1.00 31.65 C
+ATOM 335 CA VAL A 61 41.716 5.345 30.350 1.00 30.43 C
+ATOM 342 CA PHE A 62 38.669 4.172 28.360 1.00 34.36 C
+ATOM 353 CA SER A 63 37.657 4.908 24.772 1.00 34.69 C
+ATOM 359 CA THR A 64 34.448 6.828 23.951 1.00 36.96 C
+ATOM 366 CA GLU A 65 34.691 7.644 20.254 1.00 40.08 C
+ATOM 375 CA GLY A 66 33.742 11.183 21.285 1.00 40.22 C
+ATOM 379 CA LYS A 67 30.272 9.763 22.003 1.00 41.93 C
+ATOM 388 CA ILE A 68 30.279 11.116 25.577 1.00 41.52 C
+ATOM 396 CA PRO A 69 30.791 14.926 25.537 1.00 42.35 C
+ATOM 403 CA TYR A 70 31.228 15.232 29.299 1.00 39.84 C
+ATOM 415 CA ARG A 71 32.639 18.451 30.768 1.00 44.14 C
+ATOM 426 CA GLU A 72 35.122 19.278 33.515 1.00 43.82 C
+ATOM 435 CA GLY A 73 33.472 18.458 36.835 1.00 41.97 C
+ATOM 439 CA GLN A 74 30.929 15.874 35.657 1.00 37.19 C
+ATOM 448 CA SER A 75 31.285 12.124 36.138 1.00 38.28 C
+ATOM 454 CA ILE A 76 30.458 8.792 34.539 1.00 36.84 C
+ATOM 462 CA GLY A 77 28.983 5.620 35.918 1.00 35.39 C
+ATOM 466 CA VAL A 78 30.311 2.108 35.530 1.00 32.05 C
+ATOM 473 CA ILE A 79 28.458 -1.201 35.591 1.00 32.67 C
+ATOM 481 CA ALA A 80 30.745 -4.018 36.644 1.00 35.36 C
+ATOM 486 CA ASP A 81 30.359 -7.373 34.872 1.00 38.72 C
+ATOM 494 CA GLY A 82 28.308 -10.332 36.110 1.00 45.79 C
+ATOM 498 CA VAL A 83 25.820 -10.242 39.001 1.00 52.24 C
+ATOM 505 CA ASP A 84 25.838 -10.250 42.834 1.00 60.54 C
+ATOM 513 CA LYS A 85 25.014 -13.158 45.196 1.00 66.72 C
+ATOM 522 CA ASN A 86 21.414 -13.062 43.904 1.00 67.37 C
+ATOM 530 CA GLY A 87 21.724 -13.423 40.136 1.00 64.74 C
+ATOM 534 CA LYS A 88 20.971 -9.733 39.570 1.00 61.12 C
+ATOM 543 CA PRO A 89 23.054 -7.201 37.561 1.00 54.68 C
+ATOM 550 CA HIS A 90 25.224 -4.957 39.755 1.00 44.44 C
+ATOM 560 CA LYS A 91 23.940 -1.433 40.260 1.00 40.48 C
+ATOM 569 CA VAL A 92 25.803 1.546 38.843 1.00 38.45 C
+ATOM 576 CA ARG A 93 28.709 2.986 40.828 1.00 38.93 C
+ATOM 587 CA LEU A 94 29.778 6.584 40.096 1.00 34.37 C
+ATOM 595 CA TYR A 95 33.309 7.878 39.513 1.00 30.27 C
+ATOM 607 CA SER A 96 34.425 11.475 39.057 1.00 29.44 C
+ATOM 613 CA ILE A 97 36.029 12.090 35.662 1.00 27.61 C
+ATOM 621 CA ALA A 98 39.769 12.693 36.069 1.00 31.12 C
+ATOM 626 CA SER A 99 40.393 13.712 32.475 1.00 32.42 C
+ATOM 632 CA SER A 100 39.566 17.142 31.059 1.00 36.14 C
+ATOM 638 CA ALA A 101 37.097 17.367 28.154 1.00 41.07 C
+ATOM 643 CA ILE A 102 39.764 16.549 25.527 1.00 47.65 C
+ATOM 651 CA GLY A 103 41.172 13.692 27.599 1.00 46.77 C
+ATOM 655 CA ASP A 104 44.730 12.612 28.289 1.00 43.82 C
+ATOM 663 CA PHE A 105 45.115 12.065 24.522 1.00 41.52 C
+ATOM 674 CA GLY A 106 43.862 15.455 23.328 1.00 41.66 C
+ATOM 678 CA ASP A 107 41.355 13.883 20.926 1.00 40.90 C
+ATOM 686 CA SER A 108 38.132 14.250 22.954 1.00 42.95 C
+ATOM 692 CA LYS A 109 37.967 10.535 22.224 1.00 44.74 C
+ATOM 701 CA THR A 110 38.731 9.184 25.704 1.00 41.09 C
+ATOM 708 CA VAL A 111 37.728 9.519 29.374 1.00 39.03 C
+ATOM 715 CA SER A 112 39.912 8.705 32.399 1.00 37.17 C
+ATOM 721 CA LEU A 113 39.098 7.476 35.935 1.00 32.10 C
+ATOM 729 CA CYS A 114 40.964 7.578 39.261 1.00 30.65 C
+ATOM 735 CA VAL A 115 39.724 4.459 41.060 1.00 33.45 C
+ATOM 742 CA LYS A 116 40.668 3.524 44.628 1.00 34.75 C
+ATOM 751 CA ARG A 117 40.376 -0.250 45.123 1.00 32.85 C
+ATOM 762 CA LEU A 118 38.137 -1.094 48.077 1.00 30.50 C
+ATOM 770 CA ILE A 119 39.376 -3.752 50.459 1.00 34.34 C
+ATOM 778 CA TYR A 120 38.699 -4.266 54.125 1.00 31.39 C
+ATOM 790 CA THR A 121 38.264 -7.086 56.567 1.00 28.83 C
+ATOM 797 CA ASN A 122 34.792 -7.477 58.109 1.00 26.51 C
+ATOM 805 CA ASP A 123 33.626 -8.382 61.634 1.00 31.58 C
+ATOM 813 CA ALA A 124 34.191 -12.077 60.901 1.00 27.84 C
+ATOM 818 CA GLY A 125 37.759 -11.844 59.728 1.00 32.39 C
+ATOM 822 CA GLU A 126 36.809 -12.146 56.073 1.00 35.82 C
+ATOM 831 CA ILE A 127 38.655 -9.932 53.598 1.00 38.42 C
+ATOM 839 CA VAL A 128 36.025 -8.261 51.421 1.00 33.73 C
+ATOM 846 CA LYS A 129 36.482 -6.484 48.090 1.00 31.87 C
+ATOM 855 CA GLY A 130 34.363 -3.680 46.686 1.00 26.91 C
+ATOM 859 CA VAL A 131 32.680 -5.051 43.569 1.00 27.89 C
+ATOM 866 CA CYS A 132 33.074 -2.246 41.018 1.00 28.46 C
+ATOM 872 CA SER A 133 36.266 -0.553 42.213 1.00 31.33 C
+ATOM 878 CA ASN A 134 37.861 -3.983 41.984 1.00 30.29 C
+ATOM 886 CA PHE A 135 36.318 -4.795 38.623 1.00 31.48 C
+ATOM 897 CA LEU A 136 37.926 -1.553 37.520 1.00 27.81 C
+ATOM 905 CA CYS A 137 41.417 -1.976 38.955 1.00 25.91 C
+ATOM 911 CA ASP A 138 41.605 -5.419 37.338 1.00 30.22 C
+ATOM 919 CA LEU A 139 40.462 -4.306 33.874 1.00 32.69 C
+ATOM 927 CA GLN A 140 42.851 -5.511 31.186 1.00 36.80 C
+ATOM 936 CA PRO A 141 43.380 -3.220 28.170 1.00 36.16 C
+ATOM 943 CA GLY A 142 40.864 -4.420 25.586 1.00 31.10 C
+ATOM 947 CA ASP A 143 38.129 -5.298 28.055 1.00 30.62 C
+ATOM 955 CA ASN A 144 34.690 -3.847 27.645 1.00 33.52 C
+ATOM 963 CA VAL A 145 33.430 -1.522 30.361 1.00 37.08 C
+ATOM 970 CA GLN A 146 29.817 -0.374 30.523 1.00 37.65 C
+ATOM 979 CA ILE A 147 29.547 3.413 31.045 1.00 30.95 C
+ATOM 987 CA THR A 148 26.637 5.791 31.832 1.00 29.95 C
+ATOM 994 CA GLY A 149 26.297 9.581 31.843 1.00 32.81 C
+ATOM 998 CA PRO A 150 27.785 12.148 31.800 1.00 34.98 C
+ATOM 1005 CA VAL A 151 26.376 12.668 35.275 1.00 36.53 C
+ATOM 1012 CA GLY A 152 26.196 15.756 37.474 1.00 43.09 C
+ATOM 1016 CA LYS A 153 26.048 19.528 37.068 1.00 48.37 C
+ATOM 1025 CA GLU A 154 26.921 20.540 40.633 1.00 49.70 C
+ATOM 1034 CA MET A 155 30.710 20.266 40.235 1.00 47.30 C
+ATOM 1042 CA LEU A 156 30.882 22.020 36.869 1.00 50.36 C
+ATOM 1050 CA MET A 157 33.362 24.883 36.404 1.00 55.29 C
+ATOM 1058 CA PRO A 158 32.521 28.612 36.605 1.00 54.88 C
+ATOM 1065 CA LYS A 159 32.291 30.776 33.464 1.00 54.92 C
+ATOM 1074 CA ASP A 160 34.497 33.503 34.939 1.00 57.22 C
+ATOM 1082 CA PRO A 161 38.055 32.687 33.759 1.00 58.62 C
+ATOM 1089 CA ASN A 162 39.524 35.240 36.163 1.00 60.44 C
+ATOM 1097 CA ALA A 163 37.814 33.910 39.279 1.00 55.80 C
+ATOM 1102 CA THR A 164 39.596 32.487 42.316 1.00 51.04 C
+ATOM 1109 CA ILE A 165 38.966 28.771 42.756 1.00 50.26 C
+ATOM 1117 CA ILE A 166 39.774 26.773 45.885 1.00 47.54 C
+ATOM 1125 CA MET A 167 39.883 23.014 45.324 1.00 46.38 C
+ATOM 1133 CA LEU A 168 39.700 20.963 48.522 1.00 42.18 C
+ATOM 1141 CA ALA A 169 40.377 17.316 47.770 1.00 36.41 C
+ATOM 1146 CA THR A 170 41.005 14.086 49.622 1.00 32.98 C
+ATOM 1153 CA GLY A 171 42.027 10.802 48.014 1.00 31.36 C
+ATOM 1157 CA THR A 172 40.386 10.037 44.680 1.00 30.48 C
+ATOM 1164 CA GLY A 173 38.640 13.335 45.359 1.00 33.99 C
+ATOM 1168 CA ILE A 174 41.418 15.036 43.394 1.00 35.66 C
+ATOM 1176 CA ALA A 175 39.758 13.585 40.300 1.00 36.00 C
+ATOM 1181 CA PRO A 176 37.445 16.385 39.155 1.00 39.41 C
+ATOM 1188 CA PHE A 177 40.109 18.971 39.976 1.00 43.21 C
+ATOM 1199 CA ARG A 178 42.726 17.119 37.955 1.00 41.09 C
+ATOM 1210 CA SER A 179 40.235 17.536 35.124 1.00 39.92 C
+ATOM 1216 CA PHE A 180 39.808 21.204 36.009 1.00 39.23 C
+ATOM 1227 CA LEU A 181 43.528 21.949 35.995 1.00 39.50 C
+ATOM 1235 CA TRP A 182 44.305 20.081 32.770 1.00 41.47 C
+ATOM 1249 CA LYS A 183 42.141 22.654 30.972 1.00 48.08 C
+ATOM 1258 CA MET A 184 43.477 25.547 33.062 1.00 52.79 C
+ATOM 1266 CA PHE A 185 47.102 25.043 32.014 1.00 57.35 C
+ATOM 1277 CA PHE A 186 48.075 21.921 30.051 1.00 55.98 C
+ATOM 1288 CA GLU A 187 45.758 23.173 27.297 1.00 54.44 C
+ATOM 1297 CA LYS A 188 44.908 26.236 25.196 1.00 51.29 C
+ATOM 1306 CA HIS A 189 41.395 27.080 24.003 1.00 51.35 C
+ATOM 1316 CA ASP A 190 40.108 29.972 21.873 1.00 54.30 C
+ATOM 1324 CA ASP A 191 37.199 30.481 24.249 1.00 53.95 C
+ATOM 1332 CA TYR A 192 38.816 29.937 27.634 1.00 50.68 C
+ATOM 1344 CA LYS A 193 41.916 31.388 29.230 1.00 51.00 C
+ATOM 1353 CA PHE A 194 42.322 30.967 32.956 1.00 52.09 C
+ATOM 1364 CA ASN A 195 43.672 34.234 34.312 1.00 56.46 C
+ATOM 1372 CA GLY A 196 42.616 34.078 37.969 1.00 57.17 C
+ATOM 1376 CA LEU A 197 43.874 31.920 40.843 1.00 57.92 C
+ATOM 1384 CA GLY A 198 43.549 28.151 41.086 1.00 56.67 C
+ATOM 1388 CA TRP A 199 44.258 26.886 44.592 1.00 51.55 C
+ATOM 1402 CA LEU A 200 44.411 23.170 45.379 1.00 49.17 C
+ATOM 1410 CA PHE A 201 44.558 21.335 48.709 1.00 48.60 C
+ATOM 1421 CA LEU A 202 45.122 17.570 48.598 1.00 45.34 C
+ATOM 1429 CA GLY A 203 44.885 15.480 51.742 1.00 48.55 C
+ATOM 1433 CA VAL A 204 46.225 11.936 51.755 1.00 50.23 C
+ATOM 1440 CA PRO A 205 47.942 9.740 54.365 1.00 51.51 C
+ATOM 1447 CA THR A 206 51.284 9.148 52.648 1.00 50.21 C
+ATOM 1454 CA SER A 207 53.551 10.483 49.894 1.00 49.38 C
+ATOM 1460 CA SER A 208 53.267 7.061 48.259 1.00 43.49 C
+ATOM 1466 CA SER A 209 49.588 8.049 48.093 1.00 42.57 C
+ATOM 1472 CA LEU A 210 49.990 11.424 46.364 1.00 42.65 C
+ATOM 1480 CA LEU A 211 48.121 11.446 43.035 1.00 39.33 C
+ATOM 1488 CA TYR A 212 49.516 13.214 39.935 1.00 40.89 C
+ATOM 1500 CA LYS A 213 52.128 15.234 41.873 1.00 45.88 C
+ATOM 1509 CA GLU A 214 54.518 15.406 38.899 1.00 53.22 C
+ATOM 1518 CA GLU A 215 51.680 16.911 36.889 1.00 55.16 C
+ATOM 1527 CA PHE A 216 50.757 19.475 39.514 1.00 60.55 C
+ATOM 1538 CA GLY A 217 54.488 20.153 39.524 1.00 66.64 C
+ATOM 1542 CA LYS A 218 54.575 21.110 35.850 1.00 68.86 C
+ATOM 1551 CA MET A 219 51.398 23.159 36.265 1.00 66.97 C
+ATOM 1559 CA LYS A 220 53.138 25.090 39.061 1.00 65.97 C
+ATOM 1568 CA GLU A 221 55.654 26.250 36.459 1.00 70.02 C
+ATOM 1577 CA ARG A 222 53.584 26.507 33.294 1.00 73.48 C
+ATOM 1588 CA ALA A 223 52.005 29.449 35.175 1.00 76.21 C
+ATOM 1593 CA PRO A 224 53.272 29.877 38.804 1.00 79.25 C
+ATOM 1600 CA GLU A 225 51.296 33.124 39.020 1.00 81.84 C
+ATOM 1609 CA ASN A 226 47.873 31.528 38.622 1.00 78.84 C
+ATOM 1617 CA PHE A 227 48.418 28.176 40.350 1.00 75.28 C
+ATOM 1628 CA ARG A 228 49.090 27.305 43.996 1.00 72.05 C
+ATOM 1639 CA VAL A 229 49.165 23.724 45.323 1.00 68.82 C
+ATOM 1646 CA ASP A 230 49.258 22.581 48.958 1.00 66.54 C
+ATOM 1654 CA TYR A 231 49.605 18.943 49.968 1.00 60.31 C
+ATOM 1666 CA ALA A 232 48.551 17.560 53.332 1.00 57.39 C
+ATOM 1671 CA VAL A 233 50.260 14.228 53.945 1.00 57.14 C
+ATOM 1678 CA SER A 234 48.465 13.579 57.244 1.00 60.81 C
+ATOM 1684 CA ARG A 235 50.959 11.010 58.514 1.00 60.74 C
+ATOM 1695 CA GLU A 236 54.268 12.594 57.481 1.00 59.17 C
+ATOM 1704 CA GLN A 237 53.494 16.197 58.450 1.00 59.62 C
+ATOM 1713 CA THR A 238 52.590 18.236 61.521 1.00 63.18 C
+ATOM 1720 CA ASN A 239 52.019 21.937 62.188 1.00 66.71 C
+ATOM 1728 CA ALA A 240 52.096 23.767 65.537 1.00 70.06 C
+ATOM 1733 CA ALA A 241 51.302 21.400 68.410 1.00 72.44 C
+ATOM 1738 CA GLY A 242 52.383 18.324 66.438 1.00 72.38 C
+ATOM 1742 CA GLU A 243 48.826 18.169 65.110 1.00 69.71 C
+ATOM 1751 CA ARG A 244 48.674 15.776 62.148 1.00 67.21 C
+ATOM 1762 CA MET A 245 48.712 17.796 58.933 1.00 64.20 C
+ATOM 1770 CA TYR A 246 45.246 17.082 57.556 1.00 60.65 C
+ATOM 1782 CA ILE A 247 43.617 18.437 54.409 1.00 62.98 C
+ATOM 1790 CA GLN A 248 42.035 21.001 56.761 1.00 64.64 C
+ATOM 1799 CA THR A 249 45.057 21.461 59.009 1.00 63.37 C
+ATOM 1806 CA ARG A 250 46.891 22.664 55.903 1.00 62.47 C
+ATOM 1817 CA MET A 251 44.123 25.201 55.251 1.00 63.35 C
+ATOM 1825 CA ALA A 252 44.571 26.305 58.854 1.00 65.73 C
+ATOM 1830 CA GLU A 253 47.973 27.809 58.076 1.00 65.97 C
+ATOM 1839 CA TYR A 254 46.267 30.063 55.517 1.00 65.83 C
+ATOM 1851 CA LYS A 255 42.991 30.559 57.379 1.00 70.30 C
+ATOM 1860 CA GLU A 256 43.578 34.326 57.320 1.00 73.73 C
+ATOM 1869 CA GLU A 257 44.189 34.738 53.593 1.00 71.52 C
+ATOM 1878 CA LEU A 258 41.459 32.202 52.893 1.00 73.38 C
+ATOM 1886 CA TRP A 259 38.790 34.074 54.853 1.00 76.72 C
+ATOM 1900 CA GLU A 260 39.721 37.275 53.006 1.00 78.61 C
+ATOM 1909 CA LEU A 261 38.580 35.553 49.815 1.00 75.71 C
+ATOM 1917 CA LEU A 262 35.391 33.881 51.047 1.00 73.74 C
+ATOM 1925 CA LYS A 263 33.562 37.165 50.535 1.00 73.64 C
+ATOM 1934 CA LYS A 264 34.299 38.143 46.954 1.00 72.48 C
+ATOM 1943 CA ASP A 265 31.954 37.554 43.993 1.00 69.65 C
+ATOM 1951 CA ASN A 266 34.660 35.649 42.106 1.00 65.06 C
+ATOM 1959 CA THR A 267 35.835 33.117 44.683 1.00 58.24 C
+ATOM 1966 CA TYR A 268 34.459 29.646 43.909 1.00 51.04 C
+ATOM 1978 CA VAL A 269 35.192 26.827 46.382 1.00 44.95 C
+ATOM 1985 CA TYR A 270 35.012 23.150 45.368 1.00 44.96 C
+ATOM 1997 CA MET A 271 35.162 20.122 47.656 1.00 41.72 C
+ATOM 2005 CA CYS A 272 35.314 16.468 46.632 1.00 37.19 C
+ATOM 2011 CA GLY A 273 36.343 13.080 47.951 1.00 37.65 C
+ATOM 2015 CA LEU A 274 36.040 10.886 51.020 1.00 39.39 C
+ATOM 2023 CA LYS A 275 33.076 12.283 52.955 1.00 44.86 C
+ATOM 2032 CA GLY A 276 34.322 13.183 56.400 1.00 49.16 C
+ATOM 2036 CA MET A 277 36.932 15.608 55.168 1.00 53.30 C
+ATOM 2044 CA GLU A 278 33.917 17.921 55.165 1.00 56.74 C
+ATOM 2053 CA LYS A 279 33.531 18.089 58.947 1.00 59.30 C
+ATOM 2062 CA GLY A 280 36.982 19.413 59.776 1.00 58.94 C
+ATOM 2066 CA ILE A 281 36.705 22.048 57.063 1.00 61.43 C
+ATOM 2074 CA ASP A 282 33.453 23.402 58.515 1.00 67.06 C
+ATOM 2082 CA ASP A 283 35.050 23.189 61.972 1.00 74.12 C
+ATOM 2090 CA ILE A 284 37.991 25.422 61.040 1.00 78.49 C
+ATOM 2098 CA MET A 285 35.456 27.566 59.201 1.00 82.25 C
+ATOM 2106 CA VAL A 286 32.941 27.959 62.027 1.00 83.44 C
+ATOM 2113 CA SER A 287 35.610 29.113 64.469 1.00 83.43 C
+ATOM 2119 CA LEU A 288 36.927 31.601 61.887 1.00 85.53 C
+ATOM 2127 CA ALA A 289 33.506 33.025 60.970 1.00 86.85 C
+ATOM 2132 CA GLU A 290 31.841 32.696 64.387 1.00 89.26 C
+ATOM 2141 CA LYS A 291 34.438 35.312 65.347 1.00 88.73 C
+ATOM 2150 CA ASP A 292 33.635 37.891 62.652 1.00 88.03 C
+ATOM 2158 CA GLY A 293 30.219 37.450 61.081 1.00 87.88 C
+ATOM 2162 CA ILE A 294 27.319 35.051 61.511 1.00 84.61 C
+ATOM 2170 CA ASP A 295 27.665 31.329 62.188 1.00 82.45 C
+ATOM 2178 CA TRP A 296 29.539 29.627 59.355 1.00 80.12 C
+ATOM 2192 CA PHE A 297 26.527 27.452 58.512 1.00 78.99 C
+ATOM 2203 CA ASP A 298 24.167 30.241 57.486 1.00 76.37 C
+ATOM 2211 CA TYR A 299 27.074 31.748 55.561 1.00 74.07 C
+ATOM 2223 CA LYS A 300 27.679 28.620 53.473 1.00 74.31 C
+ATOM 2232 CA LYS A 301 24.059 29.146 52.464 1.00 75.97 C
+ATOM 2241 CA GLN A 302 24.921 32.563 51.018 1.00 75.38 C
+ATOM 2250 CA LEU A 303 27.896 31.099 49.155 1.00 72.10 C
+ATOM 2258 CA LYS A 304 25.917 28.207 47.690 1.00 72.08 C
+ATOM 2267 CA ARG A 305 23.595 31.021 46.594 1.00 74.82 C
+ATOM 2278 CA GLY A 306 26.071 32.136 43.958 1.00 71.84 C
+ATOM 2282 CA ASP A 307 27.505 28.682 43.220 1.00 67.23 C
+ATOM 2290 CA GLN A 308 30.620 29.291 45.346 1.00 60.18 C
+ATOM 2299 CA TRP A 309 30.585 26.177 47.537 1.00 52.25 C
+ATOM 2313 CA ASN A 310 29.894 22.997 45.597 1.00 45.03 C
+ATOM 2321 CA VAL A 311 30.327 19.716 47.403 1.00 39.13 C
+ATOM 2328 CA GLU A 312 30.507 16.190 46.110 1.00 35.17 C
+ATOM 2337 CA VAL A 313 31.761 13.957 48.861 1.00 30.12 C
+ATOM 2344 CA TYR A 314 31.112 10.230 49.021 1.00 28.23 C
+ATOM 2358 CA ALA B 1 2.311 24.702 44.475 1.00 74.17 C
+ATOM 2363 CA THR B 2 3.590 24.207 48.055 1.00 74.76 C
+ATOM 2370 CA TYR B 3 3.069 20.876 49.837 1.00 73.52 C
+ATOM 2382 CA ASN B 4 3.748 19.874 53.435 1.00 75.75 C
+ATOM 2390 CA VAL B 5 6.618 17.399 53.868 1.00 75.95 C
+ATOM 2397 CA LYS B 6 7.769 15.523 56.983 1.00 77.70 C
+ATOM 2406 CA LEU B 7 11.351 14.325 57.458 1.00 78.91 C
+ATOM 2414 CA ILE B 8 11.807 11.511 59.985 1.00 81.00 C
+ATOM 2422 CA THR B 9 15.560 12.046 60.247 1.00 87.49 C
+ATOM 2429 CA PRO B 10 17.662 9.793 62.539 1.00 92.94 C
+ATOM 2436 CA GLU B 11 18.161 13.147 64.282 1.00 96.61 C
+ATOM 2445 CA GLY B 12 14.579 14.154 65.041 1.00 97.52 C
+ATOM 2449 CA GLU B 13 11.602 14.823 62.748 1.00 96.90 C
+ATOM 2458 CA VAL B 14 11.547 17.892 60.480 1.00 96.63 C
+ATOM 2465 CA GLU B 15 8.340 19.701 59.440 1.00 94.86 C
+ATOM 2474 CA LEU B 16 9.471 21.479 56.254 1.00 91.55 C
+ATOM 2482 CA GLN B 17 7.281 23.141 53.598 1.00 89.75 C
+ATOM 2491 CA VAL B 18 8.485 22.069 50.145 1.00 87.92 C
+ATOM 2498 CA PRO B 19 6.906 23.558 46.964 1.00 86.35 C
+ATOM 2505 CA ASP B 20 5.990 21.744 43.717 1.00 86.29 C
+ATOM 2513 CA ASP B 21 8.578 22.751 41.083 1.00 83.78 C
+ATOM 2521 CA VAL B 22 11.385 22.401 43.639 1.00 80.98 C
+ATOM 2528 CA TYR B 23 13.439 19.280 44.481 1.00 77.04 C
+ATOM 2540 CA ILE B 24 13.212 18.196 48.120 1.00 76.45 C
+ATOM 2548 CA LEU B 25 16.959 18.133 48.851 1.00 75.15 C
+ATOM 2556 CA ASP B 26 17.154 21.745 47.689 1.00 75.80 C
+ATOM 2564 CA GLN B 27 14.616 22.906 50.280 1.00 76.31 C
+ATOM 2573 CA ALA B 28 16.562 20.957 52.914 1.00 78.86 C
+ATOM 2578 CA GLU B 29 19.698 23.011 52.198 1.00 81.51 C
+ATOM 2587 CA GLU B 30 17.491 26.106 52.510 1.00 83.25 C
+ATOM 2596 CA ASP B 31 15.857 25.933 55.935 1.00 81.92 C
+ATOM 2604 CA GLY B 32 19.280 24.859 57.151 1.00 79.08 C
+ATOM 2608 CA ILE B 33 18.621 21.130 57.157 1.00 76.93 C
+ATOM 2616 CA ASP B 34 21.528 18.731 56.618 1.00 73.53 C
+ATOM 2624 CA LEU B 35 20.738 15.738 54.421 1.00 67.74 C
+ATOM 2632 CA PRO B 36 23.138 13.391 52.547 1.00 65.90 C
+ATOM 2639 CA TYR B 37 23.916 14.226 48.912 1.00 64.85 C
+ATOM 2651 CA SER B 38 26.659 13.373 46.412 1.00 62.58 C
+ATOM 2657 CA CYS B 39 26.193 13.603 42.652 1.00 60.99 C
+ATOM 2663 CA ARG B 40 22.908 15.441 43.251 1.00 58.35 C
+ATOM 2674 CA ALA B 41 21.699 14.108 39.886 1.00 56.38 C
+ATOM 2679 CA GLY B 42 19.886 10.955 40.991 1.00 56.66 C
+ATOM 2683 CA SER B 43 22.465 8.336 40.010 1.00 58.55 C
+ATOM 2689 CA CYS B 44 23.548 7.052 43.447 1.00 56.27 C
+ATOM 2695 CA SER B 45 22.057 5.987 46.791 1.00 58.20 C
+ATOM 2701 CA SER B 46 23.574 8.773 48.890 1.00 59.13 C
+ATOM 2707 CA CYS B 47 20.220 10.475 49.517 1.00 65.64 C
+ATOM 2713 CA ALA B 48 17.911 7.436 49.610 1.00 69.71 C
+ATOM 2718 CA GLY B 49 14.733 7.635 51.681 1.00 73.09 C
+ATOM 2722 CA LYS B 50 11.712 5.340 52.183 1.00 73.77 C
+ATOM 2731 CA VAL B 51 8.551 7.412 51.568 1.00 76.51 C
+ATOM 2738 CA VAL B 52 5.237 7.081 53.429 1.00 78.85 C
+ATOM 2745 CA SER B 53 2.180 9.376 53.647 1.00 79.57 C
+ATOM 2751 CA GLY B 54 2.118 10.991 50.218 1.00 76.32 C
+ATOM 2755 CA SER B 55 3.577 10.944 46.726 1.00 76.31 C
+ATOM 2761 CA VAL B 56 6.436 12.592 44.828 1.00 77.50 C
+ATOM 2768 CA ASP B 57 7.691 12.960 41.243 1.00 76.83 C
+ATOM 2776 CA GLN B 58 11.150 11.483 40.555 1.00 76.66 C
+ATOM 2785 CA SER B 59 10.976 10.827 36.792 1.00 80.19 C
+ATOM 2791 CA ASP B 60 14.688 11.644 36.510 1.00 83.51 C
+ATOM 2799 CA GLN B 61 15.175 8.137 37.916 1.00 85.74 C
+ATOM 2808 CA SER B 62 18.644 7.080 36.699 1.00 85.85 C
+ATOM 2814 CA TYR B 63 19.324 5.049 39.852 1.00 84.49 C
+ATOM 2826 CA LEU B 64 15.683 4.296 40.629 1.00 89.06 C
+ATOM 2834 CA ASP B 65 15.356 0.604 39.742 1.00 92.21 C
+ATOM 2842 CA ASP B 66 12.421 -1.791 39.331 1.00 92.35 C
+ATOM 2850 CA GLY B 67 10.747 -2.542 42.659 1.00 89.07 C
+ATOM 2854 CA GLN B 68 12.336 0.632 44.010 1.00 88.41 C
+ATOM 2863 CA ILE B 69 9.483 2.828 42.742 1.00 86.11 C
+ATOM 2871 CA ALA B 70 7.060 0.441 44.446 1.00 81.10 C
+ATOM 2876 CA ASP B 71 8.985 -0.310 47.648 1.00 76.82 C
+ATOM 2884 CA GLY B 72 8.653 3.423 48.186 1.00 73.00 C
+ATOM 2888 CA TRP B 73 12.342 4.386 48.095 1.00 67.93 C
+ATOM 2902 CA VAL B 74 13.052 8.007 47.136 1.00 63.84 C
+ATOM 2909 CA LEU B 75 16.093 9.940 45.892 1.00 58.37 C
+ATOM 2917 CA THR B 76 15.524 13.198 47.826 1.00 55.82 C
+ATOM 2924 CA CYS B 77 17.941 15.109 45.556 1.00 58.23 C
+ATOM 2930 CA HIS B 78 15.777 14.389 42.513 1.00 64.55 C
+ATOM 2940 CA ALA B 79 12.108 14.429 43.512 1.00 68.40 C
+ATOM 2945 CA TYR B 80 9.442 17.152 43.581 1.00 69.69 C
+ATOM 2957 CA PRO B 81 6.414 16.584 45.842 1.00 71.39 C
+ATOM 2964 CA THR B 82 3.015 16.014 44.179 1.00 73.67 C
+ATOM 2971 CA SER B 83 1.278 15.771 47.557 1.00 76.90 C
+ATOM 2977 CA ASP B 84 1.940 16.119 51.289 1.00 75.20 C
+ATOM 2985 CA VAL B 85 4.840 13.765 52.050 1.00 71.37 C
+ATOM 2992 CA VAL B 86 6.363 11.824 54.956 1.00 70.12 C
+ATOM 2999 CA ILE B 87 9.770 10.300 54.188 1.00 74.18 C
+ATOM 3007 CA GLU B 88 12.211 8.403 56.410 1.00 78.53 C
+ATOM 3012 CA THR B 89 15.541 9.964 55.407 1.00 79.79 C
+ATOM 3019 CA HIS B 90 19.062 8.538 55.881 1.00 79.40 C
+ATOM 3029 CA LYS B 91 17.584 5.099 55.099 1.00 84.52 C
+ATOM 3038 CA GLU B 92 20.016 2.596 53.549 1.00 91.64 C
+ATOM 3047 CA GLU B 93 20.192 -0.858 51.981 1.00 98.97 C
+ATOM 3056 CA GLU B 94 23.321 -2.924 51.298 1.00106.32 C
+ATOM 3065 CA LEU B 95 22.104 -6.552 51.453 1.00111.32 C
+ATOM 3073 CA THR B 96 18.778 -8.417 51.866 1.00116.01 C
+ATOM 3080 CA GLY B 97 18.877 -11.302 49.394 1.00116.63 C
+ATOM 3084 CA ALA B 98 22.056 -9.833 47.910 1.00116.02 C
+ATOM 3091 CA GLU C 19 26.080 -2.480 15.294 1.00 73.96 C
+ATOM 3100 CA SER C 20 23.405 0.198 14.956 1.00 67.27 C
+ATOM 3106 CA LYS C 21 22.937 3.927 15.380 1.00 59.27 C
+ATOM 3115 CA LYS C 22 19.198 3.481 15.874 1.00 58.42 C
+ATOM 3124 CA GLN C 23 17.251 3.141 19.137 1.00 59.89 C
+ATOM 3133 CA GLU C 24 17.931 -0.276 20.610 1.00 62.66 C
+ATOM 3142 CA GLU C 25 16.850 -0.453 24.226 1.00 64.27 C
+ATOM 3151 CA GLY C 26 13.211 -0.817 25.116 1.00 61.78 C
+ATOM 3155 CA VAL C 27 12.703 -2.073 21.582 1.00 58.37 C
+ATOM 3162 CA VAL C 28 10.779 -5.347 21.485 1.00 54.17 C
+ATOM 3169 CA THR C 29 9.481 -7.339 18.549 1.00 52.79 C
+ATOM 3176 CA ASN C 30 6.670 -9.775 17.786 1.00 51.30 C
+ATOM 3184 CA LEU C 31 4.863 -9.997 21.112 1.00 51.05 C
+ATOM 3192 CA TYR C 32 1.766 -11.297 19.327 1.00 50.51 C
+ATOM 3204 CA LYS C 33 1.373 -13.532 16.266 1.00 49.49 C
+ATOM 3213 CA PRO C 34 -1.609 -14.150 13.925 1.00 50.98 C
+ATOM 3220 CA LYS C 35 -2.450 -17.248 16.011 1.00 55.46 C
+ATOM 3229 CA GLU C 36 -2.977 -15.400 19.288 1.00 53.79 C
+ATOM 3238 CA PRO C 37 -3.251 -11.638 18.607 1.00 49.32 C
+ATOM 3245 CA TYR C 38 -3.674 -9.050 21.318 1.00 46.76 C
+ATOM 3257 CA VAL C 39 -7.276 -7.947 21.418 1.00 43.68 C
+ATOM 3264 CA GLY C 40 -7.415 -4.194 21.922 1.00 41.62 C
+ATOM 3268 CA ARG C 41 -10.273 -1.719 21.954 1.00 40.07 C
+ATOM 3279 CA CYS C 42 -11.026 1.064 19.477 1.00 36.37 C
+ATOM 3285 CA LEU C 43 -11.330 4.206 21.583 1.00 31.09 C
+ATOM 3293 CA LEU C 44 -11.337 6.671 18.673 1.00 28.46 C
+ATOM 3301 CA ASN C 45 -11.792 6.653 14.923 1.00 26.74 C
+ATOM 3309 CA THR C 46 -11.954 9.920 13.013 1.00 25.29 C
+ATOM 3316 CA LYS C 47 -11.667 10.775 9.352 1.00 21.50 C
+ATOM 3325 CA ILE C 48 -8.895 13.355 9.121 1.00 19.33 C
+ATOM 3333 CA THR C 49 -9.125 14.281 5.442 1.00 20.38 C
+ATOM 3340 CA GLY C 50 -11.630 16.676 3.855 1.00 20.12 C
+ATOM 3344 CA ASP C 51 -14.895 15.345 2.412 1.00 21.75 C
+ATOM 3352 CA ASP C 52 -13.889 16.693 -0.999 1.00 21.19 C
+ATOM 3360 CA ALA C 53 -10.651 14.683 -0.749 1.00 21.06 C
+ATOM 3365 CA PRO C 54 -10.036 11.974 -3.413 1.00 21.39 C
+ATOM 3372 CA GLY C 55 -9.982 9.067 -0.977 1.00 24.42 C
+ATOM 3376 CA GLU C 56 -10.374 9.298 2.857 1.00 22.08 C
+ATOM 3385 CA THR C 57 -7.723 8.611 5.517 1.00 20.31 C
+ATOM 3392 CA TRP C 58 -8.541 7.849 9.162 1.00 19.33 C
+ATOM 3406 CA HIS C 59 -6.758 8.520 12.438 1.00 22.68 C
+ATOM 3416 CA MET C 60 -7.645 5.951 15.108 1.00 27.16 C
+ATOM 3424 CA VAL C 61 -6.672 5.224 18.723 1.00 29.32 C
+ATOM 3431 CA PHE C 62 -6.669 1.704 20.220 1.00 34.23 C
+ATOM 3442 CA SER C 63 -6.102 0.643 23.847 1.00 37.05 C
+ATOM 3448 CA THR C 64 -3.096 -1.517 24.798 1.00 41.86 C
+ATOM 3455 CA GLU C 65 -3.169 -1.652 28.621 1.00 48.33 C
+ATOM 3464 CA GLY C 66 0.537 -0.885 28.318 1.00 52.45 C
+ATOM 3468 CA LYS C 67 0.955 -4.385 26.891 1.00 54.14 C
+ATOM 3477 CA ILE C 68 2.429 -3.211 23.570 1.00 51.52 C
+ATOM 3485 CA PRO C 69 5.602 -1.279 24.487 1.00 49.85 C
+ATOM 3492 CA TYR C 70 6.523 -0.180 20.967 1.00 44.48 C
+ATOM 3504 CA ARG C 71 9.185 2.353 19.993 1.00 40.96 C
+ATOM 3515 CA GLU C 72 8.727 5.317 17.688 1.00 33.49 C
+ATOM 3524 CA GLY C 73 8.913 3.876 14.164 1.00 30.16 C
+ATOM 3528 CA GLN C 74 7.423 0.399 14.427 1.00 31.26 C
+ATOM 3537 CA SER C 75 4.187 -0.913 12.966 1.00 33.65 C
+ATOM 3543 CA ILE C 76 1.454 -3.212 14.278 1.00 33.75 C
+ATOM 3551 CA GLY C 77 -0.295 -5.923 12.356 1.00 34.32 C
+ATOM 3555 CA VAL C 78 -4.060 -6.111 12.164 1.00 36.67 C
+ATOM 3562 CA ILE C 79 -6.137 -9.230 11.507 1.00 41.91 C
+ATOM 3570 CA ALA C 80 -9.427 -8.086 10.024 1.00 44.06 C
+ATOM 3575 CA ASP C 81 -12.530 -9.927 11.224 1.00 47.03 C
+ATOM 3583 CA GLY C 82 -13.972 -12.487 8.829 1.00 53.52 C
+ATOM 3587 CA VAL C 83 -12.521 -14.951 6.324 1.00 62.57 C
+ATOM 3594 CA ASP C 84 -11.856 -14.200 2.630 1.00 71.97 C
+ATOM 3602 CA LYS C 85 -12.935 -17.403 0.861 1.00 76.86 C
+ATOM 3611 CA ASN C 86 -13.690 -18.960 4.253 1.00 76.52 C
+ATOM 3619 CA GLY C 87 -10.006 -19.837 4.066 1.00 76.22 C
+ATOM 3623 CA LYS C 88 -8.802 -19.138 7.616 1.00 71.60 C
+ATOM 3632 CA PRO C 89 -8.651 -15.577 8.944 1.00 64.14 C
+ATOM 3639 CA HIS C 90 -7.547 -12.649 6.805 1.00 52.35 C
+ATOM 3649 CA LYS C 91 -3.753 -12.529 6.474 1.00 46.81 C
+ATOM 3658 CA VAL C 92 -2.180 -9.868 8.686 1.00 43.48 C
+ATOM 3665 CA ARG C 93 -1.491 -6.414 7.232 1.00 36.99 C
+ATOM 3676 CA LEU C 94 0.983 -3.882 8.601 1.00 32.95 C
+ATOM 3684 CA TYR C 95 0.340 -0.239 9.510 1.00 24.84 C
+ATOM 3696 CA SER C 96 3.003 2.101 10.803 1.00 23.32 C
+ATOM 3702 CA ILE C 97 2.244 3.502 14.236 1.00 24.12 C
+ATOM 3710 CA ALA C 98 1.243 7.179 13.932 1.00 22.32 C
+ATOM 3715 CA SER C 99 1.572 7.636 17.676 1.00 25.69 C
+ATOM 3721 CA SER C 100 4.752 7.924 19.726 1.00 28.83 C
+ATOM 3727 CA ALA C 101 5.741 5.521 22.508 1.00 35.61 C
+ATOM 3732 CA ILE C 102 3.906 7.635 25.079 1.00 38.39 C
+ATOM 3740 CA GLY C 103 0.899 7.826 22.742 1.00 31.93 C
+ATOM 3744 CA ASP C 104 -1.803 10.384 21.986 1.00 28.77 C
+ATOM 3752 CA PHE C 105 -3.050 10.293 25.607 1.00 37.05 C
+ATOM 3763 CA GLY C 106 0.503 10.389 26.967 1.00 39.36 C
+ATOM 3767 CA ASP C 107 -0.221 7.437 29.266 1.00 41.44 C
+ATOM 3775 CA SER C 108 1.566 4.766 27.217 1.00 42.18 C
+ATOM 3781 CA LYS C 109 -1.747 2.877 27.156 1.00 42.45 C
+ATOM 3790 CA THR C 110 -2.698 3.586 23.515 1.00 38.10 C
+ATOM 3797 CA VAL C 111 -1.603 2.971 19.906 1.00 32.79 C
+ATOM 3804 CA SER C 112 -2.671 5.020 16.872 1.00 29.60 C
+ATOM 3810 CA LEU C 113 -2.713 4.324 13.126 1.00 25.68 C
+ATOM 3818 CA CYS C 114 -3.142 6.498 9.999 1.00 24.23 C
+ATOM 3824 CA VAL C 115 -5.345 4.496 7.641 1.00 22.80 C
+ATOM 3831 CA LYS C 116 -6.221 5.196 4.015 1.00 22.11 C
+ATOM 3840 CA ARG C 117 -9.458 3.521 2.955 1.00 25.68 C
+ATOM 3851 CA LEU C 118 -8.447 1.440 -0.100 1.00 28.80 C
+ATOM 3859 CA ILE C 119 -11.140 1.661 -2.792 1.00 31.75 C
+ATOM 3867 CA TYR C 120 -10.086 0.716 -6.312 1.00 32.93 C
+ATOM 3879 CA THR C 121 -11.388 -0.733 -9.598 1.00 36.84 C
+ATOM 3886 CA ASN C 122 -10.258 -4.257 -10.546 1.00 36.90 C
+ATOM 3894 CA ASP C 123 -9.574 -5.562 -14.056 1.00 45.45 C
+ATOM 3902 CA ALA C 124 -13.196 -6.758 -14.269 1.00 44.66 C
+ATOM 3907 CA GLY C 125 -14.207 -3.102 -14.023 1.00 45.49 C
+ATOM 3911 CA GLU C 126 -16.059 -3.511 -10.722 1.00 45.54 C
+ATOM 3920 CA ILE C 127 -15.507 -1.321 -7.638 1.00 39.70 C
+ATOM 3928 CA VAL C 128 -13.846 -3.171 -4.762 1.00 38.09 C
+ATOM 3935 CA LYS C 129 -12.759 -2.512 -1.198 1.00 33.77 C
+ATOM 3944 CA GLY C 130 -9.566 -3.363 0.599 1.00 31.98 C
+ATOM 3948 CA VAL C 131 -10.443 -5.797 3.385 1.00 33.16 C
+ATOM 3955 CA CYS C 132 -8.241 -4.645 6.257 1.00 29.97 C
+ATOM 3961 CA SER C 133 -8.238 -0.898 5.607 1.00 30.67 C
+ATOM 3967 CA ASN C 134 -12.022 -0.902 5.268 1.00 30.35 C
+ATOM 3975 CA PHE C 135 -12.375 -2.946 8.424 1.00 29.86 C
+ATOM 3986 CA LEU C 136 -10.223 -0.334 10.195 1.00 29.42 C
+ATOM 3994 CA CYS C 137 -11.779 2.834 8.813 1.00 32.27 C
+ATOM 4000 CA ASP C 138 -15.116 1.280 9.724 1.00 34.29 C
+ATOM 4008 CA LEU C 139 -14.287 0.699 13.399 1.00 37.51 C
+ATOM 4016 CA GLN C 140 -16.635 2.170 16.028 1.00 43.76 C
+ATOM 4025 CA PRO C 141 -15.630 3.032 19.581 1.00 42.77 C
+ATOM 4032 CA GLY C 142 -16.082 -0.210 21.478 1.00 42.83 C
+ATOM 4036 CA ASP C 143 -15.117 -2.625 18.696 1.00 40.91 C
+ATOM 4044 CA ASN C 144 -12.182 -4.947 19.288 1.00 45.66 C
+ATOM 4052 CA VAL C 145 -9.056 -5.146 17.145 1.00 46.95 C
+ATOM 4059 CA GLN C 146 -6.707 -8.107 16.606 1.00 48.69 C
+ATOM 4068 CA ILE C 147 -3.249 -6.538 17.123 1.00 46.84 C
+ATOM 4076 CA THR C 148 -0.010 -8.392 16.264 1.00 46.26 C
+ATOM 4083 CA GLY C 149 3.543 -7.117 16.634 1.00 45.60 C
+ATOM 4087 CA PRO C 150 5.248 -4.818 17.394 1.00 44.97 C
+ATOM 4094 CA VAL C 151 7.423 -5.293 14.321 1.00 44.50 C
+ATOM 4101 CA GLY C 152 10.289 -3.716 12.438 1.00 45.33 C
+ATOM 4105 CA LYS C 153 13.599 -2.161 13.435 1.00 48.64 C
+ATOM 4114 CA GLU C 154 14.166 -0.437 10.074 1.00 48.20 C
+ATOM 4123 CA MET C 155 12.437 2.888 10.737 1.00 41.77 C
+ATOM 4131 CA LEU C 156 13.839 3.081 14.267 1.00 38.27 C
+ATOM 4139 CA MET C 157 15.076 6.540 15.308 1.00 34.29 C
+ATOM 4147 CA PRO C 158 18.782 7.419 15.339 1.00 34.05 C
+ATOM 4154 CA LYS C 159 20.262 7.521 18.845 1.00 35.82 C
+ATOM 4163 CA ASP C 160 22.076 10.792 18.273 1.00 35.95 C
+ATOM 4171 CA PRO C 161 19.683 13.401 19.809 1.00 35.63 C
+ATOM 4178 CA ASN C 162 21.563 15.948 17.758 1.00 33.92 C
+ATOM 4186 CA ALA C 163 21.028 14.172 14.487 1.00 30.82 C
+ATOM 4191 CA THR C 164 19.693 15.722 11.305 1.00 25.18 C
+ATOM 4198 CA ILE C 165 16.617 13.601 10.636 1.00 19.91 C
+ATOM 4206 CA ILE C 166 15.351 13.978 7.060 1.00 13.76 C
+ATOM 4214 CA MET C 167 11.843 12.550 6.703 1.00 14.98 C
+ATOM 4222 CA LEU C 168 10.385 11.831 3.251 1.00 16.64 C
+ATOM 4230 CA ALA C 169 6.747 10.808 3.007 1.00 15.85 C
+ATOM 4235 CA THR C 170 3.765 10.346 0.737 1.00 14.23 C
+ATOM 4242 CA GLY C 171 0.255 9.724 2.035 1.00 13.78 C
+ATOM 4246 CA THR C 172 -0.103 7.560 5.139 1.00 17.62 C
+ATOM 4253 CA GLY C 173 3.646 7.343 4.821 1.00 17.20 C
+ATOM 4257 CA ILE C 174 3.469 10.213 7.270 1.00 15.91 C
+ATOM 4265 CA ALA C 175 2.586 7.783 10.110 1.00 15.63 C
+ATOM 4270 CA PRO C 176 6.023 6.933 11.582 1.00 17.04 C
+ATOM 4277 CA PHE C 177 7.215 10.514 11.327 1.00 18.21 C
+ATOM 4288 CA ARG C 178 4.268 11.745 13.359 1.00 22.35 C
+ATOM 4299 CA SER C 179 5.563 9.289 15.983 1.00 25.22 C
+ATOM 4305 CA PHE C 180 9.139 10.593 15.614 1.00 25.98 C
+ATOM 4316 CA LEU C 181 7.925 14.180 15.767 1.00 29.12 C
+ATOM 4324 CA TRP C 182 5.625 13.641 18.714 1.00 31.35 C
+ATOM 4338 CA LYS C 183 8.488 12.385 20.871 1.00 30.92 C
+ATOM 4347 CA MET C 184 10.841 15.050 19.503 1.00 24.85 C
+ATOM 4355 CA PHE C 185 8.741 18.202 20.114 1.00 22.97 C
+ATOM 4366 CA PHE C 186 5.604 17.337 22.076 1.00 27.77 C
+ATOM 4377 CA GLU C 187 7.117 15.432 25.009 1.00 37.71 C
+ATOM 4386 CA LYS C 188 9.542 15.977 27.878 1.00 53.59 C
+ATOM 4395 CA HIS C 189 12.355 13.416 28.180 1.00 63.67 C
+ATOM 4405 CA ASP C 190 15.318 13.181 30.569 1.00 66.93 C
+ATOM 4413 CA ASP C 191 17.480 11.106 28.238 1.00 59.79 C
+ATOM 4421 CA TYR C 192 16.190 12.725 25.047 1.00 51.96 C
+ATOM 4433 CA LYS C 193 16.700 16.406 24.324 1.00 47.01 C
+ATOM 4442 CA PHE C 194 16.580 16.471 20.530 1.00 39.85 C
+ATOM 4453 CA ASN C 195 18.572 19.494 19.409 1.00 37.52 C
+ATOM 4461 CA GLY C 196 19.361 18.548 15.845 1.00 32.08 C
+ATOM 4465 CA LEU C 197 17.310 19.266 12.766 1.00 28.26 C
+ATOM 4473 CA GLY C 198 14.051 17.526 11.928 1.00 25.05 C
+ATOM 4477 CA TRP C 199 13.211 18.137 8.269 1.00 19.81 C
+ATOM 4491 CA LEU C 200 9.908 16.742 7.059 1.00 13.86 C
+ATOM 4499 CA PHE C 201 8.855 16.521 3.429 1.00 14.83 C
+ATOM 4510 CA LEU C 202 5.288 15.361 2.717 1.00 16.12 C
+ATOM 4518 CA GLY C 203 3.701 14.731 -0.681 1.00 13.79 C
+ATOM 4522 CA VAL C 204 -0.051 14.414 -1.182 1.00 11.75 C
+ATOM 4529 CA PRO C 205 -2.113 15.264 -4.308 1.00 14.66 C
+ATOM 4536 CA THR C 206 -4.553 17.737 -2.778 1.00 16.37 C
+ATOM 4543 CA SER C 207 -4.756 20.169 0.120 1.00 18.01 C
+ATOM 4549 CA SER C 208 -7.780 18.225 1.280 1.00 17.59 C
+ATOM 4555 CA SER C 209 -5.452 15.198 1.550 1.00 16.19 C
+ATOM 4561 CA LEU C 210 -2.972 16.940 3.860 1.00 14.22 C
+ATOM 4569 CA LEU C 211 -2.255 14.980 7.059 1.00 14.43 C
+ATOM 4577 CA TYR C 212 -1.624 16.449 10.549 1.00 18.94 C
+ATOM 4589 CA LYS C 213 -0.818 19.896 9.150 1.00 22.61 C
+ATOM 4598 CA GLU C 214 -2.039 21.572 12.352 1.00 25.73 C
+ATOM 4607 CA GLU C 215 0.152 19.413 14.514 1.00 19.23 C
+ATOM 4616 CA PHE C 216 3.216 20.178 12.439 1.00 17.80 C
+ATOM 4627 CA GLY C 217 2.478 23.890 12.512 1.00 19.90 C
+ATOM 4631 CA LYS C 218 2.578 24.001 16.294 1.00 25.54 C
+ATOM 4640 CA MET C 219 5.810 22.021 16.188 1.00 26.79 C
+ATOM 4648 CA LYS C 220 7.224 24.606 13.819 1.00 31.85 C
+ATOM 4657 CA GLU C 221 6.071 27.341 16.219 1.00 38.62 C
+ATOM 4666 CA ARG C 222 7.760 25.760 19.233 1.00 39.10 C
+ATOM 4677 CA ALA C 223 11.124 24.971 17.668 1.00 35.43 C
+ATOM 4682 CA PRO C 224 11.696 27.100 14.528 1.00 32.99 C
+ATOM 4689 CA GLU C 225 15.425 26.331 14.360 1.00 33.87 C
+ATOM 4698 CA ASN C 226 15.038 22.591 14.986 1.00 30.46 C
+ATOM 4706 CA PHE C 227 12.088 21.755 12.732 1.00 24.98 C
+ATOM 4717 CA ARG C 228 11.351 22.384 9.075 1.00 19.87 C
+ATOM 4728 CA VAL C 229 8.435 21.010 7.118 1.00 14.21 C
+ATOM 4735 CA ASP C 230 7.739 21.452 3.398 1.00 12.26 C
+ATOM 4743 CA TYR C 231 4.627 20.147 1.722 1.00 14.42 C
+ATOM 4755 CA ALA C 232 4.334 19.003 -1.872 1.00 9.99 C
+ATOM 4760 CA VAL C 233 0.778 19.232 -3.168 1.00 10.49 C
+ATOM 4767 CA SER C 234 1.043 17.769 -6.694 1.00 19.00 C
+ATOM 4773 CA ARG C 235 -2.240 19.042 -8.206 1.00 23.13 C
+ATOM 4784 CA GLU C 236 -2.069 22.459 -6.578 1.00 17.58 C
+ATOM 4793 CA GLN C 237 1.546 23.511 -6.623 1.00 15.89 C
+ATOM 4802 CA THR C 238 4.202 24.018 -9.275 1.00 17.86 C
+ATOM 4809 CA ASN C 239 7.922 24.800 -9.182 1.00 15.15 C
+ATOM 4817 CA ALA C 240 9.558 27.791 -10.892 1.00 21.51 C
+ATOM 4822 CA ALA C 241 9.475 25.887 -14.174 1.00 24.05 C
+ATOM 4827 CA GLY C 242 5.741 25.110 -13.938 1.00 26.25 C
+ATOM 4831 CA GLU C 243 5.999 21.359 -13.153 1.00 25.92 C
+ATOM 4840 CA ARG C 244 3.679 19.536 -10.704 1.00 24.04 C
+ATOM 4851 CA MET C 245 5.076 19.643 -7.174 1.00 18.58 C
+ATOM 4859 CA TYR C 246 5.784 16.047 -6.100 1.00 14.16 C
+ATOM 4871 CA ILE C 247 7.910 15.343 -3.034 1.00 16.78 C
+ATOM 4879 CA GLN C 248 11.089 15.070 -5.120 1.00 18.72 C
+ATOM 4888 CA THR C 249 10.168 18.255 -6.921 1.00 20.93 C
+ATOM 4895 CA ARG C 250 9.962 20.031 -3.567 1.00 19.25 C
+ATOM 4906 CA MET C 251 13.275 18.471 -2.561 1.00 19.40 C
+ATOM 4914 CA ALA C 252 14.910 19.812 -5.760 1.00 20.48 C
+ATOM 4919 CA GLU C 253 14.456 23.418 -4.569 1.00 18.19 C
+ATOM 4928 CA TYR C 254 16.804 22.515 -1.673 1.00 17.80 C
+ATOM 4940 CA LYS C 255 19.038 20.415 -3.902 1.00 20.66 C
+ATOM 4949 CA GLU C 256 22.452 21.603 -2.682 1.00 16.05 C
+ATOM 4958 CA GLU C 257 21.544 21.914 0.993 1.00 15.89 C
+ATOM 4967 CA LEU C 258 20.377 18.297 0.919 1.00 20.74 C
+ATOM 4975 CA TRP C 259 23.388 16.939 -0.965 1.00 23.45 C
+ATOM 4989 CA GLU C 260 25.645 18.669 1.563 1.00 24.08 C
+ATOM 4998 CA LEU C 261 23.573 17.378 4.477 1.00 24.74 C
+ATOM 5006 CA LEU C 262 24.020 13.928 2.938 1.00 26.14 C
+ATOM 5014 CA LYS C 263 27.792 14.091 3.402 1.00 25.40 C
+ATOM 5023 CA LYS C 264 27.457 14.521 7.176 1.00 31.47 C
+ATOM 5032 CA ASP C 265 27.877 11.474 9.425 1.00 35.31 C
+ATOM 5040 CA ASN C 266 24.934 12.482 11.620 1.00 29.63 C
+ATOM 5048 CA THR C 267 22.321 12.795 8.832 1.00 28.00 C
+ATOM 5055 CA TYR C 268 19.556 10.160 8.808 1.00 27.00 C
+ATOM 5067 CA VAL C 269 17.143 9.903 5.884 1.00 24.65 C
+ATOM 5074 CA TYR C 270 13.890 8.016 6.276 1.00 23.37 C
+ATOM 5086 CA MET C 271 11.373 7.327 3.518 1.00 18.93 C
+ATOM 5094 CA CYS C 272 7.834 6.074 4.043 1.00 18.24 C
+ATOM 5100 CA GLY C 273 4.784 5.874 1.826 1.00 22.39 C
+ATOM 5104 CA LEU C 274 3.837 4.483 -1.568 1.00 26.95 C
+ATOM 5112 CA LYS C 275 6.305 2.384 -3.532 1.00 32.36 C
+ATOM 5121 CA GLY C 276 7.741 4.199 -6.514 1.00 37.46 C
+ATOM 5125 CA MET C 277 7.714 7.455 -4.608 1.00 28.76 C
+ATOM 5133 CA GLU C 278 11.430 6.639 -4.425 1.00 32.22 C
+ATOM 5142 CA LYS C 279 12.017 6.321 -8.153 1.00 29.94 C
+ATOM 5151 CA GLY C 280 11.317 10.057 -8.293 1.00 24.18 C
+ATOM 5155 CA ILE C 281 13.766 10.673 -5.460 1.00 23.68 C
+ATOM 5163 CA ASP C 282 16.431 8.365 -6.934 1.00 26.58 C
+ATOM 5171 CA ASP C 283 16.211 10.530 -10.054 1.00 28.70 C
+ATOM 5179 CA ILE C 284 17.089 13.937 -8.538 1.00 27.28 C
+ATOM 5187 CA MET C 285 19.706 12.222 -6.388 1.00 27.45 C
+ATOM 5195 CA VAL C 286 21.377 10.712 -9.470 1.00 30.74 C
+ATOM 5202 CA SER C 287 21.619 14.159 -11.061 1.00 32.14 C
+ATOM 5208 CA LEU C 288 23.240 15.463 -7.873 1.00 34.20 C
+ATOM 5216 CA ALA C 289 25.801 12.653 -7.874 1.00 40.16 C
+ATOM 5221 CA GLU C 290 26.837 12.825 -11.536 1.00 41.84 C
+ATOM 5230 CA LYS C 291 27.855 16.387 -10.793 1.00 43.17 C
+ATOM 5239 CA ASP C 292 30.299 15.115 -8.139 1.00 41.84 C
+ATOM 5247 CA GLY C 293 31.237 12.232 -10.420 1.00 46.12 C
+ATOM 5251 CA ILE C 294 30.053 9.669 -7.864 1.00 45.54 C
+ATOM 5259 CA ASP C 295 27.399 6.998 -8.480 1.00 41.14 C
+ATOM 5267 CA TRP C 296 24.222 7.605 -6.479 1.00 30.67 C
+ATOM 5281 CA PHE C 297 23.381 3.910 -6.151 1.00 31.97 C
+ATOM 5292 CA ASP C 298 26.856 2.916 -4.907 1.00 38.12 C
+ATOM 5300 CA TYR C 299 26.671 5.875 -2.540 1.00 39.05 C
+ATOM 5312 CA LYS C 300 23.196 4.971 -1.294 1.00 41.63 C
+ATOM 5321 CA LYS C 301 24.542 1.489 -0.577 1.00 43.40 C
+ATOM 5330 CA GLN C 302 27.207 3.064 1.608 1.00 43.79 C
+ATOM 5339 CA LEU C 303 24.476 5.181 3.238 1.00 41.51 C
+ATOM 5347 CA LYS C 304 22.138 2.343 4.264 1.00 45.18 C
+ATOM 5356 CA ARG C 305 25.322 0.535 5.256 1.00 46.65 C
+ATOM 5367 CA GLY C 306 25.613 3.181 7.945 1.00 40.29 C
+ATOM 5371 CA ASP C 307 21.954 3.487 8.940 1.00 41.21 C
+ATOM 5379 CA GLN C 308 21.463 6.730 7.023 1.00 35.55 C
+ATOM 5388 CA TRP C 309 18.961 5.674 4.361 1.00 31.22 C
+ATOM 5402 CA ASN C 310 16.018 3.728 5.752 1.00 31.61 C
+ATOM 5410 CA VAL C 311 13.120 2.841 3.452 1.00 32.13 C
+ATOM 5417 CA GLU C 312 9.705 1.332 4.261 1.00 31.51 C
+ATOM 5426 CA VAL C 313 7.466 1.606 1.209 1.00 26.39 C
+ATOM 5433 CA TYR C 314 4.403 -0.343 0.111 1.00 25.42 C
-(((FER_BRANA:128.0,FER3_RAPSA:128.0):50.75,FER_CAPAA:178.75):121.94443,(Q93Z60_ARATH:271.45456,((O80429_MAIZE:183.0,FER1_MAIZE:183.0):30.5,((Q7XA98_TRIPR:90.0,FER1_PEA:90.0):83.32143,(((FER2_ARATH:64.0,FER1_ARATH:64.0):94.375,(FER1_SPIOL:124.5,FER1_MESCR:124.5):33.875):6.4166718,((Q93XJ9_SOLTU:33.5,FER1_SOLLC:33.5):49.0,FER_CAPAN:82.5):82.29167):8.529755):40.178574):57.95456):29.239868);\r
+(((FER_BRANA:128.0,FER3_RAPSA:128.0):50.75,FER_CAPAA:178.75):121.94443,(Q93Z60_ARATH:271.45456,((O80429_MAIZE:183.0,FER1_MAIZE:183.0):30.5,((Q7XA98_TRIPR:90.0,FER1_PEA:90.0):83.32143,(((FER2_ARATH:64.0,FER1_ARATH:64.0):94.375,(FER1_SPIOL:124.5,FER1_MESCR:124.5):33.875):6.4166718,((Q93XJ9_SOLTU:33.5,FER1_SOLLC:33.5):49.0,FER_CAPAN:82.5):82.29167):8.529755):40.178574):57.95456):29.239868);
-// You need to add the groovy directory to the class path from the script window\r
-// or add the groovy directory to the java classpath when running Jalview\r
-\r
-jvtst = new JvLoadTester().newJvLoadTest('D:\\fooTest.jar');\r
-try { jvtst.TestForAll('D:\\e6-workspace\\Jalview RNA\\examples\\rna\\rfamSml') } \r
-catch (OutOfMemoryError e) { \r
-// inspect jvtst to find out what file + file index it was on\r
-}\r
-// Terminate Jalview - useful if running from command line\r
-if (Jalview.isInBatchMode()) {\r
- Jalview.quit() \r
+// You need to add the groovy directory to the class path from the script window
+// or add the groovy directory to the java classpath when running Jalview
+
+jvtst = new JvLoadTester().newJvLoadTest('D:\\fooTest.jar');
+try { jvtst.TestForAll('D:\\e6-workspace\\Jalview RNA\\examples\\rna\\rfamSml') }
+catch (OutOfMemoryError e) {
+// inspect jvtst to find out what file + file index it was on
+}
+// Terminate Jalview - useful if running from command line
+if (Jalview.isInBatchMode()) {
+ Jalview.quit()
}
\ No newline at end of file
-import jalview.gui.*;\r
-import jalview.io.*;\r
-\r
-def class JvLoadTest {\r
- FileLoader fl = null;\r
- def String safename = null;\r
- JvLoadTest(String sname) { \r
- if (!new File(sname).exists() || new File(sname).canWrite())\r
- {\r
- safename = sname;\r
- } else {\r
- System.err.println("Warning : "+sname+" isn't being used to store temporary files.");\r
- } \r
- }\r
- def public boolean doTest (file) {\r
- fl = new FileLoader(false);\r
- System.gc();\r
- AlignFrame af = fl.LoadFileWaitTillLoaded(file\r
- ,FormatAdapter.FILE);\r
- return doTest(af);\r
- }\r
- def public boolean doSequentialReadTest (file) {\r
- return doSequentialReadTest(file, 0);\r
- }\r
- // Return true if there is more data to read.\r
- def public boolean peekFp(FileParse fp) {\r
- try { fp.mark(); } catch (Exception ex) { System.err.println("FAILED mark."+ex); return false; };\r
- try {\r
- def String nl;\r
- for (i in 1..3) { \r
- nl = fp.nextLine();\r
- if (nl==null) { return false; }\r
- System.out.println(nl +"\\n");\r
- }\r
- } catch (Exception e) { // end of file.\r
- return false; };\r
- try { fp.reset(); } catch (Exception ex) { System.err.println("FAILED rewind."+ex); return false; };\r
- return true;\r
- }\r
- /*\r
- Halt after loading the mx'th entry in the filestream\r
- */\r
- def public boolean doSequentialReadTest (file, int mx) {\r
- // first properly open the file\r
- // if (!doTest(file)) { return };\r
- def FileParse fp = null;\r
- try {\r
- fp = new FileParse(file, AppletFormatAdapter.FILE);\r
- } catch (Exception e) { System.err.println("Couldn't open "+file+"\\n"); e.printStackTrace(); return false;};\r
- Desktop.instance.closeAll_actionPerformed(null)\r
- System.gc();\r
- while (fp!=null && fp.isValid() && (mx==0 || mx!=fp.index)) {\r
- if (!peekFp(fp)) return false;\r
- fl = new FileLoader(false);\r
- AlignFrame af = fl.LoadFileWaitTillLoaded(fp, null);\r
- System.out.println("FileParse index: "+fp.index); \r
- if (af!=null && (mx==0 || mx!=fp.index))\r
- { def boolean res = doTest(af);\r
- if (!res)\r
- {\r
- // return false;\r
- }\r
- } else {\r
- // return false;\r
- }\r
- }\r
- return true;\r
- }\r
- def public void waitTillSettled(AlignFrame af)\r
- {\r
- if (af==null) { return; }\r
- Thread.sleep(10);\r
- while (af.getViewport().updatingConsensus || af.getViewport().updatingConservation) {\r
- Thread.sleep(150); // wait until things settle down\r
- }\r
- }\r
- def public boolean doTest(AlignFrame af) {\r
- Object pr = af.getViewport().getAlignment().getProperty("AC");\r
- if (pr!=null) { System.out.println("Accession = "+(String) pr); }\r
- af.selectAllSequenceMenuItem_actionPerformed(null)\r
- def boolean done = false;\r
- // Just try to save - don\'t mess around with clipboard\r
- /*while (!done) {\r
- try {\r
- af.copy_actionPerformed(null)\r
- done = true;\r
- } catch (Exception e) {\r
- Thread.sleep(100); // wait until clipboard might be available again\r
- }\r
- }*/\r
- if (af==null) { return false; }\r
- waitTillSettled(af);\r
- // Try and save as a jalview project and reload\r
- try {\r
- // af.saveAlignment(safename, "Jalview")\r
- new Jalview2XML().SaveState(new java.io.File(safename));\r
- Thread.sleep(100);\r
- } catch (Exception ex) { \r
- System.out.println("Couldn\'t save.");\r
- ex.printStackTrace(System.err);\r
- return false;\r
- }\r
- waitTillSettled(af);\r
- try {\r
- Desktop.instance.closeAll_actionPerformed(null);\r
- } catch (Exception ex) {}\r
- System.gc();\r
- try {\r
- af = new FileLoader(false).LoadFileWaitTillLoaded(safename, FormatAdapter.FILE); \r
- } \r
- catch (Exception ex) {\r
- System.out.println("Couldn't reload saved file.");\r
- System.gc();\r
- return false;\r
- }\r
- waitTillSettled(af);\r
-\r
- Desktop.instance.closeAll_actionPerformed(null);\r
-\r
- // af.paste(true)\r
- // af.newView_actionPerformed(null)\r
- // af.newView_actionPerformed(null)\r
-\r
- return true;\r
- }\r
- def public boolean TestForAll(String dir) {\r
- println "For directory or file : "+dir;\r
- File fd = new File(dir);\r
- if (!fd.isDirectory()) { return doSequentialReadTest(dir); }\r
- fd.eachFile() { file -> TestForAll(file.getAbsolutePath()) };\r
- }\r
-}\r
-def JvLoadTest newJvLoadTest(String tempFile) {\r
- jalview.gui.Desktop.instance.closeAll_actionPerformed(null);\r
- System.gc();\r
- jalview.gui.Desktop.instance.desktop.showMemoryUsage(true);\r
- return new JvLoadTest(tempFile)\r
+import jalview.gui.*;
+import jalview.io.*;
+
+def class JvLoadTest {
+ FileLoader fl = null;
+ def String safename = null;
+ JvLoadTest(String sname) {
+ if (!new File(sname).exists() || new File(sname).canWrite())
+ {
+ safename = sname;
+ } else {
+ System.err.println("Warning : "+sname+" isn't being used to store temporary files.");
+ }
+ }
+ def public boolean doTest (file) {
+ fl = new FileLoader(false);
+ System.gc();
+ AlignFrame af = fl.LoadFileWaitTillLoaded(file
+ ,FormatAdapter.FILE);
+ return doTest(af);
+ }
+ def public boolean doSequentialReadTest (file) {
+ return doSequentialReadTest(file, 0);
+ }
+ // Return true if there is more data to read.
+ def public boolean peekFp(FileParse fp) {
+ try { fp.mark(); } catch (Exception ex) { System.err.println("FAILED mark."+ex); return false; };
+ try {
+ def String nl;
+ for (i in 1..3) {
+ nl = fp.nextLine();
+ if (nl==null) { return false; }
+ System.out.println(nl +"\\n");
+ }
+ } catch (Exception e) { // end of file.
+ return false; };
+ try { fp.reset(); } catch (Exception ex) { System.err.println("FAILED rewind."+ex); return false; };
+ return true;
+ }
+ /*
+ Halt after loading the mx'th entry in the filestream
+ */
+ def public boolean doSequentialReadTest (file, int mx) {
+ // first properly open the file
+ // if (!doTest(file)) { return };
+ def FileParse fp = null;
+ try {
+ fp = new FileParse(file, AppletFormatAdapter.FILE);
+ } catch (Exception e) { System.err.println("Couldn't open "+file+"\\n"); e.printStackTrace(); return false;};
+ Desktop.instance.closeAll_actionPerformed(null)
+ System.gc();
+ while (fp!=null && fp.isValid() && (mx==0 || mx!=fp.index)) {
+ if (!peekFp(fp)) return false;
+ fl = new FileLoader(false);
+ AlignFrame af = fl.LoadFileWaitTillLoaded(fp, null);
+ System.out.println("FileParse index: "+fp.index);
+ if (af!=null && (mx==0 || mx!=fp.index))
+ { def boolean res = doTest(af);
+ if (!res)
+ {
+ // return false;
+ }
+ } else {
+ // return false;
+ }
+ }
+ return true;
+ }
+ def public void waitTillSettled(AlignFrame af)
+ {
+ if (af==null) { return; }
+ Thread.sleep(10);
+ while (af.getViewport().updatingConsensus || af.getViewport().updatingConservation) {
+ Thread.sleep(150); // wait until things settle down
+ }
+ }
+ def public boolean doTest(AlignFrame af) {
+ Object pr = af.getViewport().getAlignment().getProperty("AC");
+ if (pr!=null) { System.out.println("Accession = "+(String) pr); }
+ af.selectAllSequenceMenuItem_actionPerformed(null)
+ def boolean done = false;
+ // Just try to save - don\'t mess around with clipboard
+ /*while (!done) {
+ try {
+ af.copy_actionPerformed(null)
+ done = true;
+ } catch (Exception e) {
+ Thread.sleep(100); // wait until clipboard might be available again
+ }
+ }*/
+ if (af==null) { return false; }
+ waitTillSettled(af);
+ // Try and save as a jalview project and reload
+ try {
+ // af.saveAlignment(safename, "Jalview")
+ new Jalview2XML().SaveState(new java.io.File(safename));
+ Thread.sleep(100);
+ } catch (Exception ex) {
+ System.out.println("Couldn\'t save.");
+ ex.printStackTrace(System.err);
+ return false;
+ }
+ waitTillSettled(af);
+ try {
+ Desktop.instance.closeAll_actionPerformed(null);
+ } catch (Exception ex) {}
+ System.gc();
+ try {
+ af = new FileLoader(false).LoadFileWaitTillLoaded(safename, FormatAdapter.FILE);
+ }
+ catch (Exception ex) {
+ System.out.println("Couldn't reload saved file.");
+ System.gc();
+ return false;
+ }
+ waitTillSettled(af);
+
+ Desktop.instance.closeAll_actionPerformed(null);
+
+ // af.paste(true)
+ // af.newView_actionPerformed(null)
+ // af.newView_actionPerformed(null)
+
+ return true;
+ }
+ def public boolean TestForAll(String dir) {
+ println "For directory or file : "+dir;
+ File fd = new File(dir);
+ if (!fd.isDirectory()) { return doSequentialReadTest(dir); }
+ fd.eachFile() { file -> TestForAll(file.getAbsolutePath()) };
+ }
+}
+def JvLoadTest newJvLoadTest(String tempFile) {
+ jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
+ System.gc();
+ jalview.gui.Desktop.instance.desktop.showMemoryUsage(true);
+ return new JvLoadTest(tempFile)
}
\ No newline at end of file
-// do something groovy in jalview\r
-print "Hello World.\n";\r
-def alf = Jalview.getAlignframes();\r
-for (ala in alf)\r
-{\r
- // ala is an jalview.gui.AlignFrame object \r
- print ala.getTitle()+"\n";\r
- // get the parent jalview.datamodel.Alignment from the alignment viewport\r
- def alignment = ala.viewport.alignment;\r
- // get the first sequence from the jalview.datamodel.Alignment object\r
- def seq = alignment.getSequenceAt(0); \r
-}\r
+// do something groovy in jalview
+print "Hello World.\n";
+def alf = Jalview.getAlignframes();
+for (ala in alf)
+{
+ // ala is an jalview.gui.AlignFrame object
+ print ala.getTitle()+"\n";
+ // get the parent jalview.datamodel.Alignment from the alignment viewport
+ def alignment = ala.viewport.alignment;
+ // get the first sequence from the jalview.datamodel.Alignment object
+ def seq = alignment.getSequenceAt(0);
+}
-/**\r
- * Copyright 2010 Tim Down.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
+/**
+ * Copyright 2010 Tim Down.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
var Hashtable=(function(){var p="function";var n=(typeof Array.prototype.splice==p)?function(s,r){s.splice(r,1)}:function(u,t){var s,v,r;if(t===u.length-1){u.length=t}else{s=u.slice(t+1);u.length=t;for(v=0,r=s.length;v<r;++v){u[t+v]=s[v]}}};function a(t){var r;if(typeof t=="string"){return t}else{if(typeof t.hashCode==p){r=t.hashCode();return(typeof r=="string")?r:a(r)}else{if(typeof t.toString==p){return t.toString()}else{try{return String(t)}catch(s){return Object.prototype.toString.call(t)}}}}}function g(r,s){return r.equals(s)}function e(r,s){return(typeof s.equals==p)?s.equals(r):(r===s)}function c(r){return function(s){if(s===null){throw new Error("null is not a valid "+r)}else{if(typeof s=="undefined"){throw new Error(r+" must not be undefined")}}}}var q=c("key"),l=c("value");function d(u,s,t,r){this[0]=u;this.entries=[];this.addEntry(s,t);if(r!==null){this.getEqualityFunction=function(){return r}}}var h=0,j=1,f=2;function o(r){return function(t){var s=this.entries.length,v,u=this.getEqualityFunction(t);while(s--){v=this.entries[s];if(u(t,v[0])){switch(r){case h:return true;case j:return v;case f:return[s,v[1]]}}}return false}}function k(r){return function(u){var v=u.length;for(var t=0,s=this.entries.length;t<s;++t){u[v+t]=this.entries[t][r]}}}d.prototype={getEqualityFunction:function(r){return(typeof r.equals==p)?g:e},getEntryForKey:o(j),getEntryAndIndexForKey:o(f),removeEntryForKey:function(s){var r=this.getEntryAndIndexForKey(s);if(r){n(this.entries,r[0]);return r[1]}return null},addEntry:function(r,s){this.entries[this.entries.length]=[r,s]},keys:k(0),values:k(1),getEntries:function(s){var u=s.length;for(var t=0,r=this.entries.length;t<r;++t){s[u+t]=this.entries[t].slice(0)}},containsKey:o(h),containsValue:function(s){var r=this.entries.length;while(r--){if(s===this.entries[r][1]){return true}}return false}};function m(s,t){var r=s.length,u;while(r--){u=s[r];if(t===u[0]){return r}}return null}function i(r,s){var t=r[s];return(t&&(t instanceof d))?t:null}function b(t,r){var w=this;var v=[];var u={};var x=(typeof t==p)?t:a;var s=(typeof r==p)?r:null;this.put=function(B,C){q(B);l(C);var D=x(B),E,A,z=null;E=i(u,D);if(E){A=E.getEntryForKey(B);if(A){z=A[1];A[1]=C}else{E.addEntry(B,C)}}else{E=new d(D,B,C,s);v[v.length]=E;u[D]=E}return z};this.get=function(A){q(A);var B=x(A);var C=i(u,B);if(C){var z=C.getEntryForKey(A);if(z){return z[1]}}return null};this.containsKey=function(A){q(A);var z=x(A);var B=i(u,z);return B?B.containsKey(A):false};this.containsValue=function(A){l(A);var z=v.length;while(z--){if(v[z].containsValue(A)){return true}}return false};this.clear=function(){v.length=0;u={}};this.isEmpty=function(){return !v.length};var y=function(z){return function(){var A=[],B=v.length;while(B--){v[B][z](A)}return A}};this.keys=y("keys");this.values=y("values");this.entries=y("getEntries");this.remove=function(B){q(B);var C=x(B),z,A=null;var D=i(u,C);if(D){A=D.removeEntryForKey(B);if(A!==null){if(!D.entries.length){z=m(v,C);n(v,z);delete u[C]}}}return A};this.size=function(){var A=0,z=v.length;while(z--){A+=v[z].entries.length}return A};this.each=function(C){var z=w.entries(),A=z.length,B;while(A--){B=z[A];C(B[0],B[1])}};this.putAll=function(H,C){var B=H.entries();var E,F,D,z,A=B.length;var G=(typeof C==p);while(A--){E=B[A];F=E[0];D=E[1];if(G&&(z=w.get(F))){D=C(F,z,D)}w.put(F,D)}};this.clone=function(){var z=new b(t,r);z.putAll(w);return z}}return b})();
\ No newline at end of file
-/* Jmol 12.0 script library Jmol.js 9:48 PM 1/31/2011 Bob Hanson\r
-\r
- checkbox heirarchy -- see http://chemapps.stolaf.edu/jmol/docs/examples-11/check.htm\r
-\r
- based on:\r
- *\r
- * Copyright (C) 2004-2005 Miguel, Jmol Development, www.jmol.org\r
- *\r
- * Contact: hansonr@stolaf.edu\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\r
- * 02111-1307 USA.\r
- */\r
-\r
-// for documentation see www.jmol.org/jslibrary\r
-\r
-try{if(typeof(_jmol)!="undefined")exit()\r
-\r
-// place "?NOAPPLET" on your command line to check applet control action with a textarea\r
-// place "?JMOLJAR=xxxxx" to use a specific jar file\r
-\r
-// bob hanson -- jmolResize(w,h) -- resizes absolutely or by percent (w or h 0.5 means 50%)\r
-// angel herraez -- update of jmolResize(w,h,targetSuffix) so it is not tied to first applet\r
-// bob hanson -- jmolEvaluate -- evaluates molecular math 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptMessage -- returns all "scriptStatus" messages 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptEcho -- returns all "scriptEcho" messages 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptWait -- 11:31 AM 5/2/2006\r
-// bob hanson -- remove trailing separatorHTML in radio groups -- 12:18 PM 5/6/2006\r
-// bob hanson -- adds support for dynamic DOM script nodes 7:04 AM 5/19/2006\r
-// bob hanson -- adds try/catch for wiki - multiple code passes 7:05 AM 5/19/2006\r
-// bob hanson -- auto-initiates to defaultdir/defaultjar -- change as desired.\r
-// bob hanson -- adding save/restore orientation w/ and w/o delay 11:49 AM 5/25/2006\r
-// bob hanson -- adding AjaxJS service 11:16 AM 6/3/2006\r
-// bob hanson -- fix for iframes not available for finding applet\r
-// bob hanson -- added applet fake ?NOAPPLET URL flag\r
-// bob hanson -- added jmolSetCallback(calbackName, funcName) 3:32 PM 6/13/2006\r
-// used PRIOR to jmolApplet() or jmolAppletInline()\r
-// added 4th array element in jmolRadioGroup -- title\r
-// added <span> and id around link, checkbox, radio, menu\r
-// fixing AJAX loads for MSIE/Opera-Mozilla incompatibility\r
-// -- renamed Jmol-11.js from Jmol-new.js; JmolApplet.jar from JmolAppletProto.jar\r
-// renamed Jmol.js for Jmol 11 distribution\r
-// -- modified jmolRestoreOrientation() to be immediate, no 1-second delay\r
-// bob hanson -- jmolScriptWait always returns a string -- 11:23 AM 9/16/2006\r
-// bh -- jmolCommandInput()\r
-// bh -- jmolSetTranslation(TF) -- forces translation even if there might be message callback issues\r
-// bh -- minor fixes suggested by Angel\r
-// bh -- adds jmolSetSyncId() and jmolGetSyncId()\r
-// bh 3/2008 -- adds jmolAppendInlineScript() and jmolAppendInlineArray()\r
-// bh 3/2008 -- fixes IE7 bug in relation to jmolLoadInlineArray()\r
-// bh 6/2008 -- adds jmolSetAppletWindow()\r
-// Angel H. 6/2008 -- added html <label> tags to checkboxes and radio buttons [in jmolCheckbox() and _jmolRadio() functions]\r
-// bh 7/2008 -- code fix "for(i..." not "for(var i..."\r
-// bh 12/2008 -- jmolLoadInline, jmolLoadInlineArray, jmolLoadInlineScript, jmolAppendInlineScript, jmolAppendInlineArray all return error message or null (Jmol 11.7.16)\r
-// bh 12/2008 -- jmolScriptWaitOutput() -- waits for script to complete and delivers output normally sent to console\r
-\r
-// bh 5/2009 -- Support for XHTML using jmolSetXHTML(id)\r
-// ah & bh 6/2009 -- New jmolResizeApplet() more flexible, similar to jmolApplet() size syntax\r
-// bh 11/2009 -- care in accessing top.document\r
-// bh 12/2009 -- added jmolSetParameter(name, value)\r
-// bh 12/2009 -- added PARAMS=name:value;name:value;name:value... for command line\r
-// bh 12/2009 -- overhaul of target checking\r
-// bh 1/2010 -- all _xxxx() methods ALWAYS have complete argument list\r
-// bh 1/2010 -- adds option to run a JavaScript function from any Jmol control. \r
-// This is accomplished by passing an array rather than a script:\r
-// jmolHref([myfunc,"my param 1", "my param 2"], "testing")\r
-// function myfunc(jmolControlObject, [myfunc,"my param 1", "my param 2"], target){...}\r
-// and allows much more flexibility with responding to controls\r
-// bh 4/2010 -- added jmolSetMemoryMb(nMb)\r
-// ah 1/2011 -- wider detection of browsers; more browsers now use the object tag instead of the applet tag; \r
-// fix of object tag (removed classid) accounts for change of behavior in Chrome\r
-// bh 3/2011 -- added jmolLoadAjax_STOLAF_NIH\r
-\r
-var defaultdir = "."\r
-var defaultjar = "JmolApplet.jar"\r
-\r
-\r
-// Note added 12:41 PM 9/21/2008 by Bob Hanson, hansonr@stolaf.edu:\r
-\r
-// JMOLJAR=xxxxx.jar on the URL for this page will override\r
-// the JAR file specified in the jmolInitialize() call.\r
-\r
-// The idea is that it can be very useful to test a web page with different JAR files\r
-// Or for an expert user to substitute a signed applet for an unsigned one\r
-// so as to use a broader range of models or to create JPEG files, for example.\r
-\r
-// If the JAR file is not in the current directory (has any sort of "/" in its name)\r
-// then the user is presented with a warning and asked whether it is OK to change Jar files.\r
-// The default action, if the user just presses "OK" is to NOT allow the change. \r
-// The user must type the word "yes" in the prompt box for the change to be approved.\r
-\r
-// If you don't want people to be able to switch in their own JAR file on your page,\r
-// simply set this next line to read "var allowJMOLJAR = false".\r
-\r
-\r
-var undefined; // for IE 5 ... wherein undefined is undefined\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Basic Scripting infrastruture\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolInitialize(codebaseDirectory, fileNameOrUseSignedApplet) {\r
- if (_jmol.initialized)\r
- return;\r
- _jmol.initialized = true;\r
- if(_jmol.jmoljar) {\r
- var f = _jmol.jmoljar;\r
- if (f.indexOf("/") >= 0) {\r
- alert ("This web page URL is requesting that the applet used be " + f + ". This is a possible security risk, particularly if the applet is signed, because signed applets can read and write files on your local machine or network.")\r
- var ok = prompt("Do you want to use applet " + f + "? ","yes or no")\r
- if (ok == "yes") {\r
- codebaseDirectory = f.substring(0, f.lastIndexOf("/"));\r
- fileNameOrUseSignedApplet = f.substring(f.lastIndexOf("/") + 1);\r
- } else {\r
- _jmolGetJarFilename(fileNameOrUseSignedApplet);\r
- alert("The web page URL was ignored. Continuing using " + _jmol.archivePath + ' in directory "' + codebaseDirectory + '"');\r
- }\r
- } else {\r
- fileNameOrUseSignedApplet = f;\r
- }\r
- }\r
- _jmolSetCodebase(codebaseDirectory);\r
- _jmolGetJarFilename(fileNameOrUseSignedApplet);\r
- _jmolOnloadResetForms();\r
-}\r
-\r
-function jmolSetTranslation(TF) {\r
- _jmol.params.doTranslate = ''+TF;\r
-}\r
-\r
-function _jmolGetJarFilename(fileNameOrFlag) {\r
- _jmol.archivePath =\r
- (typeof(fileNameOrFlag) == "string" ? fileNameOrFlag : (fileNameOrFlag ? "JmolAppletSigned" : "JmolApplet") + "0.jar");\r
-}\r
-\r
-function jmolSetDocument(doc) {\r
- _jmol.currentDocument = doc;\r
-}\r
-\r
-function jmolSetAppletColor(boxbgcolor, boxfgcolor, progresscolor) {\r
- _jmolInitCheck();\r
- _jmol.params.boxbgcolor = boxbgcolor;\r
- if (boxfgcolor)\r
- _jmol.params.boxfgcolor = boxfgcolor\r
- else if (boxbgcolor == "white" || boxbgcolor == "#FFFFFF")\r
- _jmol.params.boxfgcolor = "black";\r
- else\r
- _jmol.params.boxfgcolor = "white";\r
- if (progresscolor)\r
- _jmol.params.progresscolor = progresscolor;\r
- if (_jmol.debugAlert)\r
- alert(" boxbgcolor=" + _jmol.params.boxbgcolor +\r
- " boxfgcolor=" + _jmol.params.boxfgcolor +\r
- " progresscolor=" + _jmol.params.progresscolor);\r
-}\r
-\r
-function jmolSetAppletWindow(w) {\r
- _jmol.appletWindow = w;\r
-}\r
-\r
-function jmolApplet(size, script, nameSuffix) {\r
- _jmolInitCheck();\r
- return _jmolApplet(size, null, script, nameSuffix);\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Basic controls\r
-////////////////////////////////////////////////////////////////\r
-\r
-// undefined means it wasn't there; null means it was explicitly listed as null (so as to skip it)\r
-\r
-function jmolButton(script, label, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolButton" + _jmol.buttonCount);\r
- label != undefined && label != null || (label = script.substring(0, 32));\r
- ++_jmol.buttonCount;\r
- var scriptIndex = _jmolAddScript(script);\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='button' name='" + id + "' id='" + id +\r
- "' value='" + label +\r
- "' onclick='_jmolClick(this," + scriptIndex + _jmol.targetText +\r
- ")' onmouseover='_jmolMouseOver(" + scriptIndex +\r
- ");return true' onmouseout='_jmolMouseOut()' " +\r
- _jmol.buttonCssText + " /></span>";\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolCheckbox(scriptWhenChecked, scriptWhenUnchecked,\r
- labelHtml, isChecked, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolCheckbox" + _jmol.checkboxCount);\r
- ++_jmol.checkboxCount;\r
- if (scriptWhenChecked == undefined || scriptWhenChecked == null ||\r
- scriptWhenUnchecked == undefined || scriptWhenUnchecked == null) {\r
- alert("jmolCheckbox requires two scripts");\r
- return;\r
- }\r
- if (labelHtml == undefined || labelHtml == null) {\r
- alert("jmolCheckbox requires a label");\r
- return;\r
- }\r
- var indexChecked = _jmolAddScript(scriptWhenChecked);\r
- var indexUnchecked = _jmolAddScript(scriptWhenUnchecked);\r
- var eospan = "</span>"\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='checkbox' name='" + id + "' id='" + id +\r
- "' onclick='_jmolCbClick(this," +\r
- indexChecked + "," + indexUnchecked + _jmol.targetText +\r
- ")' onmouseover='_jmolCbOver(this," + indexChecked + "," +\r
- indexUnchecked +\r
- ");return true' onmouseout='_jmolMouseOut()' " +\r
- (isChecked ? "checked='true' " : "")+ _jmol.checkboxCssText + " />" \r
- if (labelHtml.toLowerCase().indexOf("<td>")>=0) {\r
- t += eospan\r
- eospan = "";\r
- }\r
- t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan;\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolStartNewRadioGroup() {\r
- ++_jmol.radioGroupCount;\r
-}\r
-\r
-function jmolRadioGroup(arrayOfRadioButtons, separatorHtml, groupName, id, title) {\r
- /*\r
-\r
- array: [radio1,radio2,radio3...]\r
- where radioN = ["script","label",isSelected,"id","title"]\r
-\r
- */\r
-\r
- _jmolInitCheck();\r
- var type = typeof arrayOfRadioButtons;\r
- if (type != "object" || type == null || ! arrayOfRadioButtons.length) {\r
- alert("invalid arrayOfRadioButtons");\r
- return;\r
- }\r
- separatorHtml != undefined && separatorHtml != null || (separatorHtml = " ");\r
- var len = arrayOfRadioButtons.length;\r
- jmolStartNewRadioGroup();\r
- groupName || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));\r
- var t = "<span id='"+(id ? id : groupName)+"'>";\r
- for (var i = 0; i < len; ++i) {\r
- if (i == len - 1)\r
- separatorHtml = "";\r
- var radio = arrayOfRadioButtons[i];\r
- type = typeof radio;\r
- if (type == "object") {\r
- t += _jmolRadio(radio[0], radio[1], radio[2], separatorHtml, groupName, (radio.length > 3 ? radio[3]: (id ? id : groupName)+"_"+i), (radio.length > 4 ? radio[4] : 0), title);\r
- } else {\r
- t += _jmolRadio(radio, null, null, separatorHtml, groupName, (id ? id : groupName)+"_"+i, title);\r
- }\r
- }\r
- t+="</span>"\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-\r
-function jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {\r
- _jmolInitCheck();\r
- if (_jmol.radioGroupCount == 0)\r
- ++_jmol.radioGroupCount;\r
- var t = _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, (id ? id : groupName + "_" + _jmol.radioCount), title ? title : 0);\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolLink(script, label, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolLink" + _jmol.linkCount);\r
- label != undefined && label != null || (label = script.substring(0, 32));\r
- ++_jmol.linkCount;\r
- var scriptIndex = _jmolAddScript(script);\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><a name='" + id + "' id='" + id + \r
- "' href='javascript:_jmolClick(this," + scriptIndex + _jmol.targetText + ");' onmouseover='_jmolMouseOver(" + scriptIndex +\r
- ");return true;' onmouseout='_jmolMouseOut()' " +\r
- _jmol.linkCssText + ">" + label + "</a></span>";\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolCommandInput(label, size, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolCmd" + _jmol.cmdCount);\r
- label != undefined && label != null || (label = "Execute");\r
- size != undefined && !isNaN(size) || (size = 60);\r
- ++_jmol.cmdCount;\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" + id + "' id='" + id + \r
- "' size='"+size+"' onkeypress='_jmolCommandKeyPress(event,\""+id+"\"" + _jmol.targetText + ")'><input type=button value = '"+label+"' onclick='jmolScript(document.getElementById(\""+id+"\").value" + _jmol.targetText + ")' /></span>";\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
-}\r
-\r
-function _jmolCommandKeyPress(e, id, target) {\r
- var keycode = (window.event ? window.event.keyCode : e ? e.which : 0);\r
- if (keycode == 13) {\r
- var inputBox = document.getElementById(id)\r
- _jmolScriptExecute(inputBox, inputBox.value, target)\r
- }\r
-}\r
-\r
-function _jmolScriptExecute(element,script,target) {\r
- if (typeof(script) == "object")\r
- script[0](element, script, target)\r
- else\r
- jmolScript(script, target) \r
-}\r
-\r
-function jmolMenu(arrayOfMenuItems, size, id, title) {\r
- _jmolInitCheck();\r
- id != undefined && id != null || (id = "jmolMenu" + _jmol.menuCount);\r
- ++_jmol.menuCount;\r
- var type = typeof arrayOfMenuItems;\r
- if (type != null && type == "object" && arrayOfMenuItems.length) {\r
- var len = arrayOfMenuItems.length;\r
- if (typeof size != "number" || size == 1)\r
- size = null;\r
- else if (size < 0)\r
- size = len;\r
- var sizeText = size ? " size='" + size + "' " : "";\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><select name='" + id + "' id='" + id +\r
- "' onChange='_jmolMenuSelected(this" + _jmol.targetText + ")'" +\r
- sizeText + _jmol.menuCssText + ">";\r
- for (var i = 0; i < len; ++i) {\r
- var menuItem = arrayOfMenuItems[i];\r
- type = typeof menuItem;\r
- var script, text;\r
- var isSelected = undefined;\r
- if (type == "object" && menuItem != null) {\r
- script = menuItem[0];\r
- text = menuItem[1];\r
- isSelected = menuItem[2];\r
- } else {\r
- script = text = menuItem;\r
- }\r
- text != undefined && text != null || (text = script); \r
- if (script=="#optgroup") {\r
- t += "<optgroup label='" + text + "'>"; \r
- } else if (script=="#optgroupEnd") {\r
- t += "</optgroup>"; \r
- } else { \r
- var scriptIndex = _jmolAddScript(script);\r
- var selectedText = isSelected ? "' selected='true'>" : "'>";\r
- t += "<option value='" + scriptIndex + selectedText + text + "</option>";\r
- }\r
- }\r
- t += "</select></span>";\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
- }\r
-}\r
-\r
-function jmolHtml(html) {\r
- return _jmolDocumentWrite(html);\r
-}\r
-\r
-function jmolBr() {\r
- return _jmolDocumentWrite("<br />");\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// advanced scripting functions\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolDebugAlert(enableAlerts) {\r
- _jmol.debugAlert = (enableAlerts == undefined || enableAlerts)\r
-}\r
-\r
-function jmolAppletInline(size, inlineModel, script, nameSuffix) {\r
- _jmolInitCheck();\r
- return _jmolApplet(size, _jmolSterilizeInline(inlineModel),\r
- script, nameSuffix);\r
-}\r
-\r
-function jmolSetTarget(targetSuffix) {\r
- _jmol.targetSuffix = targetSuffix;\r
- _jmol.targetText = targetSuffix ? ",\"" + targetSuffix + "\"" : ",0";\r
-}\r
-\r
-function jmolScript(script, targetSuffix) {\r
- if (script) {\r
- _jmolCheckBrowser();\r
- if (targetSuffix == "all") {\r
- with (_jmol) {\r
- for (var i = 0; i < appletSuffixes.length; ++i) {\r
- var applet = _jmolGetApplet(appletSuffixes[i]);\r
- if (applet) applet.script(script);\r
- }\r
- }\r
- } else {\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) applet.script(script);\r
- }\r
- }\r
-}\r
-\r
-function jmolLoadInline(model, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- if (typeof(model) == "string")\r
- return applet.loadInlineString(model, "", false);\r
- else\r
- return applet.loadInlineArray(model, "", false);\r
-}\r
-\r
-\r
-function jmolLoadInlineScript(model, script, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- return applet.loadInlineString(model, script, false);\r
-}\r
-\r
-\r
-function jmolLoadInlineArray(ModelArray, script, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- script || (script="")\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- try {\r
- return applet.loadInlineArray(ModelArray, script, false);\r
- } catch (err) {\r
- //IE 7 bug\r
- return applet.loadInlineString(ModelArray.join("\n"), script, false);\r
- }\r
-}\r
-\r
-function jmolAppendInlineArray(ModelArray, script, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- script || (script="")\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- try {\r
- return applet.loadInlineArray(ModelArray, script, true);\r
- } catch (err) {\r
- //IE 7 bug\r
- return applet.loadInlineString(ModelArray.join("\n"), script, true);\r
- }\r
-}\r
-\r
-function jmolAppendInlineScript(model, script, targetSuffix) {\r
- if (!model)return "ERROR: NO MODEL"\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (!applet)return "ERROR: NO APPLET"\r
- return applet.loadInlineString(model, script, true);\r
-}\r
-\r
-function jmolCheckBrowser(action, urlOrMessage, nowOrLater) {\r
- if (typeof action == "string") {\r
- action = action.toLowerCase();\r
- action == "alert" || action == "redirect" || action == "popup" || (action = null);\r
- }\r
- if (typeof action != "string")\r
- alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +\r
- "action must be 'alert', 'redirect', or 'popup'");\r
- else {\r
- if (typeof urlOrMessage != "string")\r
- alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +\r
- "urlOrMessage must be a string");\r
- else {\r
- _jmol.checkBrowserAction = action;\r
- _jmol.checkBrowserUrlOrMessage = urlOrMessage;\r
- }\r
- }\r
- if (typeof nowOrLater == "string" && nowOrLater.toLowerCase() == "now")\r
- _jmolCheckBrowser();\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Cascading Style Sheet Class support\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolSetAppletCssClass(appletCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.appletCssClass = appletCssClass;\r
- _jmol.appletCssText = appletCssClass ? "class='" + appletCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetButtonCssClass(buttonCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.buttonCssClass = buttonCssClass;\r
- _jmol.buttonCssText = buttonCssClass ? "class='" + buttonCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetCheckboxCssClass(checkboxCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.checkboxCssClass = checkboxCssClass;\r
- _jmol.checkboxCssText = checkboxCssClass ? "class='" + checkboxCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetRadioCssClass(radioCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.radioCssClass = radioCssClass;\r
- _jmol.radioCssText = radioCssClass ? "class='" + radioCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetLinkCssClass(linkCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.linkCssClass = linkCssClass;\r
- _jmol.linkCssText = linkCssClass ? "class='" + linkCssClass + "' " : "";\r
- }\r
-}\r
-\r
-function jmolSetMenuCssClass(menuCssClass) {\r
- if (_jmol.hasGetElementById) {\r
- _jmol.menuCssClass = menuCssClass;\r
- _jmol.menuCssText = menuCssClass ? "class='" + menuCssClass + "' " : "";\r
- }\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// functions for INTERNAL USE ONLY which are subject to change\r
-// use at your own risk ... you have been WARNED!\r
-////////////////////////////////////////////////////////////////\r
-var _jmol = {\r
- currentDocument: document,\r
-\r
- debugAlert: false,\r
- \r
- codebase: "",\r
- modelbase: ".",\r
- \r
- appletCount: 0,\r
- appletSuffixes: [],\r
- appletWindow: null,\r
- allowedJmolSize: [25, 2048, 300], // min, max, default (pixels)\r
- /* By setting the _jmol.allowedJmolSize[] variable in the webpage \r
- before calling jmolApplet(), limits for applet size can be overriden.\r
- 2048 standard for GeoWall (http://geowall.geo.lsa.umich.edu/home.html)\r
- */ \r
- buttonCount: 0,\r
- checkboxCount: 0,\r
- linkCount: 0,\r
- cmdCount: 0,\r
- menuCount: 0,\r
- radioCount: 0,\r
- radioGroupCount: 0,\r
- \r
- appletCssClass: null,\r
- appletCssText: "",\r
- buttonCssClass: null,\r
- buttonCssText: "",\r
- checkboxCssClass: null,\r
- checkboxCssText: "",\r
- java_arguments: "-Xmx512m",\r
- radioCssClass: null,\r
- radioCssText: "",\r
- linkCssClass: null,\r
- linkCssText: "",\r
- menuCssClass: null,\r
- menuCssText: "",\r
- \r
- targetSuffix: 0,\r
- targetText: ",0",\r
- scripts: [""],\r
- params: {\r
- syncId: ("" + Math.random()).substring(3),\r
- progressbar: "true",\r
- progresscolor: "blue",\r
- boxbgcolor: "black",\r
- boxfgcolor: "white",\r
- boxmessage: "Downloading JmolApplet ..."\r
- },\r
- ua: navigator.userAgent.toLowerCase(),\r
- // uaVersion: parseFloat(navigator.appVersion), // not used\r
- \r
- os: "unknown",\r
- browser: "unknown",\r
- browserVersion: 0,\r
- hasGetElementById: !!document.getElementById,\r
- isJavaEnabled: navigator.javaEnabled(),\r
- // isNetscape47Win: false, // not used, N4.7 is no longer supported even for detection\r
- useIEObject: false,\r
- useHtml4Object: false,\r
- \r
- windowsClassId: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",\r
- windowsCabUrl:\r
- "http://java.sun.com/update/1.6.0/jinstall-6u22-windows-i586.cab",\r
-\r
- isBrowserCompliant: false,\r
- isJavaCompliant: false,\r
- isFullyCompliant: false,\r
-\r
- initialized: false,\r
- initChecked: false,\r
- \r
- browserChecked: false,\r
- checkBrowserAction: "alert",\r
- checkBrowserUrlOrMessage: null,\r
-\r
- archivePath: null, // JmolApplet0.jar OR JmolAppletSigned0.jar\r
-\r
- previousOnloadHandler: null,\r
-\r
- jmoljar: null, \r
- useNoApplet: false,\r
-\r
- ready: {}\r
-}\r
-\r
-with (_jmol) {\r
- function _jmolTestUA(candidate) {\r
- var ua = _jmol.ua;\r
- var index = ua.indexOf(candidate);\r
- if (index < 0)\r
- return false;\r
- _jmol.browser = candidate;\r
- _jmol.browserVersion = parseFloat(ua.substring(index+candidate.length+1));\r
- return true;\r
- }\r
- \r
- function _jmolTestOS(candidate) {\r
- if (_jmol.ua.indexOf(candidate) < 0)\r
- return false;\r
- _jmol.os = candidate;\r
- return true;\r
- }\r
- \r
- _jmolTestUA("konqueror") ||\r
- _jmolTestUA("webkit") ||\r
- _jmolTestUA("omniweb") ||\r
- _jmolTestUA("opera") ||\r
- _jmolTestUA("webtv") ||\r
- _jmolTestUA("icab") ||\r
- _jmolTestUA("msie") ||\r
- (_jmol.ua.indexOf("compatible") < 0 && _jmolTestUA("mozilla")); //Netscape, Mozilla, Seamonkey, Firefox and anything assimilated\r
- \r
- _jmolTestOS("linux") ||\r
- _jmolTestOS("unix") ||\r
- _jmolTestOS("mac") ||\r
- _jmolTestOS("win");\r
-\r
- /* not used:\r
- isNetscape47Win = (os == "win" && browser == "mozilla" &&\r
- browserVersion >= 4.78 && browserVersion <= 4.8);\r
- */\r
-\r
- if (os == "win") {\r
- isBrowserCompliant = hasGetElementById;\r
- } else if (os == "mac") { // mac is the problem child :-(\r
- if (browser == "mozilla" && browserVersion >= 5) {\r
- // miguel 2004 11 17\r
- // checking the plugins array does not work because\r
- // Netscape 7.2 OS X still has Java 1.3.1 listed even though\r
- // javaplugin.sf.net is installed to upgrade to 1.4.2\r
- eval("try {var v = java.lang.System.getProperty('java.version');" +\r
- " _jmol.isBrowserCompliant = v >= '1.4.2';" +\r
- " } catch (e) { }");\r
- } else if (browser == "opera" && browserVersion <= 7.54) {\r
- isBrowserCompliant = false;\r
- } else {\r
- isBrowserCompliant = hasGetElementById &&\r
- !((browser == "msie") ||\r
- (browser == "webkit" && browserVersion < 125.12));\r
- }\r
- } else if (os == "linux" || os == "unix") {\r
- if (browser == "konqueror" && browserVersion <= 3.3)\r
- isBrowserCompliant = false;\r
- else\r
- isBrowserCompliant = hasGetElementById;\r
- } else { // other OS\r
- isBrowserCompliant = hasGetElementById;\r
- }\r
-\r
- // possibly more checks in the future for this\r
- isJavaCompliant = isJavaEnabled;\r
-\r
- isFullyCompliant = isBrowserCompliant && isJavaCompliant;\r
-\r
- useIEObject = (os == "win" && browser == "msie" && browserVersion >= 5.5);\r
- useHtml4Object =\r
- (browser == "mozilla" && browserVersion >= 5) ||\r
- (browser == "opera" && browserVersion >= 8) ||\r
- (browser == "webkit" && browserVersion >= 412.2);\r
- try {\r
- if (top.location.search.indexOf("JMOLJAR=")>=0)\r
- jmoljar = top.location.search.split("JMOLJAR=")[1].split("&")[0];\r
- } catch(e) {\r
- // can't access top.location\r
- }\r
- try {\r
- useNoApplet = (top.location.search.indexOf("NOAPPLET")>=0);\r
- } catch(e) {\r
- // can't access top.document\r
- }\r
-}\r
-\r
-function jmolSetMemoryMb(nMb) {\r
- _jmol.java_arguments = "-Xmx" + Math.round(nMb) + "m"\r
-}\r
-\r
-function jmolSetParameter(name,value) {\r
- _jmol.params[name] = value\r
-}\r
-\r
-function jmolSetCallback(callbackName,funcName) {\r
- _jmol.params[callbackName] = funcName\r
-}\r
-\r
- try {\r
-// note this is done FIRST, so it cannot override a setting done by the developer\r
- if (top.location.search.indexOf("PARAMS=")>=0) {\r
- var pars = unescape(top.location.search.split("PARAMS=")[1].split("&")[0]).split(";");\r
- for (var i = 0; i < pars.length; i++) {\r
- var p = pars[i].split(":");\r
- jmolSetParameter(p[0],p[1]);\r
- }\r
- }\r
- } catch(e) {\r
- // can't access top.location\r
- }\r
-\r
-function jmolSetSyncId(n) {\r
- return _jmol.params["syncId"] = n\r
-}\r
-\r
-function jmolGetSyncId() {\r
- return _jmol.params["syncId"]\r
-}\r
-\r
-function jmolSetLogLevel(n) {\r
- _jmol.params.logLevel = ''+n;\r
-}\r
-\r
- /* AngelH, mar2007:\r
- By (re)setting these variables in the webpage before calling jmolApplet(), \r
- a custom message can be provided (e.g. localized for user's language) when no Java is installed.\r
- */\r
-if (noJavaMsg==undefined) var noJavaMsg = \r
- "You do not have Java applets enabled in your web browser, or your browser is blocking this applet.<br />\n" +\r
- "Check the warning message from your browser and/or enable Java applets in<br />\n" +\r
- "your web browser preferences, or install the Java Runtime Environment from <a href='http://www.java.com'>www.java.com</a><br />";\r
-if (noJavaMsg2==undefined) var noJavaMsg2 = \r
- "You do not have the<br />\n" +\r
- "Java Runtime Environment<br />\n" +\r
- "installed for applet support.<br />\n" +\r
- "Visit <a href='http://www.java.com'>www.java.com</a>";\r
-function _jmolApplet(size, inlineModel, script, nameSuffix) {\r
- /* AngelH, mar2007\r
- Fixed percent / pixel business, to avoid browser errors:\r
- put "px" where needed, avoid where not.\r
-\r
- Bob Hanson, 1/2010\r
- Fixed inline escape changing returns to | \r
- */\r
- with (_jmol) {\r
- nameSuffix == undefined && (nameSuffix = appletCount);\r
- appletSuffixes.push(nameSuffix);\r
- ++appletCount;\r
- script || (script = "select *");\r
- var sz = _jmolGetAppletSize(size);\r
- var widthAndHeight = " width='" + sz[0] + "' height='" + sz[1] + "' ";\r
- var tHeader, tFooter;\r
- codebase || jmolInitialize(".");\r
- if (useIEObject || useHtml4Object) {\r
- params.archive = archivePath;\r
- params.mayscript = 'true';\r
- params.codebase = codebase;\r
- params.code = 'JmolApplet';\r
- tHeader = \r
- "<object name='jmolApplet" + nameSuffix +\r
- "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +\r
- widthAndHeight + "\n";\r
- tFooter = "</object>";\r
- }\r
- if (java_arguments)\r
- params.java_arguments = java_arguments;\r
- if (useIEObject) { // use MSFT IE6 object tag with .cab file reference\r
- tHeader += " classid='" + windowsClassId + "'\n" +\r
- (windowsCabUrl ? " codebase='" + windowsCabUrl + "'\n" : "") + ">\n";\r
- } else if (useHtml4Object) { // use HTML4 object tag\r
- tHeader += " type='application/x-java-applet'\n>\n";\r
- /* " classid='java:JmolApplet'\n" + AH removed this\r
- Chromium Issue 62076: Java Applets using an <object> with a classid paramater don't load.\r
- http://code.google.com/p/chromium/issues/detail?id=62076\r
- They say this is the correct behavior according to the spec, and there's no indication at this point \r
- that WebKit will be changing the handling, so eventually Safari will acquire this behavior too.\r
- Removing the classid parameter seems to be well tolerated by all browsers (even IE!).\r
- */\r
- } else { // use applet tag\r
- tHeader = \r
- "<applet name='jmolApplet" + nameSuffix +\r
- "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +\r
- widthAndHeight + "\n" +\r
- " code='JmolApplet'" +\r
- " archive='" + archivePath + "' codebase='" + codebase + "'\n" +\r
- " mayscript='true'>\n";\r
- tFooter = "</applet>";\r
- }\r
- var visitJava;\r
- if (useIEObject || useHtml4Object) {\r
- var szX = "width:" + sz[0]\r
- if ( szX.indexOf("%")==-1 ) szX+="px" \r
- var szY = "height:" + sz[1]\r
- if ( szY.indexOf("%")==-1 ) szY+="px" \r
- visitJava =\r
- "<p style='background-color:yellow; color:black; " +\r
- szX + ";" + szY + ";" +\r
- // why doesn't this vertical-align work?\r
- "text-align:center;vertical-align:middle;'>\n" +\r
- noJavaMsg +\r
- "</p>";\r
- } else {\r
- visitJava =\r
- "<table bgcolor='yellow'><tr>" +\r
- "<td align='center' valign='middle' " + widthAndHeight + "><font color='black'>\n" +\r
- noJavaMsg2 +\r
- "</font></td></tr></table>";\r
- }\r
- params.loadInline = (inlineModel ? inlineModel : "");\r
- params.script = (script ? _jmolSterilizeScript(script) : "");\r
- var t = tHeader + _jmolParams() + visitJava + tFooter;\r
- jmolSetTarget(nameSuffix);\r
- ready["jmolApplet" + nameSuffix] = false;\r
- if (_jmol.debugAlert)\r
- alert(t);\r
- return _jmolDocumentWrite(t);\r
- }\r
-}\r
-\r
-function _jmolParams() {\r
- var t = "";\r
- for (var i in _jmol.params)\r
- if(_jmol.params[i]!="")\r
- t+=" <param name='"+i+"' value='"+_jmol.params[i]+"' />\n";\r
- return t\r
-}\r
-\r
-function _jmolInitCheck() {\r
- if (_jmol.initChecked)\r
- return;\r
- _jmol.initChecked = true;\r
- jmolInitialize(defaultdir, defaultjar)\r
-}\r
-\r
-function _jmolCheckBrowser() {\r
- with (_jmol) {\r
- if (browserChecked)\r
- return;\r
- browserChecked = true;\r
- \r
- if (isFullyCompliant)\r
- return true;\r
-\r
- if (checkBrowserAction == "redirect")\r
- location.href = checkBrowserUrlOrMessage;\r
- else if (checkBrowserAction == "popup")\r
- _jmolPopup(checkBrowserUrlOrMessage);\r
- else {\r
- var msg = checkBrowserUrlOrMessage;\r
- if (msg == null)\r
- msg = "Your web browser is not fully compatible with Jmol\n\n" +\r
- "browser: " + browser +\r
- " version: " + browserVersion +\r
- " os: " + os +\r
- " isBrowserCompliant: " + isBrowserCompliant +\r
- " isJavaCompliant: " + isJavaCompliant +\r
- "\n\n" + ua;\r
- alert(msg);\r
- }\r
- }\r
- return false;\r
-}\r
-\r
-function jmolSetXHTML(id) {\r
- _jmol.isXHTML = true\r
- _jmol.XhtmlElement = null\r
- _jmol.XhtmlAppendChild = false\r
- if (id){\r
- _jmol.XhtmlElement = document.getElementById(id)\r
- _jmol.XhtmlAppendChild = true\r
- }\r
-}\r
-\r
-function _jmolDocumentWrite(text) {\r
- if (_jmol.currentDocument) {\r
- if (_jmol.isXHTML && !_jmol.XhtmlElement) {\r
- var s = document.getElementsByTagName("script")\r
- _jmol.XhtmlElement = s.item(s.length - 1)\r
- _jmol.XhtmlAppendChild = false\r
- }\r
- if (_jmol.XhtmlElement) {\r
- _jmolDomDocumentWrite(text)\r
- } else {\r
- _jmol.currentDocument.write(text);\r
- }\r
- }\r
- return text;\r
-}\r
-\r
-function _jmolDomDocumentWrite(data) {\r
- var pt = 0\r
- var Ptr = []\r
- Ptr[0] = 0\r
- while (Ptr[0] < data.length) {\r
- var child = _jmolGetDomElement(data, Ptr)\r
- if (!child)break\r
- if (_jmol.XhtmlAppendChild)\r
- _jmol.XhtmlElement.appendChild(child)\r
- else\r
- _jmol.XhtmlElement.parentNode.insertBefore(child, _jmol.XhtmlElement); \r
- }\r
-}\r
-function _jmolGetDomElement(data, Ptr, closetag, lvel) {\r
- var e = document.createElement("span")\r
- e.innerHTML = data\r
- Ptr[0] = data.length\r
- return e\r
-\r
-//unnecessary?\r
-\r
- closetag || (closetag = "")\r
- lvel || (lvel = 0)\r
- var pt0 = Ptr[0]\r
- var pt = pt0\r
- while (pt < data.length && data.charAt(pt) != "<") pt++\r
- if (pt != pt0) {\r
- var text = data.substring(pt0, pt)\r
- Ptr[0] = pt\r
- return document.createTextNode(text)\r
- } \r
- pt0 = ++pt\r
- var ch\r
- while (pt < data.length && "\n\r\t >".indexOf(ch = data.charAt(pt)) < 0) pt++\r
- var tagname = data.substring(pt0, pt)\r
- var e = (tagname == closetag || tagname == "/" ? "" \r
- : document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', tagname)\r
- : document.createElement(tagname));\r
- if (ch == ">") {\r
- Ptr[0] = ++pt\r
- return e\r
- }\r
- while (pt < data.length && (ch = data.charAt(pt)) != ">") {\r
- while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++\r
- pt0 = pt\r
- while (pt < data.length && "\n\r\t =/>".indexOf(ch = data.charAt(pt)) < 0) pt++\r
- var attrname = data.substring(pt0, pt).toLowerCase()\r
- if (attrname && ch != "=") \r
- e.setAttribute(attrname, "true")\r
- while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++\r
- if (ch == "/") {\r
- Ptr[0] = pt + 2\r
- return e\r
- } else if (ch == "=") {\r
- var quote = data.charAt(++pt)\r
- pt0 = ++pt\r
- while (pt < data.length && (ch = data.charAt(pt)) != quote) pt++\r
- var attrvalue = data.substring(pt0, pt)\r
- e.setAttribute(attrname, attrvalue)\r
- pt++\r
- }\r
- }\r
- Ptr[0] = ++pt\r
- while (Ptr[0] < data.length) {\r
- var child = _jmolGetDomElement(data, Ptr, "/" + tagname, lvel+1)\r
- if (!child)break\r
- e.appendChild(child)\r
- }\r
- return e\r
-}\r
-\r
-function _jmolPopup(url) {\r
- var popup = window.open(url, "JmolPopup",\r
- "left=150,top=150,height=400,width=600," +\r
- "directories=yes,location=yes,menubar=yes," +\r
- "toolbar=yes," +\r
- "resizable=yes,scrollbars=yes,status=yes");\r
- if (popup.focus)\r
- poup.focus();\r
-}\r
-\r
-function _jmolReadyCallback(name) {\r
- if (_jmol.debugAlert)\r
- alert(name + " is ready");\r
- _jmol.ready["" + name] = true;\r
-}\r
-\r
-function _jmolSterilizeScript(script) {\r
- script = script.replace(/'/g, "'");\r
- if (_jmol.debugAlert)\r
- alert("script:\n" + script);\r
- return script;\r
-}\r
-\r
-function _jmolSterilizeInline(model) {\r
- model = model.replace(/\r|\n|\r\n/g, (model.indexOf("|") >= 0 ? "\\/n" : "|")).replace(/'/g, "'");\r
- if (_jmol.debugAlert)\r
- alert("inline model:\n" + model);\r
- return model;\r
-}\r
-\r
-function _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {\r
- ++_jmol.radioCount;\r
- groupName != undefined && groupName != null || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));\r
- if (!script)\r
- return "";\r
- labelHtml != undefined && labelHtml != null || (labelHtml = script.substring(0, 32));\r
- separatorHtml || (separatorHtml = "")\r
- var scriptIndex = _jmolAddScript(script);\r
- var eospan = "</span>"\r
- var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" \r
- + groupName + "' id='"+id+"' type='radio' onclick='_jmolClick(this," +\r
- scriptIndex + _jmol.targetText + ");return true;' onmouseover='_jmolMouseOver(" +\r
- scriptIndex + ");return true;' onmouseout='_jmolMouseOut()' " +\r
- (isChecked ? "checked='true' " : "") + _jmol.radioCssText + " />"\r
- if (labelHtml.toLowerCase().indexOf("<td>")>=0) {\r
- t += eospan\r
- eospan = "";\r
- }\r
- t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan + separatorHtml;\r
-\r
- return t;\r
-}\r
-\r
-function _jmolFindApplet(target) {\r
- // first look for the target in the current window\r
- var applet = _jmolFindAppletInWindow(_jmol.appletWindow != null ? _jmol.appletWindow : window, target);\r
- // THEN look for the target in child frames\r
- if (applet == undefined)\r
- applet = _jmolSearchFrames(window, target);\r
- // FINALLY look for the target in sibling frames\r
- if (applet == undefined)\r
- applet = _jmolSearchFrames(top, target); // look starting in top frame\r
- return applet;\r
-}\r
-\r
-function _jmolGetApplet(targetSuffix){\r
- var target = "jmolApplet" + (targetSuffix ? targetSuffix : "0");\r
- var applet = _jmolFindApplet(target);\r
- if (applet) return applet\r
- _jmol.alerted || alert("could not find applet " + target);\r
- _jmol.alerted = true;\r
- return null\r
-}\r
-\r
-function _jmolSearchFrames(win, target) {\r
- var applet;\r
- var frames = win.frames;\r
- if (frames && frames.length) { // look in all the frames below this window\r
- try{\r
- for (var i = 0; i < frames.length; ++i) {\r
- applet = _jmolSearchFrames(frames[i], target);\r
- if (applet)\r
- return applet;\r
- }\r
- }catch(e) {\r
- if (_jmol.debugAlert)\r
- alert("Jmol.js _jmolSearchFrames cannot access " + win.name + ".frame[" + i + "] consider using jmolSetAppletWindow()") \r
- }\r
- }\r
- return applet = _jmolFindAppletInWindow(win, target)\r
-}\r
-\r
-function _jmolFindAppletInWindow(win, target) {\r
- var doc = win.document;\r
- if (doc.getElementById(target))\r
- return doc.getElementById(target);\r
- else if (doc.applets)\r
- return doc.applets[target];\r
- else\r
- return doc[target]; \r
-}\r
-\r
-function _jmolAddScript(script) {\r
- if (!script)\r
- return 0;\r
- var index = _jmol.scripts.length;\r
- _jmol.scripts[index] = script;\r
- return index;\r
-}\r
-\r
-function _jmolClick(elementClicked, scriptIndex, targetSuffix) {\r
- _jmol.element = elementClicked;\r
- _jmolScriptExecute(elementClicked, _jmol.scripts[scriptIndex], targetSuffix);\r
-}\r
-\r
-function _jmolMenuSelected(menuObject, targetSuffix) {\r
- var scriptIndex = menuObject.value;\r
- if (scriptIndex != undefined) {\r
- _jmolScriptExecute(menuObject, _jmol.scripts[scriptIndex], targetSuffix);\r
- return;\r
- }\r
- var len = menuObject.length;\r
- if (typeof len == "number") {\r
- for (var i = 0; i < len; ++i) {\r
- if (menuObject[i].selected) {\r
- _jmolClick(menuObject[i], menuObject[i].value, targetSuffix);\r
- return;\r
- }\r
- }\r
- }\r
- alert("?Que? menu selected bug #8734");\r
-}\r
-\r
-\r
-_jmol.checkboxMasters = {};\r
-_jmol.checkboxItems = {};\r
-\r
-function jmolSetCheckboxGroup(chkMaster,chkBox) {\r
- var id = chkMaster;\r
- if(typeof(id)=="number")id = "jmolCheckbox" + id;\r
- chkMaster = document.getElementById(id);\r
- if (!chkMaster)alert("jmolSetCheckboxGroup: master checkbox not found: " + id);\r
- var m = _jmol.checkboxMasters[id] = {};\r
- m.chkMaster = chkMaster;\r
- m.chkGroup = {};\r
- for (var i = 1; i < arguments.length; i++){\r
- var id = arguments[i];\r
- if(typeof(id)=="number")id = "jmolCheckbox" + id;\r
- checkboxItem = document.getElementById(id);\r
- if (!checkboxItem)alert("jmolSetCheckboxGroup: group checkbox not found: " + id);\r
- m.chkGroup[id] = checkboxItem;\r
- _jmol.checkboxItems[id] = m;\r
- }\r
-}\r
-\r
-function _jmolNotifyMaster(m){\r
- //called when a group item is checked\r
- var allOn = true;\r
- var allOff = true;\r
- for (var chkBox in m.chkGroup){\r
- if(m.chkGroup[chkBox].checked)\r
- allOff = false;\r
- else\r
- allOn = false;\r
- }\r
- if (allOn)m.chkMaster.checked = true; \r
- if (allOff)m.chkMaster.checked = false;\r
- if ((allOn || allOff) && _jmol.checkboxItems[m.chkMaster.id])\r
- _jmolNotifyMaster(_jmol.checkboxItems[m.chkMaster.id])\r
-}\r
-\r
-function _jmolNotifyGroup(m, isOn){\r
- //called when a master item is checked\r
- for (var chkBox in m.chkGroup){\r
- var item = m.chkGroup[chkBox]\r
- item.checked = isOn;\r
- if (_jmol.checkboxMasters[item.id])\r
- _jmolNotifyGroup(_jmol.checkboxMasters[item.id], isOn)\r
- }\r
-}\r
-\r
-function _jmolCbClick(ckbox, whenChecked, whenUnchecked, targetSuffix) {\r
- _jmol.control = ckbox\r
- _jmolClick(ckbox, ckbox.checked ? whenChecked : whenUnchecked, targetSuffix);\r
- if(_jmol.checkboxMasters[ckbox.id])\r
- _jmolNotifyGroup(_jmol.checkboxMasters[ckbox.id], ckbox.checked)\r
- if(_jmol.checkboxItems[ckbox.id])\r
- _jmolNotifyMaster(_jmol.checkboxItems[ckbox.id])\r
-}\r
-\r
-function _jmolCbOver(ckbox, whenChecked, whenUnchecked) {\r
- window.status = _jmol.scripts[ckbox.checked ? whenUnchecked : whenChecked];\r
-}\r
-\r
-function _jmolMouseOver(scriptIndex) {\r
- window.status = _jmol.scripts[scriptIndex];\r
-}\r
-\r
-function _jmolMouseOut() {\r
- window.status = " ";\r
- return true;\r
-}\r
-\r
-function _jmolSetCodebase(codebase) {\r
- _jmol.codebase = codebase ? codebase : ".";\r
- if (_jmol.debugAlert)\r
- alert("jmolCodebase=" + _jmol.codebase);\r
-}\r
-\r
-function _jmolOnloadResetForms() {\r
- // must be evaluated ONLY once\r
- _jmol.previousOnloadHandler = window.onload;\r
- window.onload =\r
- function() {\r
- with (_jmol) {\r
- if (buttonCount+checkboxCount+menuCount+radioCount+radioGroupCount > 0) {\r
- var forms = document.forms;\r
- for (var i = forms.length; --i >= 0; )\r
- forms[i].reset();\r
- }\r
- if (previousOnloadHandler)\r
- previousOnloadHandler();\r
- }\r
- }\r
-}\r
-\r
-////////////////////////////////////\r
-/////extensions for getProperty/////\r
-////////////////////////////////////\r
-\r
-\r
-function _jmolEvalJSON(s,key){\r
- s=s+""\r
- if(!s)return []\r
- if(s.charAt(0)!="{"){\r
- if(s.indexOf(" | ")>=0)s=s.replace(/\ \|\ /g, "\n")\r
- return s\r
- }\r
- var A = eval("("+s+")")\r
- if(!A)return\r
- if(key && A[key])A=A[key]\r
- return A\r
-}\r
-\r
-function _jmolEnumerateObject(A,key){\r
- var sout=""\r
- if(typeof(A) == "string" && A!="null"){\r
- sout+="\n"+key+"=\""+A+"\""\r
- }else if(!isNaN(A)||A==null){\r
- sout+="\n"+key+"="+(A+""==""?"null":A)\r
- }else if(A.length){\r
- sout+=key+"=[]"\r
- for(var i=0;i<A.length;i++){\r
- sout+="\n"\r
- if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){\r
- sout+=_jmolEnumerateObject(A[i],key+"["+i+"]")\r
- }else{\r
- sout+=key+"["+i+"]="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])\r
- }\r
- }\r
- }else{\r
- if(key != ""){\r
- sout+=key+"={}"\r
- key+="."\r
- }\r
- \r
- for(var i in A){\r
- sout+="\n"\r
- if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){\r
- sout+=_jmolEnumerateObject(A[i],key+i)\r
- }else{\r
- sout+=key+i+"="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])\r
- }\r
- }\r
- } \r
- return sout\r
-}\r
-\r
-\r
-function _jmolSortKey0(a,b){\r
- return (a[0]<b[0]?1:a[0]>b[0]?-1:0)\r
-}\r
-\r
-function _jmolSortMessages(A){\r
- if(!A || typeof(A)!="object")return []\r
- var B = []\r
- for(var i=A.length-1;i>=0;i--)for(var j=0;j<A[i].length;j++)B[B.length]=A[i][j]\r
- if(B.length == 0) return\r
- B=B.sort(_jmolSortKey0)\r
- return B\r
-}\r
-\r
-/////////additional extensions //////////\r
-\r
-\r
-function _jmolDomScriptLoad(URL){\r
- //open(URL) //to debug\r
- _jmol.servercall=URL\r
- var node = document.getElementById("_jmolScriptNode")\r
- if (node && _jmol.browser!="msie"){\r
- document.getElementsByTagName("HEAD")[0].removeChild(node)\r
- node=null\r
- }\r
- if (node) {\r
- node.setAttribute("src",URL)\r
- } else {\r
- node=document.createElement("script")\r
- node.setAttribute("id","_jmolScriptNode")\r
- node.setAttribute("type","text/javascript")\r
- node.setAttribute("src",URL)\r
- document.getElementsByTagName("HEAD")[0].appendChild(node)\r
- }\r
-}\r
-\r
-\r
-function _jmolExtractPostData(url){\r
- S=url.split("&POST:")\r
- var s=""\r
- for(var i=1;i<S.length;i++){\r
- KV=S[i].split("=")\r
- s+="&POSTKEY"+i+"="+KV[0]\r
- s+="&POSTVALUE"+i+"="+KV[1]\r
- }\r
- return "&url="+escape(S[0])+s\r
-}\r
-\r
-function _jmolLoadModel(targetSuffix,remoteURL,array,isError,errorMessage){\r
- //called by server, but in client\r
- //overload this function to customize return\r
- _jmol.remoteURL=remoteURL\r
- isError && alert(errorMessage)\r
- jmolLoadInlineScript(array.join("\n"),_jmol.optionalscript,targetSuffix)\r
-}\r
-\r
-//////////user property/status functions/////////\r
-\r
-function jmolGetStatus(strStatus,targetSuffix){\r
- return _jmolSortMessages(jmolGetPropertyAsArray("jmolStatus",strStatus,targetSuffix))\r
-}\r
-\r
-function jmolGetPropertyAsArray(sKey,sValue,targetSuffix) {\r
- return _jmolEvalJSON(jmolGetPropertyAsJSON(sKey,sValue,targetSuffix),sKey)\r
-}\r
-\r
-function jmolGetPropertyAsString(sKey,sValue,targetSuffix) {\r
- var applet = _jmolGetApplet(targetSuffix);\r
- sValue == undefined && (sValue="");\r
- return (applet ? applet.getPropertyAsString(sKey,sValue) + "" : "")\r
-}\r
-\r
-function jmolGetPropertyAsJSON(sKey,sValue,targetSuffix) {\r
- sValue == undefined && (sValue = "")\r
- var applet = _jmolGetApplet(targetSuffix);\r
- try {\r
- return (applet ? applet.getPropertyAsJSON(sKey,sValue) + "" : "")\r
- } catch(e) {\r
- return ""\r
- }\r
-}\r
-\r
-function jmolGetPropertyAsJavaObject(sKey,sValue,targetSuffix) {\r
- sValue == undefined && (sValue = "")\r
- var applet = _jmolGetApplet(targetSuffix);\r
- return (applet ? applet.getProperty(sKey,sValue) : null)\r
-}\r
-\r
-\r
-function jmolDecodeJSON(s) {\r
- return _jmolEnumerateObject(_jmolEvalJSON(s),"")\r
-}\r
-\r
-\r
-///////// synchronous scripting ////////\r
-\r
-function jmolScriptWait(script, targetSuffix) {\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
- var s = ""\r
- for(var i=Ret.length;--i>=0;)\r
- for(var j=0;j< Ret[i].length;j++)\r
- s+=Ret[i][j]+"\n"\r
- return s\r
-}\r
-\r
-function jmolScriptWaitOutput(script, targetSuffix) {\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var ret = ""\r
- try{\r
- if (script) {\r
- _jmolCheckBrowser();\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) ret += applet.scriptWaitOutput(script);\r
- }\r
- }catch(e){\r
- }\r
- return ret;\r
-}\r
-\r
-function jmolEvaluate(molecularMath, targetSuffix) {\r
-\r
- //carries out molecular math on a model\r
-\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var result = "" + jmolGetPropertyAsJavaObject("evaluate", molecularMath, targetSuffix);\r
- var s = result.replace(/\-*\d+/,"")\r
- if (s == "" && !isNaN(parseInt(result)))return parseInt(result);\r
- var s = result.replace(/\-*\d*\.\d*/,"")\r
- if (s == "" && !isNaN(parseFloat(result)))return parseFloat(result);\r
- return result;\r
-}\r
-\r
-function jmolScriptEcho(script, targetSuffix) {\r
- // returns a newline-separated list of all echos from a script\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
- var s = ""\r
- for(var i=Ret.length;--i>=0;)\r
- for(var j=Ret[i].length;--j>=0;)\r
- if (Ret[i][j][1] == "scriptEcho")s+=Ret[i][j][3]+"\n"\r
- return s.replace(/ \| /g, "\n")\r
-}\r
-\r
-\r
-function jmolScriptMessage(script, targetSuffix) {\r
- // returns a newline-separated list of all messages from a script, ending with "script completed\n"\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
- var s = ""\r
- for(var i=Ret.length;--i>=0;)\r
- for(var j=Ret[i].length;--j>=0;)\r
- if (Ret[i][j][1] == "scriptStatus")s+=Ret[i][j][3]+"\n"\r
- return s.replace(/ \| /g, "\n")\r
-}\r
-\r
-\r
-function jmolScriptWaitAsArray(script, targetSuffix) {\r
- var ret = ""\r
- try{\r
- jmolGetStatus("scriptEcho,scriptMessage,scriptStatus,scriptError",targetSuffix)\r
- if (script) {\r
- _jmolCheckBrowser();\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) ret += applet.scriptWait(script);\r
- ret = _jmolEvalJSON(ret,"jmolStatus")\r
- if(typeof ret == "object")\r
- return ret\r
- }\r
- }catch(e){\r
- }\r
- return [[ret]]\r
-}\r
-\r
-\r
-\r
-//////////// save/restore orientation /////////////\r
-\r
-function jmolSaveOrientation(id, targetSuffix) { \r
- targetSuffix == undefined && (targetSuffix="0")\r
- return _jmol["savedOrientation"+id] = jmolGetPropertyAsArray("orientationInfo","info",targetSuffix).moveTo\r
-}\r
-\r
-function jmolRestoreOrientation(id, targetSuffix) {\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var s=_jmol["savedOrientation"+id]\r
- if (!s || s == "")return\r
- s=s.replace(/1\.0/,"0")\r
- return jmolScriptWait(s,targetSuffix)\r
-}\r
-\r
-function jmolRestoreOrientationDelayed(id, delay, targetSuffix) {\r
- arguments.length < 2 && (delay=1)\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var s=_jmol["savedOrientation"+id]\r
- if (!s || s == "")return\r
- s=s.replace(/1\.0/,delay)\r
- return jmolScriptWait(s,targetSuffix)\r
-}\r
-\r
-//////////// add parameter /////////////\r
-/*\r
- * for adding callbacks or other parameters. Use:\r
-\r
- jmolSetDocument(0)\r
- var s= jmolApplet(....)\r
- s = jmolAppletAddParam(s,"messageCallback", "myFunctionName")\r
- document.write(s)\r
- jmolSetDocument(document) // if you want to then write buttons and such normally\r
- \r
- */\r
-\r
-function jmolAppletAddParam(appletCode,name,value){\r
- return (value == "" ? appletCode : appletCode.replace(/\<param/,"\n<param name='"+name+"' value='"+value+"' />\n<param"))\r
-}\r
-\r
-///////////////auto load Research Consortium for Structural Biology (RCSB) data ///////////\r
-\r
-function jmolLoadAjax_STOLAF_RCSB(fileformat,pdbid,optionalscript,targetSuffix){\r
-\r
- _jmol.thismodel || (_jmol.thismodel = "1crn")\r
- _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")\r
- _jmol.RCSBserver || (_jmol.RCSBserver="http://www.rcsb.org")\r
- _jmol.defaultURL_RCSB || (_jmol.defaultURL_RCSB=_jmol.RCSBserver+"/pdb/files/1CRN.CIF")\r
- fileformat || (fileformat="PDB")\r
- pdbid || (pdbid=prompt("Enter a 4-digit PDB ID:",_jmol.thismodel))\r
- if(!pdbid || pdbid.length != 4)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- var url=_jmol.defaultURL_RCSB.replace(/1CRN/g,pdbid.toUpperCase())\r
- fileformat=="CIF" || (url=url.replace(/CIF/,fileformat))\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=pdbid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-///////////////auto load NIH CACTVS data -- compound name or SMILES ///////////\r
-\r
-function jmolLoadAjax_STOLAF_NIH(compoundid,optionalscript,targetSuffix){\r
- _jmol.thismodel || (_jmol.thismodel = "aspirin")\r
- _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")\r
- _jmol.defaultURL_NIH || (_jmol.defaultURL_NIH="http://cactus.nci.nih.gov/chemical/structure/FILE/file?format=sdf&get3d=True")\r
- compoundid || (compoundid=prompt("Enter a compound name or a SMILES string:",_jmol.thismodel))\r
- if(!compoundid)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- var url=_jmol.defaultURL_NIH.replace(/FILE/g,compoundid)\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=compoundid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-/////////////// St. Olaf College AJAX server -- ANY URL ///////////\r
-\r
-function jmolLoadAjax_STOLAF_ANY(url, userid, optionalscript,targetSuffix){\r
- _jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm"\r
- _jmol.thisurlANY || (_jmol.thisurlANY = "http://www.stolaf.edu/depts/chemistry/mo/struc/data/ycp3-1.mol")\r
- url || (url=prompt("Enter any (uncompressed file) URL:", _jmol.thisurlANY))\r
- userid || (userid="0")\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.modelArray = []\r
- _jmol.thisurl = url\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
-}\r
-\r
-\r
-/////////////// Mineralogical Society of America (MSA) data /////////\r
-\r
-function jmolLoadAjax_MSA(key,value,optionalscript,targetSuffix){\r
-\r
- _jmol.thiskeyMSA || (_jmol.thiskeyMSA = "mineral")\r
- _jmol.thismodelMSA || (_jmol.thismodelMSA = "quartz")\r
- _jmol.ajaxURL_MSA || (_jmol.ajaxURL_MSA="http://rruff.geo.arizona.edu/AMS/result.php?mineral=quartz&viewing=ajaxjs")\r
- key || (key=prompt("Enter a field:", _jmol.thiskeyMSA))\r
- if(!key)return ""\r
- value || (value=prompt("Enter a "+key+":", _jmol.thismodelMSA))\r
- if(!value)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- optionalscript == 1 && (optionalscript='load "" {1 1 1}')\r
- var url=_jmol.ajaxURL_MSA.replace(/mineral/g,key).replace(/quartz/g,value)\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thiskeyMSA=key\r
- _jmol.thismodelMSA=value\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- loadModel=_jmolLoadModel\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-\r
-function jmolLoadAjaxJS(url, userid, optionalscript,targetSuffix){\r
- userid || (userid="0")\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=userid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.modelArray = []\r
- _jmol.thisurl = url\r
- url+="&returnFunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix\r
- _jmolDomScriptLoad(url)\r
-}\r
-\r
-\r
-//// in case Jmol library has already been loaded:\r
-\r
-}catch(e){}\r
-\r
-///////////////moving atoms //////////////\r
-\r
-// HIGHLY experimental!!\r
-\r
-function jmolSetAtomCoord(i,x,y,z,targetSuffix){\r
- _jmolCheckBrowser();\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) applet.getProperty('jmolViewer').setAtomCoord(i,x,y,z)\r
-}\r
-\r
-function jmolSetAtomCoordRelative(i,x,y,z,targetSuffix){\r
- _jmolCheckBrowser();\r
- var applet=_jmolGetApplet(targetSuffix);\r
- if (applet) applet.getProperty('jmolViewer').setAtomCoordRelative(i,x,y,z)\r
-}\r
-\r
-\r
-///////////////applet fake for testing buttons/////////////\r
-\r
-\r
-if(_jmol.useNoApplet){\r
- jmolApplet = function(w){\r
- var s="<table style='background-color:black' width="+w+"><tr height="+w+">"\r
- +"<td align=center valign=center style='background-color:white'>"\r
- +"Applet would be here"\r
- +"<p><textarea id=fakeApplet rows=5 cols=50></textarea>"\r
- +"</td></tr></table>"\r
- return _jmolDocumentWrite(s)\r
- }\r
-\r
- _jmolFindApplet = function(){return jmolApplet0}\r
-\r
- jmolApplet0 = {\r
- script: function(script){document.getElementById("fakeApplet").value="\njmolScript:\n"+script}\r
- ,scriptWait: function(script){document.getElementById("fakeApplet").value="\njmolScriptWait:\n"+script} \r
- ,loadInline: function(data,script){document.getElementById("fakeApplet").value="\njmolLoadInline data:\n"+data+"\n\nscript:\n"+script}\r
- }\r
-}\r
-\r
-\r
-///////////////////////////////////////////\r
-\r
- // This should no longer be needed, jmolResizeApplet() is better; kept for backwards compatibility\r
- /*\r
- Resizes absolutely (pixels) or by percent of window (w or h 0.5 means 50%).\r
- targetSuffix is optional and defaults to zero (first applet in page).\r
- Both w and h are optional, but needed if you want to use targetSuffix.\r
- h defaults to w\r
- w defaults to 100% of window\r
- If either w or h is between 0 and 1, then it is taken as percent/100.\r
- If either w or h is greater than 1, then it is taken as a size (pixels). \r
- */\r
-function jmolResize(w,h,targetSuffix) {\r
- _jmol.alerted = true;\r
- var percentW = (!w ? 100 : w <= 1 && w > 0 ? w * 100 : 0);\r
- var percentH = (!h ? percentW : h <= 1 && h > 0 ? h * 100 : 0);\r
- if (_jmol.browser=="msie") {\r
- var width=document.body.clientWidth;\r
- var height=document.body.clientHeight;\r
- } else {\r
- var netscapeScrollWidth=15;\r
- var width=window.innerWidth - netscapeScrollWidth;\r
- var height=window.innerHeight-netscapeScrollWidth;\r
- }\r
- var applet = _jmolGetApplet(targetSuffix);\r
- if(!applet)return;\r
- applet.style.width = (percentW ? width * percentW/100 : w)+"px";\r
- applet.style.height = (percentH ? height * percentH/100 : (h ? h : w))+"px";\r
- //title=width + " " + height + " " + (new Date());\r
-}\r
-\r
-// 13 Jun 09 -- makes jmolResize() obsolete (kept for backwards compatibility)\r
-function jmolResizeApplet(size,targetSuffix) {\r
- // See _jmolGetAppletSize() for the formats accepted as size [same used by jmolApplet()]\r
- // Special case: an empty value for width or height is accepted, meaning no change in that dimension.\r
- _jmol.alerted = true;\r
- var applet = _jmolGetApplet(targetSuffix);\r
- if(!applet)return;\r
- var sz = _jmolGetAppletSize(size, "px");\r
- sz[0] && (applet.style.width = sz[0]);\r
- sz[1] && (applet.style.height = sz[1]);\r
-}\r
-\r
-function _jmolGetAppletSize(size, units) {\r
- /* Accepts single number or 2-value array, each one can be one of:\r
- percent (text string ending %), decimal 0 to 1 (percent/100), number, or text string (interpreted as nr.)\r
- [width, height] array of strings is returned, with units added if specified.\r
- Percent is relative to container div or element (which should have explicitly set size).\r
- */\r
- var width, height;\r
- if ( (typeof size) == "object" && size != null ) {\r
- width = size[0]; height = size[1];\r
- } else {\r
- width = height = size;\r
- }\r
- return [_jmolFixDim(width, units), _jmolFixDim(height, units)];\r
-}\r
-\r
-function _jmolFixDim(x, units) {\r
- var sx = "" + x;\r
- return (sx.length == 0 ? (units ? "" : _jmol.allowedJmolSize[2])\r
- : sx.indexOf("%") == sx.length-1 ? sx \r
- : (x = parseFloat(x)) <= 1 && x > 0 ? x * 100 + "%"\r
- : (isNaN(x = Math.floor(x)) ? _jmol.allowedJmolSize[2]\r
- : x < _jmol.allowedJmolSize[0] ? _jmol.allowedJmolSize[0]\r
- : x > _jmol.allowedJmolSize[1] ? _jmol.allowedJmolSize[1] \r
- : x) + (units ? units : ""));\r
-}\r
-\r
-\r
-\r
-\r
+/* Jmol 12.0 script library Jmol.js 9:48 PM 1/31/2011 Bob Hanson
+
+ checkbox heirarchy -- see http://chemapps.stolaf.edu/jmol/docs/examples-11/check.htm
+
+ based on:
+ *
+ * Copyright (C) 2004-2005 Miguel, Jmol Development, www.jmol.org
+ *
+ * Contact: hansonr@stolaf.edu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
+ */
+
+// for documentation see www.jmol.org/jslibrary
+
+try{if(typeof(_jmol)!="undefined")exit()
+
+// place "?NOAPPLET" on your command line to check applet control action with a textarea
+// place "?JMOLJAR=xxxxx" to use a specific jar file
+
+// bob hanson -- jmolResize(w,h) -- resizes absolutely or by percent (w or h 0.5 means 50%)
+// angel herraez -- update of jmolResize(w,h,targetSuffix) so it is not tied to first applet
+// bob hanson -- jmolEvaluate -- evaluates molecular math 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptMessage -- returns all "scriptStatus" messages 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptEcho -- returns all "scriptEcho" messages 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptWait -- 11:31 AM 5/2/2006
+// bob hanson -- remove trailing separatorHTML in radio groups -- 12:18 PM 5/6/2006
+// bob hanson -- adds support for dynamic DOM script nodes 7:04 AM 5/19/2006
+// bob hanson -- adds try/catch for wiki - multiple code passes 7:05 AM 5/19/2006
+// bob hanson -- auto-initiates to defaultdir/defaultjar -- change as desired.
+// bob hanson -- adding save/restore orientation w/ and w/o delay 11:49 AM 5/25/2006
+// bob hanson -- adding AjaxJS service 11:16 AM 6/3/2006
+// bob hanson -- fix for iframes not available for finding applet
+// bob hanson -- added applet fake ?NOAPPLET URL flag
+// bob hanson -- added jmolSetCallback(calbackName, funcName) 3:32 PM 6/13/2006
+// used PRIOR to jmolApplet() or jmolAppletInline()
+// added 4th array element in jmolRadioGroup -- title
+// added <span> and id around link, checkbox, radio, menu
+// fixing AJAX loads for MSIE/Opera-Mozilla incompatibility
+// -- renamed Jmol-11.js from Jmol-new.js; JmolApplet.jar from JmolAppletProto.jar
+// renamed Jmol.js for Jmol 11 distribution
+// -- modified jmolRestoreOrientation() to be immediate, no 1-second delay
+// bob hanson -- jmolScriptWait always returns a string -- 11:23 AM 9/16/2006
+// bh -- jmolCommandInput()
+// bh -- jmolSetTranslation(TF) -- forces translation even if there might be message callback issues
+// bh -- minor fixes suggested by Angel
+// bh -- adds jmolSetSyncId() and jmolGetSyncId()
+// bh 3/2008 -- adds jmolAppendInlineScript() and jmolAppendInlineArray()
+// bh 3/2008 -- fixes IE7 bug in relation to jmolLoadInlineArray()
+// bh 6/2008 -- adds jmolSetAppletWindow()
+// Angel H. 6/2008 -- added html <label> tags to checkboxes and radio buttons [in jmolCheckbox() and _jmolRadio() functions]
+// bh 7/2008 -- code fix "for(i..." not "for(var i..."
+// bh 12/2008 -- jmolLoadInline, jmolLoadInlineArray, jmolLoadInlineScript, jmolAppendInlineScript, jmolAppendInlineArray all return error message or null (Jmol 11.7.16)
+// bh 12/2008 -- jmolScriptWaitOutput() -- waits for script to complete and delivers output normally sent to console
+
+// bh 5/2009 -- Support for XHTML using jmolSetXHTML(id)
+// ah & bh 6/2009 -- New jmolResizeApplet() more flexible, similar to jmolApplet() size syntax
+// bh 11/2009 -- care in accessing top.document
+// bh 12/2009 -- added jmolSetParameter(name, value)
+// bh 12/2009 -- added PARAMS=name:value;name:value;name:value... for command line
+// bh 12/2009 -- overhaul of target checking
+// bh 1/2010 -- all _xxxx() methods ALWAYS have complete argument list
+// bh 1/2010 -- adds option to run a JavaScript function from any Jmol control.
+// This is accomplished by passing an array rather than a script:
+// jmolHref([myfunc,"my param 1", "my param 2"], "testing")
+// function myfunc(jmolControlObject, [myfunc,"my param 1", "my param 2"], target){...}
+// and allows much more flexibility with responding to controls
+// bh 4/2010 -- added jmolSetMemoryMb(nMb)
+// ah 1/2011 -- wider detection of browsers; more browsers now use the object tag instead of the applet tag;
+// fix of object tag (removed classid) accounts for change of behavior in Chrome
+// bh 3/2011 -- added jmolLoadAjax_STOLAF_NIH
+
+var defaultdir = "."
+var defaultjar = "JmolApplet.jar"
+
+
+// Note added 12:41 PM 9/21/2008 by Bob Hanson, hansonr@stolaf.edu:
+
+// JMOLJAR=xxxxx.jar on the URL for this page will override
+// the JAR file specified in the jmolInitialize() call.
+
+// The idea is that it can be very useful to test a web page with different JAR files
+// Or for an expert user to substitute a signed applet for an unsigned one
+// so as to use a broader range of models or to create JPEG files, for example.
+
+// If the JAR file is not in the current directory (has any sort of "/" in its name)
+// then the user is presented with a warning and asked whether it is OK to change Jar files.
+// The default action, if the user just presses "OK" is to NOT allow the change.
+// The user must type the word "yes" in the prompt box for the change to be approved.
+
+// If you don't want people to be able to switch in their own JAR file on your page,
+// simply set this next line to read "var allowJMOLJAR = false".
+
+
+var undefined; // for IE 5 ... wherein undefined is undefined
+
+////////////////////////////////////////////////////////////////
+// Basic Scripting infrastruture
+////////////////////////////////////////////////////////////////
+
+function jmolInitialize(codebaseDirectory, fileNameOrUseSignedApplet) {
+ if (_jmol.initialized)
+ return;
+ _jmol.initialized = true;
+ if(_jmol.jmoljar) {
+ var f = _jmol.jmoljar;
+ if (f.indexOf("/") >= 0) {
+ alert ("This web page URL is requesting that the applet used be " + f + ". This is a possible security risk, particularly if the applet is signed, because signed applets can read and write files on your local machine or network.")
+ var ok = prompt("Do you want to use applet " + f + "? ","yes or no")
+ if (ok == "yes") {
+ codebaseDirectory = f.substring(0, f.lastIndexOf("/"));
+ fileNameOrUseSignedApplet = f.substring(f.lastIndexOf("/") + 1);
+ } else {
+ _jmolGetJarFilename(fileNameOrUseSignedApplet);
+ alert("The web page URL was ignored. Continuing using " + _jmol.archivePath + ' in directory "' + codebaseDirectory + '"');
+ }
+ } else {
+ fileNameOrUseSignedApplet = f;
+ }
+ }
+ _jmolSetCodebase(codebaseDirectory);
+ _jmolGetJarFilename(fileNameOrUseSignedApplet);
+ _jmolOnloadResetForms();
+}
+
+function jmolSetTranslation(TF) {
+ _jmol.params.doTranslate = ''+TF;
+}
+
+function _jmolGetJarFilename(fileNameOrFlag) {
+ _jmol.archivePath =
+ (typeof(fileNameOrFlag) == "string" ? fileNameOrFlag : (fileNameOrFlag ? "JmolAppletSigned" : "JmolApplet") + "0.jar");
+}
+
+function jmolSetDocument(doc) {
+ _jmol.currentDocument = doc;
+}
+
+function jmolSetAppletColor(boxbgcolor, boxfgcolor, progresscolor) {
+ _jmolInitCheck();
+ _jmol.params.boxbgcolor = boxbgcolor;
+ if (boxfgcolor)
+ _jmol.params.boxfgcolor = boxfgcolor
+ else if (boxbgcolor == "white" || boxbgcolor == "#FFFFFF")
+ _jmol.params.boxfgcolor = "black";
+ else
+ _jmol.params.boxfgcolor = "white";
+ if (progresscolor)
+ _jmol.params.progresscolor = progresscolor;
+ if (_jmol.debugAlert)
+ alert(" boxbgcolor=" + _jmol.params.boxbgcolor +
+ " boxfgcolor=" + _jmol.params.boxfgcolor +
+ " progresscolor=" + _jmol.params.progresscolor);
+}
+
+function jmolSetAppletWindow(w) {
+ _jmol.appletWindow = w;
+}
+
+function jmolApplet(size, script, nameSuffix) {
+ _jmolInitCheck();
+ return _jmolApplet(size, null, script, nameSuffix);
+}
+
+////////////////////////////////////////////////////////////////
+// Basic controls
+////////////////////////////////////////////////////////////////
+
+// undefined means it wasn't there; null means it was explicitly listed as null (so as to skip it)
+
+function jmolButton(script, label, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolButton" + _jmol.buttonCount);
+ label != undefined && label != null || (label = script.substring(0, 32));
+ ++_jmol.buttonCount;
+ var scriptIndex = _jmolAddScript(script);
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='button' name='" + id + "' id='" + id +
+ "' value='" + label +
+ "' onclick='_jmolClick(this," + scriptIndex + _jmol.targetText +
+ ")' onmouseover='_jmolMouseOver(" + scriptIndex +
+ ");return true' onmouseout='_jmolMouseOut()' " +
+ _jmol.buttonCssText + " /></span>";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolCheckbox(scriptWhenChecked, scriptWhenUnchecked,
+ labelHtml, isChecked, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolCheckbox" + _jmol.checkboxCount);
+ ++_jmol.checkboxCount;
+ if (scriptWhenChecked == undefined || scriptWhenChecked == null ||
+ scriptWhenUnchecked == undefined || scriptWhenUnchecked == null) {
+ alert("jmolCheckbox requires two scripts");
+ return;
+ }
+ if (labelHtml == undefined || labelHtml == null) {
+ alert("jmolCheckbox requires a label");
+ return;
+ }
+ var indexChecked = _jmolAddScript(scriptWhenChecked);
+ var indexUnchecked = _jmolAddScript(scriptWhenUnchecked);
+ var eospan = "</span>"
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='checkbox' name='" + id + "' id='" + id +
+ "' onclick='_jmolCbClick(this," +
+ indexChecked + "," + indexUnchecked + _jmol.targetText +
+ ")' onmouseover='_jmolCbOver(this," + indexChecked + "," +
+ indexUnchecked +
+ ");return true' onmouseout='_jmolMouseOut()' " +
+ (isChecked ? "checked='true' " : "")+ _jmol.checkboxCssText + " />"
+ if (labelHtml.toLowerCase().indexOf("<td>")>=0) {
+ t += eospan
+ eospan = "";
+ }
+ t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan;
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolStartNewRadioGroup() {
+ ++_jmol.radioGroupCount;
+}
+
+function jmolRadioGroup(arrayOfRadioButtons, separatorHtml, groupName, id, title) {
+ /*
+
+ array: [radio1,radio2,radio3...]
+ where radioN = ["script","label",isSelected,"id","title"]
+
+ */
+
+ _jmolInitCheck();
+ var type = typeof arrayOfRadioButtons;
+ if (type != "object" || type == null || ! arrayOfRadioButtons.length) {
+ alert("invalid arrayOfRadioButtons");
+ return;
+ }
+ separatorHtml != undefined && separatorHtml != null || (separatorHtml = " ");
+ var len = arrayOfRadioButtons.length;
+ jmolStartNewRadioGroup();
+ groupName || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
+ var t = "<span id='"+(id ? id : groupName)+"'>";
+ for (var i = 0; i < len; ++i) {
+ if (i == len - 1)
+ separatorHtml = "";
+ var radio = arrayOfRadioButtons[i];
+ type = typeof radio;
+ if (type == "object") {
+ t += _jmolRadio(radio[0], radio[1], radio[2], separatorHtml, groupName, (radio.length > 3 ? radio[3]: (id ? id : groupName)+"_"+i), (radio.length > 4 ? radio[4] : 0), title);
+ } else {
+ t += _jmolRadio(radio, null, null, separatorHtml, groupName, (id ? id : groupName)+"_"+i, title);
+ }
+ }
+ t+="</span>"
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+
+function jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {
+ _jmolInitCheck();
+ if (_jmol.radioGroupCount == 0)
+ ++_jmol.radioGroupCount;
+ var t = _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, (id ? id : groupName + "_" + _jmol.radioCount), title ? title : 0);
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolLink(script, label, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolLink" + _jmol.linkCount);
+ label != undefined && label != null || (label = script.substring(0, 32));
+ ++_jmol.linkCount;
+ var scriptIndex = _jmolAddScript(script);
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><a name='" + id + "' id='" + id +
+ "' href='javascript:_jmolClick(this," + scriptIndex + _jmol.targetText + ");' onmouseover='_jmolMouseOver(" + scriptIndex +
+ ");return true;' onmouseout='_jmolMouseOut()' " +
+ _jmol.linkCssText + ">" + label + "</a></span>";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolCommandInput(label, size, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolCmd" + _jmol.cmdCount);
+ label != undefined && label != null || (label = "Execute");
+ size != undefined && !isNaN(size) || (size = 60);
+ ++_jmol.cmdCount;
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" + id + "' id='" + id +
+ "' size='"+size+"' onkeypress='_jmolCommandKeyPress(event,\""+id+"\"" + _jmol.targetText + ")'><input type=button value = '"+label+"' onclick='jmolScript(document.getElementById(\""+id+"\").value" + _jmol.targetText + ")' /></span>";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function _jmolCommandKeyPress(e, id, target) {
+ var keycode = (window.event ? window.event.keyCode : e ? e.which : 0);
+ if (keycode == 13) {
+ var inputBox = document.getElementById(id)
+ _jmolScriptExecute(inputBox, inputBox.value, target)
+ }
+}
+
+function _jmolScriptExecute(element,script,target) {
+ if (typeof(script) == "object")
+ script[0](element, script, target)
+ else
+ jmolScript(script, target)
+}
+
+function jmolMenu(arrayOfMenuItems, size, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolMenu" + _jmol.menuCount);
+ ++_jmol.menuCount;
+ var type = typeof arrayOfMenuItems;
+ if (type != null && type == "object" && arrayOfMenuItems.length) {
+ var len = arrayOfMenuItems.length;
+ if (typeof size != "number" || size == 1)
+ size = null;
+ else if (size < 0)
+ size = len;
+ var sizeText = size ? " size='" + size + "' " : "";
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><select name='" + id + "' id='" + id +
+ "' onChange='_jmolMenuSelected(this" + _jmol.targetText + ")'" +
+ sizeText + _jmol.menuCssText + ">";
+ for (var i = 0; i < len; ++i) {
+ var menuItem = arrayOfMenuItems[i];
+ type = typeof menuItem;
+ var script, text;
+ var isSelected = undefined;
+ if (type == "object" && menuItem != null) {
+ script = menuItem[0];
+ text = menuItem[1];
+ isSelected = menuItem[2];
+ } else {
+ script = text = menuItem;
+ }
+ text != undefined && text != null || (text = script);
+ if (script=="#optgroup") {
+ t += "<optgroup label='" + text + "'>";
+ } else if (script=="#optgroupEnd") {
+ t += "</optgroup>";
+ } else {
+ var scriptIndex = _jmolAddScript(script);
+ var selectedText = isSelected ? "' selected='true'>" : "'>";
+ t += "<option value='" + scriptIndex + selectedText + text + "</option>";
+ }
+ }
+ t += "</select></span>";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+ }
+}
+
+function jmolHtml(html) {
+ return _jmolDocumentWrite(html);
+}
+
+function jmolBr() {
+ return _jmolDocumentWrite("<br />");
+}
+
+////////////////////////////////////////////////////////////////
+// advanced scripting functions
+////////////////////////////////////////////////////////////////
+
+function jmolDebugAlert(enableAlerts) {
+ _jmol.debugAlert = (enableAlerts == undefined || enableAlerts)
+}
+
+function jmolAppletInline(size, inlineModel, script, nameSuffix) {
+ _jmolInitCheck();
+ return _jmolApplet(size, _jmolSterilizeInline(inlineModel),
+ script, nameSuffix);
+}
+
+function jmolSetTarget(targetSuffix) {
+ _jmol.targetSuffix = targetSuffix;
+ _jmol.targetText = targetSuffix ? ",\"" + targetSuffix + "\"" : ",0";
+}
+
+function jmolScript(script, targetSuffix) {
+ if (script) {
+ _jmolCheckBrowser();
+ if (targetSuffix == "all") {
+ with (_jmol) {
+ for (var i = 0; i < appletSuffixes.length; ++i) {
+ var applet = _jmolGetApplet(appletSuffixes[i]);
+ if (applet) applet.script(script);
+ }
+ }
+ } else {
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) applet.script(script);
+ }
+ }
+}
+
+function jmolLoadInline(model, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ if (typeof(model) == "string")
+ return applet.loadInlineString(model, "", false);
+ else
+ return applet.loadInlineArray(model, "", false);
+}
+
+
+function jmolLoadInlineScript(model, script, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ return applet.loadInlineString(model, script, false);
+}
+
+
+function jmolLoadInlineArray(ModelArray, script, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ script || (script="")
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ try {
+ return applet.loadInlineArray(ModelArray, script, false);
+ } catch (err) {
+ //IE 7 bug
+ return applet.loadInlineString(ModelArray.join("\n"), script, false);
+ }
+}
+
+function jmolAppendInlineArray(ModelArray, script, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ script || (script="")
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ try {
+ return applet.loadInlineArray(ModelArray, script, true);
+ } catch (err) {
+ //IE 7 bug
+ return applet.loadInlineString(ModelArray.join("\n"), script, true);
+ }
+}
+
+function jmolAppendInlineScript(model, script, targetSuffix) {
+ if (!model)return "ERROR: NO MODEL"
+ var applet=_jmolGetApplet(targetSuffix);
+ if (!applet)return "ERROR: NO APPLET"
+ return applet.loadInlineString(model, script, true);
+}
+
+function jmolCheckBrowser(action, urlOrMessage, nowOrLater) {
+ if (typeof action == "string") {
+ action = action.toLowerCase();
+ action == "alert" || action == "redirect" || action == "popup" || (action = null);
+ }
+ if (typeof action != "string")
+ alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
+ "action must be 'alert', 'redirect', or 'popup'");
+ else {
+ if (typeof urlOrMessage != "string")
+ alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
+ "urlOrMessage must be a string");
+ else {
+ _jmol.checkBrowserAction = action;
+ _jmol.checkBrowserUrlOrMessage = urlOrMessage;
+ }
+ }
+ if (typeof nowOrLater == "string" && nowOrLater.toLowerCase() == "now")
+ _jmolCheckBrowser();
+}
+
+////////////////////////////////////////////////////////////////
+// Cascading Style Sheet Class support
+////////////////////////////////////////////////////////////////
+
+function jmolSetAppletCssClass(appletCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.appletCssClass = appletCssClass;
+ _jmol.appletCssText = appletCssClass ? "class='" + appletCssClass + "' " : "";
+ }
+}
+
+function jmolSetButtonCssClass(buttonCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.buttonCssClass = buttonCssClass;
+ _jmol.buttonCssText = buttonCssClass ? "class='" + buttonCssClass + "' " : "";
+ }
+}
+
+function jmolSetCheckboxCssClass(checkboxCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.checkboxCssClass = checkboxCssClass;
+ _jmol.checkboxCssText = checkboxCssClass ? "class='" + checkboxCssClass + "' " : "";
+ }
+}
+
+function jmolSetRadioCssClass(radioCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.radioCssClass = radioCssClass;
+ _jmol.radioCssText = radioCssClass ? "class='" + radioCssClass + "' " : "";
+ }
+}
+
+function jmolSetLinkCssClass(linkCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.linkCssClass = linkCssClass;
+ _jmol.linkCssText = linkCssClass ? "class='" + linkCssClass + "' " : "";
+ }
+}
+
+function jmolSetMenuCssClass(menuCssClass) {
+ if (_jmol.hasGetElementById) {
+ _jmol.menuCssClass = menuCssClass;
+ _jmol.menuCssText = menuCssClass ? "class='" + menuCssClass + "' " : "";
+ }
+}
+
+////////////////////////////////////////////////////////////////
+// functions for INTERNAL USE ONLY which are subject to change
+// use at your own risk ... you have been WARNED!
+////////////////////////////////////////////////////////////////
+var _jmol = {
+ currentDocument: document,
+
+ debugAlert: false,
+
+ codebase: "",
+ modelbase: ".",
+
+ appletCount: 0,
+ appletSuffixes: [],
+ appletWindow: null,
+ allowedJmolSize: [25, 2048, 300], // min, max, default (pixels)
+ /* By setting the _jmol.allowedJmolSize[] variable in the webpage
+ before calling jmolApplet(), limits for applet size can be overriden.
+ 2048 standard for GeoWall (http://geowall.geo.lsa.umich.edu/home.html)
+ */
+ buttonCount: 0,
+ checkboxCount: 0,
+ linkCount: 0,
+ cmdCount: 0,
+ menuCount: 0,
+ radioCount: 0,
+ radioGroupCount: 0,
+
+ appletCssClass: null,
+ appletCssText: "",
+ buttonCssClass: null,
+ buttonCssText: "",
+ checkboxCssClass: null,
+ checkboxCssText: "",
+ java_arguments: "-Xmx512m",
+ radioCssClass: null,
+ radioCssText: "",
+ linkCssClass: null,
+ linkCssText: "",
+ menuCssClass: null,
+ menuCssText: "",
+
+ targetSuffix: 0,
+ targetText: ",0",
+ scripts: [""],
+ params: {
+ syncId: ("" + Math.random()).substring(3),
+ progressbar: "true",
+ progresscolor: "blue",
+ boxbgcolor: "black",
+ boxfgcolor: "white",
+ boxmessage: "Downloading JmolApplet ..."
+ },
+ ua: navigator.userAgent.toLowerCase(),
+ // uaVersion: parseFloat(navigator.appVersion), // not used
+
+ os: "unknown",
+ browser: "unknown",
+ browserVersion: 0,
+ hasGetElementById: !!document.getElementById,
+ isJavaEnabled: navigator.javaEnabled(),
+ // isNetscape47Win: false, // not used, N4.7 is no longer supported even for detection
+ useIEObject: false,
+ useHtml4Object: false,
+
+ windowsClassId: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",
+ windowsCabUrl:
+ "http://java.sun.com/update/1.6.0/jinstall-6u22-windows-i586.cab",
+
+ isBrowserCompliant: false,
+ isJavaCompliant: false,
+ isFullyCompliant: false,
+
+ initialized: false,
+ initChecked: false,
+
+ browserChecked: false,
+ checkBrowserAction: "alert",
+ checkBrowserUrlOrMessage: null,
+
+ archivePath: null, // JmolApplet0.jar OR JmolAppletSigned0.jar
+
+ previousOnloadHandler: null,
+
+ jmoljar: null,
+ useNoApplet: false,
+
+ ready: {}
+}
+
+with (_jmol) {
+ function _jmolTestUA(candidate) {
+ var ua = _jmol.ua;
+ var index = ua.indexOf(candidate);
+ if (index < 0)
+ return false;
+ _jmol.browser = candidate;
+ _jmol.browserVersion = parseFloat(ua.substring(index+candidate.length+1));
+ return true;
+ }
+
+ function _jmolTestOS(candidate) {
+ if (_jmol.ua.indexOf(candidate) < 0)
+ return false;
+ _jmol.os = candidate;
+ return true;
+ }
+
+ _jmolTestUA("konqueror") ||
+ _jmolTestUA("webkit") ||
+ _jmolTestUA("omniweb") ||
+ _jmolTestUA("opera") ||
+ _jmolTestUA("webtv") ||
+ _jmolTestUA("icab") ||
+ _jmolTestUA("msie") ||
+ (_jmol.ua.indexOf("compatible") < 0 && _jmolTestUA("mozilla")); //Netscape, Mozilla, Seamonkey, Firefox and anything assimilated
+
+ _jmolTestOS("linux") ||
+ _jmolTestOS("unix") ||
+ _jmolTestOS("mac") ||
+ _jmolTestOS("win");
+
+ /* not used:
+ isNetscape47Win = (os == "win" && browser == "mozilla" &&
+ browserVersion >= 4.78 && browserVersion <= 4.8);
+ */
+
+ if (os == "win") {
+ isBrowserCompliant = hasGetElementById;
+ } else if (os == "mac") { // mac is the problem child :-(
+ if (browser == "mozilla" && browserVersion >= 5) {
+ // miguel 2004 11 17
+ // checking the plugins array does not work because
+ // Netscape 7.2 OS X still has Java 1.3.1 listed even though
+ // javaplugin.sf.net is installed to upgrade to 1.4.2
+ eval("try {var v = java.lang.System.getProperty('java.version');" +
+ " _jmol.isBrowserCompliant = v >= '1.4.2';" +
+ " } catch (e) { }");
+ } else if (browser == "opera" && browserVersion <= 7.54) {
+ isBrowserCompliant = false;
+ } else {
+ isBrowserCompliant = hasGetElementById &&
+ !((browser == "msie") ||
+ (browser == "webkit" && browserVersion < 125.12));
+ }
+ } else if (os == "linux" || os == "unix") {
+ if (browser == "konqueror" && browserVersion <= 3.3)
+ isBrowserCompliant = false;
+ else
+ isBrowserCompliant = hasGetElementById;
+ } else { // other OS
+ isBrowserCompliant = hasGetElementById;
+ }
+
+ // possibly more checks in the future for this
+ isJavaCompliant = isJavaEnabled;
+
+ isFullyCompliant = isBrowserCompliant && isJavaCompliant;
+
+ useIEObject = (os == "win" && browser == "msie" && browserVersion >= 5.5);
+ useHtml4Object =
+ (browser == "mozilla" && browserVersion >= 5) ||
+ (browser == "opera" && browserVersion >= 8) ||
+ (browser == "webkit" && browserVersion >= 412.2);
+ try {
+ if (top.location.search.indexOf("JMOLJAR=")>=0)
+ jmoljar = top.location.search.split("JMOLJAR=")[1].split("&")[0];
+ } catch(e) {
+ // can't access top.location
+ }
+ try {
+ useNoApplet = (top.location.search.indexOf("NOAPPLET")>=0);
+ } catch(e) {
+ // can't access top.document
+ }
+}
+
+function jmolSetMemoryMb(nMb) {
+ _jmol.java_arguments = "-Xmx" + Math.round(nMb) + "m"
+}
+
+function jmolSetParameter(name,value) {
+ _jmol.params[name] = value
+}
+
+function jmolSetCallback(callbackName,funcName) {
+ _jmol.params[callbackName] = funcName
+}
+
+ try {
+// note this is done FIRST, so it cannot override a setting done by the developer
+ if (top.location.search.indexOf("PARAMS=")>=0) {
+ var pars = unescape(top.location.search.split("PARAMS=")[1].split("&")[0]).split(";");
+ for (var i = 0; i < pars.length; i++) {
+ var p = pars[i].split(":");
+ jmolSetParameter(p[0],p[1]);
+ }
+ }
+ } catch(e) {
+ // can't access top.location
+ }
+
+function jmolSetSyncId(n) {
+ return _jmol.params["syncId"] = n
+}
+
+function jmolGetSyncId() {
+ return _jmol.params["syncId"]
+}
+
+function jmolSetLogLevel(n) {
+ _jmol.params.logLevel = ''+n;
+}
+
+ /* AngelH, mar2007:
+ By (re)setting these variables in the webpage before calling jmolApplet(),
+ a custom message can be provided (e.g. localized for user's language) when no Java is installed.
+ */
+if (noJavaMsg==undefined) var noJavaMsg =
+ "You do not have Java applets enabled in your web browser, or your browser is blocking this applet.<br />\n" +
+ "Check the warning message from your browser and/or enable Java applets in<br />\n" +
+ "your web browser preferences, or install the Java Runtime Environment from <a href='http://www.java.com'>www.java.com</a><br />";
+if (noJavaMsg2==undefined) var noJavaMsg2 =
+ "You do not have the<br />\n" +
+ "Java Runtime Environment<br />\n" +
+ "installed for applet support.<br />\n" +
+ "Visit <a href='http://www.java.com'>www.java.com</a>";
+function _jmolApplet(size, inlineModel, script, nameSuffix) {
+ /* AngelH, mar2007
+ Fixed percent / pixel business, to avoid browser errors:
+ put "px" where needed, avoid where not.
+
+ Bob Hanson, 1/2010
+ Fixed inline escape changing returns to |
+ */
+ with (_jmol) {
+ nameSuffix == undefined && (nameSuffix = appletCount);
+ appletSuffixes.push(nameSuffix);
+ ++appletCount;
+ script || (script = "select *");
+ var sz = _jmolGetAppletSize(size);
+ var widthAndHeight = " width='" + sz[0] + "' height='" + sz[1] + "' ";
+ var tHeader, tFooter;
+ codebase || jmolInitialize(".");
+ if (useIEObject || useHtml4Object) {
+ params.archive = archivePath;
+ params.mayscript = 'true';
+ params.codebase = codebase;
+ params.code = 'JmolApplet';
+ tHeader =
+ "<object name='jmolApplet" + nameSuffix +
+ "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
+ widthAndHeight + "\n";
+ tFooter = "</object>";
+ }
+ if (java_arguments)
+ params.java_arguments = java_arguments;
+ if (useIEObject) { // use MSFT IE6 object tag with .cab file reference
+ tHeader += " classid='" + windowsClassId + "'\n" +
+ (windowsCabUrl ? " codebase='" + windowsCabUrl + "'\n" : "") + ">\n";
+ } else if (useHtml4Object) { // use HTML4 object tag
+ tHeader += " type='application/x-java-applet'\n>\n";
+ /* " classid='java:JmolApplet'\n" + AH removed this
+ Chromium Issue 62076: Java Applets using an <object> with a classid paramater don't load.
+ http://code.google.com/p/chromium/issues/detail?id=62076
+ They say this is the correct behavior according to the spec, and there's no indication at this point
+ that WebKit will be changing the handling, so eventually Safari will acquire this behavior too.
+ Removing the classid parameter seems to be well tolerated by all browsers (even IE!).
+ */
+ } else { // use applet tag
+ tHeader =
+ "<applet name='jmolApplet" + nameSuffix +
+ "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
+ widthAndHeight + "\n" +
+ " code='JmolApplet'" +
+ " archive='" + archivePath + "' codebase='" + codebase + "'\n" +
+ " mayscript='true'>\n";
+ tFooter = "</applet>";
+ }
+ var visitJava;
+ if (useIEObject || useHtml4Object) {
+ var szX = "width:" + sz[0]
+ if ( szX.indexOf("%")==-1 ) szX+="px"
+ var szY = "height:" + sz[1]
+ if ( szY.indexOf("%")==-1 ) szY+="px"
+ visitJava =
+ "<p style='background-color:yellow; color:black; " +
+ szX + ";" + szY + ";" +
+ // why doesn't this vertical-align work?
+ "text-align:center;vertical-align:middle;'>\n" +
+ noJavaMsg +
+ "</p>";
+ } else {
+ visitJava =
+ "<table bgcolor='yellow'><tr>" +
+ "<td align='center' valign='middle' " + widthAndHeight + "><font color='black'>\n" +
+ noJavaMsg2 +
+ "</font></td></tr></table>";
+ }
+ params.loadInline = (inlineModel ? inlineModel : "");
+ params.script = (script ? _jmolSterilizeScript(script) : "");
+ var t = tHeader + _jmolParams() + visitJava + tFooter;
+ jmolSetTarget(nameSuffix);
+ ready["jmolApplet" + nameSuffix] = false;
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+ }
+}
+
+function _jmolParams() {
+ var t = "";
+ for (var i in _jmol.params)
+ if(_jmol.params[i]!="")
+ t+=" <param name='"+i+"' value='"+_jmol.params[i]+"' />\n";
+ return t
+}
+
+function _jmolInitCheck() {
+ if (_jmol.initChecked)
+ return;
+ _jmol.initChecked = true;
+ jmolInitialize(defaultdir, defaultjar)
+}
+
+function _jmolCheckBrowser() {
+ with (_jmol) {
+ if (browserChecked)
+ return;
+ browserChecked = true;
+
+ if (isFullyCompliant)
+ return true;
+
+ if (checkBrowserAction == "redirect")
+ location.href = checkBrowserUrlOrMessage;
+ else if (checkBrowserAction == "popup")
+ _jmolPopup(checkBrowserUrlOrMessage);
+ else {
+ var msg = checkBrowserUrlOrMessage;
+ if (msg == null)
+ msg = "Your web browser is not fully compatible with Jmol\n\n" +
+ "browser: " + browser +
+ " version: " + browserVersion +
+ " os: " + os +
+ " isBrowserCompliant: " + isBrowserCompliant +
+ " isJavaCompliant: " + isJavaCompliant +
+ "\n\n" + ua;
+ alert(msg);
+ }
+ }
+ return false;
+}
+
+function jmolSetXHTML(id) {
+ _jmol.isXHTML = true
+ _jmol.XhtmlElement = null
+ _jmol.XhtmlAppendChild = false
+ if (id){
+ _jmol.XhtmlElement = document.getElementById(id)
+ _jmol.XhtmlAppendChild = true
+ }
+}
+
+function _jmolDocumentWrite(text) {
+ if (_jmol.currentDocument) {
+ if (_jmol.isXHTML && !_jmol.XhtmlElement) {
+ var s = document.getElementsByTagName("script")
+ _jmol.XhtmlElement = s.item(s.length - 1)
+ _jmol.XhtmlAppendChild = false
+ }
+ if (_jmol.XhtmlElement) {
+ _jmolDomDocumentWrite(text)
+ } else {
+ _jmol.currentDocument.write(text);
+ }
+ }
+ return text;
+}
+
+function _jmolDomDocumentWrite(data) {
+ var pt = 0
+ var Ptr = []
+ Ptr[0] = 0
+ while (Ptr[0] < data.length) {
+ var child = _jmolGetDomElement(data, Ptr)
+ if (!child)break
+ if (_jmol.XhtmlAppendChild)
+ _jmol.XhtmlElement.appendChild(child)
+ else
+ _jmol.XhtmlElement.parentNode.insertBefore(child, _jmol.XhtmlElement);
+ }
+}
+function _jmolGetDomElement(data, Ptr, closetag, lvel) {
+ var e = document.createElement("span")
+ e.innerHTML = data
+ Ptr[0] = data.length
+ return e
+
+//unnecessary?
+
+ closetag || (closetag = "")
+ lvel || (lvel = 0)
+ var pt0 = Ptr[0]
+ var pt = pt0
+ while (pt < data.length && data.charAt(pt) != "<") pt++
+ if (pt != pt0) {
+ var text = data.substring(pt0, pt)
+ Ptr[0] = pt
+ return document.createTextNode(text)
+ }
+ pt0 = ++pt
+ var ch
+ while (pt < data.length && "\n\r\t >".indexOf(ch = data.charAt(pt)) < 0) pt++
+ var tagname = data.substring(pt0, pt)
+ var e = (tagname == closetag || tagname == "/" ? ""
+ : document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', tagname)
+ : document.createElement(tagname));
+ if (ch == ">") {
+ Ptr[0] = ++pt
+ return e
+ }
+ while (pt < data.length && (ch = data.charAt(pt)) != ">") {
+ while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++
+ pt0 = pt
+ while (pt < data.length && "\n\r\t =/>".indexOf(ch = data.charAt(pt)) < 0) pt++
+ var attrname = data.substring(pt0, pt).toLowerCase()
+ if (attrname && ch != "=")
+ e.setAttribute(attrname, "true")
+ while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++
+ if (ch == "/") {
+ Ptr[0] = pt + 2
+ return e
+ } else if (ch == "=") {
+ var quote = data.charAt(++pt)
+ pt0 = ++pt
+ while (pt < data.length && (ch = data.charAt(pt)) != quote) pt++
+ var attrvalue = data.substring(pt0, pt)
+ e.setAttribute(attrname, attrvalue)
+ pt++
+ }
+ }
+ Ptr[0] = ++pt
+ while (Ptr[0] < data.length) {
+ var child = _jmolGetDomElement(data, Ptr, "/" + tagname, lvel+1)
+ if (!child)break
+ e.appendChild(child)
+ }
+ return e
+}
+
+function _jmolPopup(url) {
+ var popup = window.open(url, "JmolPopup",
+ "left=150,top=150,height=400,width=600," +
+ "directories=yes,location=yes,menubar=yes," +
+ "toolbar=yes," +
+ "resizable=yes,scrollbars=yes,status=yes");
+ if (popup.focus)
+ poup.focus();
+}
+
+function _jmolReadyCallback(name) {
+ if (_jmol.debugAlert)
+ alert(name + " is ready");
+ _jmol.ready["" + name] = true;
+}
+
+function _jmolSterilizeScript(script) {
+ script = script.replace(/'/g, "'");
+ if (_jmol.debugAlert)
+ alert("script:\n" + script);
+ return script;
+}
+
+function _jmolSterilizeInline(model) {
+ model = model.replace(/\r|\n|\r\n/g, (model.indexOf("|") >= 0 ? "\\/n" : "|")).replace(/'/g, "'");
+ if (_jmol.debugAlert)
+ alert("inline model:\n" + model);
+ return model;
+}
+
+function _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {
+ ++_jmol.radioCount;
+ groupName != undefined && groupName != null || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
+ if (!script)
+ return "";
+ labelHtml != undefined && labelHtml != null || (labelHtml = script.substring(0, 32));
+ separatorHtml || (separatorHtml = "")
+ var scriptIndex = _jmolAddScript(script);
+ var eospan = "</span>"
+ var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='"
+ + groupName + "' id='"+id+"' type='radio' onclick='_jmolClick(this," +
+ scriptIndex + _jmol.targetText + ");return true;' onmouseover='_jmolMouseOver(" +
+ scriptIndex + ");return true;' onmouseout='_jmolMouseOut()' " +
+ (isChecked ? "checked='true' " : "") + _jmol.radioCssText + " />"
+ if (labelHtml.toLowerCase().indexOf("<td>")>=0) {
+ t += eospan
+ eospan = "";
+ }
+ t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan + separatorHtml;
+
+ return t;
+}
+
+function _jmolFindApplet(target) {
+ // first look for the target in the current window
+ var applet = _jmolFindAppletInWindow(_jmol.appletWindow != null ? _jmol.appletWindow : window, target);
+ // THEN look for the target in child frames
+ if (applet == undefined)
+ applet = _jmolSearchFrames(window, target);
+ // FINALLY look for the target in sibling frames
+ if (applet == undefined)
+ applet = _jmolSearchFrames(top, target); // look starting in top frame
+ return applet;
+}
+
+function _jmolGetApplet(targetSuffix){
+ var target = "jmolApplet" + (targetSuffix ? targetSuffix : "0");
+ var applet = _jmolFindApplet(target);
+ if (applet) return applet
+ _jmol.alerted || alert("could not find applet " + target);
+ _jmol.alerted = true;
+ return null
+}
+
+function _jmolSearchFrames(win, target) {
+ var applet;
+ var frames = win.frames;
+ if (frames && frames.length) { // look in all the frames below this window
+ try{
+ for (var i = 0; i < frames.length; ++i) {
+ applet = _jmolSearchFrames(frames[i], target);
+ if (applet)
+ return applet;
+ }
+ }catch(e) {
+ if (_jmol.debugAlert)
+ alert("Jmol.js _jmolSearchFrames cannot access " + win.name + ".frame[" + i + "] consider using jmolSetAppletWindow()")
+ }
+ }
+ return applet = _jmolFindAppletInWindow(win, target)
+}
+
+function _jmolFindAppletInWindow(win, target) {
+ var doc = win.document;
+ if (doc.getElementById(target))
+ return doc.getElementById(target);
+ else if (doc.applets)
+ return doc.applets[target];
+ else
+ return doc[target];
+}
+
+function _jmolAddScript(script) {
+ if (!script)
+ return 0;
+ var index = _jmol.scripts.length;
+ _jmol.scripts[index] = script;
+ return index;
+}
+
+function _jmolClick(elementClicked, scriptIndex, targetSuffix) {
+ _jmol.element = elementClicked;
+ _jmolScriptExecute(elementClicked, _jmol.scripts[scriptIndex], targetSuffix);
+}
+
+function _jmolMenuSelected(menuObject, targetSuffix) {
+ var scriptIndex = menuObject.value;
+ if (scriptIndex != undefined) {
+ _jmolScriptExecute(menuObject, _jmol.scripts[scriptIndex], targetSuffix);
+ return;
+ }
+ var len = menuObject.length;
+ if (typeof len == "number") {
+ for (var i = 0; i < len; ++i) {
+ if (menuObject[i].selected) {
+ _jmolClick(menuObject[i], menuObject[i].value, targetSuffix);
+ return;
+ }
+ }
+ }
+ alert("?Que? menu selected bug #8734");
+}
+
+
+_jmol.checkboxMasters = {};
+_jmol.checkboxItems = {};
+
+function jmolSetCheckboxGroup(chkMaster,chkBox) {
+ var id = chkMaster;
+ if(typeof(id)=="number")id = "jmolCheckbox" + id;
+ chkMaster = document.getElementById(id);
+ if (!chkMaster)alert("jmolSetCheckboxGroup: master checkbox not found: " + id);
+ var m = _jmol.checkboxMasters[id] = {};
+ m.chkMaster = chkMaster;
+ m.chkGroup = {};
+ for (var i = 1; i < arguments.length; i++){
+ var id = arguments[i];
+ if(typeof(id)=="number")id = "jmolCheckbox" + id;
+ checkboxItem = document.getElementById(id);
+ if (!checkboxItem)alert("jmolSetCheckboxGroup: group checkbox not found: " + id);
+ m.chkGroup[id] = checkboxItem;
+ _jmol.checkboxItems[id] = m;
+ }
+}
+
+function _jmolNotifyMaster(m){
+ //called when a group item is checked
+ var allOn = true;
+ var allOff = true;
+ for (var chkBox in m.chkGroup){
+ if(m.chkGroup[chkBox].checked)
+ allOff = false;
+ else
+ allOn = false;
+ }
+ if (allOn)m.chkMaster.checked = true;
+ if (allOff)m.chkMaster.checked = false;
+ if ((allOn || allOff) && _jmol.checkboxItems[m.chkMaster.id])
+ _jmolNotifyMaster(_jmol.checkboxItems[m.chkMaster.id])
+}
+
+function _jmolNotifyGroup(m, isOn){
+ //called when a master item is checked
+ for (var chkBox in m.chkGroup){
+ var item = m.chkGroup[chkBox]
+ item.checked = isOn;
+ if (_jmol.checkboxMasters[item.id])
+ _jmolNotifyGroup(_jmol.checkboxMasters[item.id], isOn)
+ }
+}
+
+function _jmolCbClick(ckbox, whenChecked, whenUnchecked, targetSuffix) {
+ _jmol.control = ckbox
+ _jmolClick(ckbox, ckbox.checked ? whenChecked : whenUnchecked, targetSuffix);
+ if(_jmol.checkboxMasters[ckbox.id])
+ _jmolNotifyGroup(_jmol.checkboxMasters[ckbox.id], ckbox.checked)
+ if(_jmol.checkboxItems[ckbox.id])
+ _jmolNotifyMaster(_jmol.checkboxItems[ckbox.id])
+}
+
+function _jmolCbOver(ckbox, whenChecked, whenUnchecked) {
+ window.status = _jmol.scripts[ckbox.checked ? whenUnchecked : whenChecked];
+}
+
+function _jmolMouseOver(scriptIndex) {
+ window.status = _jmol.scripts[scriptIndex];
+}
+
+function _jmolMouseOut() {
+ window.status = " ";
+ return true;
+}
+
+function _jmolSetCodebase(codebase) {
+ _jmol.codebase = codebase ? codebase : ".";
+ if (_jmol.debugAlert)
+ alert("jmolCodebase=" + _jmol.codebase);
+}
+
+function _jmolOnloadResetForms() {
+ // must be evaluated ONLY once
+ _jmol.previousOnloadHandler = window.onload;
+ window.onload =
+ function() {
+ with (_jmol) {
+ if (buttonCount+checkboxCount+menuCount+radioCount+radioGroupCount > 0) {
+ var forms = document.forms;
+ for (var i = forms.length; --i >= 0; )
+ forms[i].reset();
+ }
+ if (previousOnloadHandler)
+ previousOnloadHandler();
+ }
+ }
+}
+
+////////////////////////////////////
+/////extensions for getProperty/////
+////////////////////////////////////
+
+
+function _jmolEvalJSON(s,key){
+ s=s+""
+ if(!s)return []
+ if(s.charAt(0)!="{"){
+ if(s.indexOf(" | ")>=0)s=s.replace(/\ \|\ /g, "\n")
+ return s
+ }
+ var A = eval("("+s+")")
+ if(!A)return
+ if(key && A[key])A=A[key]
+ return A
+}
+
+function _jmolEnumerateObject(A,key){
+ var sout=""
+ if(typeof(A) == "string" && A!="null"){
+ sout+="\n"+key+"=\""+A+"\""
+ }else if(!isNaN(A)||A==null){
+ sout+="\n"+key+"="+(A+""==""?"null":A)
+ }else if(A.length){
+ sout+=key+"=[]"
+ for(var i=0;i<A.length;i++){
+ sout+="\n"
+ if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){
+ sout+=_jmolEnumerateObject(A[i],key+"["+i+"]")
+ }else{
+ sout+=key+"["+i+"]="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])
+ }
+ }
+ }else{
+ if(key != ""){
+ sout+=key+"={}"
+ key+="."
+ }
+
+ for(var i in A){
+ sout+="\n"
+ if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){
+ sout+=_jmolEnumerateObject(A[i],key+i)
+ }else{
+ sout+=key+i+"="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])
+ }
+ }
+ }
+ return sout
+}
+
+
+function _jmolSortKey0(a,b){
+ return (a[0]<b[0]?1:a[0]>b[0]?-1:0)
+}
+
+function _jmolSortMessages(A){
+ if(!A || typeof(A)!="object")return []
+ var B = []
+ for(var i=A.length-1;i>=0;i--)for(var j=0;j<A[i].length;j++)B[B.length]=A[i][j]
+ if(B.length == 0) return
+ B=B.sort(_jmolSortKey0)
+ return B
+}
+
+/////////additional extensions //////////
+
+
+function _jmolDomScriptLoad(URL){
+ //open(URL) //to debug
+ _jmol.servercall=URL
+ var node = document.getElementById("_jmolScriptNode")
+ if (node && _jmol.browser!="msie"){
+ document.getElementsByTagName("HEAD")[0].removeChild(node)
+ node=null
+ }
+ if (node) {
+ node.setAttribute("src",URL)
+ } else {
+ node=document.createElement("script")
+ node.setAttribute("id","_jmolScriptNode")
+ node.setAttribute("type","text/javascript")
+ node.setAttribute("src",URL)
+ document.getElementsByTagName("HEAD")[0].appendChild(node)
+ }
+}
+
+
+function _jmolExtractPostData(url){
+ S=url.split("&POST:")
+ var s=""
+ for(var i=1;i<S.length;i++){
+ KV=S[i].split("=")
+ s+="&POSTKEY"+i+"="+KV[0]
+ s+="&POSTVALUE"+i+"="+KV[1]
+ }
+ return "&url="+escape(S[0])+s
+}
+
+function _jmolLoadModel(targetSuffix,remoteURL,array,isError,errorMessage){
+ //called by server, but in client
+ //overload this function to customize return
+ _jmol.remoteURL=remoteURL
+ isError && alert(errorMessage)
+ jmolLoadInlineScript(array.join("\n"),_jmol.optionalscript,targetSuffix)
+}
+
+//////////user property/status functions/////////
+
+function jmolGetStatus(strStatus,targetSuffix){
+ return _jmolSortMessages(jmolGetPropertyAsArray("jmolStatus",strStatus,targetSuffix))
+}
+
+function jmolGetPropertyAsArray(sKey,sValue,targetSuffix) {
+ return _jmolEvalJSON(jmolGetPropertyAsJSON(sKey,sValue,targetSuffix),sKey)
+}
+
+function jmolGetPropertyAsString(sKey,sValue,targetSuffix) {
+ var applet = _jmolGetApplet(targetSuffix);
+ sValue == undefined && (sValue="");
+ return (applet ? applet.getPropertyAsString(sKey,sValue) + "" : "")
+}
+
+function jmolGetPropertyAsJSON(sKey,sValue,targetSuffix) {
+ sValue == undefined && (sValue = "")
+ var applet = _jmolGetApplet(targetSuffix);
+ try {
+ return (applet ? applet.getPropertyAsJSON(sKey,sValue) + "" : "")
+ } catch(e) {
+ return ""
+ }
+}
+
+function jmolGetPropertyAsJavaObject(sKey,sValue,targetSuffix) {
+ sValue == undefined && (sValue = "")
+ var applet = _jmolGetApplet(targetSuffix);
+ return (applet ? applet.getProperty(sKey,sValue) : null)
+}
+
+
+function jmolDecodeJSON(s) {
+ return _jmolEnumerateObject(_jmolEvalJSON(s),"")
+}
+
+
+///////// synchronous scripting ////////
+
+function jmolScriptWait(script, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+ var s = ""
+ for(var i=Ret.length;--i>=0;)
+ for(var j=0;j< Ret[i].length;j++)
+ s+=Ret[i][j]+"\n"
+ return s
+}
+
+function jmolScriptWaitOutput(script, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ var ret = ""
+ try{
+ if (script) {
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) ret += applet.scriptWaitOutput(script);
+ }
+ }catch(e){
+ }
+ return ret;
+}
+
+function jmolEvaluate(molecularMath, targetSuffix) {
+
+ //carries out molecular math on a model
+
+ targetSuffix == undefined && (targetSuffix="0")
+ var result = "" + jmolGetPropertyAsJavaObject("evaluate", molecularMath, targetSuffix);
+ var s = result.replace(/\-*\d+/,"")
+ if (s == "" && !isNaN(parseInt(result)))return parseInt(result);
+ var s = result.replace(/\-*\d*\.\d*/,"")
+ if (s == "" && !isNaN(parseFloat(result)))return parseFloat(result);
+ return result;
+}
+
+function jmolScriptEcho(script, targetSuffix) {
+ // returns a newline-separated list of all echos from a script
+ targetSuffix == undefined && (targetSuffix="0")
+ var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+ var s = ""
+ for(var i=Ret.length;--i>=0;)
+ for(var j=Ret[i].length;--j>=0;)
+ if (Ret[i][j][1] == "scriptEcho")s+=Ret[i][j][3]+"\n"
+ return s.replace(/ \| /g, "\n")
+}
+
+
+function jmolScriptMessage(script, targetSuffix) {
+ // returns a newline-separated list of all messages from a script, ending with "script completed\n"
+ targetSuffix == undefined && (targetSuffix="0")
+ var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+ var s = ""
+ for(var i=Ret.length;--i>=0;)
+ for(var j=Ret[i].length;--j>=0;)
+ if (Ret[i][j][1] == "scriptStatus")s+=Ret[i][j][3]+"\n"
+ return s.replace(/ \| /g, "\n")
+}
+
+
+function jmolScriptWaitAsArray(script, targetSuffix) {
+ var ret = ""
+ try{
+ jmolGetStatus("scriptEcho,scriptMessage,scriptStatus,scriptError",targetSuffix)
+ if (script) {
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) ret += applet.scriptWait(script);
+ ret = _jmolEvalJSON(ret,"jmolStatus")
+ if(typeof ret == "object")
+ return ret
+ }
+ }catch(e){
+ }
+ return [[ret]]
+}
+
+
+
+//////////// save/restore orientation /////////////
+
+function jmolSaveOrientation(id, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ return _jmol["savedOrientation"+id] = jmolGetPropertyAsArray("orientationInfo","info",targetSuffix).moveTo
+}
+
+function jmolRestoreOrientation(id, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ var s=_jmol["savedOrientation"+id]
+ if (!s || s == "")return
+ s=s.replace(/1\.0/,"0")
+ return jmolScriptWait(s,targetSuffix)
+}
+
+function jmolRestoreOrientationDelayed(id, delay, targetSuffix) {
+ arguments.length < 2 && (delay=1)
+ targetSuffix == undefined && (targetSuffix="0")
+ var s=_jmol["savedOrientation"+id]
+ if (!s || s == "")return
+ s=s.replace(/1\.0/,delay)
+ return jmolScriptWait(s,targetSuffix)
+}
+
+//////////// add parameter /////////////
+/*
+ * for adding callbacks or other parameters. Use:
+
+ jmolSetDocument(0)
+ var s= jmolApplet(....)
+ s = jmolAppletAddParam(s,"messageCallback", "myFunctionName")
+ document.write(s)
+ jmolSetDocument(document) // if you want to then write buttons and such normally
+
+ */
+
+function jmolAppletAddParam(appletCode,name,value){
+ return (value == "" ? appletCode : appletCode.replace(/\<param/,"\n<param name='"+name+"' value='"+value+"' />\n<param"))
+}
+
+///////////////auto load Research Consortium for Structural Biology (RCSB) data ///////////
+
+function jmolLoadAjax_STOLAF_RCSB(fileformat,pdbid,optionalscript,targetSuffix){
+
+ _jmol.thismodel || (_jmol.thismodel = "1crn")
+ _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")
+ _jmol.RCSBserver || (_jmol.RCSBserver="http://www.rcsb.org")
+ _jmol.defaultURL_RCSB || (_jmol.defaultURL_RCSB=_jmol.RCSBserver+"/pdb/files/1CRN.CIF")
+ fileformat || (fileformat="PDB")
+ pdbid || (pdbid=prompt("Enter a 4-digit PDB ID:",_jmol.thismodel))
+ if(!pdbid || pdbid.length != 4)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ var url=_jmol.defaultURL_RCSB.replace(/1CRN/g,pdbid.toUpperCase())
+ fileformat=="CIF" || (url=url.replace(/CIF/,fileformat))
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=pdbid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+///////////////auto load NIH CACTVS data -- compound name or SMILES ///////////
+
+function jmolLoadAjax_STOLAF_NIH(compoundid,optionalscript,targetSuffix){
+ _jmol.thismodel || (_jmol.thismodel = "aspirin")
+ _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")
+ _jmol.defaultURL_NIH || (_jmol.defaultURL_NIH="http://cactus.nci.nih.gov/chemical/structure/FILE/file?format=sdf&get3d=True")
+ compoundid || (compoundid=prompt("Enter a compound name or a SMILES string:",_jmol.thismodel))
+ if(!compoundid)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ var url=_jmol.defaultURL_NIH.replace(/FILE/g,compoundid)
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=compoundid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+/////////////// St. Olaf College AJAX server -- ANY URL ///////////
+
+function jmolLoadAjax_STOLAF_ANY(url, userid, optionalscript,targetSuffix){
+ _jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm"
+ _jmol.thisurlANY || (_jmol.thisurlANY = "http://www.stolaf.edu/depts/chemistry/mo/struc/data/ycp3-1.mol")
+ url || (url=prompt("Enter any (uncompressed file) URL:", _jmol.thisurlANY))
+ userid || (userid="0")
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ _jmol.optionalscript=optionalscript
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.modelArray = []
+ _jmol.thisurl = url
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+}
+
+
+/////////////// Mineralogical Society of America (MSA) data /////////
+
+function jmolLoadAjax_MSA(key,value,optionalscript,targetSuffix){
+
+ _jmol.thiskeyMSA || (_jmol.thiskeyMSA = "mineral")
+ _jmol.thismodelMSA || (_jmol.thismodelMSA = "quartz")
+ _jmol.ajaxURL_MSA || (_jmol.ajaxURL_MSA="http://rruff.geo.arizona.edu/AMS/result.php?mineral=quartz&viewing=ajaxjs")
+ key || (key=prompt("Enter a field:", _jmol.thiskeyMSA))
+ if(!key)return ""
+ value || (value=prompt("Enter a "+key+":", _jmol.thismodelMSA))
+ if(!value)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ optionalscript == 1 && (optionalscript='load "" {1 1 1}')
+ var url=_jmol.ajaxURL_MSA.replace(/mineral/g,key).replace(/quartz/g,value)
+ _jmol.optionalscript=optionalscript
+ _jmol.thiskeyMSA=key
+ _jmol.thismodelMSA=value
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ loadModel=_jmolLoadModel
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+
+function jmolLoadAjaxJS(url, userid, optionalscript,targetSuffix){
+ userid || (userid="0")
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=userid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.modelArray = []
+ _jmol.thisurl = url
+ url+="&returnFunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix
+ _jmolDomScriptLoad(url)
+}
+
+
+//// in case Jmol library has already been loaded:
+
+}catch(e){}
+
+///////////////moving atoms //////////////
+
+// HIGHLY experimental!!
+
+function jmolSetAtomCoord(i,x,y,z,targetSuffix){
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) applet.getProperty('jmolViewer').setAtomCoord(i,x,y,z)
+}
+
+function jmolSetAtomCoordRelative(i,x,y,z,targetSuffix){
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) applet.getProperty('jmolViewer').setAtomCoordRelative(i,x,y,z)
+}
+
+
+///////////////applet fake for testing buttons/////////////
+
+
+if(_jmol.useNoApplet){
+ jmolApplet = function(w){
+ var s="<table style='background-color:black' width="+w+"><tr height="+w+">"
+ +"<td align=center valign=center style='background-color:white'>"
+ +"Applet would be here"
+ +"<p><textarea id=fakeApplet rows=5 cols=50></textarea>"
+ +"</td></tr></table>"
+ return _jmolDocumentWrite(s)
+ }
+
+ _jmolFindApplet = function(){return jmolApplet0}
+
+ jmolApplet0 = {
+ script: function(script){document.getElementById("fakeApplet").value="\njmolScript:\n"+script}
+ ,scriptWait: function(script){document.getElementById("fakeApplet").value="\njmolScriptWait:\n"+script}
+ ,loadInline: function(data,script){document.getElementById("fakeApplet").value="\njmolLoadInline data:\n"+data+"\n\nscript:\n"+script}
+ }
+}
+
+
+///////////////////////////////////////////
+
+ // This should no longer be needed, jmolResizeApplet() is better; kept for backwards compatibility
+ /*
+ Resizes absolutely (pixels) or by percent of window (w or h 0.5 means 50%).
+ targetSuffix is optional and defaults to zero (first applet in page).
+ Both w and h are optional, but needed if you want to use targetSuffix.
+ h defaults to w
+ w defaults to 100% of window
+ If either w or h is between 0 and 1, then it is taken as percent/100.
+ If either w or h is greater than 1, then it is taken as a size (pixels).
+ */
+function jmolResize(w,h,targetSuffix) {
+ _jmol.alerted = true;
+ var percentW = (!w ? 100 : w <= 1 && w > 0 ? w * 100 : 0);
+ var percentH = (!h ? percentW : h <= 1 && h > 0 ? h * 100 : 0);
+ if (_jmol.browser=="msie") {
+ var width=document.body.clientWidth;
+ var height=document.body.clientHeight;
+ } else {
+ var netscapeScrollWidth=15;
+ var width=window.innerWidth - netscapeScrollWidth;
+ var height=window.innerHeight-netscapeScrollWidth;
+ }
+ var applet = _jmolGetApplet(targetSuffix);
+ if(!applet)return;
+ applet.style.width = (percentW ? width * percentW/100 : w)+"px";
+ applet.style.height = (percentH ? height * percentH/100 : (h ? h : w))+"px";
+ //title=width + " " + height + " " + (new Date());
+}
+
+// 13 Jun 09 -- makes jmolResize() obsolete (kept for backwards compatibility)
+function jmolResizeApplet(size,targetSuffix) {
+ // See _jmolGetAppletSize() for the formats accepted as size [same used by jmolApplet()]
+ // Special case: an empty value for width or height is accepted, meaning no change in that dimension.
+ _jmol.alerted = true;
+ var applet = _jmolGetApplet(targetSuffix);
+ if(!applet)return;
+ var sz = _jmolGetAppletSize(size, "px");
+ sz[0] && (applet.style.width = sz[0]);
+ sz[1] && (applet.style.height = sz[1]);
+}
+
+function _jmolGetAppletSize(size, units) {
+ /* Accepts single number or 2-value array, each one can be one of:
+ percent (text string ending %), decimal 0 to 1 (percent/100), number, or text string (interpreted as nr.)
+ [width, height] array of strings is returned, with units added if specified.
+ Percent is relative to container div or element (which should have explicitly set size).
+ */
+ var width, height;
+ if ( (typeof size) == "object" && size != null ) {
+ width = size[0]; height = size[1];
+ } else {
+ width = height = size;
+ }
+ return [_jmolFixDim(width, units), _jmolFixDim(height, units)];
+}
+
+function _jmolFixDim(x, units) {
+ var sx = "" + x;
+ return (sx.length == 0 ? (units ? "" : _jmol.allowedJmolSize[2])
+ : sx.indexOf("%") == sx.length-1 ? sx
+ : (x = parseFloat(x)) <= 1 && x > 0 ? x * 100 + "%"
+ : (isNaN(x = Math.floor(x)) ? _jmol.allowedJmolSize[2]
+ : x < _jmol.allowedJmolSize[0] ? _jmol.allowedJmolSize[0]
+ : x > _jmol.allowedJmolSize[1] ? _jmol.allowedJmolSize[1]
+ : x) + (units ? units : ""));
+}
+
+
+
+
->FER_CAPAA Ferredoxin\r
------------------------------------------------------------ASYKVKLITPDGP\r
-IEFDCPDDVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV\r
-TIETHKEAELVG-\r
->FER_CAPAN Ferredoxin, chloroplast precursor\r
-MA------SVSATMISTSFMPRKPAVTSL-KPIPNVGE--ALFGLKS-A--NGGKVTCMASYKVKLITPDGP\r
-IEFDCPDNVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV\r
-TIETHKEAELVG-\r
->FER1_SOLLC Ferredoxin-1, chloroplast precursor\r
-MA------SISGTMISTSFLPRKPAVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPEGP\r
-IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGSVDQSDGNFLDEDQEAAGFVLTCVAYPKGDV\r
-TIETHKEEELTA-\r
->Q93XJ9_SOLTU Ferredoxin I precursor\r
-MA------SISGTMISTSFLPRKPVVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPDGP\r
-IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGTVDQSDGKFLDDDQEAAGFVLTCVAYPKCDV\r
-TIETHKEEELTA-\r
->FER1_PEA Ferredoxin-1, chloroplast precursor\r
-MATT---PALYGTAVSTSFLRTQPMPMSV-TTTKAFSN--GFLGLKT-SLKRGDLAVAMASYKVKLVTPDGT\r
-QEFECPSDVYILDHAEEVGIDLPYSCRAGSCSSCAGKVVGGEVDQSDGSFLDDEQIEAGFVLTCVAYPTSDV\r
-VIETHKEEDLTA-\r
->Q7XA98_TRIPR Ferredoxin I\r
-MATT---PALYGTAVSTSFMRRQPVPMSV-ATTTTTKAFPSGFGLKSVSTKRGDLAVAMATYKVKLITPEGP\r
-QEFDCPDDVYILDHAEEVGIELPYSCRAGSCSSCAGKVVNGNVNQEDGSFLDDEQIEGGWVLTCVAFPTSDV\r
-TIETHKEEELTA-\r
->FER1_MESCR Ferredoxin-1, chloroplast precursor\r
-MAAT--TAALSGATMSTAFAPK--TPPMTAALPTNVGR--ALFGLKS-SASR-GRVTAMAAYKVTLVTPEGK\r
-QELECPDDVYILDAAEEAGIDLPYSCRAGSCSSCAGKVTSGSVNQDDGSFLDDDQIKEGWVLTCVAYPTGDV\r
-TIETHKEEELTA-\r
->FER1_SPIOL Ferredoxin-1, chloroplast precursor\r
-MAAT--TTTMMG--MATTFVPKPQAPPMMAALPSNTGR--SLFGLKT-GSR--GGRMTMAAYKVTLVTPTGN\r
-VEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLDDDQIDEGWVLTCAAYPVSDV\r
-TIETHKEEELTA-\r
->FER3_RAPSA Ferredoxin, leaf L-A\r
------------------------------------------------------------ATYKVKFITPEGE\r
-QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDDQIAEGFVLTCAAYPTSDV\r
-TIETHREEDMV--\r
->FER1_ARATH Ferredoxin-1, chloroplast precursor\r
-MAST----ALSSAIVGTSFIRRSPAPISLRSLPSANTQ--SLFGLKS-GTARGGRVTAMATYKVKFITPEGE\r
-LEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDEQIGEGFVLTCAAYPTSDV\r
-TIETHKEEDIV--\r
->FER_BRANA Ferredoxin\r
------------------------------------------------------------ATYKVKFITPEGE\r
-QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGFVDQSDESFLDDDQIAEGFVLTCAAYPTSDV\r
-TIETHKEEELV--\r
->FER2_ARATH Ferredoxin-2, chloroplast precursor\r
-MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE\r
-QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDDEQMSEGYVLTCVAYPTSDV\r
-VIETHKEEAIM--\r
->Q93Z60_ARATH At1g10960/T19D16_12\r
-MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE\r
-QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDD-------------------\r
--------------\r
->FER1_MAIZE Ferredoxin-1, chloroplast precursor\r
-MATVLGSPRAPAFFFSSSSLRAAPAPTAV--ALPAAKV--GIMGRSA-SSRR--RLRAQATYNVKLITPEGE\r
-VELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDV\r
-VIETHKEEELTGA\r
->O80429_MAIZE Ferredoxin\r
-MAAT---------ALSMSILR---APPPCFSSPLRLRV--AVAKPLA-APMRRQLLRAQATYNVKLITPEGE\r
-VELQVPDDVYILDFAEEEGIDLPFSCRAGSCSSCAGKVVSGSVDQSDQSFLNDNQVADGWVLTCAAYPTSDV\r
-VIETHKEDDLL--\r
+>FER_CAPAA Ferredoxin
+-----------------------------------------------------------ASYKVKLITPDGP
+IEFDCPDDVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV
+TIETHKEAELVG-
+>FER_CAPAN Ferredoxin, chloroplast precursor
+MA------SVSATMISTSFMPRKPAVTSL-KPIPNVGE--ALFGLKS-A--NGGKVTCMASYKVKLITPDGP
+IEFDCPDNVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV
+TIETHKEAELVG-
+>FER1_SOLLC Ferredoxin-1, chloroplast precursor
+MA------SISGTMISTSFLPRKPAVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPEGP
+IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGSVDQSDGNFLDEDQEAAGFVLTCVAYPKGDV
+TIETHKEEELTA-
+>Q93XJ9_SOLTU Ferredoxin I precursor
+MA------SISGTMISTSFLPRKPVVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPDGP
+IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGTVDQSDGKFLDDDQEAAGFVLTCVAYPKCDV
+TIETHKEEELTA-
+>FER1_PEA Ferredoxin-1, chloroplast precursor
+MATT---PALYGTAVSTSFLRTQPMPMSV-TTTKAFSN--GFLGLKT-SLKRGDLAVAMASYKVKLVTPDGT
+QEFECPSDVYILDHAEEVGIDLPYSCRAGSCSSCAGKVVGGEVDQSDGSFLDDEQIEAGFVLTCVAYPTSDV
+VIETHKEEDLTA-
+>Q7XA98_TRIPR Ferredoxin I
+MATT---PALYGTAVSTSFMRRQPVPMSV-ATTTTTKAFPSGFGLKSVSTKRGDLAVAMATYKVKLITPEGP
+QEFDCPDDVYILDHAEEVGIELPYSCRAGSCSSCAGKVVNGNVNQEDGSFLDDEQIEGGWVLTCVAFPTSDV
+TIETHKEEELTA-
+>FER1_MESCR Ferredoxin-1, chloroplast precursor
+MAAT--TAALSGATMSTAFAPK--TPPMTAALPTNVGR--ALFGLKS-SASR-GRVTAMAAYKVTLVTPEGK
+QELECPDDVYILDAAEEAGIDLPYSCRAGSCSSCAGKVTSGSVNQDDGSFLDDDQIKEGWVLTCVAYPTGDV
+TIETHKEEELTA-
+>FER1_SPIOL Ferredoxin-1, chloroplast precursor
+MAAT--TTTMMG--MATTFVPKPQAPPMMAALPSNTGR--SLFGLKT-GSR--GGRMTMAAYKVTLVTPTGN
+VEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLDDDQIDEGWVLTCAAYPVSDV
+TIETHKEEELTA-
+>FER3_RAPSA Ferredoxin, leaf L-A
+-----------------------------------------------------------ATYKVKFITPEGE
+QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDDQIAEGFVLTCAAYPTSDV
+TIETHREEDMV--
+>FER1_ARATH Ferredoxin-1, chloroplast precursor
+MAST----ALSSAIVGTSFIRRSPAPISLRSLPSANTQ--SLFGLKS-GTARGGRVTAMATYKVKFITPEGE
+LEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDEQIGEGFVLTCAAYPTSDV
+TIETHKEEDIV--
+>FER_BRANA Ferredoxin
+-----------------------------------------------------------ATYKVKFITPEGE
+QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGFVDQSDESFLDDDQIAEGFVLTCAAYPTSDV
+TIETHKEEELV--
+>FER2_ARATH Ferredoxin-2, chloroplast precursor
+MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE
+QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDDEQMSEGYVLTCVAYPTSDV
+VIETHKEEAIM--
+>Q93Z60_ARATH At1g10960/T19D16_12
+MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE
+QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDD-------------------
+-------------
+>FER1_MAIZE Ferredoxin-1, chloroplast precursor
+MATVLGSPRAPAFFFSSSSLRAAPAPTAV--ALPAAKV--GIMGRSA-SSRR--RLRAQATYNVKLITPEGE
+VELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDV
+VIETHKEEELTGA
+>O80429_MAIZE Ferredoxin
+MAAT---------ALSMSILR---APPPCFSSPLRLRV--AVAKPLA-APMRRQLLRAQATYNVKLITPEGE
+VELQVPDDVYILDFAEEEGIDLPFSCRAGSCSSCAGKVVSGSVDQSDQSFLNDNQVADGWVLTCAAYPTSDV
+VIETHKEDDLL--
-<?xml version="1.0" encoding="ISO-8859-1" ?>\r
-<!--\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)\r
- * Copyright (C) 2014 The Jalview Authors\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
- * \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE. See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.\r
- * The Jalview Authors are detailed in the 'AUTHORS' file.\r
--->\r
-<!DOCTYPE helpset PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN" "http://java.sun.com/products/javahelp/helpset_1_0.dtd">\r
-<helpset version="1.0">\r
- <!-- title -->\r
- <title>Jalview Documentation</title>\r
- <!-- maps -->\r
- <maps>\r
- <homeID>home</homeID>\r
- <mapref location="help.jhm" />\r
- </maps>\r
- <!-- views -->\r
- <view>\r
- <name>TOC</name>\r
- <label>Table Of Contents</label>\r
- <type>javax.help.TOCView</type>\r
- <data>helpTOC.xml</data>\r
- </view>\r
- <view>\r
- <name>Search</name>\r
- <label>Search</label>\r
- <type>javax.help.SearchView</type>\r
- <data engine="com.sun.java.help.search.DefaultSearchEngine">\r
- JavaHelpSearch\r
- </data>\r
- </view>\r
-<presentation default="true" displayviews="true" displayviewimages="false">\r
- <name>TOPALi</name>\r
- <size width="800" height="700" />\r
- <location x="200" y="50" />\r
- <title>Jalview Documentation</title>\r
- <image>helpIcon</image>\r
- <toolbar>\r
- <helpaction image="backIcon">javax.help.BackAction</helpaction>\r
- <helpaction image="forwardIcon">javax.help.ForwardAction</helpaction>\r
- <helpaction image="homeIcon">javax.help.HomeAction</helpaction>\r
- <helpaction>javax.help.SeparatorAction</helpaction>\r
- <!--<helpaction image="reloadIcon">javax.help.ReloadAction</helpaction>-->\r
- <!--<helpaction image="addBookmarkIcon">javax.help.FavoritesAction</helpaction>-->\r
- <helpaction image="printIcon">javax.help.PrintAction</helpaction>\r
- <helpaction image="printSetupIcon">javax.help.PrintSetupAction</helpaction>\r
- </toolbar>\r
- </presentation>\r
-</helpset>\r
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+-->
+<!DOCTYPE helpset PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN" "http://java.sun.com/products/javahelp/helpset_1_0.dtd">
+<helpset version="1.0">
+ <!-- title -->
+ <title>Jalview Documentation</title>
+ <!-- maps -->
+ <maps>
+ <homeID>home</homeID>
+ <mapref location="help.jhm" />
+ </maps>
+ <!-- views -->
+ <view>
+ <name>TOC</name>
+ <label>Table Of Contents</label>
+ <type>javax.help.TOCView</type>
+ <data>helpTOC.xml</data>
+ </view>
+ <view>
+ <name>Search</name>
+ <label>Search</label>
+ <type>javax.help.SearchView</type>
+ <data engine="com.sun.java.help.search.DefaultSearchEngine">
+ JavaHelpSearch
+ </data>
+ </view>
+<presentation default="true" displayviews="true" displayviewimages="false">
+ <name>TOPALi</name>
+ <size width="800" height="700" />
+ <location x="200" y="50" />
+ <title>Jalview Documentation</title>
+ <image>helpIcon</image>
+ <toolbar>
+ <helpaction image="backIcon">javax.help.BackAction</helpaction>
+ <helpaction image="forwardIcon">javax.help.ForwardAction</helpaction>
+ <helpaction image="homeIcon">javax.help.HomeAction</helpaction>
+ <helpaction>javax.help.SeparatorAction</helpaction>
+ <!--<helpaction image="reloadIcon">javax.help.ReloadAction</helpaction>-->
+ <!--<helpaction image="addBookmarkIcon">javax.help.FavoritesAction</helpaction>-->
+ <helpaction image="printIcon">javax.help.PrintAction</helpaction>
+ <helpaction image="printSetupIcon">javax.help.PrintSetupAction</helpaction>
+ </toolbar>
+ </presentation>
+</helpset>
area (below the sequence ID area).
</p>
<ul>
- <li>Add New Row<br>
+ <li><strong>Add New Row</strong><br>
<em>Adds a new, named annotation row (a dialog box will pop up for you to
enter the label for the new row). </em> </li>
- <li>Hide Row<br>
+ <li><strong>Edit Label/Description</strong><br>
+ <em>This opens a dialog where you can change the name (displayed label), or the description
+ (as shown on the label tooltip) of the clicked annotation. </em> </li>
+ <li><strong>Hide This Row</strong><br>
<em>Hides the annotation row whose label was clicked in order to bring up
the menu.</em> </li>
- <li>Delete Row<br>
+ <li><strong>Hide All <em><label></em></strong><br>
+ <em>Hides all annotation rows whose label matches the one clicked.
+ (This option is only shown for annotations that relate to individual sequences,
+ not for whole alignment annotations. Since Jalview 2.8.2.)</em> </li>
+ <li><strong>Delete This Row</strong><br>
<em>Deletes the annotation row whose label was clicked in order to bring up
the menu.</em> </li>
- <li>Show All Hidden Rows<br>
+ <li><strong>Show All Hidden Rows</strong><br>
<em>Shows all hidden annotation rows.</em> </li>
<li><strong>Export Annotation</strong> <em>(Application only)</em><br>
<em>Annotations can be saved to file or output to a text window in either the
BAR_GRAPH	Bar Graph 1	<html>an <em>html tooltip</em> for Bar graph 1.</html>	||-100,-|-200,-|-300,-|-400,-|200,+|300,+|150,+
LINE_GRAPH	Green Values	1.1|2.2|1.3|3.4|0.7|1.4|3.3|2.2|2.1|-1.1|3.2
LINE_GRAPH	Red Values	2.1|3.2|1.3|-1.4|5.5|1.4|1.3|4.2|-1.1|1.1|3.2
-BAR_GRAPH	Bar Graph	2 1,.|2,*|3,:|4,.|5,*|4,:|3,.|2|1|1|2|3|4|5|4
+BAR_GRAPH	Bar Graph 2	1,.|2,*|3,:|4,.|5,*|4,:|3,.|2|1|1|2|3|4|5|4
NO_GRAPH	Icons 	||||E,Sheet1|E|E||||H,Sheet 2|H|H|H||||||
NO_GRAPH	Purple Letters	m|y|p|r|o|t|e|i|n
COLOUR	Bar Graph 2	blue
<tr>
<td width="17%">FASTA</td>
<td width="60%">>SequenceName<br>
-THISISASEQENCE<br></td>
+THISISASEQUENCE<br></td>
<td width="23%">.fa, .fasta</td>
</tr><tr><td width="17%">MSF</td>
<td width="60%">!! AA_MULTIPLE_ALIGNMENT 1.0<br>
>Seq2</td>
<td width="23%">.blc</td>
</tr><tr><td width="17%">PFAM</td>
-<td width="60%">SequenceName THISISASEQENCE</td>
+<td width="60%">SequenceName THISISASEQUENCE</td>
<td width="23%">.pfam</td>
</tr><tr>
<td width="17%">Stockholm</td>
</li>
<li><strong>Load Associated Tree<br> </strong><em>Jalview
can <a href="../calculations/treeviewer.html">view trees</a>
- stored in the Newick file format, and associate them with the
+ stored in the Newick file format, and associate them with the
alignment. Note: the ids of the tree file and your alignment MUST
be the same.</em></li>
<li><strong>Load Features / Annotations<br> </strong><em>Load
conservation calculation, quality calculation and consensus values
as bar charts. </em>
</li>
+ <li><strong>Show All Annotations</strong><em><br>
+ Show all available annotations on the alignment. You can selectively hide these from the <a href="./popupMenu.html">Popup</a>
+ or <a href="../features/annotation.html">Annotation</a> menus. (Since Jalview 2.8.2)</em></li>
+ <li><strong>Hide All Annotations</strong><em><br>
+ Hide all annotations on the alignment. (Since Jalview 2.8.2)</em></li>
<li><strong>Autocalculated Annotation<br> </strong><em>Settings
for the display of autocalculated annotation.</em>
<ul>
<li><strong>Show Sequence Features</strong><br> <em>Show
or hide sequence features on this alignment.</em>
</li>
- <li><strong><a href="../features/featuresettings.html">Seqence
+ <li><strong><a href="../features/featuresettings.html">Sequence
Feature Settings...</a> </strong><em><br> <em>Opens the
Sequence Feature Settings dialog box to control the colour and
display of sequence features on the alignment, and configure and
<li><strong> Add New Row</strong><br>
<em>Adds a new, named annotation row (a dialog box will pop up for you
to enter the label for the new row). </em> </li>
- <li><strong>Hide Row</strong><br>
- <em>Hides the annotation row whose label was clicked in order to bring
- up the menu.</em> </li>
+ <li><strong>Edit Label/Description</strong><br>
+ <em>This opens a dialog where you can change the name (displayed label), or the description
+ (as shown on the label tooltip) of the clicked annotation. </em> </li>
+ <li><strong>Hide This Row</strong><br>
+ <em>Hides the annotation row whose label was clicked in order to bring up
+ the menu.</em> </li>
+ <li><strong>Hide All <em><label></em></strong><br>
+ <em>Hides all annotation rows whose label matches the one clicked.
+ (This option is only shown for annotations that relate to individual sequences,
+ not for whole alignment annotations. Since Jalview 2.8.2.)</em> </li>
<li><strong>Delete Row</strong><br>
<em>Deletes the annotation row whose label was clicked in order to bring
up the menu.</em> </li>
</strong><em>If this is selected the "Annotation Panel" will be
displayed below the alignment. The default setting is to display the conservation
calculation, quality calculation and consensus values as bar charts. </em></li>
+ <li><strong>Show All Annotations</strong><em><br>
+ Show all available annotations on the alignment. You can selectively hide these from the <a href="./popupMenu.html">Popup</a>
+ or <a href="../features/annotation.html">Annotation</a> menus. (Since Jalview 2.8.2)</em></li>
+ <li><strong>Hide All Annotations</strong><em><br>
+ Hide all annotations on the alignment. (Since Jalview 2.8.2)</em></li>
<li><strong>Autocalculated Annotation<br></strong>Settings for the display of autocalculated annotation.
<ul><li>
<strong>Apply to all groups<br></strong>
</li>
<li><strong>Show Sequence Features</strong><br>
<em>Show or hide sequence features on this alignment.</em></li>
- <li><strong><a href="../features/featuresettings.html">Seqence Feature Settings...</a></strong><em><br>
+ <li><strong><a href="../features/featuresettings.html">Sequence Feature Settings...</a></strong><em><br>
Opens the Sequence Feature Settings dialog box to control the colour and display
of sequence features on the alignment, and configure and retrieve features
from DAS annotation servers.</em></li>
<ul>
<li><strong>Selection</strong>
<ul>
- <li><a name="sqreport"><strong>Sequence Details ...<br>
+ <li><a name="sqreport"><strong>Sequence Details...<br>
</strong></a><em>(Since Jalview 2.8)<br>Open an <a href="../io/exportseqreport.html">HTML report containing the annotation
- and database cross references</a> normally shown in the sequence's
+ and database cross references</a> normally shown in the sequence's
tooltip.</em></li>
+ <li><strong>Show Annotations...<br>
+ </strong><em>Choose to show (unhide) either All or
+ a selected type of annotation for the selected sequences. (Since Jalview 2.8.2)</em></li>
+ <li><strong>Hide Annotations...<br>
+ </strong><em>Choose to hide either All or
+ a selected type of annotation for the selected sequences. (Since Jalview 2.8.2)</em></li>
+ <li><strong>Add Reference Annotations...<br>
+ </strong><em>Add to the alignment window any annotations on the selected sequences
+ which have been read from reference sources or calculated (for example,
+ secondary structure derived from 3D structure). (Since Jalview 2.8.2)</em></li>
<li><strong>Edit </strong>
<ul>
<li><strong>Copy</strong><br>
- <em>Copys the selected region. In the applet version, the copied sequences
+ <em>Copies the selected region. In the applet version, the copied sequences
are not available to the system clipboard.</em></li>
<li><strong>Cut<br>
</strong><em>Cuts the selected region from the alignment. In the applet
(The View representative structures option was introduced in
Jalview 2.8.1)</em></li>
</ul>
- <br> <li>
-
- </li>
+ <br>
</ul>
</li>
<li><strong>Hide Sequences</strong><br>
-action.refresh_services = Refresh Services\r
-action.reset_services = Reset Services\r
-action.merge_results = Merge Results\r
-action.load_scheme = Load scheme\r
-action.save_scheme = Save scheme\r
-action.save_image = Save Image\r
-action.paste = Paste\r
-action.show_html_source = Show HTML Source\r
-action.print = Print\r
-action.web_service = Web Service\r
-action.cancel_job = Cancel Job\r
-action.start_job = Start Job\r
-action.revert = Revert\r
-action.move_down = Move Down\r
-action.move_up = Move Up\r
-action.remove_return_datatype = Remove return datatype\r
-action.add_return_datatype = Add return datatype\r
-action.remove_input_parameter = Remove selected input parameter\r
-action.add_input_parameter = Add input parameter\r
-action.edit = Edit\r
-action.new = New\r
-action.open_file = Open file\r
-action.show_unconserved = Show Unconserved\r
-action.open_new_aligmnent = Open new alignment\r
-action.raise_associated_windows = Raise Associated Windows\r
-action.minimize_associated_windows = Minimize Associated Windows\r
-action.close_all = Close all\r
-action.load_project = Load Project\r
-action.save_project = Save Project\r
-action.quit = Quit\r
-action.expand_views = Expand Views\r
-action.gather_views = Gather Views\r
-action.page_setup = Page Setup\r
-action.reload = Reload\r
-action.load = Load\r
-action.open = Open\r
-action.cancel = Cancel\r
-action.create = Create\r
-action.update = Update\r
-action.delete = Delete\r
-action.snapshot = Snapshot\r
-action.clear = Clear\r
-action.accept = Accept\r
-action.select_ddbb = --- Select Database ---\r
-action.undo = Undo\r
-action.redo = Redo\r
-action.reset = Reset\r
-action.remove_left = Remove left\r
-action.remove_right = Remove right\r
-action.remove_empty_columns = Remove Empty Columns\r
-action.remove_all_gaps = Remove All Gaps\r
-action.left_justify_alignment = Left Justify Alignment\r
-action.right_justify_alignment = Right Justify Alignment\r
-action.boxes = Boxes\r
-action.text = Text\r
-action.by_pairwise_id = by Pairwise Identity\r
-action.by_id = by Id\r
-action.by_length = by Length\r
-action.by_group = by Group\r
-action.remove = Remove\r
-action.remove_redundancy = Remove Redundancy\r
-action.pairwise_alignment = Pairwise Alignments...\r
-action.by_rna_helixes = by RNA Helices\r
-action.user_defined = User Defined...\r
-action.by_conservation = By Conservation\r
-action.wrap = Wrap\r
-action.show_gaps = Show Gaps\r
-action.show_hidden_markers = Show Hidden Markers\r
-action.find = Find\r
-action.undefine_groups = Undefine Groups\r
-action.create_groups = Create Groups\r
-action.make_groups_selection = Make Groups For Selection\r
-action.copy = Copy\r
-action.cut = Cut\r
-action.font = Font...\r
-action.scale_above = Scale Above\r
-action.scale_left = Scale Left\r
-action.scale_right = Scale Right\r
-action.by_tree_order = By Tree Order\r
-action.sort = Sort\r
-action.calculate_tree = Calculate Tree\r
-action.help = Help\r
-action.by_annotation = by Annotation...\r
-action.invert_sequence_selection = Invert Sequence Selection\r
-action.invert_column_selection = Invert Column Selection\r
-action.show = Show\r
-action.hide = Hide\r
-action.ok = OK\r
-action.set_defaults = Defaults\r
-action.create_group = Create Group\r
-action.remove_group = Remove Group\r
-action.edit_group = Edit Group\r
-action.border_colour = Border colour\r
-action.edit_new_group = Edit New Group\r
-action.hide_sequences = Hide Sequences\r
-action.sequences = Sequences\r
-action.ids = IDS\r
-action.ids_sequences = IDS and sequences\r
-action.reveal_all = Reveal All\r
-action.reveal_sequences = Reveal Sequences\r
-action.find_all = Find all\r
-action.find_next = Find next\r
-action.file = File\r
-action.view = View\r
-action.change_params = Change Parameters\r
-action.apply = Apply\r
-action.apply_threshold_all_groups = Apply threshold to all groups\r
-action.apply_all_groups = Apply to all Groups\r
-action.by_chain = By chain\r
-action.by_sequence = By Sequence\r
-action.paste_annotations = Paste Annotations\r
-action.format = Format\r
-action.select = Select\r
-action.new_view = New View\r
-action.close = Close\r
-action.add = Add\r
-action.save_as_default = Save as default\r
-action.save_as = Save as\r
-action.save = Save\r
-action.cancel_fetch = Cancel Fetch\r
-action.save_omit_hidden_columns = Save / Omit Hidden Columns\r
-action.change_font = Change Font\r
-action.change_font_tree_panel = Change Font (Tree Panel)\r
-action.colour = Colour\r
-action.calculate = Calculate\r
-action.select_all = Select all\r
-action.deselect_all = Deselect all\r
-action.invert_selection = Invert selection\r
-action.using_jmol = Using Jmol\r
-action.link = Link\r
-action.group_link = Group Link\r
-action.show_chain = Show Chain\r
-action.show_group = Show Group\r
-action.fetch_db_references = Fetch DB References\r
-action.view_flanking_regions = Show flanking regions\r
-label.view_flanking_regions = Show sequence data either side of the subsequences involved in this alignment\r
-label.str = Str:\r
-label.seq = Seq:\r
-label.structures_manager = Structures Manager\r
-label.nickname = Nickname:\r
-label.url = URL:\r
-label.input_file_url = Enter URL or Input File\r
-label.select_feature = Select feature:\r
-label.name = Name\r
-label.name_param = Name: {0}\r
-label.group = Group\r
-label.group_name = Group Name\r
-label.group_description = Group Description\r
-label.edit_group_name_description = Edit Group Name/Description\r
-label.colour = Colour:\r
-label.description = Description:\r
-label.start = Start:\r
-label.end = End:\r
-label.current_parameter_set_name = Current parameter set name:\r
-label.service_action = Service Action:\r
-label.post_url = POST URL:\r
-label.url_suffix = URL Suffix\r
-label.sequence_source = Sequence Source\r
-label.per_seq = per Sequence\r
-label.result_vertically_separable = Results are vertically separable\r
-label.amend = Amend\r
-label.undo_command = Undo {0}\r
-label.redo_command = Redo {0}\r
-label.principal_component_analysis = Principal Component Analysis\r
-label.average_distance_identity = Average Distance Using % Identity\r
-label.neighbour_joining_identity = Neighbour Joining Using % Identity\r
-label.treecalc_title = {0} Using {1}\r
-label.tree_calc_av = Average Distance\r
-label.tree_calc_nj = Neighbour Joining\r
-label.select_score_model = Select score model\r
-label.score_model_pid = % Identity\r
-label.score_model_blosum62 = BLOSUM62\r
-label.score_model_pam250 = PAM 250\r
-label.score_model_conservation = Physicochemical property conservation\r
-label.score_model_enhconservation = Physicochemical property conservation\r
-label.status_bar = Status bar\r
-label.out_to_textbox = Output to Textbox\r
-label.clustalx = Clustalx\r
-label.clustal = Clustal\r
-label.zappo = Zappo\r
-label.taylor = Taylor\r
-label.blc = BLC\r
-label.fasta = Fasta\r
-label.msf = MSF\r
-label.pfam = PFAM\r
-label.pileup = Pileup\r
-label.pir = PIR\r
-label.hydrophobicity = Hydrophobicity\r
-label.helix_propensity = Helix Propensity\r
-label.strand_propensity = Strand Propensity\r
-label.turn_propensity = Turn Propensity\r
-label.buried_index = Buried Index\r
-label.purine_pyrimidine = Purine/Pyrimidine\r
-label.percentage_identity = Percentage Identity\r
-label.blosum62 = BLOSUM62\r
-label.blosum62_score = BLOSUM62 Score\r
-label.tcoffee_scores = T-Coffee Scores\r
-label.average_distance_bloslum62 = Average Distance Using BLOSUM62\r
-label.neighbour_blosum62 = Neighbour Joining Using BLOSUM62\r
-label.show_annotations = Show annotations\r
-label.colour_text = Colour Text\r
-label.show_non_conversed = Show nonconserved\r
-label.overview_window = Overview Window\r
-label.none = None\r
-label.above_identity_threshold = Above Identity Threshold\r
-label.show_sequence_features = Show Sequence Features\r
-label.nucleotide = Nucleotide\r
-label.to_new_alignment = To New Alignment\r
-label.to_this_alignment = Add To This Alignment\r
-label.apply_colour_to_all_groups = Apply Colour To All Groups\r
-label.modify_identity_thereshold = Modify Identity Threshold...\r
-label.modify_conservation_thereshold = Modify Conservation Threshold...\r
-label.input_from_textbox = Input from textbox\r
-label.centre_column_labels = Centre column labels\r
-label.automatic_scrolling = Automatic Scrolling\r
-label.documentation = Documentation\r
-label.about = About...\r
-label.show_sequence_limits = Show Sequence Limits\r
-label.feature_settings = Feature Settings...\r
-label.sequence_features = Sequence Features\r
-label.all_columns = All Columns\r
-label.all_sequences = All Sequences\r
-label.selected_columns = Selected Columns \r
-label.selected_sequences = Selected Sequences\r
-label.all_but_selected_region = All but Selected Region (Shift+Ctrl+H)\r
-label.selected_region = Selected Region\r
-label.all_sequences_columns = All Sequences and Columns\r
-label.group_consensus = Group Consensus\r
-label.group_conservation = Group Conservation\r
-label.show_consensus_histogram = Show Consensus Histogram\r
-label.show_consensus_logo = Show Consensus Logo\r
-label.norm_consensus_logo = Normalise Consensus Logo\r
-label.apply_all_groups = Apply to all groups\r
-label.autocalculated_annotation = Autocalculated Annotation\r
-label.min_colour = Minimum Colour\r
-label.max_colour = Maximum Colour\r
-label.use_original_colours = Use Original Colours\r
-label.threshold_minmax = Threshold is min/max\r
-label.represent_group_with = Represent Group with {0}\r
-label.selection = Selection\r
-label.group_colour = Group Colour\r
-label.sequence = Sequence\r
-label.view_pdb_structure = View PDB Structure\r
-label.min = Min:\r
-label.max = Max:\r
-label.colour_by_label = Colour by label\r
-label.new_feature = New Feature\r
-label.match_case = Match Case\r
-label.view_alignment_editor = View in alignment editor\r
-label.labels = Labels\r
-label.output_values = Output Values...\r
-label.output_points = Output points...\r
-label.output_transformed_points = Output transformed points\r
-label.input_data = Input Data...\r
-label.nucleotide_matrix = Nucleotide matrix\r
-label.protein_matrix = Protein matrix\r
-label.show_bootstrap_values = Show Bootstrap Values\r
-label.show_distances = Show distances\r
-label.mark_unassociated_leaves = Mark Unassociated Leaves\r
-label.fit_to_window = Fit To Window\r
-label.newick_format = Newick Format\r
-label.select_newick_like_tree_file = Select a newick-like tree file\r
-label.colours = Colours\r
-label.view_mapping = View Mapping\r
-label.wireframe = Wireframe\r
-label.depthcue = Depthcue\r
-label.z_buffering = Z Buffering\r
-label.charge_cysteine = Charge & Cysteine\r
-label.all_chains_visible = All Chains Visible\r
-label.successfully_added_features_alignment = Successfully added features to alignment\r
-label.keyboard_editing_mode = Keyboard editing mode is {0}\r
-label.paste_features_annotations_Tcoffee_here = Paste your features / annotations / T-coffee score file here.\r
-label.removed_columns = Removed {0} columns.\r
-label.removed_empty_columns = Removed {0} empty columns.\r
-label.paste_newick_tree_file = Paste your Newick tree file here.\r
-label.order_by_params = Order by {0}\r
-label.html_content = <html>{0}</html>\r
-label.paste_pdb_file= Paste your PDB file here.\r
-label.paste_pdb_file_for_sequence = Paste PDB file for sequence {0}\r
-label.could_not_parse_newick_file = Could not parse Newick file\!\n {0}\r
-label.successfully_pasted_tcoffee_scores_to_alignment= Successfully pasted T-Coffee scores to alignment.\r
-label.failed_add_tcoffee_scores = Failed to add T-Coffee scores: \r
-label.successfully_pasted_annotation_to_alignment= Successfully pasted annotation to alignment.\r
-label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file = Couldn't parse pasted text as a valid annotation, feature, GFF, or T-Coffee score file\r
-label.successfully_pasted_alignment_file = Successfully pasted alignment file\r
-label.paste_your_alignment_file = Paste your alignment file here\r
-label.paste_your = Paste your\r
-label.finished_searching = Finished searching\r
-label.search_results= Search results {0} : {1}\r
-label.found_match_for = Found match for {0}\r
-label.font = Font:\r
-label.size = Size:\r
-label.style = Style:\r
-label.enter_redundancy_threshold = Enter the redundancy threshold\r
-label.calculating = Calculating....\r
-label.modify_conservation_visibility = Modify conservation visibility\r
-label.colour_residues_above_occurence = Colour residues above % occurence\r
-label.set_this_label_text = set this label text\r
-label.sequences_from = Sequences from {0}\r
-label.successfully_loaded_file = Successfully loaded file {0}\r
-label.successfully_saved_to_file_in_format = Successfully saved to file: {0} in {1} format.\r
-label.copied_sequences_to_clipboard = Copied {0} sequences to clipboard.\r
-label.check_file_matches_sequence_ids_alignment = Check that the file matches sequence IDs in the alignment.\r
-label.problem_reading_tcoffee_score_file = Problem reading T-COFFEE score file\r
-label.source_to_target = {0} ... {1}\r
-label.per_sequence_only= Per-sequence only\r
-label.to_file = to File\r
-label.to_textbox = to Textbox\r
-label.jalview = Jalview\r
-label.csv_spreadsheet = CSV (Spreadsheet)\r
-label.status = Status\r
-label.channels = Channels\r
-label.channel_title_item_count = {0} ({1})\r
-label.blog_item_published_on_date = {0} {1} \r
-label.select_das_service_from_table = Select a DAS service from the table to read a full description here.</font></html>\r
-label.session_update = Session Update\r
-label.new_vamsas_session = New Vamsas Session\r
-label.load_vamsas_session = Load Vamsas Session\r
-label.save_vamsas_session = Save Vamsas Session\r
-label.select_vamsas_session_opened_as_new_vamsas_session= Select a vamsas session to be opened as a new vamsas session.\r
-label.open_saved_vamsas_session = Open a saved VAMSAS session\r
-label.groovy_console = Groovy Console...\r
-label.lineart = Lineart\r
-label.dont_ask_me_again = Don't ask me again\r
-label.select_eps_character_rendering_style = Select EPS character rendering style\r
-label.invert_selection = Invert Selection\r
-label.optimise_order = Optimise Order\r
-label.seq_sort_by_score = Seq sort by Score\r
-label.load_colours = Load Colours\r
-label.save_colours = Save Colours\r
-label.fetch_das_features = Fetch DAS Features\r
-label.selected_database_to_fetch_from = Selected {0} database {1} to fetch from {2} \r
-label.database_param = Database: {0}\r
-label.example = Example\r
-label.example_param = Example: {0}\r
-label.select_file_format_before_saving = You must select a file format before saving!\r
-label.file_format_not_specified = File format not specified\r
-label.alignment_contains_hidden_columns = The Alignment contains hidden columns.\nDo you want to save only the visible alignment?\r
-label.couldnt_save_file = Couldn't save file: {0}\r
-label.error_saving_file = Error Saving File\r
-label.remove_from_default_list = Remove from default list?\r
-label.remove_user_defined_colour = Remove user defined colour\r
-label.you_must_select_least_two_sequences = You must select at least 2 sequences.\r
-label.invalid_selection = Invalid Selection\r
-label.principal_component_analysis_must_take_least_four_input_sequences = Principal component analysis must take\nat least 4 input sequences.\r
-label.sequence_selection_insufficient = Sequence selection insufficient\r
-label.you_need_more_two_sequences_selected_build_tree = You need to have more than two sequences selected to build a tree!\r
-label.not_enough_sequences = Not enough sequences\r
-label.selected_region_to_tree_may_only_contain_residues_or_gaps = The selected region to create a tree may\nonly contain residues or gaps.\nTry using the Pad function in the edit menu,\nor one of the multiple sequence alignment web services.\r
-label.sequences_selection_not_aligned = Sequences in selection are not aligned\r
-label.sequences_must_be_aligned_before_creating_tree = The sequences must be aligned before creating a tree.\nTry using the Pad function in the edit menu,\n or one of the multiple sequence alignment web services.\r
-label.sequences_not_aligned = Sequences not aligned\r
-label.problem_reading_tree_file = Problem reading tree file\r
-label.possible_problem_with_tree_file = Possible problem with tree file\r
-label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Please select at least three bases in at least one sequence in order to perform a cDNA translation.\r
-label.translation_failed = Translation Failed\r
-label.error_when_translating_sequences_submit_bug_report = Unfortunately, something went wrong when translating your sequences.\nPlease take a look in the Jalview java console\nand submit a bug report including the stacktrace.\r
-label.implementation_error = Implementation error:\r
-label.automatically_associate_pdb_files_with_sequences_same_name = Do you want to automatically associate the {0} PDB files with sequences in the alignment that have the same name?\r
-label.automatically_associate_pdb_files_by_name = Automatically Associate PDB files by name\r
-label.ignore_unmatched_dropped_files_info = <html>Do you want to <em>ignore</em> the {0} files whose names did not match any sequence IDs ?</html>\r
-label.ignore_unmatched_dropped_files = Ignore unmatched dropped files?\r
-label.enter_view_name = Enter View Name\r
-label.enter_label = Enter label\r
-label.enter_label_for_the_structure = Enter a label for the structure?\r
-label.pdb_entry_is_already_displayed = {0} is already displayed.\nDo you want to re-use this viewer ?\r
-label.map_sequences_to_visible_window = Map Sequences to Visible Window: {0}\r
-label.add_pdbentry_to_view = Do you want to add {0} to the view called\n{1}\n\r
-label.align_to_existing_structure_view = Align to existing structure view\r
-label.pdb_entries_couldnt_be_retrieved = The following pdb entries could not be retrieved from the PDB\:\n{0}\nPlease try downloading them manually.\r
-label.couldnt_load_file = Couldn't load file\r
-label.couldnt_find_pdb_id_in_file = Couldn't find a PDB id in the file supplied. Please enter an Id to identify this structure.\r
-label.no_pdb_id_in_file = No PDB Id in File\r
-label.couldnt_read_pasted_text = Couldn't read the pasted text {0}\r
-label.error_parsing_text = Error parsing text\r
-label.enter_local_das_source = Enter Nickname & URL of Local DAS Source\r
-label.you_can_only_edit_or_remove_local_das_sources = You can only edit or remove local DAS Sources!\r
-label.public_das_source = Public DAS source - not editable\r
-label.input_alignment_from_url = Input Alignment From URL\r
-label.input_alignment = Input Alignment\r
-label.couldnt_import_as_vamsas_session = Couldn't import {0} as a new vamsas session.\r
-label.vamsas_document_import_failed = Vamsas Document Import Failed\r
-label.couldnt_locate = Couldn't locate {0}\r
-label.url_not_found = URL not found\r
-label.no_link_selected = No link selected\r
-label.new_sequence_url_link = New sequence URL link\r
-label.cannot_edit_annotations_in_wrapped_view = Cannot edit annotations in wrapped view\r
-label.wrapped_view_no_edit = Wrapped view - no edit\r
-label.error_retrieving_data = Error Retrieving Data\r
-label.user_colour_scheme_must_have_name = User colour scheme must have a name\r
-label.no_name_colour_scheme = No name for colour scheme\r
-label.invalid_url = Invalid URL !\r
-label.error_loading_file = Error loading file\r
-label.problems_opening_file = Encountered problems opening {0}!!\r
-label.file_open_error = File open error\r
-label.no_das_sources_selected_warn = No das sources were selected.\nPlease select some sources and\ntry again.\r
-label.no_das_sources_selected_title = No DAS Sources Selected\r
-label.colour_scheme_exists_overwrite = Colour scheme {0} exists.\nContinue saving colour scheme as {1}?"\r
-label.duplicate_scheme_name = Duplicate scheme name\r
-label.jalview_new_questionnaire = There is a new Questionnaire available. Would you like to complete it now ?\n\r
-label.jalview_user_survey = Jalview User Survey\r
-label.alignment_properties = Alignment Properties: {0}\r
-label.alignment_props = Alignment Properties\r
-label.input_cut_paste = Cut & Paste Input\r
-label.input_cut_paste_params = Cut & Paste Input - {0}\r
-label.alignment_output_command = Alignment output - {0}\r
-label.annotations = Annotations\r
-label.features = Features\r
-label.overview_params = Overview {0}\r
-label.paste_newick_file = Paste Newick file\r
-label.load_tree_from_file = From File - \r
-label.colour_by_annotation = Colour by Annotation\r
-label.selection_output_command = Selection output - {0}\r
-label.annotation_for_displayid = <p><h2>Annotation for {0} </h2></p><p>\r
-label.pdb_sequence_mapping = PDB - Sequence Mapping\r
-label.pca_details = PCA details\r
-label.redundancy_threshold_selection = Redundancy threshold selection\r
-label.user_defined_colours = User defined colours\r
-label.jalviewLite_release = JalviewLite - Release {0}\r
-label.jaview_build_date = Build date: {0}\r
-label.jalview_authors_1 = Authors: : Jim Procter, Andrew Waterhouse, Lauren Lui, Jan Engelhardt, Natasha Sherstnev,\r
-label.jalview_authors_2 = Daniel Barton, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.\r
-label.jalview_dev_managers = Development managed by The Barton Group, University of Dundee, Scotland, UK.\r
-label.jalview_distribution_lists = For help, see the FAQ at www.jalview.org and/or join the jalview-discuss@jalview.org mailing list\r
-label.jalview_please_cite = If you use Jalview, please cite:\r
-label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)\r
-label.jalview_cite_1_title = Jalview Version 2 - a multiple sequence alignment editor and analysis workbench\r
-label.jalview_cite_1_ref = Bioinformatics doi: 10.1093/bioinformatics/btp033\r
-label.right_click = Right click\r
-label.to_add_annotation = to add annotation\r
-label.alignment_has_no_annotations = Alignment has no annotations\r
-label.retrieving_pdb_data = Retrieving PDB data...\r
-label.label = Label\r
-label.no_features_added_to_this_alignment = No Features added to this alignment!!\r
-label.features_can_be_added_from_searches_1 = (Features can be added from searches or\r
-label.features_can_be_added_from_searches_2 = from Jalview / GFF features files)\r
-label.calculating_pca= Calculating PCA\r
-label.reveal_columns = Reveal Columns\r
-label.jalview_cannot_open_file = Jalview can't open file\r
-label.jalview_applet = Jalview applet\r
-label.loading_data = Loading data\r
-label.memory_stats = Total Free Memory: {0} MB; Max Memory: {1} MB; {2} %\r
-label.calculating_tree = Calculating tree\r
-label.state_queueing = queuing\r
-label.state_running = running\r
-label.state_complete = complete\r
-label.state_completed = finished\r
-label.state_job_cancelled = job cancelled!!\r
-label.state_job_error = job error!\r
-label.server_error_try_later = Server Error! (try later)\r
-label.error_loading_pdb_data = Error loading PDB data!!\r
-label.fetching_pdb_data = Fetching PDB data...\r
-label.structure_type = Structure type\r
-label.settings_for_type = Settings for {0}\r
-label.view_full_application = View in Full Application\r
-label.load_associated_tree = Load Associated Tree ...\r
-label.load_features_annotations = Load Features/Annotations ...\r
-label.export_features = Export Features\r
-label.export_annotations = Export Annotations\r
-label.jalview_copy = Copy (Jalview Only)\r
-label.jalview_cut = Cut (Jalview Only)\r
-label.to_upper_case = To Upper Case\r
-label.to_lower_case = To Lower Case\r
-label.toggle_case = Toggle Case\r
-label.edit_name_description = Edit Name/Description ...\r
-label.create_sequence_feature = Create Sequence Feature ...\r
-label.edit_sequence = Edit Sequence\r
-label.edit_sequences = Edit Sequences\r
-label.sequence_details = Sequence Details\r
-label.jmol_help = Jmol Help\r
-label.all = All\r
-label.sort_by = Sort by\r
-label.sort_by_score = Sort by Score\r
-label.sort_by_density = Sort by Density\r
-label.sequence_sort_by_density = Sequence sort by Density\r
-label.reveal = Reveal\r
-label.hide_columns = Hide Columns\r
-label.load_jalview_annotations = Load Jalview Annotations or Features File\r
-label.load_tree_file = Load a tree file\r
-label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences = Retrieve and parse sequence database records for the alignment or the currently selected sequences\r
-label.standard_databases = Standard Databases\r
-label.fetch_embl_uniprot = Fetch from EMBL/EMBLCDS or Uniprot/PDB and any selected DAS sources\r
-label.reset_min_max_colours_to_defaults = Reset min and max colours to defaults from user preferences.\r
-label.align_structures_using_linked_alignment_views = Align structures using {0} linked alignment views\r
-label.connect_to_session = Connect to session {0}\r
-label.threshold_feature_display_by_score = Threshold the feature display by score.\r
-label.threshold_feature_no_thereshold = No Threshold\r
-label.threshold_feature_above_thereshold = Above Threshold\r
-label.threshold_feature_below_thereshold = Below Threshold\r
-label.adjust_thereshold = Adjust threshold\r
-label.toggle_absolute_relative_display_threshold = Toggle between absolute and relative display threshold.\r
-label.display_features_same_type_different_label_using_different_colour = Display features of the same type with a different label using a different colour. (e.g. domain features)\r
-label.select_colour_minimum_value = Select Colour for Minimum Value\r
-label.select_colour_maximum_value = Select Colour for Maximum Value\r
-label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment = Open a new Jmol view with all structures associated with the current selection and superimpose them using the alignment.\r
-label.open_url_param = Open URL {0}\r
-label.open_url_seqs_param = Open URL ({0}..) ({1} seqs)\r
-label.load_pdb_file_associate_with_sequence = Load a PDB file and associate it with sequence {0}\r
-label.reveal_hidden_columns = Reveal Hidden Columns with Right Mouse Button\r
-label.dark_colour = Dark Colour\r
-label.light_colour = Light Colour\r
-label.highlightnode = Left click to select leaves.<br>Double-click to invert leaves.<br>Right click to change colour.\r
-label.load_colour_scheme = Load colour scheme\r
-label.toggle_enabled_views = When enabled, allows many views to be selected.\r
-label.edit_notes_parameter_set = Click to edit the notes for this parameter set.\r
-label.open_local_file = Open local file\r
-label.enable_automatically_sort_alignment_when_open_new_tree = Enable this to automatically sort<br>the alignment when you open<br> a new tree.\r
-label.listen_for_selections = Listen for selections\r
-label.selections_mirror_selections_made_same_sequences_other_views = When selected, selections in this view will mirror<br>selections made on the same sequences in other views.\r
-label.toggle_sequence_visibility = Shift+H toggles sequence visiblity\r
-label.toggle_columns_visibility = Ctrl+H toggles column visiblity.\r
-label.toggles_visibility_hidden_selected_regions = H toggles visibility of hidden or selected regions\r
-label.rename_tab_eXpand_reGroup= Right-click to rename tab <br> Press X to eXpand tabs, G to reGroup.\r
-label.right_align_sequence_id = Right Align Sequence Id\r
-label.sequence_id_tooltip = Sequence ID Tooltip\r
-label.no_services = <No Services>\r
-label.select_copy_raw_html = Select this if you want to copy raw html\r
-label.share_data_vamsas_applications = Share data with other vamsas applications\r
-label.connect_to = Connect to\r
-label.join_existing_vamsas_session = Join an existing vamsas session\r
-label.from_url = from URL\r
-label.any_trees_calculated_or_loaded_alignment_automatically_sort = When selected, any trees calculated or loaded onto the alignment will automatically sort the alignment\r
-label.sort_with_new_tree = Sort With New Tree\r
-label.from_textbox = from Textbox\r
-label.window = Window\r
-label.preferences = Preferences\r
-label.tools = Tools\r
-label.fetch_sequences = Fetch Sequence(s)\r
-label.stop_vamsas_session = Stop Vamsas Session\r
-label.collect_garbage = Collect Garbage\r
-label.show_memory_usage = Show Memory Usage\r
-label.show_java_console = Show Java Console\r
-label.show_jalview_news = Show Jalview News\r
-label.take_snapshot = Take snapshot\r
-label.monospaced_fonts_faster_to_render = Monospaced fonts are faster to render\r
-label.anti_alias_fonts = Anti-alias Fonts (Slower to render)\r
-label.monospaced_font= Monospaced\r
-label.quality = Quality\r
-label.maximize_window = Maximize Window\r
-label.conservation = Conservation\r
-label.consensus = Consensus\r
-label.histogram = Histogram\r
-label.logo = Logo\r
-label.non_positional_features = Non-positional Features\r
-label.database_references = Database References\r
-label.share_selection_across_views = Share selection across views\r
-label.scroll_highlighted_regions = Scroll to highlighted regions\r
-label.gap_symbol = Gap Symbol\r
-label.alignment_colour = Alignment Colour\r
-label.address = Address\r
-label.port = Port\r
-label.default_browser_unix = Default Browser (Unix)\r
-label.send_usage_statistics = Send usage statistics\r
-label.check_for_questionnaires = Check for questionnaires\r
-label.check_for_latest_version = Check for latest version\r
-label.url_linkfrom_sequence_id = URL link from Sequence ID\r
-label.use_proxy_server = Use a proxy server\r
-label.eps_rendering_style = EPS rendering style\r
-label.append_start_end = Append /start-end (/15-380)\r
-label.full_sequence_id = Full Sequence Id\r
-label.smooth_font = Smooth Font\r
-label.autocalculate_consensus = AutoCalculate Consensus\r
-label.pad_gaps = Pad Gaps\r
-label.pad_gaps_when_editing = Pad Gaps When Editing\r
-label.automatically_set_id_width = Automatically set ID width\r
-label.figure_id_column_width = Figure ID column width\r
-label.use_modeller_output = Use Modeller Output\r
-label.wrap_alignment = Wrap Alignment\r
-label.right_align_ids = Right Align Ids\r
-label.sequence_name_italics = Sequence Name Italics\r
-label.open_overview = Open Overview\r
-label.default_colour_scheme_for_alignment = Default Colour Scheme for alignment\r
-label.annotation_shading_default = Annotation Shading Default\r
-label.default_minimum_colour_annotation_shading = Default Minimum Colour for annotation shading\r
-label.default_maximum_colour_annotation_shading = Default Maximum Colour for annotation shading\r
-label.visual = Visual\r
-label.connections = Connections\r
-label.output = Output\r
-label.editing = Editing\r
-label.das_settings = DAS Settings\r
-label.web_services = Web Services\r
-label.right_click_to_edit_currently_selected_parameter = Right click to edit currently selected parameter.\r
-label.let_jmol_manage_structure_colours = Let Jmol manage structure colours\r
-label.marks_leaves_tree_not_associated_with_sequence = Marks leaves of tree not associated with a sequence\r
-label.index_web_services_menu_by_host_site = Index web services in menu by the host site\r
-label.option_want_informed_web_service_URL_cannot_be_accessed_jalview_when_starts_up = Check this option if you want to be informed<br>when a web service URL cannot be accessed by Jalview<br>when it starts up\r
-label.new_service_url = New Service URL\r
-label.edit_service_url = Edit Service URL\r
-label.delete_service_url = Delete Service URL\r
-label.details = Details\r
-label.options = Options\r
-label.parameters = Parameters\r
-label.available_das_sources = Available DAS Sources\r
-label.full_details = Full Details\r
-label.authority = Authority\r
-label.type = Type\r
-label.proxy_server = Proxy Server\r
-label.file_output = File Output\r
-label.select_input_type = Select input type\r
-label.set_options_for_type = Set options for type\r
-label.data_input_parameters = Data input parameters\r
-label.data_returned_by_service = Data returned by service\r
-label.rsbs_encoded_service = RSBS Encoded Service\r
-label.parsing_errors = Parsing errors\r
-label.simple_bioinformatics_rest_services = Simple Bioinformatics Rest Services\r
-label.web_service_discovery_urls = Web Service Discovery URLS\r
-label.input_parameter_name = Input Parameter name\r
-label.short_descriptive_name_for_service = Short descriptive name for service\r
-label.function_service_performs = What kind of function the service performs (e.g. alignment, analysis, search, etc).\r
-label.brief_description_service = Brief description of service\r
-label.url_post_data_service = URL to post data to service. Include any special parameters needed here\r
-label.optional_suffix = Optional suffix added to URL when retrieving results from service\r
-label.preferred_gap_character = Which gap character does this service prefer?\r
-label.gap_character = Gap character\r
-label.move_return_type_up_order= Move return type up order\r
-label.move_return_type_down_order= Move return type down order\r
-label.update_user_parameter_set = Update this existing user parameter set\r
-label.delete_user_parameter_set = Delete the currently selected user parameter set\r
-label.create_user_parameter_set = Create a new parameter set with the current settings.\r
-label.revert_changes_user_parameter_set = Undo all changes to the current parameter set\r
-label.start_job_current_settings = Start Job with current settings\r
-label.cancel_job_close_dialog = Close this dialog and cancel job\r
-label.input_output = Input/Output\r
-label.cut_paste = Cut'n'Paste\r
-label.adjusting_parameters_for_calculation = Adjusting parameters for existing Calculation\r
-label.2d_rna_structure_line = 2D RNA {0}\r
-label.2d_rna_sequence_name = 2D RNA - {0}\r
-label.edit_name_and_description_current_group = Edit name and description of current group.\r
-label.view_structure_for = View structure for {0}\r
-label.view_all_structures = View all {0} structures.\r
-label.view_all_representative_structures = View all {0} representative structures.\r
-label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment = Opens a new Jmol view with all representative structures\nassociated with the current selection\nsuperimposed with the current alignment.\r
-label.associate_structure_with_sequence = Associate Structure with Sequence\r
-label.from_file = from file\r
-label.enter_pdb_id = Enter PDB Id\r
-label.discover_pdb_ids = Discover PDB ids\r
-label.text_colour = Text Colour\r
-label.structure = Structure\r
-label.view_structure = View Structure\r
-label.clustalx_colours = Clustalx colours\r
-label.above_identity_percentage = Above % Identity\r
-label.create_sequence_details_report_annotation_for = Annotation for {0}\r
-label.sequece_details_for = Sequece Details for {0}\r
-label.sequence_name = Sequence Name\r
-label.sequence_description = Sequence Description\r
-label.edit_sequence_name_description = Edit Sequence Name/Description\r
-label.spaces_converted_to_backslashes = Spaces have been converted to _\r
-label.no_spaces_allowed_sequence_name = No spaces allowed in Sequence Name\r
-label.select_outline_colour = Select Outline Colour\r
-label.web_browser_not_found_unix = Unixers\: Couldn't find default web browser.\nAdd the full path to your browser in Preferences."\r
-label.web_browser_not_found = Web browser not found\r
-label.select_pdb_file_for = Select a PDB file for {0}\r
-label.html = HTML\r
-label.wrap = Wrap\r
-label.show_database_refs = Show Database Refs\r
-label.show_non_positional_features = Show Non-Positional Features\r
-label.save_png_image = Save As PNG Image\r
-label.load_tree_for_sequence_set = Load a tree for this sequence set\r
-label.export_image = Export Image\r
-label.vamsas_store = VAMSAS store\r
-label.translate_cDNA = Translate cDNA\r
-label.extract_scores = Extract Scores\r
-label.get_cross_refs = Get Cross References\r
-label.sort_alignment_new_tree = Sort Alignment With New Tree\r
-label.add_sequences = Add Sequences\r
-label.new_window = New Window\r
-label.refresh_available_sources = Refresh Available Sources\r
-label.use_registry = Use Registry\r
-label.add_local_source = Add Local Source\r
-label.set_as_default = Set as Default\r
-label.show_labels = Show labels\r
-label.background_colour = Background Colour\r
-label.associate_nodes_with = Associate Nodes With\r
-label.jalview_pca_calculation = Jalview PCA Calculation\r
-label.link_name = Link Name\r
-label.pdb_file = PDB file\r
-label.colour_with_jmol = Colour with Jmol\r
-label.align_structures = Align structures\r
-label.jmol = Jmol\r
-label.sort_alignment_by_tree = Sort Alignment By Tree\r
-label.mark_unlinked_leaves = Mark Unlinked Leaves\r
-label.associate_leaves_with = Associate Leaves With\r
-label.save_colour_scheme_with_unique_name_added_to_colour_menu = Save your colour scheme with a unique name and it will be added to the Colour menu\r
-label.case_sensitive = Case Sensitive\r
-label.lower_case_colour = Lower Case Colour\r
-label.index_by_host = Index by host\r
-label.index_by_type = Index by type\r
-label.enable_jabaws_services = Enable JABAWS Services\r
-label.display_warnings = Display warnings\r
-label.move_url_up = Move URL up\r
-label.move_url_down = Move URL down\r
-label.add_sbrs_definition = Add a SBRS definition\r
-label.edit_sbrs_definition = Edit SBRS definition\r
-label.delete_sbrs_definition = Delete SBRS definition\r
-label.your_sequences_have_been_verified = Your sequences have been verified against known sequence databases. Some of the ids have been\n altered, most likely the start/end residue will have been updated.\n Save your alignment to maintain the updated id.\n\n\r
-label.sequence_names_updated = Sequence names updated\r
-label.dbref_search_completed = DBRef search completed\r
-label.show_all_chains = Show all chains\r
-label.fetch_all_param = Fetch all {0}\r
-label.paste_new_window = Paste To New Window\r
-label.settings_for_param = Settings for {0}\r
-label.view_params = View {0}\r
-label.select_all_views = Select all views\r
-label.align_sequences_to_existing_alignment = Align sequences to an existing alignment\r
-label.realign_with_params = Realign with {0}\r
-label.calcname_with_default_settings = {0} with Defaults\r
-label.action_with_default_settings = {0} with default settings\r
-label.edit_settings_and_run = Edit settings and run...\r
-label.view_and_change_parameters_before_alignment = View and change the parameters before alignment\r
-label.run_with_preset_params = Run {0} with preset\r
-label.view_and_change_parameters_before_running_calculation = View and change parameters before running calculation\r
-label.view_documentation = View documentation\r
-label.select_return_type = Select return type\r
-label.translation_of_params = Translation of {0}\r
-label.features_for_params = Features for - {0}\r
-label.annotations_for_params = Annotations for - {0}\r
-label.generating_features_for_params = Generating features for - {0}\r
-label.generating_annotations_for_params = Generating annotations for - {0}\r
-label.varna_params = VARNA - {0}\r
-label.sequence_feature_settings = Sequence Feature Settings\r
-label.pairwise_aligned_sequences = Pairwise Aligned Sequences\r
-label.original_data_for_params = Original Data for {0}\r
-label.points_for_params = Points for {0}\r
-label.transformed_points_for_params = Transformed points for {0}\r
-label.graduated_color_for_params = Graduated Feature Colour for {0}\r
-label.select_backgroud_colour = Select Background Colour\r
-label.invalid_font = Invalid Font\r
-label.separate_multiple_accession_ids = Separate multiple accession ids with semi colon ";"\r
-label.replace_commas_semicolons = Replace commas with semi-colons\r
-label.parsing_failed_syntax_errors_shown_below_param = Parsing failed. Syntax errors shown below {0}\r
-label.parsing_failed_unrecoverable_exception_thrown_param = \nParsing failed. An unrecoverable exception was thrown\:\n {0}\r
-label.example_query_param = Example query: {0}\r
-label.enter_value_increase_conservation_visibility = Enter value to increase conservation visibility\r
-label.enter_percentage_identity_above_which_colour_residues = Enter % identity above which to colour residues\r
-label.wswublast_client_credits = To display sequence features an exact Uniprot id with 100% sequence identity match must be entered.\nIn order to display these features, try changing the names of your sequences to the ids suggested below.\n\nRunning WSWUBlast at EBI.\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R.\nSOAP-based services provided by the European Bioinformatics Institute.\nNucleic Acids Res. 33(1)\:W25-W28 (2005));\r
+action.refresh_services = Refresh Services
+action.reset_services = Reset Services
+action.merge_results = Merge Results
+action.load_scheme = Load scheme
+action.save_scheme = Save scheme
+action.save_image = Save Image
+action.paste = Paste
+action.show_html_source = Show HTML Source
+action.print = Print
+action.web_service = Web Service
+action.cancel_job = Cancel Job
+action.start_job = Start Job
+action.revert = Revert
+action.move_down = Move Down
+action.move_up = Move Up
+action.remove_return_datatype = Remove return datatype
+action.add_return_datatype = Add return datatype
+action.remove_input_parameter = Remove selected input parameter
+action.add_input_parameter = Add input parameter
+action.edit = Edit
+action.new = New
+action.open_file = Open file
+action.show_unconserved = Show Unconserved
+action.open_new_aligmnent = Open new alignment
+action.raise_associated_windows = Raise Associated Windows
+action.minimize_associated_windows = Minimize Associated Windows
+action.close_all = Close all
+action.load_project = Load Project
+action.save_project = Save Project
+action.quit = Quit
+action.expand_views = Expand Views
+action.gather_views = Gather Views
+action.page_setup = Page Setup
+action.reload = Reload
+action.load = Load
+action.open = Open
+action.cancel = Cancel
+action.create = Create
+action.update = Update
+action.delete = Delete
+action.snapshot = Snapshot
+action.clear = Clear
+action.accept = Accept
+action.select_ddbb = --- Select Database ---
+action.undo = Undo
+action.redo = Redo
+action.reset = Reset
+action.remove_left = Remove left
+action.remove_right = Remove right
+action.remove_empty_columns = Remove Empty Columns
+action.remove_all_gaps = Remove All Gaps
+action.left_justify_alignment = Left Justify Alignment
+action.right_justify_alignment = Right Justify Alignment
+action.boxes = Boxes
+action.text = Text
+action.by_pairwise_id = by Pairwise Identity
+action.by_id = by Id
+action.by_length = by Length
+action.by_group = by Group
+action.remove = Remove
+action.remove_redundancy = Remove Redundancy
+action.pairwise_alignment = Pairwise Alignments...
+action.by_rna_helixes = by RNA Helices
+action.user_defined = User Defined...
+action.by_conservation = By Conservation
+action.wrap = Wrap
+action.show_gaps = Show Gaps
+action.show_hidden_markers = Show Hidden Markers
+action.find = Find
+action.undefine_groups = Undefine Groups
+action.create_groups = Create Groups
+action.make_groups_selection = Make Groups For Selection
+action.copy = Copy
+action.cut = Cut
+action.font = Font...
+action.scale_above = Scale Above
+action.scale_left = Scale Left
+action.scale_right = Scale Right
+action.by_tree_order = By Tree Order
+action.sort = Sort
+action.calculate_tree = Calculate Tree
+action.help = Help
+action.by_annotation = by Annotation...
+action.invert_sequence_selection = Invert Sequence Selection
+action.invert_column_selection = Invert Column Selection
+action.show = Show
+action.hide = Hide
+action.ok = OK
+action.set_defaults = Defaults
+action.create_group = Create Group
+action.remove_group = Remove Group
+action.edit_group = Edit Group
+action.border_colour = Border colour
+action.edit_new_group = Edit New Group
+action.hide_sequences = Hide Sequences
+action.sequences = Sequences
+action.ids = IDS
+action.ids_sequences = IDS and sequences
+action.reveal_all = Reveal All
+action.reveal_sequences = Reveal Sequences
+action.find_all = Find all
+action.find_next = Find next
+action.file = File
+action.view = View
+action.change_params = Change Parameters
+action.apply = Apply
+action.apply_threshold_all_groups = Apply threshold to all groups
+action.apply_all_groups = Apply to all Groups
+action.by_chain = By chain
+action.by_sequence = By Sequence
+action.paste_annotations = Paste Annotations
+action.format = Format
+action.select = Select
+action.new_view = New View
+action.close = Close
+action.add = Add
+action.save_as_default = Save as default
+action.save_as = Save as
+action.save = Save
+action.cancel_fetch = Cancel Fetch
+action.save_omit_hidden_columns = Save / Omit Hidden Columns
+action.change_font = Change Font
+action.change_font_tree_panel = Change Font (Tree Panel)
+action.colour = Colour
+action.calculate = Calculate
+action.select_all = Select all
+action.deselect_all = Deselect all
+action.invert_selection = Invert selection
+action.using_jmol = Using Jmol
+action.link = Link
+action.group_link = Group Link
+action.show_chain = Show Chain
+action.show_group = Show Group
+action.fetch_db_references = Fetch DB References
+action.view_flanking_regions = Show flanking regions
+label.view_flanking_regions = Show sequence data either side of the subsequences involved in this alignment
+label.str = Str:
+label.seq = Seq:
+label.structures_manager = Structures Manager
+label.nickname = Nickname:
+label.url = URL:
+label.input_file_url = Enter URL or Input File
+label.select_feature = Select feature:
+label.name = Name
+label.name_param = Name: {0}
+label.group = Group
+label.group_name = Group Name
+label.group_description = Group Description
+label.edit_group_name_description = Edit Group Name/Description
+label.colour = Colour:
+label.description = Description:
+label.start = Start:
+label.end = End:
+label.current_parameter_set_name = Current parameter set name:
+label.service_action = Service Action:
+label.post_url = POST URL:
+label.url_suffix = URL Suffix
+label.sequence_source = Sequence Source
+label.per_seq = per Sequence
+label.result_vertically_separable = Results are vertically separable
+label.amend = Amend
+label.undo_command = Undo {0}
+label.redo_command = Redo {0}
+label.principal_component_analysis = Principal Component Analysis
+label.average_distance_identity = Average Distance Using % Identity
+label.neighbour_joining_identity = Neighbour Joining Using % Identity
+label.treecalc_title = {0} Using {1}
+label.tree_calc_av = Average Distance
+label.tree_calc_nj = Neighbour Joining
+label.select_score_model = Select score model
+label.score_model_pid = % Identity
+label.score_model_blosum62 = BLOSUM62
+label.score_model_pam250 = PAM 250
+label.score_model_conservation = Physicochemical property conservation
+label.score_model_enhconservation = Physicochemical property conservation
+label.status_bar = Status bar
+label.out_to_textbox = Output to Textbox
+label.clustalx = Clustalx
+label.clustal = Clustal
+label.zappo = Zappo
+label.taylor = Taylor
+label.blc = BLC
+label.fasta = Fasta
+label.msf = MSF
+label.pfam = PFAM
+label.pileup = Pileup
+label.pir = PIR
+label.hydrophobicity = Hydrophobicity
+label.helix_propensity = Helix Propensity
+label.strand_propensity = Strand Propensity
+label.turn_propensity = Turn Propensity
+label.buried_index = Buried Index
+label.purine_pyrimidine = Purine/Pyrimidine
+label.percentage_identity = Percentage Identity
+label.blosum62 = BLOSUM62
+label.blosum62_score = BLOSUM62 Score
+label.tcoffee_scores = T-Coffee Scores
+label.average_distance_bloslum62 = Average Distance Using BLOSUM62
+label.neighbour_blosum62 = Neighbour Joining Using BLOSUM62
+label.show_annotations = Show annotations
+label.hide_annotations = Hide annotations
+label.show_all_annotations = Show all annotations
+label.hide_all_annotations = Hide all annotations
+label.hide_all = Hide all
+label.add_reference_annotations = Add reference annotations
+label.find_tip = Search alignment, selection or sequence ids for a subsequence (ignoring gaps).<br>Accepts regular expressions - search Help for 'regex' for details.
+label.colour_text = Colour Text
+label.show_non_conversed = Show nonconserved
+label.overview_window = Overview Window
+label.none = None
+label.above_identity_threshold = Above Identity Threshold
+label.show_sequence_features = Show Sequence Features
+label.nucleotide = Nucleotide
+label.to_new_alignment = To New Alignment
+label.to_this_alignment = Add To This Alignment
+label.apply_colour_to_all_groups = Apply Colour To All Groups
+label.modify_identity_thereshold = Modify Identity Threshold...
+label.modify_conservation_thereshold = Modify Conservation Threshold...
+label.input_from_textbox = Input from textbox
+label.centre_column_labels = Centre column labels
+label.automatic_scrolling = Automatic Scrolling
+label.documentation = Documentation
+label.about = About...
+label.show_sequence_limits = Show Sequence Limits
+label.feature_settings = Feature Settings...
+label.sequence_features = Sequence Features
+label.all_columns = All Columns
+label.all_sequences = All Sequences
+label.selected_columns = Selected Columns
+label.selected_sequences = Selected Sequences
+label.all_but_selected_region = All but Selected Region (Shift+Ctrl+H)
+label.selected_region = Selected Region
+label.all_sequences_columns = All Sequences and Columns
+label.group_consensus = Group Consensus
+label.group_conservation = Group Conservation
+label.show_consensus_histogram = Show Consensus Histogram
+label.show_consensus_logo = Show Consensus Logo
+label.norm_consensus_logo = Normalise Consensus Logo
+label.apply_all_groups = Apply to all groups
+label.autocalculated_annotation = Autocalculated Annotation
+label.min_colour = Minimum Colour
+label.max_colour = Maximum Colour
+label.use_original_colours = Use Original Colours
+label.threshold_minmax = Threshold is min/max
+label.represent_group_with = Represent Group with {0}
+label.selection = Selection
+label.group_colour = Group Colour
+label.sequence = Sequence
+label.view_pdb_structure = View PDB Structure
+label.min = Min:
+label.max = Max:
+label.colour_by_label = Colour by label
+label.new_feature = New Feature
+label.match_case = Match Case
+label.view_alignment_editor = View in alignment editor
+label.labels = Labels
+label.output_values = Output Values...
+label.output_points = Output points...
+label.output_transformed_points = Output transformed points
+label.input_data = Input Data...
+label.nucleotide_matrix = Nucleotide matrix
+label.protein_matrix = Protein matrix
+label.show_bootstrap_values = Show Bootstrap Values
+label.show_distances = Show distances
+label.mark_unassociated_leaves = Mark Unassociated Leaves
+label.fit_to_window = Fit To Window
+label.newick_format = Newick Format
+label.select_newick_like_tree_file = Select a newick-like tree file
+label.colours = Colours
+label.view_mapping = View Mapping
+label.wireframe = Wireframe
+label.depthcue = Depthcue
+label.z_buffering = Z Buffering
+label.charge_cysteine = Charge & Cysteine
+label.all_chains_visible = All Chains Visible
+label.successfully_added_features_alignment = Successfully added features to alignment
+label.keyboard_editing_mode = Keyboard editing mode is {0}
+label.paste_features_annotations_Tcoffee_here = Paste your features / annotations / T-coffee score file here.
+label.removed_columns = Removed {0} columns.
+label.removed_empty_columns = Removed {0} empty columns.
+label.paste_newick_tree_file = Paste your Newick tree file here.
+label.order_by_params = Order by {0}
+label.html_content = <html>{0}</html>
+label.paste_pdb_file= Paste your PDB file here.
+label.paste_pdb_file_for_sequence = Paste PDB file for sequence {0}
+label.could_not_parse_newick_file = Could not parse Newick file\!\n {0}
+label.successfully_pasted_tcoffee_scores_to_alignment= Successfully pasted T-Coffee scores to alignment.
+label.failed_add_tcoffee_scores = Failed to add T-Coffee scores:
+label.successfully_pasted_annotation_to_alignment= Successfully pasted annotation to alignment.
+label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file = Couldn't parse pasted text as a valid annotation, feature, GFF, or T-Coffee score file
+label.successfully_pasted_alignment_file = Successfully pasted alignment file
+label.paste_your_alignment_file = Paste your alignment file here
+label.paste_your = Paste your
+label.finished_searching = Finished searching
+label.search_results= Search results {0} : {1}
+label.found_match_for = Found match for {0}
+label.font = Font:
+label.size = Size:
+label.style = Style:
+label.enter_redundancy_threshold = Enter the redundancy threshold
+label.calculating = Calculating....
+label.modify_conservation_visibility = Modify conservation visibility
+label.colour_residues_above_occurence = Colour residues above % occurence
+label.set_this_label_text = set this label text
+label.sequences_from = Sequences from {0}
+label.successfully_loaded_file = Successfully loaded file {0}
+label.successfully_saved_to_file_in_format = Successfully saved to file: {0} in {1} format.
+label.copied_sequences_to_clipboard = Copied {0} sequences to clipboard.
+label.check_file_matches_sequence_ids_alignment = Check that the file matches sequence IDs in the alignment.
+label.problem_reading_tcoffee_score_file = Problem reading T-COFFEE score file
+label.source_to_target = {0} ... {1}
+label.per_sequence_only= Per-sequence only
+label.to_file = to File
+label.to_textbox = to Textbox
+label.jalview = Jalview
+label.csv_spreadsheet = CSV (Spreadsheet)
+label.status = Status
+label.channels = Channels
+label.channel_title_item_count = {0} ({1})
+label.blog_item_published_on_date = {0} {1}
+label.select_das_service_from_table = Select a DAS service from the table to read a full description here.</font></html>
+label.session_update = Session Update
+label.new_vamsas_session = New Vamsas Session
+label.load_vamsas_session = Load Vamsas Session
+label.save_vamsas_session = Save Vamsas Session
+label.select_vamsas_session_opened_as_new_vamsas_session= Select a vamsas session to be opened as a new vamsas session.
+label.open_saved_vamsas_session = Open a saved VAMSAS session
+label.groovy_console = Groovy Console...
+label.lineart = Lineart
+label.dont_ask_me_again = Don't ask me again
+label.select_eps_character_rendering_style = Select EPS character rendering style
+label.invert_selection = Invert Selection
+label.optimise_order = Optimise Order
+label.seq_sort_by_score = Seq sort by Score
+label.load_colours = Load Colours
+label.save_colours = Save Colours
+label.fetch_das_features = Fetch DAS Features
+label.selected_database_to_fetch_from = Selected {0} database {1} to fetch from {2}
+label.database_param = Database: {0}
+label.example = Example
+label.example_param = Example: {0}
+label.select_file_format_before_saving = You must select a file format before saving!
+label.file_format_not_specified = File format not specified
+label.alignment_contains_hidden_columns = The Alignment contains hidden columns.\nDo you want to save only the visible alignment?
+label.couldnt_save_file = Couldn't save file: {0}
+label.error_saving_file = Error Saving File
+label.remove_from_default_list = Remove from default list?
+label.remove_user_defined_colour = Remove user defined colour
+label.you_must_select_least_two_sequences = You must select at least 2 sequences.
+label.invalid_selection = Invalid Selection
+label.principal_component_analysis_must_take_least_four_input_sequences = Principal component analysis must take\nat least 4 input sequences.
+label.sequence_selection_insufficient = Sequence selection insufficient
+label.you_need_more_two_sequences_selected_build_tree = You need to have more than two sequences selected to build a tree!
+label.not_enough_sequences = Not enough sequences
+label.selected_region_to_tree_may_only_contain_residues_or_gaps = The selected region to create a tree may\nonly contain residues or gaps.\nTry using the Pad function in the edit menu,\nor one of the multiple sequence alignment web services.
+label.sequences_selection_not_aligned = Sequences in selection are not aligned
+label.sequences_must_be_aligned_before_creating_tree = The sequences must be aligned before creating a tree.\nTry using the Pad function in the edit menu,\n or one of the multiple sequence alignment web services.
+label.sequences_not_aligned = Sequences not aligned
+label.problem_reading_tree_file = Problem reading tree file
+label.possible_problem_with_tree_file = Possible problem with tree file
+label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Please select at least three bases in at least one sequence in order to perform a cDNA translation.
+label.translation_failed = Translation Failed
+label.error_when_translating_sequences_submit_bug_report = Unfortunately, something went wrong when translating your sequences.\nPlease take a look in the Jalview java console\nand submit a bug report including the stacktrace.
+label.implementation_error = Implementation error:
+label.automatically_associate_pdb_files_with_sequences_same_name = Do you want to automatically associate the {0} PDB files with sequences in the alignment that have the same name?
+label.automatically_associate_pdb_files_by_name = Automatically Associate PDB files by name
+label.ignore_unmatched_dropped_files_info = <html>Do you want to <em>ignore</em> the {0} files whose names did not match any sequence IDs ?</html>
+label.ignore_unmatched_dropped_files = Ignore unmatched dropped files?
+label.enter_view_name = Enter View Name
+label.enter_label = Enter label
+label.enter_label_for_the_structure = Enter a label for the structure?
+label.pdb_entry_is_already_displayed = {0} is already displayed.\nDo you want to re-use this viewer ?
+label.map_sequences_to_visible_window = Map Sequences to Visible Window: {0}
+label.add_pdbentry_to_view = Do you want to add {0} to the view called\n{1}\n
+label.align_to_existing_structure_view = Align to existing structure view
+label.pdb_entries_couldnt_be_retrieved = The following pdb entries could not be retrieved from the PDB\:\n{0}\nPlease try downloading them manually.
+label.couldnt_load_file = Couldn't load file
+label.couldnt_find_pdb_id_in_file = Couldn't find a PDB id in the file supplied. Please enter an Id to identify this structure.
+label.no_pdb_id_in_file = No PDB Id in File
+label.couldnt_read_pasted_text = Couldn't read the pasted text {0}
+label.error_parsing_text = Error parsing text
+label.enter_local_das_source = Enter Nickname & URL of Local DAS Source
+label.you_can_only_edit_or_remove_local_das_sources = You can only edit or remove local DAS Sources!
+label.public_das_source = Public DAS source - not editable
+label.input_alignment_from_url = Input Alignment From URL
+label.input_alignment = Input Alignment
+label.couldnt_import_as_vamsas_session = Couldn't import {0} as a new vamsas session.
+label.vamsas_document_import_failed = Vamsas Document Import Failed
+label.couldnt_locate = Couldn't locate {0}
+label.url_not_found = URL not found
+label.no_link_selected = No link selected
+label.new_sequence_url_link = New sequence URL link
+label.cannot_edit_annotations_in_wrapped_view = Cannot edit annotations in wrapped view
+label.wrapped_view_no_edit = Wrapped view - no edit
+label.error_retrieving_data = Error Retrieving Data
+label.user_colour_scheme_must_have_name = User colour scheme must have a name
+label.no_name_colour_scheme = No name for colour scheme
+label.invalid_url = Invalid URL !
+label.error_loading_file = Error loading file
+label.problems_opening_file = Encountered problems opening {0}!!
+label.file_open_error = File open error
+label.no_das_sources_selected_warn = No das sources were selected.\nPlease select some sources and\ntry again.
+label.no_das_sources_selected_title = No DAS Sources Selected
+label.colour_scheme_exists_overwrite = Colour scheme {0} exists.\nContinue saving colour scheme as {1}?"
+label.duplicate_scheme_name = Duplicate scheme name
+label.jalview_new_questionnaire = There is a new Questionnaire available. Would you like to complete it now ?\n
+label.jalview_user_survey = Jalview User Survey
+label.alignment_properties = Alignment Properties: {0}
+label.alignment_props = Alignment Properties
+label.input_cut_paste = Cut & Paste Input
+label.input_cut_paste_params = Cut & Paste Input - {0}
+label.alignment_output_command = Alignment output - {0}
+label.annotations = Annotations
+label.features = Features
+label.overview_params = Overview {0}
+label.paste_newick_file = Paste Newick file
+label.load_tree_from_file = From File -
+label.colour_by_annotation = Colour by Annotation
+label.selection_output_command = Selection output - {0}
+label.annotation_for_displayid = <p><h2>Annotation for {0} </h2></p><p>
+label.pdb_sequence_mapping = PDB - Sequence Mapping
+label.pca_details = PCA details
+label.redundancy_threshold_selection = Redundancy threshold selection
+label.user_defined_colours = User defined colours
+label.jalviewLite_release = JalviewLite - Release {0}
+label.jaview_build_date = Build date: {0}
+label.jalview_authors_1 = Authors: : Jim Procter, Andrew Waterhouse, Lauren Lui, Jan Engelhardt, Natasha Sherstnev,
+label.jalview_authors_2 = Daniel Barton, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.
+label.jalview_dev_managers = Development managed by The Barton Group, University of Dundee, Scotland, UK.
+label.jalview_distribution_lists = For help, see the FAQ at www.jalview.org and/or join the jalview-discuss@jalview.org mailing list
+label.jalview_please_cite = If you use Jalview, please cite:
+label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)
+label.jalview_cite_1_title = Jalview Version 2 - a multiple sequence alignment editor and analysis workbench
+label.jalview_cite_1_ref = Bioinformatics doi: 10.1093/bioinformatics/btp033
+label.right_click = Right click
+label.to_add_annotation = to add annotation
+label.alignment_has_no_annotations = Alignment has no annotations
+label.retrieving_pdb_data = Retrieving PDB data...
+label.label = Label
+label.no_features_added_to_this_alignment = No Features added to this alignment!!
+label.features_can_be_added_from_searches_1 = (Features can be added from searches or
+label.features_can_be_added_from_searches_2 = from Jalview / GFF features files)
+label.calculating_pca= Calculating PCA
+label.reveal_columns = Reveal Columns
+label.jalview_cannot_open_file = Jalview can't open file
+label.jalview_applet = Jalview applet
+label.loading_data = Loading data
+label.memory_stats = Total Free Memory: {0} MB; Max Memory: {1} MB; {2} %
+label.calculating_tree = Calculating tree
+label.state_queueing = queuing
+label.state_running = running
+label.state_complete = complete
+label.state_completed = finished
+label.state_job_cancelled = job cancelled!!
+label.state_job_error = job error!
+label.server_error_try_later = Server Error! (try later)
+label.error_loading_pdb_data = Error loading PDB data!!
+label.fetching_pdb_data = Fetching PDB data...
+label.structure_type = Structure type
+label.settings_for_type = Settings for {0}
+label.view_full_application = View in Full Application
+label.load_associated_tree = Load Associated Tree ...
+label.load_features_annotations = Load Features/Annotations ...
+label.export_features = Export Features
+label.export_annotations = Export Annotations
+label.jalview_copy = Copy (Jalview Only)
+label.jalview_cut = Cut (Jalview Only)
+label.to_upper_case = To Upper Case
+label.to_lower_case = To Lower Case
+label.toggle_case = Toggle Case
+label.edit_name_description = Edit Name/Description ...
+label.create_sequence_feature = Create Sequence Feature ...
+label.edit_sequence = Edit Sequence
+label.edit_sequences = Edit Sequences
+label.sequence_details = Sequence Details
+label.jmol_help = Jmol Help
+label.all = All
+label.sort_by = Sort by
+label.sort_by_score = Sort by Score
+label.sort_by_density = Sort by Density
+label.sequence_sort_by_density = Sequence sort by Density
+label.reveal = Reveal
+label.hide_columns = Hide Columns
+label.load_jalview_annotations = Load Jalview Annotations or Features File
+label.load_tree_file = Load a tree file
+label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences = Retrieve and parse sequence database records for the alignment or the currently selected sequences
+label.standard_databases = Standard Databases
+label.fetch_embl_uniprot = Fetch from EMBL/EMBLCDS or Uniprot/PDB and any selected DAS sources
+label.reset_min_max_colours_to_defaults = Reset min and max colours to defaults from user preferences.
+label.align_structures_using_linked_alignment_views = Align structures using {0} linked alignment views
+label.connect_to_session = Connect to session {0}
+label.threshold_feature_display_by_score = Threshold the feature display by score.
+label.threshold_feature_no_thereshold = No Threshold
+label.threshold_feature_above_thereshold = Above Threshold
+label.threshold_feature_below_thereshold = Below Threshold
+label.adjust_thereshold = Adjust threshold
+label.toggle_absolute_relative_display_threshold = Toggle between absolute and relative display threshold.
+label.display_features_same_type_different_label_using_different_colour = Display features of the same type with a different label using a different colour. (e.g. domain features)
+label.select_colour_minimum_value = Select Colour for Minimum Value
+label.select_colour_maximum_value = Select Colour for Maximum Value
+label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment = Open a new Jmol view with all structures associated with the current selection and superimpose them using the alignment.
+label.open_url_param = Open URL {0}
+label.open_url_seqs_param = Open URL ({0}..) ({1} seqs)
+label.load_pdb_file_associate_with_sequence = Load a PDB file and associate it with sequence {0}
+label.reveal_hidden_columns = Reveal Hidden Columns with Right Mouse Button
+label.dark_colour = Dark Colour
+label.light_colour = Light Colour
+label.highlightnode = Left click to select leaves.<br>Double-click to invert leaves.<br>Right click to change colour.
+label.load_colour_scheme = Load colour scheme
+label.toggle_enabled_views = When enabled, allows many views to be selected.
+label.edit_notes_parameter_set = Click to edit the notes for this parameter set.
+label.open_local_file = Open local file
+label.enable_automatically_sort_alignment_when_open_new_tree = Enable this to automatically sort<br>the alignment when you open<br> a new tree.
+label.listen_for_selections = Listen for selections
+label.selections_mirror_selections_made_same_sequences_other_views = When selected, selections in this view will mirror<br>selections made on the same sequences in other views.
+label.toggle_sequence_visibility = Shift+H toggles sequence visiblity
+label.toggle_columns_visibility = Ctrl+H toggles column visiblity.
+label.toggles_visibility_hidden_selected_regions = H toggles visibility of hidden or selected regions
+label.rename_tab_eXpand_reGroup= Right-click to rename tab <br> Press X to eXpand tabs, G to reGroup.
+label.right_align_sequence_id = Right Align Sequence Id
+label.sequence_id_tooltip = Sequence ID Tooltip
+label.no_services = <No Services>
+label.select_copy_raw_html = Select this if you want to copy raw html
+label.share_data_vamsas_applications = Share data with other vamsas applications
+label.connect_to = Connect to
+label.join_existing_vamsas_session = Join an existing vamsas session
+label.from_url = from URL
+label.any_trees_calculated_or_loaded_alignment_automatically_sort = When selected, any trees calculated or loaded onto the alignment will automatically sort the alignment
+label.sort_with_new_tree = Sort With New Tree
+label.from_textbox = from Textbox
+label.window = Window
+label.preferences = Preferences
+label.tools = Tools
+label.fetch_sequences = Fetch Sequence(s)
+label.stop_vamsas_session = Stop Vamsas Session
+label.collect_garbage = Collect Garbage
+label.show_memory_usage = Show Memory Usage
+label.show_java_console = Show Java Console
+label.show_jalview_news = Show Jalview News
+label.take_snapshot = Take snapshot
+label.monospaced_fonts_faster_to_render = Monospaced fonts are faster to render
+label.anti_alias_fonts = Anti-alias Fonts (Slower to render)
+label.monospaced_font= Monospaced
+label.quality = Quality
+label.maximize_window = Maximize Window
+label.conservation = Conservation
+label.consensus = Consensus
+label.histogram = Histogram
+label.logo = Logo
+label.non_positional_features = Non-positional Features
+label.database_references = Database References
+label.share_selection_across_views = Share selection across views
+label.scroll_highlighted_regions = Scroll to highlighted regions
+label.gap_symbol = Gap Symbol
+label.alignment_colour = Alignment Colour
+label.address = Address
+label.port = Port
+label.default_browser_unix = Default Browser (Unix)
+label.send_usage_statistics = Send usage statistics
+label.check_for_questionnaires = Check for questionnaires
+label.check_for_latest_version = Check for latest version
+label.url_linkfrom_sequence_id = URL link from Sequence ID
+label.use_proxy_server = Use a proxy server
+label.eps_rendering_style = EPS rendering style
+label.append_start_end = Append /start-end (/15-380)
+label.full_sequence_id = Full Sequence Id
+label.smooth_font = Smooth Font
+label.autocalculate_consensus = AutoCalculate Consensus
+label.pad_gaps = Pad Gaps
+label.pad_gaps_when_editing = Pad Gaps When Editing
+label.automatically_set_id_width = Automatically set ID width
+label.figure_id_column_width = Figure ID column width
+label.use_modeller_output = Use Modeller Output
+label.wrap_alignment = Wrap Alignment
+label.right_align_ids = Right Align Ids
+label.sequence_name_italics = Sequence Name Italics
+label.open_overview = Open Overview
+label.default_colour_scheme_for_alignment = Default Colour Scheme for alignment
+label.annotation_shading_default = Annotation Shading Default
+label.default_minimum_colour_annotation_shading = Default Minimum Colour for annotation shading
+label.default_maximum_colour_annotation_shading = Default Maximum Colour for annotation shading
+label.visual = Visual
+label.connections = Connections
+label.output = Output
+label.editing = Editing
+label.das_settings = DAS Settings
+label.web_services = Web Services
+label.right_click_to_edit_currently_selected_parameter = Right click to edit currently selected parameter.
+label.let_jmol_manage_structure_colours = Let Jmol manage structure colours
+label.marks_leaves_tree_not_associated_with_sequence = Marks leaves of tree not associated with a sequence
+label.index_web_services_menu_by_host_site = Index web services in menu by the host site
+label.option_want_informed_web_service_URL_cannot_be_accessed_jalview_when_starts_up = Check this option if you want to be informed<br>when a web service URL cannot be accessed by Jalview<br>when it starts up
+label.new_service_url = New Service URL
+label.edit_service_url = Edit Service URL
+label.delete_service_url = Delete Service URL
+label.details = Details
+label.options = Options
+label.parameters = Parameters
+label.available_das_sources = Available DAS Sources
+label.full_details = Full Details
+label.authority = Authority
+label.type = Type
+label.proxy_server = Proxy Server
+label.file_output = File Output
+label.select_input_type = Select input type
+label.set_options_for_type = Set options for type
+label.data_input_parameters = Data input parameters
+label.data_returned_by_service = Data returned by service
+label.rsbs_encoded_service = RSBS Encoded Service
+label.parsing_errors = Parsing errors
+label.simple_bioinformatics_rest_services = Simple Bioinformatics Rest Services
+label.web_service_discovery_urls = Web Service Discovery URLS
+label.input_parameter_name = Input Parameter name
+label.short_descriptive_name_for_service = Short descriptive name for service
+label.function_service_performs = What kind of function the service performs (e.g. alignment, analysis, search, etc).
+label.brief_description_service = Brief description of service
+label.url_post_data_service = URL to post data to service. Include any special parameters needed here
+label.optional_suffix = Optional suffix added to URL when retrieving results from service
+label.preferred_gap_character = Which gap character does this service prefer?
+label.gap_character = Gap character
+label.move_return_type_up_order= Move return type up order
+label.move_return_type_down_order= Move return type down order
+label.update_user_parameter_set = Update this existing user parameter set
+label.delete_user_parameter_set = Delete the currently selected user parameter set
+label.create_user_parameter_set = Create a new parameter set with the current settings.
+label.revert_changes_user_parameter_set = Undo all changes to the current parameter set
+label.start_job_current_settings = Start Job with current settings
+label.cancel_job_close_dialog = Close this dialog and cancel job
+label.input_output = Input/Output
+label.cut_paste = Cut'n'Paste
+label.adjusting_parameters_for_calculation = Adjusting parameters for existing Calculation
+label.2d_rna_structure_line = 2D RNA {0}
+label.2d_rna_sequence_name = 2D RNA - {0}
+label.edit_name_and_description_current_group = Edit name and description of current group.
+label.view_structure_for = View structure for {0}
+label.view_all_structures = View all {0} structures.
+label.view_all_representative_structures = View all {0} representative structures.
+label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment = Opens a new Jmol view with all representative structures\nassociated with the current selection\nsuperimposed with the current alignment.
+label.associate_structure_with_sequence = Associate Structure with Sequence
+label.from_file = from file
+label.enter_pdb_id = Enter PDB Id
+label.discover_pdb_ids = Discover PDB ids
+label.text_colour = Text Colour
+label.structure = Structure
+label.view_structure = View Structure
+label.clustalx_colours = Clustalx colours
+label.above_identity_percentage = Above % Identity
+label.create_sequence_details_report_annotation_for = Annotation for {0}
+label.sequece_details_for = Sequece Details for {0}
+label.sequence_name = Sequence Name
+label.sequence_description = Sequence Description
+label.edit_sequence_name_description = Edit Sequence Name/Description
+label.spaces_converted_to_backslashes = Spaces have been converted to _
+label.no_spaces_allowed_sequence_name = No spaces allowed in Sequence Name
+label.select_outline_colour = Select Outline Colour
+label.web_browser_not_found_unix = Unixers\: Couldn't find default web browser.\nAdd the full path to your browser in Preferences."
+label.web_browser_not_found = Web browser not found
+label.select_pdb_file_for = Select a PDB file for {0}
+label.html = HTML
+label.wrap = Wrap
+label.show_database_refs = Show Database Refs
+label.show_non_positional_features = Show Non-Positional Features
+label.save_png_image = Save As PNG Image
+label.load_tree_for_sequence_set = Load a tree for this sequence set
+label.export_image = Export Image
+label.vamsas_store = VAMSAS store
+label.translate_cDNA = Translate cDNA
+label.extract_scores = Extract Scores
+label.get_cross_refs = Get Cross References
+label.sort_alignment_new_tree = Sort Alignment With New Tree
+label.add_sequences = Add Sequences
+label.new_window = New Window
+label.refresh_available_sources = Refresh Available Sources
+label.use_registry = Use Registry
+label.add_local_source = Add Local Source
+label.set_as_default = Set as Default
+label.show_labels = Show labels
+label.background_colour = Background Colour
+label.associate_nodes_with = Associate Nodes With
+label.jalview_pca_calculation = Jalview PCA Calculation
+label.link_name = Link Name
+label.pdb_file = PDB file
+label.colour_with_jmol = Colour with Jmol
+label.align_structures = Align structures
+label.jmol = Jmol
+label.sort_alignment_by_tree = Sort Alignment By Tree
+label.mark_unlinked_leaves = Mark Unlinked Leaves
+label.associate_leaves_with = Associate Leaves With
+label.save_colour_scheme_with_unique_name_added_to_colour_menu = Save your colour scheme with a unique name and it will be added to the Colour menu
+label.case_sensitive = Case Sensitive
+label.lower_case_colour = Lower Case Colour
+label.index_by_host = Index by host
+label.index_by_type = Index by type
+label.enable_jabaws_services = Enable JABAWS Services
+label.display_warnings = Display warnings
+label.move_url_up = Move URL up
+label.move_url_down = Move URL down
+label.add_sbrs_definition = Add a SBRS definition
+label.edit_sbrs_definition = Edit SBRS definition
+label.delete_sbrs_definition = Delete SBRS definition
+label.your_sequences_have_been_verified = Your sequences have been verified against known sequence databases. Some of the ids have been\n altered, most likely the start/end residue will have been updated.\n Save your alignment to maintain the updated id.\n\n
+label.sequence_names_updated = Sequence names updated
+label.dbref_search_completed = DBRef search completed
+label.show_all_chains = Show all chains
+label.fetch_all_param = Fetch all {0}
+label.paste_new_window = Paste To New Window
+label.settings_for_param = Settings for {0}
+label.view_params = View {0}
+label.select_all_views = Select all views
+label.align_sequences_to_existing_alignment = Align sequences to an existing alignment
+label.realign_with_params = Realign with {0}
+label.calcname_with_default_settings = {0} with Defaults
+label.action_with_default_settings = {0} with default settings
+label.edit_settings_and_run = Edit settings and run...
+label.view_and_change_parameters_before_alignment = View and change the parameters before alignment
+label.run_with_preset_params = Run {0} with preset
+label.view_and_change_parameters_before_running_calculation = View and change parameters before running calculation
+label.view_documentation = View documentation
+label.select_return_type = Select return type
+label.translation_of_params = Translation of {0}
+label.features_for_params = Features for - {0}
+label.annotations_for_params = Annotations for - {0}
+label.generating_features_for_params = Generating features for - {0}
+label.generating_annotations_for_params = Generating annotations for - {0}
+label.varna_params = VARNA - {0}
+label.sequence_feature_settings = Sequence Feature Settings
+label.pairwise_aligned_sequences = Pairwise Aligned Sequences
+label.original_data_for_params = Original Data for {0}
+label.points_for_params = Points for {0}
+label.transformed_points_for_params = Transformed points for {0}
+label.graduated_color_for_params = Graduated Feature Colour for {0}
+label.select_backgroud_colour = Select Background Colour
+label.invalid_font = Invalid Font
+label.separate_multiple_accession_ids = Separate multiple accession ids with semi colon ";"
+label.replace_commas_semicolons = Replace commas with semi-colons
+label.parsing_failed_syntax_errors_shown_below_param = Parsing failed. Syntax errors shown below {0}
+label.parsing_failed_unrecoverable_exception_thrown_param = \nParsing failed. An unrecoverable exception was thrown\:\n {0}
+label.example_query_param = Example query: {0}
+label.enter_value_increase_conservation_visibility = Enter value to increase conservation visibility
+label.enter_percentage_identity_above_which_colour_residues = Enter % identity above which to colour residues
+label.wswublast_client_credits = To display sequence features an exact Uniprot id with 100% sequence identity match must be entered.\nIn order to display these features, try changing the names of your sequences to the ids suggested below.\n\nRunning WSWUBlast at EBI.\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R.\nSOAP-based services provided by the European Bioinformatics Institute.\nNucleic Acids Res. 33(1)\:W25-W28 (2005));
label.blasting_for_unidentified_sequence = BLASTing for unidentified sequences
-label.select_columns_containing = Select columns containing\r
-label.select_columns_not_containing = Select columns that do not contain\r
-option.trim_retrieved_seqs = Trim retrieved sequences\r
-label.trim_retrieved_sequences = When the reference sequence is longer than the sequence that you are working with, only keep the relevant subsequences.\r
-label.use_sequence_id_1 = Use $SEQUENCE_ID$ or $SEQUENCE_ID=/<regex>/=$\r
-label.use_sequence_id_2 = \nto embed sequence id in URL\r
-label.ws_parameters_for = Parameters for {0}\r
-label.switch_server = Switch server\r
-label.open_jabaws_web_page = Opens the JABAWS server's homepage in web browser\r
-label.choose_jabaws_server = Choose a server for running this service\r
-label.services_at = Services at {0}\r
-label.rest_client_submit = {0} using {1}\r
-label.fetch_retrieve_from =Retrieve from {0}</html>\r
-label.fetch_retrieve_from_all_sources = Retrieve from all {0} sources in {1}<br>First is :{2}<html> \r
-label.feature_settings_click_drag = <html>Click/drag feature types up or down to change render order.<br/>Double click to select columns containing feature in alignment/current selection<br/>Pressing Alt will select columns outside features rather than inside<br/>Pressing Shift to modify current selection (rather than clear current selection)<br/>Press CTRL or Command/Meta to toggle columns in/outside features<br/></html>\r
-label.opt_and_params_further_details = see further details by right-clicking\r
-label.opt_and_params_show_brief_desc_image_link = <html>Click to show brief description<br><img src="{0}"/> Right click for further information.</html> \r
-label.opt_and_params_show_brief_desc = <html>Click to show brief description<br></html>\r
-label.adjusts_width_generated_eps_png = <html>Adjusts the width of the generated EPS or PNG file to ensure even the longest sequence ID or annotation label is displayed</html>\r
-label.manually_specify_width_left_column = <html>Manually specify the width of the left hand column where sequence IDs and annotation labels will be rendered in exported alignment figures. This setting will be ignored if 'Automatically set ID width' is set</html>\r
-label.job_created_when_checked = <html>When checked, a job is created for every sequence in the current selection.</html>\r
-label.when_checked_job_visible_region_and_results = <html>When checked, a single job is created for the visible region and results mapped back onto their location in the alignment. Otherwise, a job would be created for every contiguous region visible in the alignment or current selection (e.g. a multiple alignment).</html>\r
-label.flat_file_representation = <html>Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism</html>\r
-label.result_of_parsing_rsbs = <html>Results of parsing the RSBS representation</html>\r
-label.user_preset = User Preset\r
-label.service_preset = Service Preset\r
-label.run_with_preset = Run {0} with preset\r
-label.view_service_doc_url = <html>View <a href="{0}">{1}</a></html>\r
-label.submit_sequence = <html>Submit {0} {1} {2} {3} to<br/>{4}</html>\r
-action.by_title_param = by {0}\r
-label.alignment = Alignment\r
-label.secondary_structure_prediction = Secondary Structure Prediction\r
-label.sequence_database_search = Sequence Database Search\r
-label.analysis = Analysis\r
-label.protein_disorder = Protein Disorder \r
-label.source_from_db_source = Sources from {0}\r
-label.from_msname = from {0}\r
-label.superpose_with = Superpose with ...\r
-action.do = Do\r
-label.scale_label_to_column = Scale Label to Column\r
-label.add_new_row = Add New Row\r
-label.edit_label_description = Edit Label/Description\r
-label.hide_row = Hide This Row\r
-label.delete_row = Delete This Row\r
-label.show_all_hidden_rows = Show All Hidden Rows\r
-label.export_annotation = Export Annotation\r
-label.copy_consensus_sequence = Copy Consensus Sequence\r
-label.helix = Helix\r
-label.sheet = Sheet\r
-label.rna_helix = RNA Helix\r
-label.remove_annotation = Remove Annotation\r
-label.colour_by = Colour by...\r
-label.muscle_multiple_protein_sequence_alignment = Muscle Multiple Protein Sequence Alignment\r
-label.mafft_multiple_sequence_alignment = MAFFT Multiple Sequence Alignment\r
-label.clustalw_multiple_sequence_alignment = ClustalW Multiple Sequence Alignment\r
-label.jnet_secondary_structure_prediction = JNet Secondary Structure Prediction\r
-label.multiharmony = Multi-Harmony\r
-label.unable_start_web_service_analysis = Unable to start web service analysis\r
-label.job_couldnt_be_started_check_input = The Job couldn't be started. Please check your input, and the Jalview console for any warning messages.\r
-label.prompt_each_time = Prompt each time\r
-label.use_source = Use Source\r
-label.couldnt_save_project = Couldn't save project\r
-label.error_whilst_saving_current_state_to = Error whilst saving current state to {0}\r
-label.error_whilst_loading_project_from = Error whilst loading project from {0}\r
-label.couldnt_load_project = Couldn't load project\r
-label.pca_sequences_not_aligned = The sequences must be aligned before calculating PCA.\nTry using the Pad function in the edit menu,\nor one of the multiple sequence alignment web services.\r
-label.invalid_name_preset_exists = Invalid name - preset already exists.\r
-label.invalid_name = Invalid name\r
-label.set_proxy_settings = Please set up your proxy settings in the 'Connections' tab of the Preferences window\r
-label.proxy_authorization_failed = Proxy Authorization Failed\r
-label.internal_jalview_error = Internal Jalview Error\r
-label.secondary_structure_prediction_service_couldnt_be_located = The Secondary Structure Prediction Service named {0} at {1} couldn't be located.\r
-label.service_called_is_not_msa_service = The Service called \n{0}\nis not a \nMultiple Sequence Alignment Service\!\r
-label.msa_service_is_unknown = The Multiple Sequence Alignment Service named {0} is unknown\r
-label.service_called_is_not_seq_search_service = The Service called \n{0}\nis not a \nSequence Search Service\!\r
-label.seq_search_service_is_unknown = The Sequence Search Service named {0} is unknown\r
-label.feature_type = Feature Type\r
-label.display = Display\r
-label.service_url = Service URL\r
-label.copied_sequences = Copied sequences\r
-label.cut_sequences = Cut Sequences\r
-label.conservation_colour_increment = Conservation Colour Increment ({0})\r
-label.percentage_identity_thereshold = Percentage Identity Thereshold ({0})\r
-label.error_unsupported_owwner_user_colour_scheme = Unsupported owner for User Colour scheme dialog\r
-label.save_alignment_to_file = Save Alignment to file\r
-label.save_features_to_file = Save Features to File\r
-label.save_annotation_to_file = Save Annotation to File\r
-label.no_features_on_alignment = No features found on alignment\r
-label.save_pdb_file = Save PDB File\r
-label.save_text_to_file = Save Text to File\r
-label.save_state = Save State\r
-label.restore_state = Restore State\r
-label.saving_jalview_project = Saving jalview project {0}\r
-label.loading_jalview_project = Loading jalview project {0}\r
-label.save_vamsas_document_archive = Save Vamsas Document Archive\r
-label.saving_vamsas_doc = Saving VAMSAS Document to {0}\r
-label.load_feature_colours = Load Feature Colours\r
-label.save_feature_colours = Save Feature Colour Scheme\r
-label.dataset_for = {0} Dataset for {1}\r
-label.select_startup_file = Select startup file\r
-label.select_default_browser = Select default web browser\r
-label.save_tree_as_newick = Save tree as newick file\r
-label.create_eps_from_tree = Create EPS file from tree\r
-label.create_png_from_tree = Create PNG image from tree\r
-label.save_colour_scheme = Save colour scheme\r
-label.edit_params_for = Edit parameters for {0}\r
-label.choose_filename_for_param_file = Choose a filename for this parameter file\r
-label.save_as_html = Save as HTML\r
-label.recently_opened = Recently Opened\r
-label.blasting_for_unidentified_sequence_jobs_running = BLASTing for unidentified sequences - {0} jobs running.\r
-label.tree_from = Tree from {0}\r
-label.webservice_job_title = {0} using {1}\r
-label.select_visible_region_of = selected {0} region of {1}\r
-label.visible = Visible\r
-label.select_unselect_visible_regions_from = select and unselected {0} regions from {1}\r
-label.visible_region_of = visible region of\r
-label.webservice_job_title_on = {0} using {1} on {2}\r
-label.updating_vamsas_session = Updating vamsas session\r
-label.loading_file = Loading File: {0}\r
-label.edit_params = Edit {0}\r
-error.not_implemented = Not implemented\r
-error.no_such_method_as_clone1_for = No such method as clone1 for {0}\r
-error.null_from_clone1 = Null from clone1!\r
-error.implementation_error_sortbyfeature = Implementation Error - sortByFeature method must be one of FEATURE_SCORE, FEATURE_LABEL or FEATURE_DENSITY.\r
-error.not_yet_implemented = Not yet implemented\r
-error.unknown_type_dna_or_pep = Unknown Type {0} - dna or pep are the only allowed values.\r
-error.implementation_error_dont_know_thereshold_annotationcolourgradient = Implementation error: don't know about threshold setting for current AnnotationColourGradient.\r
-error.implementation_error_embeddedpopup_not_null = Implementation error - embeddedPopup must be non-null\r
-error.invalid_colour_for_mycheckbox = Invalid color for MyCheckBox\r
-error.implementation_error_unrecognised_render_object_for_features_type = Implementation Error: Unrecognised render object {0} for features of type {1}\r
-error.implementation_error_unsupported_feature_colour_object = Implementation error: Unsupported feature colour object.\r
-error.invalid_separator_parameter = Invalid separator parameter - must be non-zero length\r
-error.alignment_cigararray_not_implemented = Alignment(CigarArray) not yet implemented\r
-error.weak_sequencei_equivalence_not_yet_implemented = Weak sequenceI equivalence not yet implemented.\r
-error.implementation_error_can_only_make_alignmnet_from_cigararray = Implementation Error - can only make an alignment view from a CigarArray of sequences.\r
-error.empty_view_cannot_be_updated = empty view cannot be updated.\r
-error.mismatch_between_number_of_sequences_in_block = Mismatch between number of sequences in block {0} ({1}) and the original view ({2})\r
-error.padding_not_yet_implemented = Padding not yet implemented\r
-error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view = Mismatch between visible blocks to update and number of contigs in view (contigs=0,blocks={0})\r
-error.unknown_seq_cigar_operation = Unknown SeqCigar operation {0}\r
-error.implementation_bug_parse_cigar_string = Implementation bug in parseCigarString\r
-error.implementation_error_invalid_operation_string = Implementation error. Invalid operation string.\r
-error.invalid_range_string = Invalid range string (must be zero or positive number)\r
-error.implementation_error_delete_range_out_of_bounds = Implementation Error: deleteRange out of bounds: start must be non-negative and less than end.\r
-error.implementation_error = Implementation error\r
-error.implementation_error_unknown_operation = Implementation Error! Unknown operation {0}\r
-error.implementation_error_unexpected_null_from_get_sequence_and_deletions = Implementation Error - unexpected null from getSequenceAndDeletions\r
-error.implementation_error_set_seq_null = Implementation Error - _setSeq(null,...)\r
-error.implementation_error_s = Implementation Error: _s= {0}\r
-error.implementation_error_seqcigar_possible = SeqCigar: Possible implementation error: sequence is longer than dataset sequence\r
-error.implmentation_bug_seq_null = Implementation Bug. Null seq\r
-error.implementation_bug_cigar_operation_list_range_list = Implementation Bug. Cigar Operation list!= range list\r
-error.not_yet_implemented_cigar_object_from_cigar_string = NOT YET Implemented: Constructing a Cigar object from a cigar string and a gapped sequence.\r
-error.implementation_bug_cigar_operation = Implementation Bug. Cigar Operation {0} {1} not one of {2}, {3}, or {4}.\r
-error.implementation_error_for_new_cigar = Implementation error for new Cigar(SequenceI)\r
-error.implementation_error_cigar_seq_no_operations = Implementation error: {0}th sequence Cigar has no operations.\r
-error.implementation_error_jmol_getting_data = Implementation error - Jmol seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016\r
-error.implementation_error_no_pdbentry_from_index = Implementation error - no corresponding pdbentry (for index {0}) to add sequences mappings to\r
-error.jmol_version_not_compatible_with_jalview_version = Jmol version {0} is not compatible with this version of Jalview. Report this problem at issues.jalview.org\r
-error.not_implemented_remove = Remove: Not implemented\r
-error.not_implemented_clone = Clone: Not implemented\r
-error.implementation_error_chimera_getting_data = Implementation error - Chimera seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016\r
-error.call_setprogressbar_before_registering_handler = call setProgressBar before registering the progress bar's handler.\r
-label.cancelled_params = Cancelled {0}\r
-error.implementation_error_cannot_show_view_alignment_frame = Implementation error: cannot show a view from another alignment in an AlignFrame.\r
-error.implementation_error_dont_know_about_thereshold_setting = Implementation error: don't know about threshold setting for current AnnotationColourGradient.\r
-error.eps_generation_not_implemented = EPS Generation not yet implemented\r
-error.png_generation_not_implemented = PNG Generation not yet implemented\r
-error.try_join_vamsas_session_another = Trying to join a vamsas session when another is already connected\r
-error.invalid_vamsas_session_id = Invalid vamsas session id\r
-error.implementation_error_cannot_create_groovyshell = Implementation Error. Cannot create groovyShell without Groovy on the classpath!\r
-label.groovy_support_failed = Jalview Groovy Support Failed\r
-label.couldnt_create_groovy_shell = Couldn't create the groovy Shell. Check the error log for the details of what went wrong.\r
-error.unsupported_version_calcIdparam = Unsupported Version for calcIdparam {0}\r
-error.implementation_error_cant_reorder_tree = Implementation Error: Can't reorder this tree. Not DefaultMutableTreeNode.\r
-error.invalid_value_for_option = Invalid value {0} for option {1}\r
-error.implementation_error_cannot_import_vamsas_doc = Implementation Error - cannot import existing vamsas document into an existing session, Yet!\r
-label.vamsas_doc_couldnt_be_opened_as_new_session = VAMSAS Document could not be opened as a new session - please choose another\r
-error.implementation_error_vamsas_operation_not_init = Impementation error! Vamsas Operations when client not initialised and connected\r
-error.jalview_no_connected_vamsas_session = Jalview not connected to Vamsas session\r
-error.implementation_error_cannot_recover_vamsas_object_mappings = IMPLEMENTATION ERROR: Cannot recover vamsas object mappings - no backup was made\r
-error.setstatus_called_non_existent_job_pane = setStatus called for non-existent job pane {0}\r
-error.implementation_error_cannot_find_marshaller_for_param_set =Implementation error: Can't find a marshaller for the parameter set\r
-error.implementation_error_old_jalview_object_not_bound =IMPLEMENTATION ERROR: old jalview object is not bound ! ({0})\r
-error.implementation_error_vamsas_doc_class_should_bind_to_type = Implementation Error: Vamsas Document Class {0} should bind to a {1} (found a {2})\r
-error.implementation_error_jalview_class_should_bind_to_type = Implementation Error: Jalview Class {0} should bind to a {1} (found a {2})\r
-error.invalid_vamsas_rangetype_cannot_resolve_lists = Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!\r
-error.implementation_error_maplist_is_null = Implementation error. MapList is null for initMapType.\r
-error.implementation_error_cannot_have_null_alignment = Implementation error: Cannot have null alignment property key\r
-error.implementation_error_null_fileparse = Implementation error. Null FileParse in copy constructor\r
-error.implementation_error_cannot_map_alignment_sequences = IMPLEMENTATION ERROR: Cannot map an alignment of sequences from different datasets into a single alignment in the vamsas document.\r
-error.implementation_error_cannot_duplicate_colour_scheme = Serious implementation error: cannot duplicate colourscheme {0}\r
-error.implementation_error_structure_selection_manager_null = Implementation error. Structure selection manager's context is 'null'\r
-exception.ssm_context_is_null = SSM context is null\r
-error.idstring_seqstrings_only_one_per_sequence = idstrings and seqstrings contain one string each per sequence\r
-error.cannot_have_mixed_length_replacement_vectors = Cannot have mixed length replacement vectors. Replacement vector for {0} is {1} strings long, and have already seen a {2} length vector.\r
-error.cannot_have_zero_length_vector_replacement_strings = Cannot have zero length vector of replacement strings - either 1 value or n values.\r
-error.implementation_error_multiple_single_sequence_prediction_jobs_not_supported = Implementation Error! Multiple single sequence prediction jobs are not yet supported\r
-error.implementation_error_invalid_msa_index_for_job =Implementation Error! Invalid msaIndex for JPredJob on parent MSA input object!\r
-error.implementation_error_startjob_called = Implementation error - StartJob(JpredJob) called on {0}\r
-error.multiple_jnet_subjob_merge_not_implemented = Multiple JNet subjob merging not yet implemented\r
-label.job_never_ran = Job never ran - input returned to user.\r
-error.implementation_error_minlen_must_be_greater_zero = Implementation error: minlen must be zero or more\r
-error.implementation_error_msawbjob_called = Implementation error - StartJob(MsaWSJob) called on a WSJobInstance {0}\r
-error.implementation_error_cannot_attach_ws_menu_entry = IMPLEMENTATION ERROR: cannot attach WS Menu Entry without service handle reference!\r
-error.parameter_migration_not_implemented_yet = Parameter migration not implemented yet\r
-error.implementation_error_cannot_set_jaba_option = Implementation error: cannot set Jaba Option to a value outside its allowed value range!\r
-error.implementation_error_valuetype_doesnt_support_jabaws_type = IMPLEMENTATION ERROR: jalview.ws.params.ValueConstrainI.ValueType does not support the JABAWS type : {0}\r
-error.cannot_create_jabaws_param_set = Cannot create a JabaWSParamSet from non-JabaWS parameters\r
-error.cannot_set_arguments_to_jabaws_param_set = Cannot set arguments to a JabaWSParamSet that are not JabaWS arguments\r
-error.implementation_error_runner_config_not_available = Implementation Error: Runner Config not available for a JABAWS service of type {0} ({1})\r
-error.implementation_error_cannot_handle_jaba_param = Implementation Error: Cannot handle Jaba parameter object {0}\r
-error.implementation_error_attempt_to_delete_service_preset = Implementation error: Attempt to delete a service preset!\r
-error.implementation_error_cannot_locate_oldname_presetname = Implementation error: Can't locate either oldname ({0}) or presetName ({1}in the datastore!"\r
-error.implementation_error_jabaws_param_set_only_handled_by = Implementation error: JabaWsParamSets can only be handled by JabaParamStore\r
-error.cannot_set_source_file_for = Cannot set source file for {0}\r
-error.mismatch_service_instance_preset = Probable mismatch between service instance and preset!\r
-error.cannot_set_params_for_ws_preset = Cannot set Parameters for a Jaba Web service's preset\r
-error.implementation_error_can_only_instantiate_jaba_param_sets = Implementation error: Can only instantiate Jaba parameter sets\r
-error.no_aacon_service_found = No AACon service found\r
-error.implementation_error_couldnt_copy_value_constraint = Implementation error: could not copy ValueConstrain!\r
-error.couldnt_encode_as_utf8 = Couldn't encode {0} as UTF-8.\r
-error.tree_inputtype_not_yet_implemented = Tree InputType not yet implemented\r
-error.implementation_error_need_to_have_httpresponse = Implementation Error: need to have an HttpResponse to process\r
-error.dbrefsource_implementation_exception =DBRefSource Implementation Exception\r
-error.implementation_error_dbinstance_must_implement_interface = Implmentation Error - getDbInstances must be given a class that implements jalview.ws.seqfetcher.DbSourceProxy (was given{0})\r
-error.implementation_error_must_init_dbsources =Implementation error. Must initialise dbSources\r
-label.view_controller_toggled_marked = {0} {1} columns {2} containing features of type {3} across {4} sequence(s)\r
-label.toggled = Toggled\r
-label.marked = Marked\r
-label.not = not\r
-label.no_feature_of_type_found = No features of type {0} found.\r
-label.submission_params = Submission {0}\r
-label.empty_alignment_job = Empty Alignment Job\r
-label.add_new_sbrs_service = Add a new Simple Bioinformatics Rest Service\r
-label.edit_sbrs_entry = Edit Simple Bioinformatics Rest Service entry\r
-label.pca_recalculating = Recalculating PCA\r
-label.pca_calculating = Calculating PCA\r
-label.select_foreground_colour = Choose foreground colour\r
-label.select_colour_for_text = Select Colour for Text\r
-label.adjunst_foreground_text_colour_thereshold = Adjust Foreground Text Colour Threshold\r
-label.select_subtree_colour = Select Sub-Tree Colour\r
-label.create_new_sequence_features = Create New Sequence Feature(s)\r
-label.amend_delete_features = Amend/Delete Features for {0}\r
-exception.out_of_bounds_for_file = Out of bounds for file: i={0}, Final Buffer: i0={1} iend={2}\r
-exception.null_string_given_to_regex_search = Null String Given to Regex.search\r
-exception.null_string_like_given_to_regex_search = Null StringLike Given to Regex.search\r
-exception.null_string_given_to_regex_reverse_search = Null String Given to Regex.reverseSearch\r
-exception.null_string_like_given_to_regex_reverse_search = Null StringLike Given to Regex.reverseSearch\r
-exception.null_string_like_given_to_regex_search_from = Null String Given to Regex.searchFrom\r
-exception.null_string_like_given_to_regex_search_region = Null String Given to Regex.searchRegion\r
-exception.replace_null_regex_pointer = Replacer has null Regex pointer\r
-exception.bad_pattern_to_regex_perl_code = bad pattern to Regex.perlCode: {0}\r
-exception.no_stub_implementation_for_interface = There is no stub implementation for the interface: {0}\r
-exception.cannot_set_endpoint_address_unknown_port = Cannot set Endpoint Address for Unknown Port {0}\r
-exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis = Querying matching opening parenthesis for non-closing parenthesis character {0}\r
-exception.mismatched_unseen_closing_char = Mismatched (unseen) closing character {0}\r
-exception.mismatched_closing_char = Mismatched closing character {0}\r
-exception.mismatched_opening_char = Mismatched opening character {0} at {1}\r
-exception.invalid_datasource_couldnt_obtain_reader = Invalid datasource. Could not obtain Reader\r
-exception.index_value_not_in_range = {0}: Index value {1} not in range [0..{2}]\r
-exception.unterminated_cigar_string = Unterminated cigar string\r
-exception.unexpected_operation_cigar_string_pos = Unexpected operation {0} in cigar string (position {1} in {2}\r
-exception.couldnt_parse_responde_from_annotated3d_server = Couldn't parse response from Annotate3d server\r
-exception.application_test_npe = Application test: throwing an NullPointerException It should arrive at the console\r
-exception.overwriting_vamsas_id_binding = Overwriting vamsas id binding\r
-exception.overwriting_jalview_id_binding = Overwriting jalview id binding\r
-error.implementation_error_unknown_file_format_string = Implementation error: Unknown file format string\r
-exception.failed_to_resolve_gzip_stream = Failed to resolve GZIP stream\r
-exception.problem_opening_file_also_tried = Problem opening {0} (also tried {1}) : {2}\r
-exception.problem_opening_file = Problem opening {0} : {1}\r
-exception.failed_to_read_data_from_source = Failed to read data from source: {0}\r
-exception.no_init_source_stream = Unitialised Source Stream\r
-exception.invalid_source_stream = Invalid Source Stream: {0}\r
-error.implementation_error_reset_called_for_invalid_source = Implementation Error: Reset called for invalid source.\r
-exception.number_of_residues_in_query_sequence_differ_from_prediction = Number of residues in {0} supposed query sequence ({1}\n{2})\ndiffer from number of prediction sites in prediction ({3})\r
-label.mapped = mapped\r
-exception.jpredconcide_entry_has_unexpected_number_of_columns = JPredConcise: Entry ({0}) has an unexpected number of columns\r
-exception.couldnt_parse_concise_annotation_for_prediction = Couldn't parse concise annotation for prediction profile.\n{0}\r
-exception.newfile = NewickFile\: {0}\n\r
-label.no_tree_read_in = No Tree read in\r
-exception.rnaml_couldnt_access_datasource = Couldn't access datasource ({0})\r
-exception.ranml_couldnt_process_data = Couldn't process data as RNAML file ({0})\r
-exception.ranml_invalid_file = Invalid RNAML file ({0})\r
-exception.ranml_problem_parsing_data = Problem parsing data as RNAML ({0})\r
-exception.pfam_no_sequences_found = No sequences found (PFAM input)\r
-exception.stockholm_invalid_format = This file is not in valid STOCKHOLM format: First line does not contain '# STOCKHOLM'\r
-exception.couldnt_parse_sequence_line = Could not parse sequence line: {0}\r
-exception.error_parsing_line = Error parsing {0}\r
-exception.unknown_annotation_detected = Unknown annotation detected: {0} {1}\r
-exception.couldnt_store_sequence_mappings = Couldn't store sequence mappings for {0}\r
-exception.matrix_too_many_iteration = Too many iterations in {0} (max is {1})\r
-exception.browser_not_found = Exception in finding browser: {0}\r
-exception.browser_unable_to_locate = Unable to locate browser: {0}\r
-exception.invocation_target_exception_creating_aedesc = InvocationTargetException while creating AEDesc: {0}\r
-exception.illegal_access_building_apple_evt= IllegalAccessException while building AppleEvent: {0}\r
-exception.instantiation_creating_aedesc = InstantiationException while creating AEDesc: {0}\r
-exception.unable_to_launch_url = Unable to launch URL: {0}\r
-exception.unable_to_create_internet_config = Unable to create an Internet Config instance: {0}\r
-exception.invocation_target_calling_url = InvocationTargetException while calling openURL: {0}\r
-exception.illegal_access_calling_url = IllegalAccessException while calling openURL: {0}\r
-exception.interrupted_launching_browser = InterruptedException while launching browser: {0}\r
-exception.das_source_doesnt_support_sequence_command = Source {0} does not support the sequence command.\r
-exception.invalid_das_source = Invalid das source: {0}\r
-exception.ebiembl_retrieval_failed_on = EBI EMBL XML retrieval failed on {0}:{1}\r
-label.no_embl_record_found = # No EMBL record retrieved for {0}:{1}\r
-label.embl_successfully_parsed = # Successfully parsed the {0} queries into an Alignment\r
-exception.no_pdb_records_for_chain = No PDB Records for {0} chain {1}\r
-exception.unexpected_handling_rnaml_translation_for_pdb = Unexpected exception when handling RNAML translation of PDB data\r
-exception.couldnt_recover_sequence_properties_for_alignment = Couldn't recover sequence properties for alignment\r
-exception.unknown_format_for_file = Unknown format {0} for file \: \n{1}\r
-label.remove_gaps = Remove Gaps\r
-exception.couldnt_recover_sequence_props_for_jnet_query = Couldn't recover sequence properties for JNet Query sequence!\r
-exception.server_timeout_try_later = Server timed out - try again later\n\r
-exception.web_service_returned_null_try_later= Server at {0} returned null object, it probably cannot be contacted. Try again later.\r
-exception.cannot_contact_service_endpoint_at = Cannot contact service endpoint at {0}\r
-error.implementation_error_cannot_find_service_url_in_given_set = Implementation error: Cannot find service url in the given url set!\r
-error.implementation_error_cannot_find_service_url_in_given_set_param_store = Implementation error: Cannot find service url in the given url set for this service parameter store ({0}}\r
-exception.jobsubmission_invalid_params_set = Invalid parameter set. Check Jalview implementation\r
-exception.notvaliddata_group_contains_less_than_min_seqs = Group contains less than {0} sequences.\r
-exception.outofmemory_loading_pdb_file = Out of memory loading PDB File\r
-exception.eps_coudnt_write_output_file = Could not write to the output file: {0}\r
-exception.eps_method_not_supported = Method not currently supported by EpsGraphics2D version {0}\r
-exception.eps_unable_to_get_inverse_matrix = Unable to get inverse of matrix: {0}\r
-warn.job_cannot_be_cancelled_close_window = This job cannot be cancelled.\nJust close the window.\r
-warn.service_not_supported = Service not supported!\r
-warn.input_is_too_big = Input is too big!\r
-warn.invalid_job_param_set = Invalid job parameter set!\r
-info.job_couldnt_be_run_server_doesnt_support_program = Job could not be run because the server doesn't support this program.\n{0}\r
-info.job_couldnt_be_run_exceeded_hard_limit = Job could not be run because it exceeded a hard limit on the server.\n{0}\r
-info.job_couldnt_be_run_incorrect_param_setting = Job could not be run because some of the parameter settings are not supported by the server.\n{0}\nPlease check to make sure you have used the correct parameter set for this service\!\n\r
-info.no_jobs_ran = No jobs ran\r
-info.failed_to_submit_prediction = Failed to submit the prediction\:\n{0} {1}\r
-info.invalid_jnet_job_result_data ={0}\n{1}\nInvalid JNet job result data\!\n{2}\r
-info.failed_to_submit_sequences_for_alignment = Failed to submit sequences for alignment.\nIt is most likely that there is a problem with the server.\nJust close the window\n\r
-info.alignment_object_method_notes = \nAlignment Object Method Notes\n\r
-info.server_exception = \n{0} Server exception\!\n{1}\r
-status.processing_commandline_args = Processing commandline arguments...\r
-status.das_features_being_retrived = DAS features being retrieved...\r
-status.searching_for_sequences_from = Searching for sequences from {0}\r
-status.finished_searching_for_sequences_from = Finished searching for sequences from {0}\r
-label.eps_file = EPS file\r
-label.png_image = PNG image\r
-status.saving_file = Saving {0}\r
-status.export_complete = Export complete.\r
-status.fetching_pdb = Fetching PDB {0}\r
-status.refreshing_news = Refreshing news\r
-status.importing_vamsas_session_from = Importing VAMSAS session from {0}\r
-status.opening_params = Opening {0}\r
-status.waiting_sequence_database_fetchers_init = Waiting for Sequence Database Fetchers to initialise\r
-status.init_sequence_database_fetchers = Initialising Sequence Database Fetchers\r
-status.fetching_sequence_queries_from = Fetching {0} sequence queries from {1}\r
-status.finshed_querying = Finished querying\r
-status.parsing_results = Parsing results.\r
-status.processing = Processing...\r
-status.refreshing_web_service_menus = Refreshing Web Service Menus\r
-status.collecting_job_results = Collecting job results.\r
-status.fetching_das_sequence_features = Fetching DAS Sequence Features\r
-status.no_das_sources_active = No DAS Sources Active\r
-status.das_feature_fetching_cancelled = DAS Feature Fetching Cancelled\r
-status.das_feature_fetching_complete = DAS Feature Fetching Complete\r
-status.fetching_db_refs = Fetching db refs\r
-label.font_doesnt_have_letters_defined = Font doesn't have letters defined\nso cannot be used\nwith alignment data\r
-label.error_loading_file_params = Error loading file {0}\r
-label.error_loading_jalview_file = Error loading Jalview file\r
-warn.out_of_memory_when_action = Out of memory when {0}\!\!\nSee help files for increasing Java Virtual Machine memory.\r
-warn.out_of_memory_loading_file = Out of memory loading file {0}\!\!\nSee help files for increasing Java Virtual Machine memory.\r
-label.out_of_memory = Out of memory\r
-label.invalid_id_column_width = Invalid ID Column width\r
-warn.user_defined_width_requirements = The user defined width for the\nannotation and sequence ID columns\nin exported figures must be\nat least 12 pixels wide.\r
-label.couldnt_create_sequence_fetcher = Couldn't create SequenceFetcher\r
-warn.couldnt_create_sequence_fetcher_client = Could not create the sequence fetcher client. Check error logs for details.\r
-warn.server_didnt_pass_validation = Service did not pass validation.\nCheck the Jalview Console for more details.\r
-warn.url_must_contain = Sequence URL must contain $SEQUENCE_ID$ or a regex $SEQUENCE_ID=/<regex>/=$\r
-info.validate_jabaws_server = Validate JabaWS Server ?\n(Look in console output for results)\r
-label.test_server = Test Server?\r
-info.you_want_jalview_to_find_uniprot_accessions = Do you want Jalview to find\nUniprot Accession ids for given sequence names?\r
-label.find_uniprot_accession_ids = Find Uniprot Accession Ids\r
-label.new_sequence_fetcher = New Sequence Fetcher\r
-label.additional_sequence_fetcher = Additional Sequence Fetcher\r
-label.select_database_retrieval_source = Select Database Retrieval Source\r
-label.overwrite_existing_file = Overwrite existing file?\r
-label.file_already_exists = File exists\r
-label.edit_jabaws_url = Edit JABAWS URL\r
-label.add_jabaws_url = Add new JABAWS URL\r
-label.news_from_jalview = News from http://www.jalview.org\r
-label.cut_paste_alignmen_file = Cut & Paste Alignment File\r
-label.enter_redundancy_thereshold = Enter the redundancy thereshold\r
-label.select_dark_light_set_thereshold = <html><i>Select a dark and light text colour, then set the threshold to<br>switch between colours, based on background colour</i></html>\r
-label.select_feature_colour = Select Feature Colour\r
-label.ignore_gaps_consensus = Ignore Gaps In Consensus\r
-label.show_group_histogram = Show Group Histogram\r
-label.show_group_logo = Show Group Logo\r
-label.normalise_group_logo = Normalise Group Logo\r
-label.show_histogram = Show Histogram\r
-label.show_logo = Show Logo\r
-label.normalise_logo = Normalise Logo\r
-label.no_colour_selection_in_scheme = Please, make a colour selection before to apply colour scheme\r
-label.no_colour_selection_warn = Error saving colour scheme
\ No newline at end of file
+label.select_columns_containing = Select columns containing
+label.select_columns_not_containing = Select columns that do not contain
+option.trim_retrieved_seqs = Trim retrieved sequences
+label.trim_retrieved_sequences = When the reference sequence is longer than the sequence that you are working with, only keep the relevant subsequences.
+label.use_sequence_id_1 = Use $SEQUENCE_ID$ or $SEQUENCE_ID=/<regex>/=$
+label.use_sequence_id_2 = \nto embed sequence id in URL
+label.ws_parameters_for = Parameters for {0}
+label.switch_server = Switch server
+label.open_jabaws_web_page = Opens the JABAWS server's homepage in web browser
+label.choose_jabaws_server = Choose a server for running this service
+label.services_at = Services at {0}
+label.rest_client_submit = {0} using {1}
+label.fetch_retrieve_from =Retrieve from {0}</html>
+label.fetch_retrieve_from_all_sources = Retrieve from all {0} sources in {1}<br>First is :{2}<html>
+label.feature_settings_click_drag = <html>Click/drag feature types up or down to change render order.<br/>Double click to select columns containing feature in alignment/current selection<br/>Pressing Alt will select columns outside features rather than inside<br/>Pressing Shift to modify current selection (rather than clear current selection)<br/>Press CTRL or Command/Meta to toggle columns in/outside features<br/></html>
+label.opt_and_params_further_details = see further details by right-clicking
+label.opt_and_params_show_brief_desc_image_link = <html>Click to show brief description<br><img src="{0}"/> Right click for further information.</html>
+label.opt_and_params_show_brief_desc = <html>Click to show brief description<br></html>
+label.adjusts_width_generated_eps_png = <html>Adjusts the width of the generated EPS or PNG file to ensure even the longest sequence ID or annotation label is displayed</html>
+label.manually_specify_width_left_column = <html>Manually specify the width of the left hand column where sequence IDs and annotation labels will be rendered in exported alignment figures. This setting will be ignored if 'Automatically set ID width' is set</html>
+label.job_created_when_checked = <html>When checked, a job is created for every sequence in the current selection.</html>
+label.when_checked_job_visible_region_and_results = <html>When checked, a single job is created for the visible region and results mapped back onto their location in the alignment. Otherwise, a job would be created for every contiguous region visible in the alignment or current selection (e.g. a multiple alignment).</html>
+label.flat_file_representation = <html>Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism</html>
+label.result_of_parsing_rsbs = <html>Results of parsing the RSBS representation</html>
+label.user_preset = User Preset
+label.service_preset = Service Preset
+label.run_with_preset = Run {0} with preset
+label.view_service_doc_url = <html>View <a href="{0}">{1}</a></html>
+label.submit_sequence = <html>Submit {0} {1} {2} {3} to<br/>{4}</html>
+action.by_title_param = by {0}
+label.alignment = Alignment
+label.secondary_structure_prediction = Secondary Structure Prediction
+label.sequence_database_search = Sequence Database Search
+label.analysis = Analysis
+label.protein_disorder = Protein Disorder
+label.source_from_db_source = Sources from {0}
+label.from_msname = from {0}
+label.superpose_with = Superpose with ...
+action.do = Do
+label.scale_label_to_column = Scale Label to Column
+label.add_new_row = Add New Row
+label.edit_label_description = Edit Label/Description
+label.hide_row = Hide This Row
+label.delete_row = Delete This Row
+label.show_all_hidden_rows = Show All Hidden Rows
+label.export_annotation = Export Annotation
+label.copy_consensus_sequence = Copy Consensus Sequence
+label.helix = Helix
+label.sheet = Sheet
+label.rna_helix = RNA Helix
+label.remove_annotation = Remove Annotation
+label.colour_by = Colour by...
+label.muscle_multiple_protein_sequence_alignment = Muscle Multiple Protein Sequence Alignment
+label.mafft_multiple_sequence_alignment = MAFFT Multiple Sequence Alignment
+label.clustalw_multiple_sequence_alignment = ClustalW Multiple Sequence Alignment
+label.jnet_secondary_structure_prediction = JNet Secondary Structure Prediction
+label.multiharmony = Multi-Harmony
+label.unable_start_web_service_analysis = Unable to start web service analysis
+label.job_couldnt_be_started_check_input = The Job couldn't be started. Please check your input, and the Jalview console for any warning messages.
+label.prompt_each_time = Prompt each time
+label.use_source = Use Source
+label.couldnt_save_project = Couldn't save project
+label.error_whilst_saving_current_state_to = Error whilst saving current state to {0}
+label.error_whilst_loading_project_from = Error whilst loading project from {0}
+label.couldnt_load_project = Couldn't load project
+label.pca_sequences_not_aligned = The sequences must be aligned before calculating PCA.\nTry using the Pad function in the edit menu,\nor one of the multiple sequence alignment web services.
+label.invalid_name_preset_exists = Invalid name - preset already exists.
+label.invalid_name = Invalid name
+label.set_proxy_settings = Please set up your proxy settings in the 'Connections' tab of the Preferences window
+label.proxy_authorization_failed = Proxy Authorization Failed
+label.internal_jalview_error = Internal Jalview Error
+label.secondary_structure_prediction_service_couldnt_be_located = The Secondary Structure Prediction Service named {0} at {1} couldn't be located.
+label.service_called_is_not_msa_service = The Service called \n{0}\nis not a \nMultiple Sequence Alignment Service\!
+label.msa_service_is_unknown = The Multiple Sequence Alignment Service named {0} is unknown
+label.service_called_is_not_seq_search_service = The Service called \n{0}\nis not a \nSequence Search Service\!
+label.seq_search_service_is_unknown = The Sequence Search Service named {0} is unknown
+label.feature_type = Feature Type
+label.display = Display
+label.service_url = Service URL
+label.copied_sequences = Copied sequences
+label.cut_sequences = Cut Sequences
+label.conservation_colour_increment = Conservation Colour Increment ({0})
+label.percentage_identity_thereshold = Percentage Identity Thereshold ({0})
+label.error_unsupported_owwner_user_colour_scheme = Unsupported owner for User Colour scheme dialog
+label.save_alignment_to_file = Save Alignment to file
+label.save_features_to_file = Save Features to File
+label.save_annotation_to_file = Save Annotation to File
+label.no_features_on_alignment = No features found on alignment
+label.save_pdb_file = Save PDB File
+label.save_text_to_file = Save Text to File
+label.save_state = Save State
+label.restore_state = Restore State
+label.saving_jalview_project = Saving jalview project {0}
+label.loading_jalview_project = Loading jalview project {0}
+label.save_vamsas_document_archive = Save Vamsas Document Archive
+label.saving_vamsas_doc = Saving VAMSAS Document to {0}
+label.load_feature_colours = Load Feature Colours
+label.save_feature_colours = Save Feature Colour Scheme
+label.dataset_for = {0} Dataset for {1}
+label.select_startup_file = Select startup file
+label.select_default_browser = Select default web browser
+label.save_tree_as_newick = Save tree as newick file
+label.create_eps_from_tree = Create EPS file from tree
+label.create_png_from_tree = Create PNG image from tree
+label.save_colour_scheme = Save colour scheme
+label.edit_params_for = Edit parameters for {0}
+label.choose_filename_for_param_file = Choose a filename for this parameter file
+label.save_as_html = Save as HTML
+label.recently_opened = Recently Opened
+label.blasting_for_unidentified_sequence_jobs_running = BLASTing for unidentified sequences - {0} jobs running.
+label.tree_from = Tree from {0}
+label.webservice_job_title = {0} using {1}
+label.select_visible_region_of = selected {0} region of {1}
+label.visible = Visible
+label.select_unselect_visible_regions_from = select and unselected {0} regions from {1}
+label.visible_region_of = visible region of
+label.webservice_job_title_on = {0} using {1} on {2}
+label.updating_vamsas_session = Updating vamsas session
+label.loading_file = Loading File: {0}
+label.edit_params = Edit {0}
+error.not_implemented = Not implemented
+error.no_such_method_as_clone1_for = No such method as clone1 for {0}
+error.null_from_clone1 = Null from clone1!
+error.implementation_error_sortbyfeature = Implementation Error - sortByFeature method must be one of FEATURE_SCORE, FEATURE_LABEL or FEATURE_DENSITY.
+error.not_yet_implemented = Not yet implemented
+error.unknown_type_dna_or_pep = Unknown Type {0} - dna or pep are the only allowed values.
+error.implementation_error_dont_know_thereshold_annotationcolourgradient = Implementation error: don't know about threshold setting for current AnnotationColourGradient.
+error.implementation_error_embeddedpopup_not_null = Implementation error - embeddedPopup must be non-null
+error.invalid_colour_for_mycheckbox = Invalid color for MyCheckBox
+error.implementation_error_unrecognised_render_object_for_features_type = Implementation Error: Unrecognised render object {0} for features of type {1}
+error.implementation_error_unsupported_feature_colour_object = Implementation error: Unsupported feature colour object.
+error.invalid_separator_parameter = Invalid separator parameter - must be non-zero length
+error.alignment_cigararray_not_implemented = Alignment(CigarArray) not yet implemented
+error.weak_sequencei_equivalence_not_yet_implemented = Weak sequenceI equivalence not yet implemented.
+error.implementation_error_can_only_make_alignmnet_from_cigararray = Implementation Error - can only make an alignment view from a CigarArray of sequences.
+error.empty_view_cannot_be_updated = empty view cannot be updated.
+error.mismatch_between_number_of_sequences_in_block = Mismatch between number of sequences in block {0} ({1}) and the original view ({2})
+error.padding_not_yet_implemented = Padding not yet implemented
+error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view = Mismatch between visible blocks to update and number of contigs in view (contigs=0,blocks={0})
+error.unknown_seq_cigar_operation = Unknown SeqCigar operation {0}
+error.implementation_bug_parse_cigar_string = Implementation bug in parseCigarString
+error.implementation_error_invalid_operation_string = Implementation error. Invalid operation string.
+error.invalid_range_string = Invalid range string (must be zero or positive number)
+error.implementation_error_delete_range_out_of_bounds = Implementation Error: deleteRange out of bounds: start must be non-negative and less than end.
+error.implementation_error = Implementation error
+error.implementation_error_unknown_operation = Implementation Error! Unknown operation {0}
+error.implementation_error_unexpected_null_from_get_sequence_and_deletions = Implementation Error - unexpected null from getSequenceAndDeletions
+error.implementation_error_set_seq_null = Implementation Error - _setSeq(null,...)
+error.implementation_error_s = Implementation Error: _s= {0}
+error.implementation_error_seqcigar_possible = SeqCigar: Possible implementation error: sequence is longer than dataset sequence
+error.implmentation_bug_seq_null = Implementation Bug. Null seq
+error.implementation_bug_cigar_operation_list_range_list = Implementation Bug. Cigar Operation list!= range list
+error.not_yet_implemented_cigar_object_from_cigar_string = NOT YET Implemented: Constructing a Cigar object from a cigar string and a gapped sequence.
+error.implementation_bug_cigar_operation = Implementation Bug. Cigar Operation {0} {1} not one of {2}, {3}, or {4}.
+error.implementation_error_for_new_cigar = Implementation error for new Cigar(SequenceI)
+error.implementation_error_cigar_seq_no_operations = Implementation error: {0}th sequence Cigar has no operations.
+error.implementation_error_jmol_getting_data = Implementation error - Jmol seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016
+error.implementation_error_no_pdbentry_from_index = Implementation error - no corresponding pdbentry (for index {0}) to add sequences mappings to
+error.jmol_version_not_compatible_with_jalview_version = Jmol version {0} is not compatible with this version of Jalview. Report this problem at issues.jalview.org
+error.not_implemented_remove = Remove: Not implemented
+error.not_implemented_clone = Clone: Not implemented
+error.implementation_error_chimera_getting_data = Implementation error - Chimera seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016
+error.call_setprogressbar_before_registering_handler = call setProgressBar before registering the progress bar's handler.
+label.cancelled_params = Cancelled {0}
+error.implementation_error_cannot_show_view_alignment_frame = Implementation error: cannot show a view from another alignment in an AlignFrame.
+error.implementation_error_dont_know_about_thereshold_setting = Implementation error: don't know about threshold setting for current AnnotationColourGradient.
+error.eps_generation_not_implemented = EPS Generation not yet implemented
+error.png_generation_not_implemented = PNG Generation not yet implemented
+error.try_join_vamsas_session_another = Trying to join a vamsas session when another is already connected
+error.invalid_vamsas_session_id = Invalid vamsas session id
+error.implementation_error_cannot_create_groovyshell = Implementation Error. Cannot create groovyShell without Groovy on the classpath!
+label.groovy_support_failed = Jalview Groovy Support Failed
+label.couldnt_create_groovy_shell = Couldn't create the groovy Shell. Check the error log for the details of what went wrong.
+error.unsupported_version_calcIdparam = Unsupported Version for calcIdparam {0}
+error.implementation_error_cant_reorder_tree = Implementation Error: Can't reorder this tree. Not DefaultMutableTreeNode.
+error.invalid_value_for_option = Invalid value {0} for option {1}
+error.implementation_error_cannot_import_vamsas_doc = Implementation Error - cannot import existing vamsas document into an existing session, Yet!
+label.vamsas_doc_couldnt_be_opened_as_new_session = VAMSAS Document could not be opened as a new session - please choose another
+error.implementation_error_vamsas_operation_not_init = Impementation error! Vamsas Operations when client not initialised and connected
+error.jalview_no_connected_vamsas_session = Jalview not connected to Vamsas session
+error.implementation_error_cannot_recover_vamsas_object_mappings = IMPLEMENTATION ERROR: Cannot recover vamsas object mappings - no backup was made
+error.setstatus_called_non_existent_job_pane = setStatus called for non-existent job pane {0}
+error.implementation_error_cannot_find_marshaller_for_param_set =Implementation error: Can't find a marshaller for the parameter set
+error.implementation_error_old_jalview_object_not_bound =IMPLEMENTATION ERROR: old jalview object is not bound ! ({0})
+error.implementation_error_vamsas_doc_class_should_bind_to_type = Implementation Error: Vamsas Document Class {0} should bind to a {1} (found a {2})
+error.implementation_error_jalview_class_should_bind_to_type = Implementation Error: Jalview Class {0} should bind to a {1} (found a {2})
+error.invalid_vamsas_rangetype_cannot_resolve_lists = Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!
+error.implementation_error_maplist_is_null = Implementation error. MapList is null for initMapType.
+error.implementation_error_cannot_have_null_alignment = Implementation error: Cannot have null alignment property key
+error.implementation_error_null_fileparse = Implementation error. Null FileParse in copy constructor
+error.implementation_error_cannot_map_alignment_sequences = IMPLEMENTATION ERROR: Cannot map an alignment of sequences from different datasets into a single alignment in the vamsas document.
+error.implementation_error_cannot_duplicate_colour_scheme = Serious implementation error: cannot duplicate colourscheme {0}
+error.implementation_error_structure_selection_manager_null = Implementation error. Structure selection manager's context is 'null'
+exception.ssm_context_is_null = SSM context is null
+error.idstring_seqstrings_only_one_per_sequence = idstrings and seqstrings contain one string each per sequence
+error.cannot_have_mixed_length_replacement_vectors = Cannot have mixed length replacement vectors. Replacement vector for {0} is {1} strings long, and have already seen a {2} length vector.
+error.cannot_have_zero_length_vector_replacement_strings = Cannot have zero length vector of replacement strings - either 1 value or n values.
+error.implementation_error_multiple_single_sequence_prediction_jobs_not_supported = Implementation Error! Multiple single sequence prediction jobs are not yet supported
+error.implementation_error_invalid_msa_index_for_job =Implementation Error! Invalid msaIndex for JPredJob on parent MSA input object!
+error.implementation_error_startjob_called = Implementation error - StartJob(JpredJob) called on {0}
+error.multiple_jnet_subjob_merge_not_implemented = Multiple JNet subjob merging not yet implemented
+label.job_never_ran = Job never ran - input returned to user.
+error.implementation_error_minlen_must_be_greater_zero = Implementation error: minlen must be zero or more
+error.implementation_error_msawbjob_called = Implementation error - StartJob(MsaWSJob) called on a WSJobInstance {0}
+error.implementation_error_cannot_attach_ws_menu_entry = IMPLEMENTATION ERROR: cannot attach WS Menu Entry without service handle reference!
+error.parameter_migration_not_implemented_yet = Parameter migration not implemented yet
+error.implementation_error_cannot_set_jaba_option = Implementation error: cannot set Jaba Option to a value outside its allowed value range!
+error.implementation_error_valuetype_doesnt_support_jabaws_type = IMPLEMENTATION ERROR: jalview.ws.params.ValueConstrainI.ValueType does not support the JABAWS type : {0}
+error.cannot_create_jabaws_param_set = Cannot create a JabaWSParamSet from non-JabaWS parameters
+error.cannot_set_arguments_to_jabaws_param_set = Cannot set arguments to a JabaWSParamSet that are not JabaWS arguments
+error.implementation_error_runner_config_not_available = Implementation Error: Runner Config not available for a JABAWS service of type {0} ({1})
+error.implementation_error_cannot_handle_jaba_param = Implementation Error: Cannot handle Jaba parameter object {0}
+error.implementation_error_attempt_to_delete_service_preset = Implementation error: Attempt to delete a service preset!
+error.implementation_error_cannot_locate_oldname_presetname = Implementation error: Can't locate either oldname ({0}) or presetName ({1}in the datastore!"
+error.implementation_error_jabaws_param_set_only_handled_by = Implementation error: JabaWsParamSets can only be handled by JabaParamStore
+error.cannot_set_source_file_for = Cannot set source file for {0}
+error.mismatch_service_instance_preset = Probable mismatch between service instance and preset!
+error.cannot_set_params_for_ws_preset = Cannot set Parameters for a Jaba Web service's preset
+error.implementation_error_can_only_instantiate_jaba_param_sets = Implementation error: Can only instantiate Jaba parameter sets
+error.no_aacon_service_found = No AACon service found
+error.implementation_error_couldnt_copy_value_constraint = Implementation error: could not copy ValueConstrain!
+error.couldnt_encode_as_utf8 = Couldn't encode {0} as UTF-8.
+error.tree_inputtype_not_yet_implemented = Tree InputType not yet implemented
+error.implementation_error_need_to_have_httpresponse = Implementation Error: need to have an HttpResponse to process
+error.dbrefsource_implementation_exception =DBRefSource Implementation Exception
+error.implementation_error_dbinstance_must_implement_interface = Implmentation Error - getDbInstances must be given a class that implements jalview.ws.seqfetcher.DbSourceProxy (was given{0})
+error.implementation_error_must_init_dbsources =Implementation error. Must initialise dbSources
+label.view_controller_toggled_marked = {0} {1} columns {2} containing features of type {3} across {4} sequence(s)
+label.toggled = Toggled
+label.marked = Marked
+label.not = not
+label.no_feature_of_type_found = No features of type {0} found.
+label.submission_params = Submission {0}
+label.empty_alignment_job = Empty Alignment Job
+label.add_new_sbrs_service = Add a new Simple Bioinformatics Rest Service
+label.edit_sbrs_entry = Edit Simple Bioinformatics Rest Service entry
+label.pca_recalculating = Recalculating PCA
+label.pca_calculating = Calculating PCA
+label.select_foreground_colour = Choose foreground colour
+label.select_colour_for_text = Select Colour for Text
+label.adjunst_foreground_text_colour_thereshold = Adjust Foreground Text Colour Threshold
+label.select_subtree_colour = Select Sub-Tree Colour
+label.create_new_sequence_features = Create New Sequence Feature(s)
+label.amend_delete_features = Amend/Delete Features for {0}
+exception.out_of_bounds_for_file = Out of bounds for file: i={0}, Final Buffer: i0={1} iend={2}
+exception.null_string_given_to_regex_search = Null String Given to Regex.search
+exception.null_string_like_given_to_regex_search = Null StringLike Given to Regex.search
+exception.null_string_given_to_regex_reverse_search = Null String Given to Regex.reverseSearch
+exception.null_string_like_given_to_regex_reverse_search = Null StringLike Given to Regex.reverseSearch
+exception.null_string_like_given_to_regex_search_from = Null String Given to Regex.searchFrom
+exception.null_string_like_given_to_regex_search_region = Null String Given to Regex.searchRegion
+exception.replace_null_regex_pointer = Replacer has null Regex pointer
+exception.bad_pattern_to_regex_perl_code = bad pattern to Regex.perlCode: {0}
+exception.no_stub_implementation_for_interface = There is no stub implementation for the interface: {0}
+exception.cannot_set_endpoint_address_unknown_port = Cannot set Endpoint Address for Unknown Port {0}
+exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis = Querying matching opening parenthesis for non-closing parenthesis character {0}
+exception.mismatched_unseen_closing_char = Mismatched (unseen) closing character {0}
+exception.mismatched_closing_char = Mismatched closing character {0}
+exception.mismatched_opening_char = Mismatched opening character {0} at {1}
+exception.invalid_datasource_couldnt_obtain_reader = Invalid datasource. Could not obtain Reader
+exception.index_value_not_in_range = {0}: Index value {1} not in range [0..{2}]
+exception.unterminated_cigar_string = Unterminated cigar string
+exception.unexpected_operation_cigar_string_pos = Unexpected operation {0} in cigar string (position {1} in {2}
+exception.couldnt_parse_responde_from_annotated3d_server = Couldn't parse response from Annotate3d server
+exception.application_test_npe = Application test: throwing an NullPointerException It should arrive at the console
+exception.overwriting_vamsas_id_binding = Overwriting vamsas id binding
+exception.overwriting_jalview_id_binding = Overwriting jalview id binding
+error.implementation_error_unknown_file_format_string = Implementation error: Unknown file format string
+exception.failed_to_resolve_gzip_stream = Failed to resolve GZIP stream
+exception.problem_opening_file_also_tried = Problem opening {0} (also tried {1}) : {2}
+exception.problem_opening_file = Problem opening {0} : {1}
+exception.failed_to_read_data_from_source = Failed to read data from source: {0}
+exception.no_init_source_stream = Unitialised Source Stream
+exception.invalid_source_stream = Invalid Source Stream: {0}
+error.implementation_error_reset_called_for_invalid_source = Implementation Error: Reset called for invalid source.
+exception.number_of_residues_in_query_sequence_differ_from_prediction = Number of residues in {0} supposed query sequence ({1}\n{2})\ndiffer from number of prediction sites in prediction ({3})
+label.mapped = mapped
+exception.jpredconcide_entry_has_unexpected_number_of_columns = JPredConcise: Entry ({0}) has an unexpected number of columns
+exception.couldnt_parse_concise_annotation_for_prediction = Couldn't parse concise annotation for prediction profile.\n{0}
+exception.newfile = NewickFile\: {0}\n
+label.no_tree_read_in = No Tree read in
+exception.rnaml_couldnt_access_datasource = Couldn't access datasource ({0})
+exception.ranml_couldnt_process_data = Couldn't process data as RNAML file ({0})
+exception.ranml_invalid_file = Invalid RNAML file ({0})
+exception.ranml_problem_parsing_data = Problem parsing data as RNAML ({0})
+exception.pfam_no_sequences_found = No sequences found (PFAM input)
+exception.stockholm_invalid_format = This file is not in valid STOCKHOLM format: First line does not contain '# STOCKHOLM'
+exception.couldnt_parse_sequence_line = Could not parse sequence line: {0}
+exception.error_parsing_line = Error parsing {0}
+exception.unknown_annotation_detected = Unknown annotation detected: {0} {1}
+exception.couldnt_store_sequence_mappings = Couldn't store sequence mappings for {0}
+exception.matrix_too_many_iteration = Too many iterations in {0} (max is {1})
+exception.browser_not_found = Exception in finding browser: {0}
+exception.browser_unable_to_locate = Unable to locate browser: {0}
+exception.invocation_target_exception_creating_aedesc = InvocationTargetException while creating AEDesc: {0}
+exception.illegal_access_building_apple_evt= IllegalAccessException while building AppleEvent: {0}
+exception.instantiation_creating_aedesc = InstantiationException while creating AEDesc: {0}
+exception.unable_to_launch_url = Unable to launch URL: {0}
+exception.unable_to_create_internet_config = Unable to create an Internet Config instance: {0}
+exception.invocation_target_calling_url = InvocationTargetException while calling openURL: {0}
+exception.illegal_access_calling_url = IllegalAccessException while calling openURL: {0}
+exception.interrupted_launching_browser = InterruptedException while launching browser: {0}
+exception.das_source_doesnt_support_sequence_command = Source {0} does not support the sequence command.
+exception.invalid_das_source = Invalid das source: {0}
+exception.ebiembl_retrieval_failed_on = EBI EMBL XML retrieval failed on {0}:{1}
+label.no_embl_record_found = # No EMBL record retrieved for {0}:{1}
+label.embl_successfully_parsed = # Successfully parsed the {0} queries into an Alignment
+exception.no_pdb_records_for_chain = No PDB Records for {0} chain {1}
+exception.unexpected_handling_rnaml_translation_for_pdb = Unexpected exception when handling RNAML translation of PDB data
+exception.couldnt_recover_sequence_properties_for_alignment = Couldn't recover sequence properties for alignment
+exception.unknown_format_for_file = Unknown format {0} for file \: \n{1}
+label.remove_gaps = Remove Gaps
+exception.couldnt_recover_sequence_props_for_jnet_query = Couldn't recover sequence properties for JNet Query sequence!
+exception.server_timeout_try_later = Server timed out - try again later\n
+exception.web_service_returned_null_try_later= Server at {0} returned null object, it probably cannot be contacted. Try again later.
+exception.cannot_contact_service_endpoint_at = Cannot contact service endpoint at {0}
+error.implementation_error_cannot_find_service_url_in_given_set = Implementation error: Cannot find service url in the given url set!
+error.implementation_error_cannot_find_service_url_in_given_set_param_store = Implementation error: Cannot find service url in the given url set for this service parameter store ({0}}
+exception.jobsubmission_invalid_params_set = Invalid parameter set. Check Jalview implementation
+exception.notvaliddata_group_contains_less_than_min_seqs = Group contains less than {0} sequences.
+exception.outofmemory_loading_pdb_file = Out of memory loading PDB File
+exception.eps_coudnt_write_output_file = Could not write to the output file: {0}
+exception.eps_method_not_supported = Method not currently supported by EpsGraphics2D version {0}
+exception.eps_unable_to_get_inverse_matrix = Unable to get inverse of matrix: {0}
+warn.job_cannot_be_cancelled_close_window = This job cannot be cancelled.\nJust close the window.
+warn.service_not_supported = Service not supported!
+warn.input_is_too_big = Input is too big!
+warn.invalid_job_param_set = Invalid job parameter set!
+info.job_couldnt_be_run_server_doesnt_support_program = Job could not be run because the server doesn't support this program.\n{0}
+info.job_couldnt_be_run_exceeded_hard_limit = Job could not be run because it exceeded a hard limit on the server.\n{0}
+info.job_couldnt_be_run_incorrect_param_setting = Job could not be run because some of the parameter settings are not supported by the server.\n{0}\nPlease check to make sure you have used the correct parameter set for this service\!\n
+info.no_jobs_ran = No jobs ran
+info.failed_to_submit_prediction = Failed to submit the prediction\:\n{0} {1}
+info.invalid_jnet_job_result_data ={0}\n{1}\nInvalid JNet job result data\!\n{2}
+info.failed_to_submit_sequences_for_alignment = Failed to submit sequences for alignment.\nIt is most likely that there is a problem with the server.\nJust close the window\n
+info.alignment_object_method_notes = \nAlignment Object Method Notes\n
+info.server_exception = \n{0} Server exception\!\n{1}
+status.processing_commandline_args = Processing commandline arguments...
+status.das_features_being_retrived = DAS features being retrieved...
+status.searching_for_sequences_from = Searching for sequences from {0}
+status.finished_searching_for_sequences_from = Finished searching for sequences from {0}
+label.eps_file = EPS file
+label.png_image = PNG image
+status.saving_file = Saving {0}
+status.export_complete = Export complete.
+status.fetching_pdb = Fetching PDB {0}
+status.refreshing_news = Refreshing news
+status.importing_vamsas_session_from = Importing VAMSAS session from {0}
+status.opening_params = Opening {0}
+status.waiting_sequence_database_fetchers_init = Waiting for Sequence Database Fetchers to initialise
+status.init_sequence_database_fetchers = Initialising Sequence Database Fetchers
+status.fetching_sequence_queries_from = Fetching {0} sequence queries from {1}
+status.finshed_querying = Finished querying
+status.parsing_results = Parsing results.
+status.processing = Processing...
+status.refreshing_web_service_menus = Refreshing Web Service Menus
+status.collecting_job_results = Collecting job results.
+status.fetching_das_sequence_features = Fetching DAS Sequence Features
+status.no_das_sources_active = No DAS Sources Active
+status.das_feature_fetching_cancelled = DAS Feature Fetching Cancelled
+status.das_feature_fetching_complete = DAS Feature Fetching Complete
+status.fetching_db_refs = Fetching db refs
+label.font_doesnt_have_letters_defined = Font doesn't have letters defined\nso cannot be used\nwith alignment data
+label.error_loading_file_params = Error loading file {0}
+label.error_loading_jalview_file = Error loading Jalview file
+warn.out_of_memory_when_action = Out of memory when {0}\!\!\nSee help files for increasing Java Virtual Machine memory.
+warn.out_of_memory_loading_file = Out of memory loading file {0}\!\!\nSee help files for increasing Java Virtual Machine memory.
+label.out_of_memory = Out of memory
+label.invalid_id_column_width = Invalid ID Column width
+warn.user_defined_width_requirements = The user defined width for the\nannotation and sequence ID columns\nin exported figures must be\nat least 12 pixels wide.
+label.couldnt_create_sequence_fetcher = Couldn't create SequenceFetcher
+warn.couldnt_create_sequence_fetcher_client = Could not create the sequence fetcher client. Check error logs for details.
+warn.server_didnt_pass_validation = Service did not pass validation.\nCheck the Jalview Console for more details.
+warn.url_must_contain = Sequence URL must contain $SEQUENCE_ID$ or a regex $SEQUENCE_ID=/<regex>/=$
+info.validate_jabaws_server = Validate JabaWS Server ?\n(Look in console output for results)
+label.test_server = Test Server?
+info.you_want_jalview_to_find_uniprot_accessions = Do you want Jalview to find\nUniprot Accession ids for given sequence names?
+label.find_uniprot_accession_ids = Find Uniprot Accession Ids
+label.new_sequence_fetcher = New Sequence Fetcher
+label.additional_sequence_fetcher = Additional Sequence Fetcher
+label.select_database_retrieval_source = Select Database Retrieval Source
+label.overwrite_existing_file = Overwrite existing file?
+label.file_already_exists = File exists
+label.edit_jabaws_url = Edit JABAWS URL
+label.add_jabaws_url = Add new JABAWS URL
+label.news_from_jalview = News from http://www.jalview.org
+label.cut_paste_alignmen_file = Cut & Paste Alignment File
+label.enter_redundancy_thereshold = Enter the redundancy thereshold
+label.select_dark_light_set_thereshold = <html><i>Select a dark and light text colour, then set the threshold to<br>switch between colours, based on background colour</i></html>
+label.select_feature_colour = Select Feature Colour
+label.delete_all = Delete all sequences
+warn.delete_all = <html>Deleting all sequences will close the alignment window.<br>Confirm deletion or Cancel.
+label.add_annotations_for = Add annotations for
+label.choose_annotations = Choose annotations
+label.find = Find
+label.invalid_search = Search string invalid
+error.invalid_regex = Invalid regular expression
+label.ignore_gaps_consensus = Ignore Gaps In Consensus
+label.show_group_histogram = Show Group Histogram
+label.show_group_logo = Show Group Logo
+label.normalise_group_logo = Normalise Group Logo
+label.show_histogram = Show Histogram
+label.show_logo = Show Logo
+label.normalise_logo = Normalise Logo
+label.no_colour_selection_in_scheme = Please, make a colour selection before to apply colour scheme
+label.no_colour_selection_warn = Error saving colour scheme
-action.refresh_services = Refrescar servicios\r
-action.reset_services = Reiniciar servicios\r
-action.merge_results = Unificar resultados\r
-action.load_scheme = Cargar esquema\r
-action.save_scheme = Guardar esquema\r
-action.save_image = Guardar imagen\r
-action.paste = Pegar\r
-action.show_html_source = Mostrar código HTML\r
-action.print = Imprimir\r
-action.web_service = Servicio web\r
-action.cancel_job = Cancelar trabajo\r
-action.start_job = Arrancar trabajo\r
-action.revert = Deshacer\r
-action.move_down = Mover hacia abajo\r
-action.move_up = Mover hacia arriba\r
-action.remove_return_datatype = Borrar tipo de datos de retorno\r
-action.add_return_datatype = Añadir tipo de datos de retorno\r
-action.remove_input_parameter = Borrar el parámetro de entrada seleccionado\r
-action.add_input_parameter = Añadir parámetro de entrada seleccionado\r
-action.edit = Editar\r
-action.new = Nuevo\r
-action.open_file = Abrir fichero\r
-action.show_unconserved = Mostrar regiones no conservadas\r
-action.open_new_aligmnent = Abrir nuevo alineamiento\r
-action.raise_associated_windows = Destacar ventanas asociadas\r
-action.minimize_associated_windows = Minimizar ventanas asociadas\r
-action.close_all = Cerrar todo\r
-action.load_project = Cargar proyecto\r
-action.save_project = Guardar proyecto\r
-action.quit = Salir\r
-action.expand_views = Expandir vistas\r
-action.gather_views = Capturar vistas\r
-action.page_setup = Configuración de la página\r
-action.reload = Recargar\r
-action.load = Cargar\r
-action.open = Abrir\r
-action.cancel = Cancelar\r
-action.create = Crear\r
-action.update = Actualizar\r
-action.delete = Borrar\r
-action.snapshot = Imagen\r
-action.clear = Limpiar\r
-action.accept = Aceptar\r
-action.select_ddbb = --- Seleccionar base de datos ---\r
-action.undo = Deshacer\r
-action.redo = Rehacer\r
-action.reset = Reiniciar\r
-action.remove_left = Eliminar parte izquierda\r
-action.remove_right = Eliminar parte derecha\r
-action.remove_empty_columns = Eliminar las columnas vacías\r
-action.remove_all_gaps = Eliminar todos los huecos\r
-action.left_justify_alignment = Ajustar el alineamiento a la izquierda\r
-action.right_justify_alignment = Ajustar el alineamiento a la derecha\r
-action.boxes = Casillas\r
-action.text = Texto\r
-action.by_pairwise_id = Identificar por parejas\r
-action.by_id = Por identificador\r
-action.by_length = Por longitud\r
-action.by_group = Por grupo\r
-action.remove = Eliminar\r
-action.remove_redundancy = Eliminar redundancia...\r
-action.pairwise_alignment = Alineamiento de pares...\r
-action.by_rna_helixes = Por hélices de RNA\r
-action.user_defined = Definido por el usuario...\r
-action.by_conservation = Por conservación\r
-action.wrap = Envolver\r
-action.show_gaps = Mostrar huecos\r
-action.show_hidden_markers = Mostrar marcadores ocultos\r
-action.find = Buscar\r
-action.undefine_groups = Grupos sin definir\r
-action.create_groups = Crear grupos\r
-action.make_groups_selection = Hacer grupos para seleccionar\r
-action.copy = Copiar\r
-action.cut = Cortar\r
-action.font = Fuente...\r
-action.scale_above = Escala superior\r
-action.scale_left = Escala izquierda\r
-action.scale_right = Escala derecha\r
-action.by_tree_order = Por orden del árbol\r
-action.sort = Ordenar\r
-action.calculate_tree = Calcular árbol\r
-action.help = Ayuda\r
-action.by_annotation = Por anotación...\r
-action.invert_sequence_selection = Invertir selección de secuencias\r
-action.invert_column_selection = Invertir selección de columnas\r
-action.show = Mostrar\r
-action.hide = Ocultar\r
-action.ok = OK\r
-action.set_defaults = Defecto\r
-action.create_group = Crear grupo\r
-action.remove_group = Eliminar grupo\r
-action.edit_group = Editar grupo\r
-action.border_colour = Color del borde\r
-action.edit_new_group = Editar nuevo grupo\r
-action.hide_sequences = Ocultar secuencias\r
-action.sequences = Secuencias\r
-action.ids = IDS\r
-action.ids_sequences = IDS y secuencias\r
-action.reveal_all = Revelar todo\r
-action.reveal_sequences = Revelar secuencias\r
-action.find_all = Buscar todo\r
-action.find_next = Buscar siguiente\r
-action.file = Archivo\r
-action.view = Ver \r
-action.change_params = Cambiar parámetros\r
-action.apply = Aplicar\r
-action.apply_threshold_all_groups = Aplicar umbral a todos los grupos\r
-action.apply_all_groups = Aplicar a todos los grupos\r
-action.by_chain = Por cadena\r
-action.by_sequence = Por secuencia\r
-action.paste_annotations = Pegar anotaciones\r
-action.format = Formato\r
-action.select = Seleccionar\r
-action.new_view = Nueva vista\r
-action.close = Cerrar\r
-action.add = Añadir\r
-action.save_as_default = Guardar como por defecto\r
-action.save_as = Guardar como\r
-action.save = Guardar\r
-action.cancel_fetch = Cancelar búsqueda\r
-action.save_omit_hidden_columns = Guardar / Omitir las columnas ocultas\r
-action.change_font = Cambiar Fuente\r
-action.change_font_tree_panel = Cambiar fuente (panel del árbol)\r
-action.colour = Color\r
-action.calculate = Calcular\r
-action.select_all = Seleccionar Todo\r
-action.deselect_all = Deseleccionar Todo\r
-action.invert_selection = Invertir selección\r
-action.using_jmol = Usar Jmol\r
-action.link = Enlazar\r
-action.group_link = Enlazar grupo\r
-action.show_chain = Mostrar cadena\r
-action.show_group = Mostrar grupo\r
-action.fetch_db_references = Recuperar referencias a base de datos\r
-action.view_flanking_regions = Mostrar flancos\r
-label.view_flanking_regions = Mostrar los datos de la secuencia a ambos lados de las subsecuencias implicadas en este alineamiento\r
-label.str = Str: \r
-label.seq = Seq: \r
-label.structures_manager = Administrar estructuras\r
-label.nickname = Sobrenombre:\r
-label.url = URL: \r
-label.input_file_url = Introducir URL en el fichero de entrada\r
-label.select_feature = Seleccionar función:\r
-label.name = Nombre:\r
-label.name_param = Nombre: {0}\r
-label.group = Grupo:\r
-label.group_name = Nombre del grupo\r
-label.group_description = Descripción del grupo\r
-label.edit_group_name_description = Editar nombre/descripción del grupo\r
-label.colour = Color:\r
-label.description = Descripción:\r
-label.start = Comenzar:\r
-label.end = Terminar:\r
-label.current_parameter_set_name = Nombre actual del conjunto de parámetros:\r
-label.service_action = Acción de servicio:\r
-label.post_url = POST URL: \r
-label.url_suffix = URL Sufijo\r
-label.sequence_source = Fuente de la secuencia\r
-label.per_seq = por secuencia\r
-label.result_vertically_separable = Los resultados son separables verticalmente\r
-label.amend = Modificar\r
-label.undo_command = Deshacer {0}\r
-label.redo_command = Rehacer {0}\r
-label.principal_component_analysis = Análisis del Componente Principal\r
-label.average_distance_identity = Distancia Media Usando % de Identidad\r
-label.neighbour_joining_identity = Unir vecinos utilizando % de Identidad\r
-label.treecalc_title = {0} utilizando {1}\r
-label.tree_calc_av = Distancia media\r
-label.tree_calc_nj = Unir vecinos\r
-label.select_score_model = Selecciones modelo de puntuación\r
-label.score_model_pid = % Identidad\r
-label.score_model_blosum62 = BLOSUM62\r
-label.score_model_pam250 = PAM 250\r
-label.score_model_conservation = Conservación de las propiedades físico-químicas\r
-label.score_model_enhconservation = Conservación de las propiedades físico-químicas\r
-label.status_bar = Barra de estado\r
-label.out_to_textbox = Generar cuadro de texto\r
-label.clustalx = Clustalx\r
-label.clustal = Clustal\r
-label.zappo = Zappo\r
-label.taylor = Taylor\r
-label.blc = BLC\r
-label.fasta = Fasta\r
-label.msf = MSF\r
-label.pfam = PFAM\r
-label.pileup = Pileup\r
-label.pir = PIR\r
-label.hydrophobicity = Hidrofobicidad\r
-label.helix_propensity = Tendencia de la hélice\r
-label.strand_propensity = Tendencia de la hebra\r
-label.turn_propensity = Tendencia de giro\r
-label.buried_index = Índice de encubrimiento\r
-label.purine_pyrimidine = Purina/Pirimidina\r
-label.percentage_identity = Porcentaje de identidad\r
-label.blosum62 = BLOSUM62\r
-label.blosum62_score = Puntuación del BLOSUM62 \r
-label.tcoffee_scores = Puntuación del T-Coffee\r
-label.average_distance_bloslum62 = Distancia Media Usando BLOSUM62\r
-label.neighbour_blosum62 = Neighbour Joining usando BLOSUM62\r
-label.show_annotations = Mostrar anotaciones\r
-label.colour_text = Color del texto\r
-label.show_non_conversed = Mostrar no conservadas\r
-label.overview_window = Ventana resumen\r
-label.none = Ninguno\r
-label.above_identity_threshold = Por encima del umbral de identidad\r
-label.show_sequence_features = Mostrar las características de las secuencias\r
-label.nucleotide = Nucleótido\r
-label.to_new_alignment = A nuevo alineamiento\r
-label.to_this_alignment = Añadir a este alineamiento\r
-label.apply_colour_to_all_groups = Aplicar color a todos los grupos\r
-label.modify_identity_thereshold = Modificar el umbral de identidad...\r
-label.modify_conservation_thereshold = Modificar el umbral de conservación...\r
-label.input_from_textbox = Introducir desde el cuadro de texto\r
-label.centre_column_labels = Centrar las etiquetas de las columnas\r
-label.automatic_scrolling = Desplazamiento automático\r
-label.documentation = Documentación\r
-label.about = Acerca de...\r
-label.show_sequence_limits = Mostrar los límites de la secuencia\r
-label.feature_settings = Ajustar funciones...\r
-label.sequence_features = Funciones de la secuencia\r
-label.all_columns = Todas las columnas\r
-label.all_sequences = Todas las secuencias\r
-label.selected_columns = Columnas seleccionadas\r
-label.selected_sequences = Secuencias seleccionadas\r
-label.all_but_selected_region = Todo menos la región seleccionada (Shift+Ctrl+H)\r
-label.selected_region = Región seleccionada\r
-label.all_sequences_columns = Todas las secuencias y columnas\r
-label.group_consensus = Consenso de grupo\r
-label.group_conservation = Conservación de grupo\r
-label.show_consensus_histogram = Mostrar el histograma de consenso\r
-label.show_consensus_logo = Mostrar el logo de consenso\r
-label.norm_consensus_logo = Normalizar el logo de consenso\r
-label.apply_all_groups = Aplicar a todos los grupos\r
-label.autocalculated_annotation = Anotación autocalculada\r
-label.min_colour = Color mínimo\r
-label.max_colour = Color máximo\r
-label.use_original_colours = Usar colores originales\r
-label.threshold_minmax = El umbral es mín/máx\r
-label.represent_group_with = Representar al grupo con\r
-label.selection = Seleccionar\r
-label.group_colour = Color del grupo\r
-label.sequence = Secuencia\r
-label.view_pdb_structure = Ver estructura PDB\r
-label.min = Mín:\r
-label.max = Máx:\r
-label.colour_by_label = Color por etiquetas\r
-label.new_feature = Nueva función\r
-label.match_case = Hacer corresponder mayúsculas y minúsculas\r
-label.view_alignment_editor = Ver en el editor de alineamientos\r
-label.labels = Etiquetas\r
-label.output_values = Valores de salida...\r
-label.output_points = Puntos de salida...\r
-label.output_transformed_points = Puntos de salida transformados\r
-label.input_data = Datos de entrada...\r
-label.nucleotide_matrix = Matriz nucleotídica\r
-label.protein_matrix = Matriz proteica\r
-label.show_bootstrap_values = Mostrar valores de Bootstrap\r
-label.show_distances = Mostrar distancias\r
-label.mark_unassociated_leaves = Marcar hojas no asociadas\r
-label.fit_to_window = Ajustar a la ventana\r
-label.newick_format = Formato Newick\r
-label.select_newick_like_tree_file = Seleccione un fichero de árbol tipo Newick\r
-label.colours = Colores\r
-label.view_mapping = Ver mapeado\r
-label.wireframe = Estructura metálica\r
-label.depthcue = Clave de profundidad\r
-label.z_buffering = Tamponamiento Z\r
-label.charge_cysteine = Carga & Cisteína\r
-label.all_chains_visible = Todas las cadenas visibles\r
-label.successfully_added_features_alignment = Funciones añadidas exitosamente al alineamiento\r
-label.keyboard_editing_mode = El modo de editar teclado es {0}\r
-label.paste_features_annotations_Tcoffee_here = Pegar tus funciones / anotaciones / puntuación del fichero T-coffee aquí.\r
-label.removed_columns = {0} columnas eliminadas.\r
-label.removed_empty_columns = {0} columnas vacías eliminadas.\r
-label.paste_newick_tree_file = Pegar su fichero árbol Newick aquí. \r
-label.order_by_params = Ordenar por {0}\r
-label.html_content = <html>{0}</html>\r
-label.paste_pdb_file= Pegar tu fichero PDB aquí.\r
-label.paste_pdb_file_for_sequence = Pegar fichero PDB para la secuencia {0}\r
-label.could_not_parse_newick_file = No se pudo analizar el fichero Newick\\\!\\n {0}\r
-label.successfully_pasted_tcoffee_scores_to_alignment= Pegada exitosamente la puntuación T-Coffee al alineamiento.\r
-label.failed_add_tcoffee_scores = Fallo al añadir las puntuaciones T-Coffee: \r
-label.successfully_pasted_annotation_to_alignment = Anotación pegada exitosamente al alineamiento.\r
-label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file = No es posible parsear el texto pegado como una anotación características, GFF, o fichero T-Coffee válidos\r
-label.successfully_pasted_alignment_file = Fichero de alineamiento pegado exitosamente\r
-label.paste_your_alignment_file = Pegar su fichero de alineamiento aquí\r
-label.paste_your = Pegar su\r
-label.finished_searching = Búsqueda finalizada\r
-label.search_results= Buscar Resultados {0} : {1}\r
-label.found_match_for = Buscar coincidencia para {0}\r
-label.font = Fuente:\r
-label.size = Talla:\r
-label.style = Estilo:\r
-label.enter_redundancy_threshold = Introducir el umbral de redundancia\r
-label.calculating = Calculando....\r
-label.modify_conservation_visibility = Modificar la visibilidad de conservación\r
-label.colour_residues_above_occurence = Residuos de color por encima del % de aparición \r
-label.set_this_label_text = fijar como etiqueta \r
-label.sequences_from = Secuencias de {0}\r
-label.successfully_loaded_file = Fichero cargado exitosamente {0}\r
-label.successfully_saved_to_file_in_format = Guardado exitosamente en el fichero: {0} en formato {1}.\r
-label.copied_sequences_to_clipboard = Copiadas {0} secuencias en el portapapeles.\r
-label.check_file_matches_sequence_ids_alignment = Comprobar que el fichero coincide con el ID de la secuencia en el alineamiento.\r
-label.problem_reading_tcoffee_score_file = Problema de lectura del fichero de puntuaciones T-COFFEE\r
-label.source_to_target = {0} a {1}\r
-label.per_sequence_only= Sólo por secuencia\r
-label.to_file = a fichero\r
-label.to_textbox = a cuadro de texto\r
-label.jalview = Jalview\r
-label.csv_spreadsheet = CSV (Hoja de cálculo)\r
-label.status = [Estado]\r
-label.channels = Canales\r
-label.channel_title_item_count = {0} ({1})\r
-label.blog_item_published_on_date = {0} {1} \r
-label.select_das_service_from_table = Seleccionar servicio DAS de la tabla para leer una descripción completa aquí.</font></html>\r
-label.session_update = Actualizar sesión\r
-label.new_vamsas_session = Nueva sesión Vamsas\r
-label.load_vamsas_session = Cargar sesión Vamsas\r
-label.save_vamsas_session = Guardar sesión Vamsas\r
-label.select_vamsas_session_opened_as_new_vamsas_session= Selecciones una sesión vamsas para abrirla como una nueva sesión.\r
-label.open_saved_vamsas_session = Abrir una sesión VAMSAS guardada\r
-label.groovy_console = Consola Groovy \r
-label.lineart = lineart\r
-label.dont_ask_me_again = No volver a preguntar\r
-label.select_eps_character_rendering_style = Seleccionar el carácter EPS como estilo de visualización \r
-label.invert_selection = Invertir selección\r
-label.optimise_order = Optimizar orden\r
-label.seq_sort_by_score = Ordenar las secuencias por puntuación\r
-label.load_colours = Cargar colores\r
-label.save_colours = Guardar colores\r
-label.fetch_das_features = Recuperar funciones DAS\r
-label.selected_database_to_fetch_from = Seleccionada {0} Base de datos {1} para buscar de {2} \r
-label.database_param = Base de datos: {0}\r
-label.example = Ejemplo\r
-label.example_param = Ejemplo: {0}\r
-label.select_file_format_before_saving = Debe seleccionar un formato de fichero antes de guardar!\r
-label.file_format_not_specified = Formato de fichero no especificado\r
-label.alignment_contains_hidden_columns = El alineamiento contiene columnas ocultas.\\nQuieres guardar s\u00F3lo el alineamiento visible?\r
-label.couldnt_save_file = No se pudo guardar el fichero: {0}\r
-label.error_saving_file = Error guardando el fichero\r
-label.remove_from_default_list = eliminar de la lista de defectuosos?\r
-label.remove_user_defined_colour = Eliminar el color definido por el usuario\r
-label.you_must_select_least_two_sequences = Debes seleccionar al menos 2 secuencias.\r
-label.invalid_selection = Selección inválida\r
-label.principal_component_analysis_must_take_least_four_input_sequences = El an\u00E1lisis de la componente principal debe tomar\\nal menos 4 secuencias de entrada.\r
-label.sequence_selection_insufficient = Selección de secuencias insuficiente\r
-label.you_need_more_two_sequences_selected_build_tree = necesitas seleccionar más de dos secuencias para construir un árbol!\r
-label.not_enough_sequences = No suficientes secuencias\r
-label.selected_region_to_tree_may_only_contain_residues_or_gaps = La regi\u00F3n seleccionada para construir un \u00E1rbol puede\\ncontener s\u00F3lo residuos o espacios.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de edici\u00F3n,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.\r
-label.sequences_selection_not_aligned = Las secuencias seleccionadas no están alineadas\r
-label.sequences_must_be_aligned_before_creating_tree = Las secuencias deben estar alineadas antes de crear el \u00E1rbol.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de editar,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.\r
-label.sequences_not_aligned = Secuencias no alineadas\r
-label.problem_reading_tree_file = Problema al leer el fichero del árbol\r
-label.possible_problem_with_tree_file = Posible problema con el fichero del árbol\r
-label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Por favor seleccionar al menos tres bases de al menos una secuencia para poder realizar la traducción de cDNA.\r
-label.translation_failed = Translation Failed\r
-label.error_when_translating_sequences_submit_bug_report = Desafortunadamente, algo fue mal a la hora de traducir tus secuencias.\\nPor favor, revisa la consola Jalview java \\ny presenta un informe de error que incluya el seguimiento.\r
-label.implementation_error = Error de implementación:\r
-label.automatically_associate_pdb_files_with_sequences_same_name = Quieres asociar automáticamente los {0} ficheros PDB con las secuencias del alineamiento que tengan el mismo nombre?\r
-label.automatically_associate_pdb_files_by_name = Asociar los ficheros PDB por nombre automáticamente\r
-label.ignore_unmatched_dropped_files_info = <html>Quieres <em>ignorar</em> los {0} ficheros cuyos nombres no coincidan con ningún IDs de las secuencias ?</html>\r
-label.ignore_unmatched_dropped_files = Ignorar los ficheros sin coincidencias?\r
-label.enter_view_name = Introducir nombre visible (¿?)\r
-label.enter_label = Introducir etiqueta\r
-label.enter_label_for_the_structure = Introducir una etiqueta para la estructura?\r
-label.pdb_entry_is_already_displayed = {0} Ya est\u00E1 mostrado.\\nQuieres volver a usar este visor?\r
-label.map_sequences_to_visible_window = Mapa de secuencias en ventana visible: {0}\r
-label.add_pdbentry_to_view = Quieres a\u00F1adir {0} a la vista llamada\\n{1}\\n\r
-label.align_to_existing_structure_view = Alinear a una estructura ya existente\r
-label.pdb_entries_couldnt_be_retrieved = Las siguientes entradas pdb no pueden ser extra\u00EDdas del PDB\\\:\\n{0}\\nPor favor, prueba descarg\u00E1ndolas manualmente.\r
-label.couldnt_load_file = No se pudo cargar el fichero\r
-label.couldnt_find_pdb_id_in_file = No se pudo encontrar un Id PDB en el fichero suministrado. Por favor, introduzca un Id para identificar esta estructura.\r
-label.no_pdb_id_in_file = No hay un Id PDB en el fichero\r
-label.couldnt_read_pasted_text = No se pudo leer el texto pegado {0}\r
-label.error_parsing_text = Error analizando el texto\r
-label.enter_local_das_source = Intruduzca el Nickname & URL de la fuente DAS local\r
-label.you_can_only_edit_or_remove_local_das_sources = Sólo puedes editar o eliminar fuentes DAS locales!\r
-label.public_das_source = Fuente pública DAS - no editable\r
-label.input_alignment_from_url = Alineamiento de entrada desde URL\r
-label.input_alignment = Alineamiento de entrada\r
-label.couldnt_import_as_vamsas_session = No se pudo importar {0} como una nueva sesión Vamsas.\r
-label.vamsas_document_import_failed = Fallo en la importación del documento Vamsas\r
-label.couldnt_locate = No se pudo localizar {0}\r
-label.url_not_found = URL no encontrada\r
-label.no_link_selected = Enlace no seleccionado\r
-label.new_sequence_url_link = Enlace a una nueva secuencia URL\r
-label.cannot_edit_annotations_in_wrapped_view = No se pueden editar anotaciones en vista envolvente\r
-label.wrapped_view_no_edit = Vista envolvente - no editar\r
-label.error_retrieving_data = Error en la recuperación de datos\r
-label.user_colour_scheme_must_have_name = El esquema de colores del usuario debe tener un nombre\r
-label.no_name_colour_scheme = No hay nombre para el esquema de colores \r
-label.invalid_url = URL Invalido!\r
-label.error_loading_file = Error al cargar el fichero\r
-label.problems_opening_file = Encontrados problemas al abrir el fichero {0}!!\r
-label.file_open_error = Error al abrir el fichero\r
-label.no_das_sources_selected_warn = No han sido seleccionadas fuentes DAS.\\nPor favor, seleccione algunas fuentes y\\npruebe de nuevo.\r
-label.no_das_sources_selected_title = No han sido seleccionadas fuentes DAS\r
-label.colour_scheme_exists_overwrite = El esquema de colores {0} ya existe.\\nContinuar guardando el esquema de colores como {1}?"\r
-label.duplicate_scheme_name = Duplicar nombre de esquema\r
-label.jalview_new_questionnaire = Hay un nuevo cuestionario disponible. Querr\u00EDa completarlo ahora ?\\n\r
-label.jalview_user_survey = Encuesta de usuario Jalview \r
-label.alignment_properties = Propiedades del alineamiento: {0}\r
-label.alignment_props = Propiedades del alineamiento\r
-label.input_cut_paste = Cortar y pegar la entrada\r
-label.input_cut_paste_params = Cortar y pegar la entrada - {0}\r
-label.alignment_output_command = Alineamiento de salida - {0}\r
-label.annotations = Anotaciones\r
-label.features = Funciones\r
-label.overview_params = Visión general {0}\r
-label.paste_newick_file = Pegar nuevo fichero Newick\r
-label.load_tree_from_file = desde fichero - \r
-label.colour_by_annotation = Color por anotación\r
-label.selection_output_command = Seleccionar salida - {0}\r
-label.annotation_for_displayid = <p><h2>Anotación para {0} </h2></p><p>\r
-label.pdb_sequence_mapping = PDB - Mapeado de secuencia\r
-label.pca_details = detalles de la PCA\r
-label.redundancy_threshold_selection = Selección del umbral de redundancia\r
-label.user_defined_colours = Colores definidos del usuario\r
-label.jalviewLite_release = JalviewLite - versión {0}\r
-label.jaview_build_date = Fecha de creación: {0}\r
-label.jalview_authors_1 = Authors: Jim Procter, Andrew Waterhouse, Jan Engelhardt, Lauren Lui,\r
-label.jalview_authors_2 = Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.\r
-label.jalview_dev_managers = Desarrollo gestionado por The Barton Group, University of Dundee, Scotland, UK.\r
-label.jalview_distribution_lists = Para ayuda, ver el FAQ at www.jalview.org y/o adjuntar la lista de envío jalview-discuss@jalview.org\r
-label.jalview_please_cite = Si usa Jalview incluya la siguiente cita, por favor:\r
-label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)\r
-label.jalview_cite_1_title = Jalview Version 2 - un editor de alineamiento múltiple de secuencias y banco de trabajo de análisis\r
-label.jalview_cite_1_ref = Bioinformaticos doi: 10.1093/bioinformatics/btp033\r
-label.right_click = clic en el botón derecho\r
-label.to_add_annotation = para añadir anotación\r
-label.alignment_has_no_annotations = El alineamiento no tiene anotaciones\r
-label.retrieving_pdb_data = Recuperación de datos PDB...\r
-label.label = Etiqueta\r
-label.no_features_added_to_this_alignment = No hay funciones asociadas a este alineamiento!!\r
-label.features_can_be_added_from_searches_1 = (Las funciones pueden ser añadidas de búsquedas o\r
-label.features_can_be_added_from_searches_2 = de ficheros de funciones Jalview / GFF)\r
-label.calculating_pca= Calculando PCA\r
-label.reveal_columns = Mostrar Columnas\r
-label.jalview_cannot_open_file = Jalview no puede abrir el fichero\r
-label.jalview_applet = Aplicación Jalview \r
-label.loading_data = Cargando datos\r
-label.memory_stats = Memoria libre total: {0} MB; Memoria máxima: {1} MB; {2} %\r
-label.calculating_tree = Calculando árbol\r
-label.state_queueing = En cola \r
-label.state_running = Procesando\r
-label.state_complete = Completar\r
-label.state_completed = Finalizado\r
-label.state_job_cancelled = ¡Trabajo cancelado!\r
-label.state_job_error = Error del trabajo!\r
-label.server_error_try_later = ¡Error del servidor! (Intentar más tarde)\r
-label.error_loading_pdb_data = ¡Error cargando los datos PDB!\r
-label.fetching_pdb_data = Buscando los datos PDB...\r
-label.structure_type = Estructura_tipo\r
-label.settings_for_type = Ajustes para {0}\r
-label.view_full_application = Ver en la aplicación completa \r
-label.load_associated_tree = Cargar árbol asociado ...\r
-label.load_features_annotations = Cargar características/anotaciones ...\r
-label.export_features = Exportar características...\r
-label.export_annotations = Exportar anotaciones ...\r
-label.jalview_copy = Copiar (sólo Jalview)\r
-label.jalview_cut = Cortar (sólo Jalview)\r
-label.to_upper_case = Pasar a mayúsculas\r
-label.to_lower_case = Pasar a minúsculas\r
-label.toggle_case = Alternar mayúsculas y minúsculas\r
-label.edit_name_description = Editar nombre/descripción\r
-label.create_sequence_feature = Crear función de secuencia\r
-label.edit_sequence = Editar secuencia\r
-label.edit_sequences = Editar secuencias\r
-label.sequence_details = Detalles de la secuencia\r
-label.jmol_help = Ayuda de Jmol \r
-label.all = Todo\r
-label.sort_by = Ordenar por\r
-label.sort_by_score = Ordenar por puntuación\r
-label.sort_by_density = Ordenar por densidad\r
-label.sequence_sort_by_density = Ordenar las secuencias por densidad\r
-label.reveal = Revelar\r
-label.hide_columns = Ocultar columnas\r
-label.load_jalview_annotations = Cargar un fichero de anotación de Jalivew o un fichero de características\r
-label.load_tree_file = Cargar un fichero de árbol\r
-label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences = Recuperar y parsear un registro de secuencia de base de datos para el alineamiento o secuencias actualmente seleccionados\r
-label.standard_databases = Bases de datos estándar\r
-label.fetch_embl_uniprot = Recuperar de EMBL/EMBLCDS o Uniprot/PDB y de cualquier fuente DAS seleccionada\r
-label.reset_min_max_colours_to_defaults = Reiniciar los colores min y max colours a los valores por defecto establecidos en las preferencias de usuario\r
-label.align_structures_using_linked_alignment_views = Alinear las estructuras utlizando las {0} vistas de alineamiento enlazadas\r
-label.connect_to_session = Conectar a la sesión {0}\r
-label.threshold_feature_display_by_score = Filtrar la característica mostrada por puntuación.\r
-label.threshold_feature_no_thereshold = Sin umbral\r
-label.threshold_feature_above_thereshold = Por encima del umbral\r
-label.threshold_feature_below_thereshold = Por debajo del umbral\r
-label.adjust_thereshold = Ajustar umbral\r
-label.toggle_absolute_relative_display_threshold = Cambiar entre mostrar el umbral absoluto y el relativo.\r
-label.display_features_same_type_different_label_using_different_colour = Mostrar las características del mismo tipo con una etiqueta diferente y empleando un color distinto (p.e. características del dominio)\r
-label.select_colour_minimum_value = Seleccionar el color para el valor mínimo\r
-label.select_colour_maximum_value = Seleccionar el color para el valor máximo\r
-label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista Jmol con todas las estructuras asociadas con la selección acxtual y superponer las utilizando el alineamiento.\r
-label.open_url_param = Abrir URL {0}\r
-label.open_url_seqs_param = Abrir URL ({0}..) ({1} secuencias)\r
-label.load_pdb_file_associate_with_sequence = Cargar un fichero PDB y asociarlo con la secuencia {0}\r
-label.reveal_hidden_columns = Revelar las columnas ocultas con el botón derecho del ratón\r
-label.dark_colour = Oscurecer color\r
-label.light_colour = Aclarar color\r
-label.highlightnode = Pulse el botón izquierdo para seleccionar las hojas.<br>Haga doble clic para invertir las hojas.<br>Pulse el botón derecho para cambiar el color.\r
-label.load_colour_scheme = Cargar esquema cromático\r
-label.toggle_enabled_views = Cuando está habilitado, permite que se seleccionen varias vistas.\r
-label.edit_notes_parameter_set = Haga clic para editar las notas de este conjunto de parámetros.\r
-label.open_local_file = Abrir fichero local\r
-label.enable_automatically_sort_alignment_when_open_new_tree = Habilite esta opción para ordenar automáticamente<br>el alineamiento cuando abra<br> un nuevo árbol.\r
-label.listen_for_selections = Atención a las selecciones\r
-label.selections_mirror_selections_made_same_sequences_other_views = Cuando está habilitado, las selecciones de esta vista serán un reflejo<br>de las selecciones realizadas en las mismas secuencias de otras vistas.\r
-label.toggle_sequence_visibility = Shift+H cambia la visibilidad de la secuencia\r
-label.toggle_columns_visibility = Ctrl+H cambia la visibilidad de la columna\r
-label.toggles_visibility_hidden_selected_regions = H cambiar la visibilidad de las regiones ocultas o seleccionadas\r
-label.rename_tab_eXpand_reGroup= Haga clic en el botón derecho para renombrar la pestaña<br>Presione X para expandir las tablas y G para reagrupar.\r
-label.right_align_sequence_id = Alinear a la derecha el ID de la secuencia\r
-label.sequence_id_tooltip = Ayuda del ID de la secuencia\r
-label.no_services = <Sin Servicios>\r
-label.select_copy_raw_html = Seleccione esta opción si desea copiar el html en bruto\r
-label.share_data_vamsas_applications = Compartir datos con otras aplicaciones vamsas\r
-label.connect_to = Conectar a\r
-label.join_existing_vamsas_session = Unirse a una sesión vamsas existente\r
-label.from_url = desde una URL\r
-label.any_trees_calculated_or_loaded_alignment_automatically_sort = Cuando está habilitado, cualquier árbol calculado o cargado en el alineamiento lo ordenará\r
-label.sort_with_new_tree = Ordenar con el nuevo árbol\r
-label.from_textbox = desde un área de texto\r
-label.window = Ventana\r
-label.preferences = Preferencias\r
-label.tools = Herramientas\r
-label.fetch_sequences = Recuperar secuencia(s)\r
-label.stop_vamsas_session = Parar sesión vamsas\r
-label.collect_garbage = Recolector de basura\r
-label.show_memory_usage = Mostrar uso de memoria\r
-label.show_java_console = Mostrar consola de Java\r
-label.show_jalview_news = Mostrar las noticias de Jalview\r
-label.take_snapshot = Tomar captura\r
-label.monospaced_fonts_faster_to_render = Las fuentes monoespaciadas son más rápidas de pintar\r
-label.anti_alias_fonts = Fuentes anti-alias (más lentas de pintar)\r
-label.monospaced_font= Monoespaciadas\r
-label.quality = Calidad\r
-label.maximize_window = Maximizar ventana\r
-label.conservation = Conservación\r
-label.consensus = Consenso\r
-label.histogram = Histograma\r
-label.logo = Logo\r
-label.non_positional_features = Características no posicionales\r
-label.database_references = Referencias a base de datos\r
-label.share_selection_across_views = Compartir la selección en todas las vistas\r
-label.scroll_highlighted_regions = Desplazarse hasta las regiones resaltadas\r
-label.gap_symbol = Símbolo del hueco\r
-label.alignment_colour = Color del alineamiento\r
-label.address = Dirección\r
-label.port = Puerto\r
-label.default_browser_unix = Navegador por defecto (Unix)\r
-label.send_usage_statistics = Enviar estadísticas de uso\r
-label.check_for_questionnaires = Comprobar los cuestionarios\r
-label.check_for_latest_version = Comprobar la última versión\r
-label.url_linkfrom_sequence_id = URL del enlace del ID de la secuencia\r
-label.use_proxy_server = Utilizar un servidor proxy\r
-label.eps_rendering_style = Estilo de visualización EPS\r
-label.append_start_end = Añadir /inicio-fin (/15-380)\r
-label.full_sequence_id = ID de la secuencia completo\r
-label.smooth_font = Fuente alargada\r
-label.autocalculate_consensus = Autocalcular consenso\r
-label.pad_gaps = Rellenar huecos\r
-label.pad_gaps_when_editing = Rellenar huecos al editar\r
-label.automatically_set_id_width = Establecer automáticamente al anchura del ID\r
-label.figure_id_column_width = Anchura de la columna del ID de la Figura\r
-label.use_modeller_output = Utilizar la salidad del Modeller\r
-label.wrap_alignment = Envolver alineamiento\r
-label.right_align_ids = Alinear IDs a la derecha\r
-label.sequence_name_italics = Nombre de la secuencia en cursiva\r
-label.open_overview = Abrir resumen\r
-label.default_colour_scheme_for_alignment = Esquema cromático por defecto para el alineamiento\r
-label.annotation_shading_default = Sombreado por defecto de la anotación\r
-label.default_minimum_colour_annotation_shading = Por mínimo por defecto para el sombreado de la anotación\r
-label.default_maximum_colour_annotation_shading = Por máximo por defecto para el sombreado de la anotación\r
-label.visual = Visual\r
-label.connections = Conexiones\r
-label.output = Salida\r
-label.editing = Edición\r
-label.das_settings = Configuración DAS\r
-label.web_services = Servicios web\r
-label.right_click_to_edit_currently_selected_parameter = Haga clic en el botón derecho para editar el parámetro seleccionado actualmente.\r
-label.let_jmol_manage_structure_colours = Permitir que Jmol gestione la estructuras cromáticas\r
-label.marks_leaves_tree_not_associated_with_sequence = Marcar las hojas del árbol que no están asociadas a una secuencia\r
-label.index_web_services_menu_by_host_site = Indizar los servicios web en el menú por el host que los aloja\r
-label.option_want_informed_web_service_URL_cannot_be_accessed_jalview_when_starts_up = Marque esta opción si desea ser informado<br>cuando no se pueda acceder a la URL de un servicio web<br>al arrancar Jalview.\r
-label.new_service_url = Nueva URL del servicio\r
-label.edit_service_url = Editar la URL del servicio\r
-label.delete_service_url = Borrar la URL del servicio\r
-label.details = Detalles\r
-label.options = Opciones\r
-label.parameters = Paramétros\r
-label.available_das_sources = Fuentes DAS disponibles\r
-label.full_details = Detalles completos\r
-label.authority = Autoridad\r
-label.type = Tipo\r
-label.proxy_server = Servidor proxy\r
-label.file_output = Fichero de salida\r
-label.select_input_type = Seleccionar el tipo de entrada\r
-label.set_options_for_type = Establecer opciones para el tipo\r
-label.data_input_parameters = Datos de los parámetros de entrada\r
-label.data_returned_by_service = Datos devueltos por el servicio\r
-label.rsbs_encoded_service = Servicio RSBS codificado\r
-label.parsing_errors = Errores de parseo\r
-label.simple_bioinformatics_rest_services = Simple Bioinformatics Rest Services\r
-label.web_service_discovery_urls = URL de descubrimiento de servicios web\r
-label.input_parameter_name = Nombre del parámetro de entrada\r
-label.short_descriptive_name_for_service = Nombre corto descriptivo del servicio\r
-label.function_service_performs = Tipo de función que realiza el servicio (p.e. alineamiento, análisis, búsqueda, etc).\r
-label.brief_description_service = Descripción breve del servicio\r
-label.url_post_data_service = URL a la que enviar los datos del servicio. Incluya cualquier parámetro especial que se necesite aquí\r
-label.optional_suffix = Sufijo opcional añadido a la URL al recuperar los resultados del servicio\r
-label.preferred_gap_character = ¿Qué caracter para el hueco prefiere el servicio?\r
-label.gap_character = Carácter para hueco\r
-label.move_return_type_up_order= Mover el tipo de returno hacia arriba en el orden\r
-label.move_return_type_down_order= Mover el tipo de returno hacia abajo en el orden\r
-label.update_user_parameter_set = Actualizar el conjunto de parámetros de usuario existente\r
-label.delete_user_parameter_set = Borrar el conjunto de parámetros de usuario existente\r
-label.create_user_parameter_set = Crear un nuevo conjunto de parámetro con la configuración actual.\r
-label.revert_changes_user_parameter_set = Deshacer todos los cambios en el conjunto de parámetros actual\r
-label.start_job_current_settings = Arrancar trabajo con la configuración actual\r
-label.cancel_job_close_dialog = Cerrar este diálogo y cancelar el trabajo\r
-label.input_output = Entrada/Salida\r
-label.cut_paste = Cortar y pegar\r
-label.adjusting_parameters_for_calculation = Ajustar los parámetros para el cálculo existente\r
-label.2d_rna_structure_line = 2D RNA {0}\r
-label.2d_rna_sequence_name = 2D RNA - {0}\r
-label.edit_name_and_description_current_group = Editar el nombre y la descripción del grupo actual.\r
-label.view_structure_for = Visualizar la estructura para {0}\r
-label.view_all_structures = Visualizar todas las {0} estructuras.\r
-label.view_all_representative_structures = Visualizar todas las {0} estructuras representativas.\r
-label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista de Jmol con todas las estructuras representativas\nasociadas con la selecci\u00F3n actual\nsuperpuesta con el alineamiento actual.\r
-label.associate_structure_with_sequence = Asociar estructura con la secuencia\r
-label.from_file = desde fichero\r
-label.enter_pdb_id = Introducir PDB Id\r
-label.discover_pdb_ids = Buscar PDB ids\r
-label.text_colour = Color del texto\r
-label.structure = Estructura\r
-label.view_structure = Visualizar estructura\r
-label.clustalx_colours = Colores de Clustalx\r
-label.above_identity_percentage = Sobre % identidad\r
-label.create_sequence_details_report_annotation_for = Anotación para {0}\r
-label.sequece_details_for = Detalles de la secuencia para {0}\r
-label.sequence_name = Nombre de la secuencia\r
-label.sequence_description = Descripción de la secuencia\r
-label.edit_sequence_name_description = Editar el nombre/descripción de la secuencia\r
-label.spaces_converted_to_backslashes = Los espacios se han convertido en _\r
-label.no_spaces_allowed_sequence_name = No se permiten espacios en el nombre de la secuencia\r
-label.select_outline_colour = Seleccionar el color del límite\r
-label.web_browser_not_found_unix = Unixers\: No es posible encontrar el navegador web por defecto.\nA\u00F1ada la ruta completa de su navegador en la pesta\u00F1a de Preferencias.\r
-label.web_browser_not_found = No se encuentra el navegador web\r
-label.select_pdb_file_for = Seleccione un fichero PDB para {0}\r
-label.html = HTML\r
-label.wrap = Envolver\r
-label.show_database_refs = Mostrar las referencias en base de datos\r
-label.show_non_positional_features = Mostrar las características no posicionales\r
-label.save_png_image = Guardar como imagen PNG\r
-label.load_tree_for_sequence_set = Cargar un árbol para este conjunto de secuencias\r
-label.export_image = Exportar imagen\r
-label.vamsas_store = Almacén VAMSAS\r
-label.translate_cDNA = Traducir cDNA\r
-label.extract_scores = Extraer puntuaciones\r
-label.get_cross_refs = Obtener referencias cruzadas\r
-label.sort_alignment_new_tree = Alinear el alineamiento con el nuevo árbol\r
-label.add_sequences = Añadir secuencias\r
-label.new_window = Nueva ventana\r
-label.refresh_available_sources = Refrescar las fuentes disponibles\r
-label.use_registry = Utilizar el registro\r
-label.add_local_source = Añadir fuente local\r
-label.set_as_default = Establecer por defecto\r
-label.show_labels = Mostrar etiquetas\r
-label.background_colour = Color de fondo\r
-label.associate_nodes_with = Asociar nodos con\r
-label.jalview_pca_calculation = Cálculo del PCA por Jalview\r
-label.link_name = Nombre del enalce\r
-label.pdb_file = Fichero PDB\r
-label.colour_with_jmol = Colorear con Jmol\r
-label.align_structures = Alinear estructuras\r
-label.jmol = Jmol\r
-label.sort_alignment_by_tree = Ordenar alineamiento por árbol\r
-label.mark_unlinked_leaves = Marcar las hojas como no enlazadas\r
-label.associate_leaves_with = Asociar hojas con\r
-label.save_colour_scheme_with_unique_name_added_to_colour_menu = Guarde el esquema cromáticos con un nombre único y se añadirá al menú de colores\r
-label.case_sensitive = Sensible a mayúsculas\r
-label.lower_case_colour = Color para las minúsculas\r
-label.index_by_host = Indizar por host\r
-label.index_by_type = Indizar por tipo\r
-label.enable_jabaws_services = Habilitar servicios JABAWS\r
-label.display_warnings = Mostrar advertencias\r
-label.move_url_up = Mover la URL hacia arriba\r
-label.move_url_down = Mover la URL hacia abajo\r
-label.add_sbrs_definition = Añadir una definición SBRS \r
-label.edit_sbrs_definition = Editar una definición SBRS \r
-label.delete_sbrs_definition = Borrar una definición SBRS \r
-label.your_sequences_have_been_verified = Sus secuencias has sido verificadas en una base de datos de secuencias conocidas. Algunos de sus ID se han alterado y\n, probablemente, el residuo de inicio/fin se haya actualizado.\nGuarde su alineamiento para mantener el ID actualizado.\n\n \r
-label.sequence_names_updated = Nombres de secuencia actualizados\r
-label.dbref_search_completed = Búsqueda de DBRef terminada\r
-label.show_all_chains = Mostrar todas las cadenas\r
-label.fetch_all_param = Recuperar todas {0}\r
-label.paste_new_window = Pegar en una nueva ventana\r
-label.settings_for_param = Configuración para {0}\r
-label.view_params = Visualizar {0}\r
-label.select_all_views = Seleccionar todas las vistas\r
-label.align_sequences_to_existing_alignment = Alinear las secuencias con el alineamiento existente\r
-label.realign_with_params = Realinear con {0}\r
-label.calcname_with_default_settings = {0} por defecto\r
-label.action_with_default_settings = {0} con la configuración por defecto\r
-label.edit_settings_and_run = Editar la configuración y ejecutar...\r
-label.view_and_change_parameters_before_alignment = Ver y cambiar los parámetros antes del alineamiento\r
-label.run_with_preset_params = Ejecutar {0} con preconfiguración\r
-label.view_and_change_parameters_before_running_calculation = Ver y cambiar los parámetros antes de lanzar el cálculo\r
-label.view_documentation = Ver documentación\r
-label.select_return_type = Seleccionar el tipo de retorno\r
-label.translation_of_params = Traducción de {0}\r
-label.features_for_params = Características de - {0}\r
-label.annotations_for_params = Anotaciones de - {0}\r
-label.generating_features_for_params = Generando características de - {0}\r
-label.generating_annotations_for_params = Generando anotaciones de - {0}\r
-label.varna_params = VARNA - {0}\r
-label.sequence_feature_settings = Configuración de las características de la secuencia\r
-label.pairwise_aligned_sequences = Secuencias alineadas a pares\r
-label.original_data_for_params = Datos originales de {0}\r
-label.points_for_params = Puntos de {0}\r
-label.transformed_points_for_params = Puntos transformados de {0}\r
-label.graduated_color_for_params = Color graduado para la característica de {0}\r
-label.select_backgroud_colour = Seleccionar color de fondo\r
-label.invalid_font = Fuente no válida\r
-label.separate_multiple_accession_ids = Separar los accession id con un punto y coma ";"\r
-label.replace_commas_semicolons = Cambiar comas por puntos y comas\r
-label.parsing_failed_syntax_errors_shown_below_param = Parseo erróneo. A continuación, se muestras los errores de sintaxis {0}\r
-label.parsing_failed_unrecoverable_exception_thrown_param = \nParseo err\u00F3neo. Se ha lanzado una excepci\u00F3n fatal\:\n {0}\r
-label.example_query_param = Consulta de ejemplo: {0}\r
-label.enter_value_increase_conservation_visibility = Introduzca un valor para incrementar la visibilidad de la conservación\r
-label.enter_percentage_identity_above_which_colour_residues = Introduza un % de identidad por encima del cual se colorearán los residuos\r
-label.wswublast_client_credits = Para mostrar las caracter\u00EDsticas de una secuencia, debe indicarse un id de Uniprot cuya secuencia se corresponda al 100 % con la introducida.\nPara mostrar estas caracter\u00EDsticas, prueba a cambar los nombre de sus secuencia con los ID que se sugieren a continuaci\u00F3n.\n\nRunning WSWUBlast at EBI.\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R.\nSOAP-based services provided by the European Bioinformatics Institute.\nNucleic Acids Res. 33(1)\:W25-W28 (2005));\r
-label.blasting_for_unidentified_sequence = Ejecutar BLAST para la secuencias sin identificar\r
-label.select_columns_containing = Seleccione las columnas que contengan\r
-label.select_columns_not_containing = Seleccione las columnas que no contengan\r
-option.trim_retrieved_seqs = Ajustar las secuencias recuperadas\r
-label.trim_retrieved_sequences = Cuando la secuencia de referencia es más larga que la secuencia con la que está trabajando, sólo se mantienen las subsecuencias relevantes.\r
-label.use_sequence_id_1 = Utilice $SEQUENCE_ID$ o $SEQUENCE_ID=/<regex>/=$\r
-label.use_sequence_id_2 = \nto para embeber el id de la secuencia en una URL\r
-label.ws_parameters_for = Parámetros para {0}\r
-label.switch_server = Cambiar servidor\r
-label.open_jabaws_web_page = Abra el página principal del servidor JABAWS en un navegador web\r
-label.choose_jabaws_server = Escoja un servidor para ejecutar este servicio\r
-label.services_at = Servicios en {0}\r
-label.rest_client_submit = {0} utilizando {1}\r
-label.fetch_retrieve_from =Recuperar de {0}</html>\r
-label.fetch_retrieve_from_all_sources = Recuperar de todas las fuentes {0} en {1}<br>La primera es :{2}<html> \r
-label.feature_settings_click_drag = <html>Haga clic o arrastre los tipos de las características hacia arriba o hacia abajo para cambiar el orden de visualización.<br/>Haga doble clic para seleccionar las columnas que contienen las características del alineamiento/selección actual.<br/>Presionando Alt seleccionará las columnas exteriores a las características en lugar de las interiores<br/>Presione Shift para modificar la selección actual (en lugar de borrarla)<br/>Presione CTRL o Command/Meta para cambiar las columans externas o internas a las características<br/></html>\r
-label.opt_and_params_further_details = ver los detalles adicionales haciendo clic en el botón derecho\r
-label.opt_and_params_show_brief_desc_image_link = <html>Haga clic para ver una descripción breve<br><img src="{0}"/>Haga clic en el botón derecho para obtener información adicional.</html> \r
-label.opt_and_params_show_brief_desc = <html>Haga clic para ver una descripción breve<br></html>\r
-label.adjusts_width_generated_eps_png = <html>Ajusta la anchura del fichero EPS o PNG generado para asegurar incluso que el ID de la secuencia más larga o las etiquetas de anotación se muestran</html>\r
-label.manually_specify_width_left_column = <html>Especificar manualmente la anchura de la columna izquierda en las etiquetas de los ID de la secuencia y las anotaciones se mostrar en las figuras del alineamiento exportado.Esta configuraicón se ignorará si está marcada la opción 'Establecer automáticamente al anchura del ID'</html>\r
-label.job_created_when_checked = <html>Cuando está habilitado, se crea un trabajo para cada secuencia de la selección actual</html>\r
-label.when_checked_job_visible_region_and_results = <html>Cuando está habilitado, se crea un único trabajo para la región visible y los resultados de mapean en su ubicación dentro del alineamiento. En caso contrario, se creará un trabajo para cada región visible y contigua en el alineamiento o selección actual (p.e. un alineamiento múlitple).</html>\r
-label.flat_file_representation = <html>La representación del fichero plano de este servicio utilizando el formalismo Really Simple Bioinformatics Service</html>\r
-label.result_of_parsing_rsbs = <html>Resultados de parsear la representación RSBS</html>\r
-label.user_preset = Preselección de usuario\r
-label.service_preset = Preselección del servicio\r
-label.run_with_preset = Ejecutar {0} con preselección\r
-label.view_service_doc_url = <html>Visualizar <a href="{0}">{1}</a></html>\r
-label.submit_sequence = <html>Enviar {0} {1} {2} {3} a<br/>{4}</html>\r
-action.by_title_param = por {0}\r
-label.alignment = Alineamiento\r
-label.secondary_structure_prediction = Predicción de la estructura secundaria\r
-label.sequence_database_search = Búsqueda en base de datos de secuencias\r
-label.analysis = Análisis\r
-label.protein_disorder = Desorden en la proteína \r
-label.source_from_db_source = Fuentes de {0}\r
-label.from_msname = de {0}\r
-label.superpose_with = Superponer con...\r
-action.do = Hacer\r
-label.scale_label_to_column = Ajustar la etiqueta a la columna\r
-label.add_new_row = Añadir nuevo fila\r
-label.edit_label_description = Editar etiqueta/descripción\r
-label.hide_row = Ocultar esta fila\r
-label.delete_row = Borrar esta fila\r
-label.show_all_hidden_rows = Mostrar todas las filas ocultas\r
-label.export_annotation = Exportar anotación\r
-label.copy_consensus_sequence = Copiar secuencia de consenso\r
-label.helix = Hélice\r
-label.sheet = Hoja\r
-label.rna_helix = Hélice de ARN\r
-label.remove_annotation = Borrar anotación\r
-label.colour_by = Colorear por...\r
-label.muscle_multiple_protein_sequence_alignment = Alineamiento múltiple de secuencias de proteínas con Muscle\r
-label.mafft_multiple_sequence_alignment = Alineamiento múltiple de secuencias con MAFFT\r
-label.clustalw_multiple_sequence_alignment = Alineamiento múltiple de secuencias con ClustalW\r
-label.jnet_secondary_structure_prediction = Predicción de la estructura secundaria con JNet\r
-label.multiharmony = Multi-Harmony\r
-label.unable_start_web_service_analysis = No es posible iniciar el servicio web de análisis\r
-label.job_couldnt_be_started_check_input = El trabajo no puede arrancarse. Por favor, compruebe los parámetros de entrada y los mensajes de advertencia de la consola de Jalview.\r
-label.prompt_each_time = Preguntar siempre\r
-label.use_source = Fuente\r
-label.couldnt_save_project = No es posible guardar el proyecto\r
-label.error_whilst_saving_current_state_to = Error mientras se guardaba el estado a {0}\r
-label.error_whilst_loading_project_from = Error cargando el proyecto desde {0}\r
-label.couldnt_load_project = No es posible cargar el proyecto\r
-label.pca_sequences_not_aligned = Las secuencias deben estar alineadas antes de calcular el PCA.\nPruebe a utilizar la funci\u00F3n de rellenar huecos en el men\u00FA Editar,\no cualquiera de los servicios web de alineamiento m\u00FAltiple.\r
-label.invalid_name_preset_exists = Nombre no válido - esta preconfiguración ya existe.\r
-label.invalid_name = Nombre no válido\r
-label.set_proxy_settings = Por favor, configure su proxy en la pestaña 'Conexiones' de la ventana de Preferencia\r
-label.proxy_authorization_failed = Autorización del proxy fallida\r
-label.internal_jalview_error = Error interno de Jalview\r
-label.secondary_structure_prediction_service_couldnt_be_located = No se ha podido encontrar el Servicio de Predicciónd de la Estructura Secudaria {0} en {1}.\r
-label.service_called_is_not_msa_service = El Servicio llamado \n{0}\nno es un \nServicio de Alineamiento M\u00FAltiple de Secuencias\!\r
-label.msa_service_is_unknown = El Servicio de Alineamiento Múltiple llamado {0} es desconocido\r
-label.service_called_is_not_seq_search_service = El Servicio llamando \n{0}\nno es un \nServicio de B\u00FAsqueda de Secuencias\!\r
-label.seq_search_service_is_unknown = El Servicio de Búsqueda de Sencuencias llamado {0} es desconocido\r
-label.feature_type = Tipo de característisca\r
-label.display = Representación\r
-label.service_url = URL del servicio\r
-label.copied_sequences = Secuencias copiadas\r
-label.cut_sequences = Cortar secuencias\r
-label.conservation_colour_increment = Incremento de Conservación del Color ({0})\r
-label.percentage_identity_thereshold = Umbral del Porcentaje de Identidad ({0})\r
-label.error_unsupported_owwner_user_colour_scheme = Propietario no soportado para el diálogo del Esquema Cromático del Usuario\r
-label.save_alignment_to_file = Guardar Alineamiento en fichero\r
-label.save_features_to_file = Guardar Características en un fichero\r
-label.save_annotation_to_file = Guardar Anotación en un fichero\r
-label.no_features_on_alignment = No se han encontrado características en el alineamiento\r
-label.save_pdb_file = Guardar fichero PDB \r
-label.save_text_to_file = Guardar Texto en un fichero\r
-label.save_state = Guardar estado\r
-label.restore_state = Restaurar estado\r
-label.saving_jalview_project = Guardando el proyecto de Jalview {0}\r
-label.loading_jalview_project = Cargando el proyecto de Jalview {0}\r
-label.save_vamsas_document_archive = Guardar el archivo de documento Vamsas\r
-label.saving_vamsas_doc = Guardando el documento VAMSAS en {0}\r
-label.load_feature_colours = Cargar colores de características\r
-label.save_feature_colours = Guardar esquema cromático de características\r
-label.dataset_for = {0} conjunto de datos para {1}\r
-label.select_startup_file = Seleccionar fichero de arranque\r
-label.select_default_browser = Seleccionar navegador web por defecto\r
-label.save_tree_as_newick = Guardar árbol como fichero newick\r
-label.create_eps_from_tree = Crear un fichero EPS a partir de un árbol\r
-label.create_png_from_tree = Crear una imagen PNG a partir de un árbol\r
-label.save_colour_scheme = Guardar esquema cromático\r
-label.edit_params_for = Editar los parámetros de {0}\r
-label.choose_filename_for_param_file = Escoja un nombre de fichero para este fichero de parámetros\r
-label.save_as_html = Guardar como HTML\r
-label.recently_opened = Abiertos recientemente\r
-label.blasting_for_unidentified_sequence_jobs_running = Ejecutando BLAST de las secuencias no indentificadas - {0} trabajos en marcha.\r
-label.tree_from = Árbol de {0}\r
-label.webservice_job_title = {0} usando {1}\r
-label.select_visible_region_of = seleccionada {0} región de {1}\r
-label.visible = Visible\r
-label.select_unselect_visible_regions_from = seleccionada y deseleccionadas {0} regiones de {1}\r
-label.visible_region_of = región visible de\r
-label.webservice_job_title_on = {0} usando {1} de {2}\r
-label.updating_vamsas_session = Actualizando sesión VAMSAS\r
-label.loading_file = Cargando fichero: {0}\r
-label.edit_params = Editar {0}\r
-error.not_implemented = No implementado\r
-error.no_such_method_as_clone1_for = No existe ese método como un clone1 de {0}\r
-error.null_from_clone1 = Nulo de clone1!\r
-error.implementation_error_sortbyfeature = Error de implementación - sortByFeature debe ser uno de FEATURE_SCORE, FEATURE_LABEL o FEATURE_DENSITY.\r
-error.not_yet_implemented = No se ha implementado todavía\r
-error.unknown_type_dna_or_pep = Tipo desconocido {0} - dna o pep son los únicos valores permitidos\r
-error.implementation_error_dont_know_thereshold_annotationcolourgradient = Error de implementación: no se conoce el valor umbral para el AnnotationColourGradient actual.\r
-error.implementation_error_embeddedpopup_not_null = Error de implementación - embeddedPopup debe ser no nulo.\r
-error.invalid_colour_for_mycheckbox = Color no válido para MyCheckBox\r
-error.implementation_error_unrecognised_render_object_for_features_type = Error de implementación: no se reconoce el objeto de representación {0} para las características de tipo {1}\r
-error.implementation_error_unsupported_feature_colour_object = Error de implementación: objeto de color de características no soportado.\r
-error.invalid_separator_parameter = Separador de parámetros no válido - debe tener longitud mayor que cero\r
-error.alignment_cigararray_not_implemented = Alignment(CigarArray) no se ha implementado todavía\r
-error.weak_sequencei_equivalence_not_yet_implemented = Equivalencia débil sequenceI no se ha implementado todavía.\r
-error.implementation_error_can_only_make_alignmnet_from_cigararray = Error de implementación - sólo se puede construir un vista de alineamiento a partir de una CigarArray de secuencias.\r
-error.empty_view_cannot_be_updated = una vista vacía no se puede actualizar.\r
-error.mismatch_between_number_of_sequences_in_block = No hay coincidencia entre el número de secuencias en el bloque {0} ({1}) y la vista original ({2})\r
-error.padding_not_yet_implemented = El relleno no se ha implementado todavía\r
-error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view = No hay coincidencia entre los bloques visibles para actualizar y el número de contigs en la vista (contigs=0,blocks={0})\r
-error.unknown_seq_cigar_operation = Operación SeqCigar {0} desconocida\r
-error.implementation_bug_parse_cigar_string = Bug de implementación en parseCigarString\r
-error.implementation_error_invalid_operation_string = Error de implementación. Cadena de operación no válida.\r
-error.invalid_range_string = Rango de la cadena no válido (debe ser cero o un número positivo)\r
-error.implementation_error_delete_range_out_of_bounds = Error de implementación: deleteRange fuera de rango: el comienzo debe ser cero o positivo y menor que el final.\r
-error.implementation_error = Error de implementación\r
-error.implementation_error_unknown_operation = ¡Error de implementación! Operación desconocida {0}\r
-error.implementation_error_unexpected_null_from_get_sequence_and_deletions = Error de implementación - valor nulo no esperado en getSequenceAndDeletions\r
-error.implementation_error_set_seq_null = Error de implementación - _setSeq(null,...)\r
-error.implementation_error_s = Error de implementación: _s= {0}\r
-error.implementation_error_seqcigar_possible = SeqCigar: posible error de implementación: la secuencia es más larga de el conjunto de datos de la secuencia\r
-error.implmentation_bug_seq_null = Bug de implementación. Seq nula\r
-error.implementation_bug_cigar_operation_list_range_list = Bug de implementación: Cigar Operation list!= range list\r
-error.not_yet_implemented_cigar_object_from_cigar_string = No implementado todavía: construcción de un objeto Cigar desde una cadena y una secuencia con huecos.\r
-error.implementation_bug_cigar_operation = Bug de implementación. La operación Cigar {0} {1} no es ni {2}, ni {3} ni {4}.\r
-error.implementation_error_for_new_cigar = Error de implementación en new Cigar(SequenceI)\r
-error.implementation_error_cigar_seq_no_operations = Error de implementación: la {0}a secuencia Cigar no tiene operaciones.\r
-error.implementation_error_jmol_getting_data = Error de implementación - Jmol parece estar todavía intentando recuperar sus datos - informe de ello en http://issues.jalview.org/browse/JAL-1016\r
-error.implementation_error_no_pdbentry_from_index = Error de implementación - no existe la correspondiente entrada pdb (para el índice {0}) para añadir el mapeo de secuencias a\r
-error.jmol_version_not_compatible_with_jalview_version = La versión {0} de Jmol no es compatible con esta versión de Jalview. Informe de este problema en http://issues.jalview.org\r
-error.not_implemented_remove = Borrar: no implementado\r
-error.not_implemented_clone = Clonar: no implementado\r
-error.implementation_error_chimera_getting_data = Error de implementación - Chimera parece estar todavía intentando recuperar sus datos - informe de ello en http://issues.jalview.org/browse/JAL-1016\r
-error.call_setprogressbar_before_registering_handler = llamada a setProgressBar antes de registrar el manejador de la barra de estado\r
-label.cancelled_params = {0} cancelado\r
-error.implementation_error_cannot_show_view_alignment_frame = Error de implementación: no es posible mostrar una vista de otro alineamiento en un AlignFrame.\r
-error.implementation_error_dont_know_about_thereshold_setting = Error de implementación: no se conoce la configuración del umbral para el AnnotationColourGradient actual.\r
-error.eps_generation_not_implemented = La generación de EPS no se ha implementado todavía\r
-error.png_generation_not_implemented = La generación de PNG no se ha implementado todavía\r
-error.try_join_vamsas_session_another = Tratando de establecer una sesión VAMSAS cuando ya había otra conectada\r
-error.invalid_vamsas_session_id = Identificador de sesión VAMSAS no válido\r
-error.implementation_error_cannot_create_groovyshell = Error de implementación:no se puede crear groovyShell sin Groovy en el classpath\r
-label.groovy_support_failed = El soporte Groovy de Jalview ha fallado\r
-label.couldnt_create_groovy_shell = No es posible crear el shell de Groovy. Compruebe el fichero de log para conocer los detalles.\r
-error.unsupported_version_calcIdparam = Versión no soportada de {0}\r
-error.implementation_error_cant_reorder_tree = Error de implementación: no es posible reordenar este árbol. No DefaultMutableTreeNode.\r
-error.invalid_value_for_option = Valor no válido de {0} para la opción {1}\r
-error.implementation_error_cannot_import_vamsas_doc = Error de implementación - todavía no es posible importar el documento VAMSAS existente en una sesión existente.\r
-label.vamsas_doc_couldnt_be_opened_as_new_session = El documento VAMSAS no ha podido abrirse como una nueva sesión. Por favor, escoja otra.\r
-error.implementation_error_vamsas_operation_not_init = ¡Error de implementación! Operaciones VAMSAS cuando el cliente no estaba inicializado ni conectado\r
-error.jalview_no_connected_vamsas_session = Jalview está conectado a una sesión VAMSAS\r
-error.implementation_error_cannot_recover_vamsas_object_mappings = Error de implementación: no es posible recuperar los mapeos del objeto VAMSAS - no se ha hecho ningún backup \r
-error.setstatus_called_non_existent_job_pane = se lllamado a setStatus para el panel de trabajo {0} no existente\r
-error.implementation_error_cannot_find_marshaller_for_param_set =Error de implementación: no puede encontrar un marshaller para el conjunto de parámetros\r
-error.implementation_error_old_jalview_object_not_bound =Error de implementación: ¡el objeto Jalview antiguo no está enlazado! ({0})\r
-error.implementation_error_vamsas_doc_class_should_bind_to_type = Error de implementación: la clase de documento VAMSAS {0} debe enlazar a {1} (pero se ha encontrado que lo está a {2})\r
-error.implementation_error_jalview_class_should_bind_to_type = Error de implementación: la clase Jalview {0} debe enlazar a {1} (pero se ha encontrado que lo está a {2})\r
-error.invalid_vamsas_rangetype_cannot_resolve_lists = RangeType VAMSAS no válido - ¡no es posible resolver ambas listas de Pos y Seg con los valores elegidos!\r
-error.implementation_error_maplist_is_null = Error de implementación. MapList es nulo en initMapType.\r
-error.implementation_error_cannot_have_null_alignment = Error de implementación: no es posible tener una clave nula en el alineamiento\r
-error.implementation_error_null_fileparse = Error de implementación. FileParse nulo en el construictor de copia\r
-error.implementation_error_cannot_map_alignment_sequences = Error de implementación: no es posible maper un alineamiento de secuencias desde distintos conjuntos de datos en un único alineamiento en el documento VAMSAS.\r
-error.implementation_error_cannot_duplicate_colour_scheme = Error grave de implementación: no es posible duplicar el esquema cromático {0}\r
-error.implementation_error_structure_selection_manager_null = Error de implementación. El contexto structure selection manager's es nulo\r
-exception.ssm_context_is_null = El contexto SSM es nulo\r
-error.idstring_seqstrings_only_one_per_sequence = idstrings y seqstrings contienen una cadena por cada secuencia\r
-error.cannot_have_mixed_length_replacement_vectors = No es posible tener vectores de reemplazo de distinta longitud. El vector de reemplazo para {0} es de {1} cadenas de largo, pero se ha considerado ya como un vector de longitud {2}.\r
-error.cannot_have_zero_length_vector_replacement_strings = No es posible tener un vector de cadenas de reemplazo de longitud cero - debe ser uno o n.\r
-error.implementation_error_multiple_single_sequence_prediction_jobs_not_supported = ¡Error de implementación! Todavía no se soportan varios trabajos de predicción asociados a una única secuencia.\r
-error.implementation_error_invalid_msa_index_for_job = ¡Error de implementación! Valor msaIndex no válido para JPredJob en el objeto de entrada MSA padre!\r
-error.implementation_error_startjob_called = Error de implementación - StartJob(JpredJob) invocado en {0}\r
-error.multiple_jnet_subjob_merge_not_implemented = Todavía no se han implementado varios subtrabajos JNet conjuntos.\r
-label.job_never_ran = El trabajo nunca se ejecutó - entrada devuelta al usuario.\r
-error.implementation_error_minlen_must_be_greater_zero = Error de implementación: minlen debe ser cero o más\r
-error.implementation_error_msawbjob_called = Error de implementación - StartJob(MsaWSJob) invocado en un WSJobInstance {0}\r
-error.implementation_error_cannot_attach_ws_menu_entry = Error de implementación: ¡no es posible adjunto una WS Menu Entry sin una referencia a un manejador del servicio!\r
-error.parameter_migration_not_implemented_yet = La migración de parámetros no se ha implementado todavía\r
-error.implementation_error_cannot_set_jaba_option = Error de implementación: no es posible establecer el valor de Jaba Option a un valor fuera de su rango permitido\r
-error.implementation_error_valuetype_doesnt_support_jabaws_type = Error de implementación: jalview.ws.params.ValueConstrainI.ValueType no soporta el tipo JABAWS: {0}\r
-error.cannot_create_jabaws_param_set = No es posible crear un JabaWSParamSet con parámetros no JabaWS\r
-error.cannot_set_arguments_to_jabaws_param_set = No es posible establecer argumentos en JabaWSParamSet que no sean argumentos JabaWS \r
-error.implementation_error_runner_config_not_available = Error de implementación: Runner Config no está disponible para un servicio JABAWS de tipo {0} ({1})\r
-error.implementation_error_cannot_handle_jaba_param = Error de implementación: no es posible manejar el objeto del parámetro Jaba {0}\r
-error.implementation_error_attempt_to_delete_service_preset = Error de implementación: intento de borrar un servicio preestablecido\r
-error.implementation_error_cannot_locate_oldname_presetname = Error de implementación: no es posible localizar ni el nombre antiguo ({0}) ni el presetName ({1} en el almacén de datos.\r
-error.implementation_error_jabaws_param_set_only_handled_by = Error de implementación: JabaWsParamSets sólo puede ser manejado por JabaParamStore\r
-error.cannot_set_source_file_for = No es posible establecer el fichero fuente para {0}\r
-error.mismatch_service_instance_preset = Posible desajuste entre la instancia del servicio y la prestablecida\r
-error.cannot_set_params_for_ws_preset = No es posible establecer los parámetros para el servicio web JABA presestablecido\r
-error.implementation_error_can_only_instantiate_jaba_param_sets = Error de implementación: sólo se puede instanciar conjuntos de parámetros Jaba\r
-error.no_aacon_service_found = No se ha encontrado ningún servicio AACon \r
-error.implementation_error_couldnt_copy_value_constraint = Error de implementación: ¡no se puede copiar ValueConstrain!\r
-error.couldnt_encode_as_utf8 = No se ha podido codificar {0} como UTF-8.\r
-error.tree_inputtype_not_yet_implemented = No se ha implementado todavía el árbol como InputType\r
-error.implementation_error_need_to_have_httpresponse = Error de implementación: se necesita tener un HttpResponse que procesar\r
-error.dbrefsource_implementation_exception = Excepción de implementación DBRefSource\r
-error.implementation_error_dbinstance_must_implement_interface = Error de Implementación- getDbInstances debe recibir una clase que implemente jalview.ws.seqfetcher.DbSourceProxy (recibió {0})\r
-error.implementation_error_must_init_dbsources =Error de implementación. Debe inicializar dbSources\r
-label.view_controller_toggled_marked = {0} {1} columnas {2} conteniendo características del tipo {3} en {4} secuencia(s)\r
-label.toggled = Invertida\r
-label.marked = Marcada\r
-label.not = no\r
-label.no_feature_of_type_found = No se han encontrado características del tipo {0}.\r
-label.submission_params = Envío {0}\r
-label.empty_alignment_job = Trabajo de alineamiento vacío\r
-label.add_new_sbrs_service = Añadir un nuevo SBRS\r
-label.edit_sbrs_entry = Editar entrada SBRS\r
-label.pca_recalculating = Recalculando PCA\r
-label.pca_calculating = Calculando PCA\r
-label.select_foreground_colour = Escoger color del primer plano\r
-label.select_colour_for_text = Seleccione el color del texto\r
-label.adjunst_foreground_text_colour_thereshold = Ajustar el umbral del color del texto en primer plano\r
-label.select_subtree_colour = Seleccioanr el color del sub-árbol\r
-label.create_new_sequence_features = Crear nueva(s) característica(s) de secuencia\r
-label.amend_delete_features = Arrelgar/Borrar características de {0}\r
-exception.out_of_bounds_for_file = Fuera de rango para el fichero: i={0}, Buffer final: i0={1} iend={2}\r
-exception.null_string_given_to_regex_search = Cadena nula enviada a Regex.search\r
-exception.null_string_like_given_to_regex_search = StringLike nula enviada a Regex.search\r
-exception.null_string_given_to_regex_reverse_search = Cadena nula enviada a Regex.reverseSearch\r
-exception.null_string_like_given_to_regex_reverse_search = StringLike nula enviada a Regex.reverseSearch\r
-exception.null_string_like_given_to_regex_search_from = Cadena nula enviada a Regex.searchFrom\r
-exception.null_string_like_given_to_regex_search_region = Cadena nula enviada a Regex.searchRegion\r
-exception.replace_null_regex_pointer = Reemplazador tiene un puntero Regex nulo\r
-exception.bad_pattern_to_regex_perl_code = patrón erróneo en Regex.perlCode: {0}\r
-exception.no_stub_implementation_for_interface = No existe una implementación del stub para la interfaz: {0}\r
-exception.cannot_set_endpoint_address_unknown_port = No es posible estabelcer la dirección de punto final para el puerto desconocido {0}\r
-exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis = Consultando la coincidencia de apertura de paréntesis para paréntesis sin cerrar (?)\r
-exception.mismatched_unseen_closing_char = Discordancia (no vista) en el carácter de cierre {0}\r
-exception.mismatched_closing_char = Carácter de cierre discordante {0}\r
-exception.mismatched_opening_char = Carácter de apertura discordante {0} en {1}\r
-exception.invalid_datasource_couldnt_obtain_reader = Fuente de datos no válida. No es posible obtener el Reader\r
-exception.index_value_not_in_range = {0}: el valor del índice {1} en se encuentra en el rango [0..{2}]\r
-exception.unterminated_cigar_string = Cadena cigar sin terminar\r
-exception.unexpected_operation_cigar_string_pos = Operación no esperada {0} en una cadena cigar (posición {1} en {2})\r
-exception.couldnt_parse_responde_from_annotated3d_server = No es posible parsear la respuesta procedente del servidor Annotate3d \r
-exception.application_test_npe = Prueba de aplicación: lanzando un NullPointerException que debe aparecer en la consola\r
-exception.overwriting_vamsas_id_binding = Sobreescribiendo la asociación al VAMSAS id\r
-exception.overwriting_jalview_id_binding = Sobreescribiendo la asociación al Jalview id\r
-error.implementation_error_unknown_file_format_string = Error de implementación: cadena de formato de fichero desconocido\r
-exception.failed_to_resolve_gzip_stream = Fallo al resolver el flujo GZIP \r
-exception.problem_opening_file_also_tried = Problema abriendo {0} (también se intentó {1}) : {2}\r
-exception.problem_opening_file = Problema abriendo {0} : {1}\r
-exception.failed_to_read_data_from_source = Error al leer datos de la fuente: {0}\r
-exception.no_init_source_stream = Flujo de fuente sin inicializar\r
-exception.invalid_source_stream = Flujo de fuente no válida: {0}\r
-error.implementation_error_reset_called_for_invalid_source = Error de implementación: se ha invocado un Reset en una fuente no válida.\r
-exception.number_of_residues_in_query_sequence_differ_from_prediction = El n\u00FAmero de residuos en la supuesta secuencia consultada {0} ({1}\n{2})\ndifiere del n\u00FAmero de sitios de predicci\u00F3n en la predicci\u00F3n ({3})\r
-label.mapped = mapeado\r
-exception.jpredconcide_entry_has_unexpected_number_of_columns = JPredConcise: La entrada ({0}) tiene un número inesperado de columnas\r
-exception.couldnt_parse_concise_annotation_for_prediction = No es posible parsear la anotaci\u00F3n concisa para el perfil de predicci\u00F3n.\n{0}\r
-exception.newfile = Fichero Newick\: {0}\n\r
-label.no_tree_read_in = No hay lectura de árbol en\r
-exception.rnaml_couldnt_access_datasource = No ha sido posible acceder la fuente de datos ({0})\r
-exception.ranml_couldnt_process_data = No ha sido posible procesar los datos como un fichero RNAML ({0})\r
-exception.ranml_invalid_file = Fichero RNAML no válido ({0})\r
-exception.ranml_problem_parsing_data = Problema parseando los datos como RNAML ({0})\r
-exception.pfam_no_sequences_found = No se han encontrado secuencias (entrada PFAM)\r
-exception.stockholm_invalid_format = Este fichero no es tiene un formato STOCKHOLM válido: la primera línea no contiene '# STOCKHOLM'\r
-exception.couldnt_parse_sequence_line = No es posible parse la línea de secuencia: {0}\r
-exception.error_parsing_line = Error parseando {0}\r
-exception.unknown_annotation_detected = Anotación desconocida detectada: {0} {1}\r
-exception.couldnt_store_sequence_mappings = No es posible almacenar los mapeos de secuencia para {0}\r
-exception.matrix_too_many_iteration = Demasiadas iteraciones en {0} (el máximo es {1})\r
-exception.browser_not_found = Excepción al buscar el navegador: {0}\r
-exception.browser_unable_to_locate = Imposible encontrar el navegador: {0}\r
-exception.invocation_target_exception_creating_aedesc = InvocationTargetException mientras se creaba AEDesc: {0}\r
-exception.illegal_access_building_apple_evt= IllegalAccessException mientras se construía AppleEvent: {0}\r
-exception.instantiation_creating_aedesc = InstantiationException mientras se creaba AEDesc: {0}\r
-exception.unable_to_launch_url = Imposible lanzar la URL: {0}\r
-exception.unable_to_create_internet_config = Imposible crear una instancia de configuración de Internet: {0}\r
-exception.invocation_target_calling_url = InvocationTargetException mientras se invocaba openURL: {0}\r
-exception.illegal_access_calling_url = IllegalAccessException mientras se invocaba openURL: {0}\r
-exception.interrupted_launching_browser = InterruptedException mientras se lanzaba el navegador: {0}\r
-exception.das_source_doesnt_support_sequence_command = La fuente {0} no soporta el comando sequence.\r
-exception.invalid_das_source = Fuente DAS no válida: {0}\r
-exception.ebiembl_retrieval_failed_on = La recuperación de datos EBI EMBL XML ha fallado en {0}:{1}\r
-label.no_embl_record_found = # No se ha recuperado ningún registro EMBL de {0}:{1}\r
-label.embl_successfully_parsed = # Se han parseado con éxito las consultas {0} en un alineamiento\r
-exception.no_pdb_records_for_chain = No se han encontrado registros {0} para la cadena {1}\r
-exception.unexpected_handling_rnaml_translation_for_pdb = Excepcion inesperada cuando se traducían a RNAML los datos PDB\r
-exception.couldnt_recover_sequence_properties_for_alignment = No es posible recuperar las propiedades de la secuencia para el alineamiento\r
-exception.unknown_format_for_file = Formato desconocido {0} para el fichero \: \n{1}\r
-label.remove_gaps = Eliminar huecos\r
-exception.couldnt_recover_sequence_props_for_jnet_query = No ha sido posible recuperar las propiedades de la secuencia para la secuencia JNet Query!\r
-exception.server_timeout_try_later = Tiempo de conexi\u00F3n ha expirado - int\u00E9ntelo de nuevo m\u00E1s tarde\n\r
-exception.web_service_returned_null_try_later= El servidor {0} ha devuelto un objeto nulo, por lo que probablemente no se haya podido contactar con él. Inténtelo de nuevo más tarde.\r
-exception.cannot_contact_service_endpoint_at = No es posible contactar por el punto de acceso al servicio en {0}\r
-error.implementation_error_cannot_find_service_url_in_given_set = Error de implementación: no es posible encontrar la URL del servicio en el conjunto de URL proporcionado\r
-error.implementation_error_cannot_find_service_url_in_given_set_param_store = Error de implementación: la URL del servicio en el conjunto de URL para este almacén de parámetros del servicio({0})\r
-exception.jobsubmission_invalid_params_set = Conjunto de parámetros no válido. Comprueba la implementación de Jalview\r
-exception.notvaliddata_group_contains_less_than_min_seqs = El grupo contiene menos de {0} secuencias.\r
-exception.outofmemory_loading_pdb_file = Sin menoria al cargar el fichero PDB\r
-exception.eps_coudnt_write_output_file = No es posible escribir el fichero de salida: {0}\r
-exception.eps_method_not_supported = Método actualmente no suportado por la versión {0} de EpsGraphics2D\r
-exception.eps_unable_to_get_inverse_matrix = Imposible obtener la inversa de la matrix: {0}\r
-warn.job_cannot_be_cancelled_close_window = Este trabajo no se puede cancelar.\nSimplemente, cierre la ventana.\r
-warn.service_not_supported = ¡Servicio no soportado!\r
-warn.input_is_too_big = ¡El tamaño de la entrada es demasiado grande!\r
-warn.invalid_job_param_set = ¡Conjunto de parámetros del trabajo no válido!\r
-info.job_couldnt_be_run_server_doesnt_support_program = No es posible ejecutar el trabajo porque el servidor no soporta este programa.\n{0}\r
-info.job_couldnt_be_run_exceeded_hard_limit = No es posible ejecutar el trabajo porque excede los l\u00EDmites del servidor.\n{0}\r
-info.job_couldnt_be_run_incorrect_param_setting = No es posible ejecutar el trabjao porque el servidor no soporta algunos de los par\u00E1metros.\n{0}\nPor favor, aseg\u00FArese de que ha usado los par\u00E1metros adecuados para este servicio\n\r
-info.no_jobs_ran = No se ha ejecutado ningún trabajo\r
-info.failed_to_submit_prediction = Error al enviar la predicci\u00F3n\:\n{0} {1}\r
-info.invalid_jnet_job_result_data ={0}\n{1}\nResultados del trabajo JNet no v\u00E1lidos\!\n{2}\r
-info.failed_to_submit_sequences_for_alignment = Error al enviar la secuencias para el alineamiento.\nLo m\u00E1s probable es que haya un problema en el servidor.\nSimplemente, cierre la ventana\n\r
-info.alignment_object_method_notes = \nNotas sobre los m\u00E9todos del objeto alineamiento\n\r
-info.server_exception = \n{0} Excepci\u00F3n del servidor\!\n{1}\r
-status.processing_commandline_args = Procesando los argumentos de la línea de comandos...\r
-status.das_features_being_retrived = Recuperando características DAS...\r
-status.searching_for_sequences_from = Buscando secuencias en {0}\r
-status.finished_searching_for_sequences_from = Finalizada la búsqueda de secuencias en {0}\r
-label.eps_file = Fichero EPS\r
-label.png_image = Imagen PNG\r
-status.saving_file = Guardando {0}\r
-status.export_complete = Exportación completada.\r
-status.fetching_pdb = Recuperando PDB {0}\r
-status.refreshing_news = Refrescando noticias\r
-status.importing_vamsas_session_from = Importando sesión VAMSAS de {0}\r
-status.opening_params = Abriendo {0}\r
-status.waiting_sequence_database_fetchers_init = Esperando la inicialización de los recuperadores de bases de datos de secuencias\r
-status.init_sequence_database_fetchers = Inicializando recuperadores de bases de datos de secuencias\r
-status.fetching_sequence_queries_from = Recuperando {0} consultas de secuencias de {1}\r
-status.finshed_querying = Consulta finalizada\r
-status.parsing_results = Parseando resultados.\r
-status.processing = Procesando...\r
-status.refreshing_web_service_menus = Refrescando los menús de servicios web\r
-status.collecting_job_results = Recolectando los resultados de los trabajos.\r
-status.fetching_das_sequence_features = Recuperando las características DAS de las secuencias\r
-status.no_das_sources_active = No existe ninguna fuente DAS activa\r
-status.das_feature_fetching_cancelled = Recuperación de características DAS cancelada\r
-status.das_feature_fetching_complete = Recuperación de características DAS completada\r
-status.fetching_db_refs = Recuperando db refs\r
-label.font_doesnt_have_letters_defined = La fuente no tiene letras definidas\npor lo que no puede emplease\ncon datos de alineamientos\r
-label.error_loading_file_params = Error cargando el fichero {0}\r
-label.error_loading_jalview_file = Error cargando el fichero Jalview \r
-warn.out_of_memory_when_action = Sin memoria al {0}\!\!\nConsulte los ficheros de ayuda para ajustar la memoria de la m\u00E1quina virtual de Java.\r
-warn.out_of_memory_loading_file = Sin memoria al cargar el fichero {0}\!\!\nConsulte los ficheros de ayuda para ajustar la memoria de la m\u00E1quina virtual de Java.\r
-label.out_of_memory = Sin memoria\r
-label.invalid_id_column_width = Identificador de anchura de columna no válido\r
-warn.user_defined_width_requirements = La anchura definida por el usuario para la \nlas columnas de anotaci\u00F3n e identificador de secuencias\nen figuras exportadas debe ser\na, al menos, de 12 p\u00EDxels\r
-label.couldnt_create_sequence_fetcher = No es posible crear SequenceFetcher\r
-warn.couldnt_create_sequence_fetcher_client = No es posible crear el cliente de recuperador de secuencias. Comprueba el fichero de log para más detalles.\r
-warn.server_didnt_pass_validation = El servicio no ha pasado la validaci\u00F3n.\nCompruebe la consola de Jalview para m\u00E1s detalles.\r
-warn.url_must_contain = La URL de la secuencia debe contener $SEQUENCE_ID$ o un regex $SEQUENCE_ID=/<regex>/=$\r
-info.validate_jabaws_server = \u00BFValidar el servidor JabaWS?\n(Consulte la consola de salida para obtener los resultados)\r
-label.test_server = ¿Probar servidor?\r
-info.you_want_jalview_to_find_uniprot_accessions = \u00BFDesea que Jalview encuentre\nUniprot Accession ids para los nombres de secuencias dados?\r
-label.find_uniprot_accession_ids = Buscar Uniprot Accession Ids\r
-label.new_sequence_fetcher = Añadir recuperador de secuencias\r
-label.additional_sequence_fetcher = Recuperador de secuencia adicional\r
-label.select_database_retrieval_source = Seleccionar fuente de recuperación de bases de datos\r
-label.overwrite_existing_file = ¿Sobreescribir el fichero existente?\r
-label.file_already_exists = El fichero existe\r
-label.edit_jabaws_url = Editar JABAWS URL\r
-label.add_jabaws_url = Añadir nueva JABAWS URL\r
-label.news_from_jalview = Noticias de http://www.jalview.org\r
-label.cut_paste_alignmen_file = Cortar & Pegar fichero de alineamiento\r
-label.enter_redundancy_thereshold = Introducir el umbral de redundancia\r
-label.select_dark_light_set_thereshold = <html><i>Seleccionar un color oscuro y un color claro para el texto y establecer el umbral en que<br>cambiar entre colores, basándose en el color de fondo</i></html>\r
-label.select_feature_colour = Seleccionar color de las características\r
-label.ignore_gaps_consensus = Ignorar huecos en el consenso\r
-label.show_group_histogram = Mostrar histograma de grupo\r
-label.show_group_logo = Mostrar logo de grupo\r
-label.normalise_group_logo = Normalizar el logo de grupo\r
-label.show_histogram = Mostrar histograma\r
-label.show_logo = Mostrar logo\r
-label.normalise_logo = Normalizar logo\r
-label.no_colour_selection_in_scheme = Por favor, seleccione un color antes de aplicar el esquema cromático\r
+action.refresh_services = Refrescar servicios
+action.reset_services = Reiniciar servicios
+action.merge_results = Unificar resultados
+action.load_scheme = Cargar esquema
+action.save_scheme = Guardar esquema
+action.save_image = Guardar imagen
+action.paste = Pegar
+action.show_html_source = Mostrar código HTML
+action.print = Imprimir
+action.web_service = Servicio web
+action.cancel_job = Cancelar trabajo
+action.start_job = Arrancar trabajo
+action.revert = Deshacer
+action.move_down = Mover hacia abajo
+action.move_up = Mover hacia arriba
+action.remove_return_datatype = Borrar tipo de datos de retorno
+action.add_return_datatype = Añadir tipo de datos de retorno
+action.remove_input_parameter = Borrar el parámetro de entrada seleccionado
+action.add_input_parameter = Añadir parámetro de entrada seleccionado
+action.edit = Editar
+action.new = Nuevo
+action.open_file = Abrir fichero
+action.show_unconserved = Mostrar regiones no conservadas
+action.open_new_aligmnent = Abrir nuevo alineamiento
+action.raise_associated_windows = Destacar ventanas asociadas
+action.minimize_associated_windows = Minimizar ventanas asociadas
+action.close_all = Cerrar todo
+action.load_project = Cargar proyecto
+action.save_project = Guardar proyecto
+action.quit = Salir
+action.expand_views = Expandir vistas
+action.gather_views = Capturar vistas
+action.page_setup = Configuración de la página
+action.reload = Recargar
+action.load = Cargar
+action.open = Abrir
+action.cancel = Cancelar
+action.create = Crear
+action.update = Actualizar
+action.delete = Borrar
+action.snapshot = Imagen
+action.clear = Limpiar
+action.accept = Aceptar
+action.select_ddbb = --- Seleccionar base de datos ---
+action.undo = Deshacer
+action.redo = Rehacer
+action.reset = Reiniciar
+action.remove_left = Eliminar parte izquierda
+action.remove_right = Eliminar parte derecha
+action.remove_empty_columns = Eliminar las columnas vacías
+action.remove_all_gaps = Eliminar todos los huecos
+action.left_justify_alignment = Ajustar el alineamiento a la izquierda
+action.right_justify_alignment = Ajustar el alineamiento a la derecha
+action.boxes = Casillas
+action.text = Texto
+action.by_pairwise_id = Identificar por parejas
+action.by_id = Por identificador
+action.by_length = Por longitud
+action.by_group = Por grupo
+action.remove = Eliminar
+action.remove_redundancy = Eliminar redundancia...
+action.pairwise_alignment = Alineamiento de pares...
+action.by_rna_helixes = Por hélices de RNA
+action.user_defined = Definido por el usuario...
+action.by_conservation = Por conservación
+action.wrap = Envolver
+action.show_gaps = Mostrar huecos
+action.show_hidden_markers = Mostrar marcadores ocultos
+action.find = Buscar
+action.undefine_groups = Grupos sin definir
+action.create_groups = Crear grupos
+action.make_groups_selection = Hacer grupos para seleccionar
+action.copy = Copiar
+action.cut = Cortar
+action.font = Fuente...
+action.scale_above = Escala superior
+action.scale_left = Escala izquierda
+action.scale_right = Escala derecha
+action.by_tree_order = Por orden del árbol
+action.sort = Ordenar
+action.calculate_tree = Calcular árbol
+action.help = Ayuda
+action.by_annotation = Por anotación...
+action.invert_sequence_selection = Invertir selección de secuencias
+action.invert_column_selection = Invertir selección de columnas
+action.show = Mostrar
+action.hide = Ocultar
+action.ok = OK
+action.set_defaults = Defecto
+action.create_group = Crear grupo
+action.remove_group = Eliminar grupo
+action.edit_group = Editar grupo
+action.border_colour = Color del borde
+action.edit_new_group = Editar nuevo grupo
+action.hide_sequences = Ocultar secuencias
+action.sequences = Secuencias
+action.ids = IDS
+action.ids_sequences = IDS y secuencias
+action.reveal_all = Revelar todo
+action.reveal_sequences = Revelar secuencias
+action.find_all = Buscar todo
+action.find_next = Buscar siguiente
+action.file = Archivo
+action.view = Ver
+action.change_params = Cambiar parámetros
+action.apply = Aplicar
+action.apply_threshold_all_groups = Aplicar umbral a todos los grupos
+action.apply_all_groups = Aplicar a todos los grupos
+action.by_chain = Por cadena
+action.by_sequence = Por secuencia
+action.paste_annotations = Pegar anotaciones
+action.format = Formato
+action.select = Seleccionar
+action.new_view = Nueva vista
+action.close = Cerrar
+action.add = Añadir
+action.save_as_default = Guardar como por defecto
+action.save_as = Guardar como
+action.save = Guardar
+action.cancel_fetch = Cancelar búsqueda
+action.save_omit_hidden_columns = Guardar / Omitir las columnas ocultas
+action.change_font = Cambiar Fuente
+action.change_font_tree_panel = Cambiar fuente (panel del árbol)
+action.colour = Color
+action.calculate = Calcular
+action.select_all = Seleccionar Todo
+action.deselect_all = Deseleccionar Todo
+action.invert_selection = Invertir selección
+action.using_jmol = Usar Jmol
+action.link = Enlazar
+action.group_link = Enlazar grupo
+action.show_chain = Mostrar cadena
+action.show_group = Mostrar grupo
+action.fetch_db_references = Recuperar referencias a base de datos
+action.view_flanking_regions = Mostrar flancos
+label.view_flanking_regions = Mostrar los datos de la secuencia a ambos lados de las subsecuencias implicadas en este alineamiento
+label.str = Str:
+label.seq = Seq:
+label.structures_manager = Administrar estructuras
+label.nickname = Sobrenombre:
+label.url = URL:
+label.input_file_url = Introducir URL en el fichero de entrada
+label.select_feature = Seleccionar función:
+label.name = Nombre:
+label.name_param = Nombre: {0}
+label.group = Grupo:
+label.group_name = Nombre del grupo
+label.group_description = Descripción del grupo
+label.edit_group_name_description = Editar nombre/descripción del grupo
+label.colour = Color:
+label.description = Descripción:
+label.start = Comenzar:
+label.end = Terminar:
+label.current_parameter_set_name = Nombre actual del conjunto de parámetros:
+label.service_action = Acción de servicio:
+label.post_url = POST URL:
+label.url_suffix = URL Sufijo
+label.sequence_source = Fuente de la secuencia
+label.per_seq = por secuencia
+label.result_vertically_separable = Los resultados son separables verticalmente
+label.amend = Modificar
+label.undo_command = Deshacer {0}
+label.redo_command = Rehacer {0}
+label.principal_component_analysis = Análisis del Componente Principal
+label.average_distance_identity = Distancia Media Usando % de Identidad
+label.neighbour_joining_identity = Unir vecinos utilizando % de Identidad
+label.treecalc_title = {0} utilizando {1}
+label.tree_calc_av = Distancia media
+label.tree_calc_nj = Unir vecinos
+label.select_score_model = Selecciones modelo de puntuación
+label.score_model_pid = % Identidad
+label.score_model_blosum62 = BLOSUM62
+label.score_model_pam250 = PAM 250
+label.score_model_conservation = Conservación de las propiedades físico-químicas
+label.score_model_enhconservation = Conservación de las propiedades físico-químicas
+label.status_bar = Barra de estado
+label.out_to_textbox = Generar cuadro de texto
+label.clustalx = Clustalx
+label.clustal = Clustal
+label.zappo = Zappo
+label.taylor = Taylor
+label.blc = BLC
+label.fasta = Fasta
+label.msf = MSF
+label.pfam = PFAM
+label.pileup = Pileup
+label.pir = PIR
+label.hydrophobicity = Hidrofobicidad
+label.helix_propensity = Tendencia de la hélice
+label.strand_propensity = Tendencia de la hebra
+label.turn_propensity = Tendencia de giro
+label.buried_index = Índice de encubrimiento
+label.purine_pyrimidine = Purina/Pirimidina
+label.percentage_identity = Porcentaje de identidad
+label.blosum62 = BLOSUM62
+label.blosum62_score = Puntuación del BLOSUM62
+label.tcoffee_scores = Puntuación del T-Coffee
+label.average_distance_bloslum62 = Distancia Media Usando BLOSUM62
+label.neighbour_blosum62 = Neighbour Joining usando BLOSUM62
+label.show_annotations = Mostrar anotaciones
+label.colour_text = Color del texto
+label.show_non_conversed = Mostrar no conservadas
+label.overview_window = Ventana resumen
+label.none = Ninguno
+label.above_identity_threshold = Por encima del umbral de identidad
+label.show_sequence_features = Mostrar las características de las secuencias
+label.nucleotide = Nucleótido
+label.to_new_alignment = A nuevo alineamiento
+label.to_this_alignment = Añadir a este alineamiento
+label.apply_colour_to_all_groups = Aplicar color a todos los grupos
+label.modify_identity_thereshold = Modificar el umbral de identidad...
+label.modify_conservation_thereshold = Modificar el umbral de conservación...
+label.input_from_textbox = Introducir desde el cuadro de texto
+label.centre_column_labels = Centrar las etiquetas de las columnas
+label.automatic_scrolling = Desplazamiento automático
+label.documentation = Documentación
+label.about = Acerca de...
+label.show_sequence_limits = Mostrar los límites de la secuencia
+label.feature_settings = Ajustar funciones...
+label.sequence_features = Funciones de la secuencia
+label.all_columns = Todas las columnas
+label.all_sequences = Todas las secuencias
+label.selected_columns = Columnas seleccionadas
+label.selected_sequences = Secuencias seleccionadas
+label.all_but_selected_region = Todo menos la región seleccionada (Shift+Ctrl+H)
+label.selected_region = Región seleccionada
+label.all_sequences_columns = Todas las secuencias y columnas
+label.group_consensus = Consenso de grupo
+label.group_conservation = Conservación de grupo
+label.show_consensus_histogram = Mostrar el histograma de consenso
+label.show_consensus_logo = Mostrar el logo de consenso
+label.norm_consensus_logo = Normalizar el logo de consenso
+label.apply_all_groups = Aplicar a todos los grupos
+label.autocalculated_annotation = Anotación autocalculada
+label.min_colour = Color mínimo
+label.max_colour = Color máximo
+label.use_original_colours = Usar colores originales
+label.threshold_minmax = El umbral es mín/máx
+label.represent_group_with = Representar al grupo con
+label.selection = Seleccionar
+label.group_colour = Color del grupo
+label.sequence = Secuencia
+label.view_pdb_structure = Ver estructura PDB
+label.min = Mín:
+label.max = Máx:
+label.colour_by_label = Color por etiquetas
+label.new_feature = Nueva función
+label.match_case = Hacer corresponder mayúsculas y minúsculas
+label.view_alignment_editor = Ver en el editor de alineamientos
+label.labels = Etiquetas
+label.output_values = Valores de salida...
+label.output_points = Puntos de salida...
+label.output_transformed_points = Puntos de salida transformados
+label.input_data = Datos de entrada...
+label.nucleotide_matrix = Matriz nucleotídica
+label.protein_matrix = Matriz proteica
+label.show_bootstrap_values = Mostrar valores de Bootstrap
+label.show_distances = Mostrar distancias
+label.mark_unassociated_leaves = Marcar hojas no asociadas
+label.fit_to_window = Ajustar a la ventana
+label.newick_format = Formato Newick
+label.select_newick_like_tree_file = Seleccione un fichero de árbol tipo Newick
+label.colours = Colores
+label.view_mapping = Ver mapeado
+label.wireframe = Estructura metálica
+label.depthcue = Clave de profundidad
+label.z_buffering = Tamponamiento Z
+label.charge_cysteine = Carga & Cisteína
+label.all_chains_visible = Todas las cadenas visibles
+label.successfully_added_features_alignment = Funciones añadidas exitosamente al alineamiento
+label.keyboard_editing_mode = El modo de editar teclado es {0}
+label.paste_features_annotations_Tcoffee_here = Pegar tus funciones / anotaciones / puntuación del fichero T-coffee aquí.
+label.removed_columns = {0} columnas eliminadas.
+label.removed_empty_columns = {0} columnas vacías eliminadas.
+label.paste_newick_tree_file = Pegar su fichero árbol Newick aquí.
+label.order_by_params = Ordenar por {0}
+label.html_content = <html>{0}</html>
+label.paste_pdb_file= Pegar tu fichero PDB aquí.
+label.paste_pdb_file_for_sequence = Pegar fichero PDB para la secuencia {0}
+label.could_not_parse_newick_file = No se pudo analizar el fichero Newick\\\!\\n {0}
+label.successfully_pasted_tcoffee_scores_to_alignment= Pegada exitosamente la puntuación T-Coffee al alineamiento.
+label.failed_add_tcoffee_scores = Fallo al añadir las puntuaciones T-Coffee:
+label.successfully_pasted_annotation_to_alignment = Anotación pegada exitosamente al alineamiento.
+label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file = No es posible parsear el texto pegado como una anotación características, GFF, o fichero T-Coffee válidos
+label.successfully_pasted_alignment_file = Fichero de alineamiento pegado exitosamente
+label.paste_your_alignment_file = Pegar su fichero de alineamiento aquí
+label.paste_your = Pegar su
+label.finished_searching = Búsqueda finalizada
+label.search_results= Buscar Resultados {0} : {1}
+label.found_match_for = Buscar coincidencia para {0}
+label.font = Fuente:
+label.size = Talla:
+label.style = Estilo:
+label.enter_redundancy_threshold = Introducir el umbral de redundancia
+label.calculating = Calculando....
+label.modify_conservation_visibility = Modificar la visibilidad de conservación
+label.colour_residues_above_occurence = Residuos de color por encima del % de aparición
+label.set_this_label_text = fijar como etiqueta
+label.sequences_from = Secuencias de {0}
+label.successfully_loaded_file = Fichero cargado exitosamente {0}
+label.successfully_saved_to_file_in_format = Guardado exitosamente en el fichero: {0} en formato {1}.
+label.copied_sequences_to_clipboard = Copiadas {0} secuencias en el portapapeles.
+label.check_file_matches_sequence_ids_alignment = Comprobar que el fichero coincide con el ID de la secuencia en el alineamiento.
+label.problem_reading_tcoffee_score_file = Problema de lectura del fichero de puntuaciones T-COFFEE
+label.source_to_target = {0} a {1}
+label.per_sequence_only= Sólo por secuencia
+label.to_file = a fichero
+label.to_textbox = a cuadro de texto
+label.jalview = Jalview
+label.csv_spreadsheet = CSV (Hoja de cálculo)
+label.status = [Estado]
+label.channels = Canales
+label.channel_title_item_count = {0} ({1})
+label.blog_item_published_on_date = {0} {1}
+label.select_das_service_from_table = Seleccionar servicio DAS de la tabla para leer una descripción completa aquí.
+label.session_update = Actualizar sesión
+label.new_vamsas_session = Nueva sesión Vamsas
+label.load_vamsas_session = Cargar sesión Vamsas
+label.save_vamsas_session = Guardar sesión Vamsas
+label.select_vamsas_session_opened_as_new_vamsas_session= Selecciones una sesión vamsas para abrirla como una nueva sesión.
+label.open_saved_vamsas_session = Abrir una sesión VAMSAS guardada
+label.groovy_console = Consola Groovy
+label.lineart = lineart
+label.dont_ask_me_again = No volver a preguntar
+label.select_eps_character_rendering_style = Seleccionar el carácter EPS como estilo de visualización
+label.invert_selection = Invertir selección
+label.optimise_order = Optimizar orden
+label.seq_sort_by_score = Ordenar las secuencias por puntuación
+label.load_colours = Cargar colores
+label.save_colours = Guardar colores
+label.fetch_das_features = Recuperar funciones DAS
+label.selected_database_to_fetch_from = Seleccionada {0} Base de datos {1} para buscar de {2}
+label.database_param = Base de datos: {0}
+label.example = Ejemplo
+label.example_param = Ejemplo: {0}
+label.select_file_format_before_saving = Debe seleccionar un formato de fichero antes de guardar!
+label.file_format_not_specified = Formato de fichero no especificado
+label.alignment_contains_hidden_columns = El alineamiento contiene columnas ocultas.\\nQuieres guardar s\u00F3lo el alineamiento visible?
+label.couldnt_save_file = No se pudo guardar el fichero: {0}
+label.error_saving_file = Error guardando el fichero
+label.remove_from_default_list = eliminar de la lista de defectuosos?
+label.remove_user_defined_colour = Eliminar el color definido por el usuario
+label.you_must_select_least_two_sequences = Debes seleccionar al menos 2 secuencias.
+label.invalid_selection = Selección inválida
+label.principal_component_analysis_must_take_least_four_input_sequences = El an\u00E1lisis de la componente principal debe tomar\\nal menos 4 secuencias de entrada.
+label.sequence_selection_insufficient = Selección de secuencias insuficiente
+label.you_need_more_two_sequences_selected_build_tree = necesitas seleccionar más de dos secuencias para construir un árbol!
+label.not_enough_sequences = No suficientes secuencias
+label.selected_region_to_tree_may_only_contain_residues_or_gaps = La regi\u00F3n seleccionada para construir un \u00E1rbol puede\\ncontener s\u00F3lo residuos o espacios.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de edici\u00F3n,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.
+label.sequences_selection_not_aligned = Las secuencias seleccionadas no están alineadas
+label.sequences_must_be_aligned_before_creating_tree = Las secuencias deben estar alineadas antes de crear el \u00E1rbol.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de editar,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.
+label.sequences_not_aligned = Secuencias no alineadas
+label.problem_reading_tree_file = Problema al leer el fichero del árbol
+label.possible_problem_with_tree_file = Posible problema con el fichero del árbol
+label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Por favor seleccionar al menos tres bases de al menos una secuencia para poder realizar la traducción de cDNA.
+label.translation_failed = Translation Failed
+label.error_when_translating_sequences_submit_bug_report = Desafortunadamente, algo fue mal a la hora de traducir tus secuencias.\\nPor favor, revisa la consola Jalview java \\ny presenta un informe de error que incluya el seguimiento.
+label.implementation_error = Error de implementación:
+label.automatically_associate_pdb_files_with_sequences_same_name = Quieres asociar automáticamente los {0} ficheros PDB con las secuencias del alineamiento que tengan el mismo nombre?
+label.automatically_associate_pdb_files_by_name = Asociar los ficheros PDB por nombre automáticamente
+label.ignore_unmatched_dropped_files_info = Quieres <em>ignorar</em> los {0} ficheros cuyos nombres no coincidan con ningún IDs de las secuencias ?
+label.ignore_unmatched_dropped_files = Ignorar los ficheros sin coincidencias?
+label.enter_view_name = Introducir nombre visible (¿?)
+label.enter_label = Introducir etiqueta
+label.enter_label_for_the_structure = Introducir una etiqueta para la estructura?
+label.pdb_entry_is_already_displayed = {0} Ya est\u00E1 mostrado.\\nQuieres volver a usar este visor?
+label.map_sequences_to_visible_window = Mapa de secuencias en ventana visible: {0}
+label.add_pdbentry_to_view = Quieres a\u00F1adir {0} a la vista llamada\\n{1}\\n
+label.align_to_existing_structure_view = Alinear a una estructura ya existente
+label.pdb_entries_couldnt_be_retrieved = Las siguientes entradas pdb no pueden ser extra\u00EDdas del PDB\\\:\\n{0}\\nPor favor, prueba descarg\u00E1ndolas manualmente.
+label.couldnt_load_file = No se pudo cargar el fichero
+label.couldnt_find_pdb_id_in_file = No se pudo encontrar un Id PDB en el fichero suministrado. Por favor, introduzca un Id para identificar esta estructura.
+label.no_pdb_id_in_file = No hay un Id PDB en el fichero
+label.couldnt_read_pasted_text = No se pudo leer el texto pegado {0}
+label.error_parsing_text = Error analizando el texto
+label.enter_local_das_source = Intruduzca el Nickname & URL de la fuente DAS local
+label.you_can_only_edit_or_remove_local_das_sources = Sólo puedes editar o eliminar fuentes DAS locales!
+label.public_das_source = Fuente pública DAS - no editable
+label.input_alignment_from_url = Alineamiento de entrada desde URL
+label.input_alignment = Alineamiento de entrada
+label.couldnt_import_as_vamsas_session = No se pudo importar {0} como una nueva sesión Vamsas.
+label.vamsas_document_import_failed = Fallo en la importación del documento Vamsas
+label.couldnt_locate = No se pudo localizar {0}
+label.url_not_found = URL no encontrada
+label.no_link_selected = Enlace no seleccionado
+label.new_sequence_url_link = Enlace a una nueva secuencia URL
+label.cannot_edit_annotations_in_wrapped_view = No se pueden editar anotaciones en vista envolvente
+label.wrapped_view_no_edit = Vista envolvente - no editar
+label.error_retrieving_data = Error en la recuperación de datos
+label.user_colour_scheme_must_have_name = El esquema de colores del usuario debe tener un nombre
+label.no_name_colour_scheme = No hay nombre para el esquema de colores
+label.invalid_url = URL Invalido!
+label.error_loading_file = Error al cargar el fichero
+label.problems_opening_file = Encontrados problemas al abrir el fichero {0}!!
+label.file_open_error = Error al abrir el fichero
+label.no_das_sources_selected_warn = No han sido seleccionadas fuentes DAS.\\nPor favor, seleccione algunas fuentes y\\npruebe de nuevo.
+label.no_das_sources_selected_title = No han sido seleccionadas fuentes DAS
+label.colour_scheme_exists_overwrite = El esquema de colores {0} ya existe.\\nContinuar guardando el esquema de colores como {1}?
+label.duplicate_scheme_name = Duplicar nombre de esquema
+label.jalview_new_questionnaire = Hay un nuevo cuestionario disponible. Querr\u00EDa completarlo ahora ?\\n
+label.jalview_user_survey = Encuesta de usuario Jalview
+label.alignment_properties = Propiedades del alineamiento: {0}
+label.alignment_props = Propiedades del alineamiento
+label.input_cut_paste = Cortar y pegar la entrada
+label.input_cut_paste_params = Cortar y pegar la entrada - {0}
+label.alignment_output_command = Alineamiento de salida - {0}
+label.annotations = Anotaciones
+label.features = Funciones
+label.overview_params = Visión general {0}
+label.paste_newick_file = Pegar nuevo fichero Newick
+label.load_tree_from_file = desde fichero -
+label.colour_by_annotation = Color por anotación
+label.selection_output_command = Seleccionar salida - {0}
+label.annotation_for_displayid = <p><h2>Anotación para {0} </h2></p><p>
+label.pdb_sequence_mapping = PDB - Mapeado de secuencia
+label.pca_details = detalles de la PCA
+label.redundancy_threshold_selection = Selección del umbral de redundancia
+label.user_defined_colours = Colores definidos del usuario
+label.jalviewLite_release = JalviewLite - versión {0}
+label.jaview_build_date = Fecha de creación: {0}
+label.jalview_authors_1 = Authors: Jim Procter, Andrew Waterhouse, Jan Engelhardt, Lauren Lui,
+label.jalview_authors_2 = Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.
+label.jalview_dev_managers = Desarrollo gestionado por The Barton Group, University of Dundee, Scotland, UK.
+label.jalview_distribution_lists = Para ayuda, ver el FAQ at www.jalview.org y/o adjuntar la lista de envío jalview-discuss@jalview.org
+label.jalview_please_cite = Si usa Jalview incluya la siguiente cita, por favor:
+label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)
+label.jalview_cite_1_title = Jalview Version 2 - un editor de alineamiento múltiple de secuencias y banco de trabajo de análisis
+label.jalview_cite_1_ref = Bioinformaticos doi: 10.1093/bioinformatics/btp033
+label.right_click = clic en el botón derecho
+label.to_add_annotation = para añadir anotación
+label.alignment_has_no_annotations = El alineamiento no tiene anotaciones
+label.retrieving_pdb_data = Recuperación de datos PDB...
+label.label = Etiqueta
+label.no_features_added_to_this_alignment = No hay funciones asociadas a este alineamiento!!
+label.features_can_be_added_from_searches_1 = (Las funciones pueden ser añadidas de búsquedas o
+label.features_can_be_added_from_searches_2 = de ficheros de funciones Jalview / GFF)
+label.calculating_pca= Calculando PCA
+label.reveal_columns = Mostrar Columnas
+label.jalview_cannot_open_file = Jalview no puede abrir el fichero
+label.jalview_applet = Aplicación Jalview
+label.loading_data = Cargando datos
+label.memory_stats = Memoria libre total: {0} MB; Memoria máxima: {1} MB; {2} %
+label.calculating_tree = Calculando árbol
+label.state_queueing = En cola
+label.state_running = Procesando
+label.state_complete = Completar
+label.state_completed = Finalizado
+label.state_job_cancelled = ¡Trabajo cancelado!
+label.state_job_error = Error del trabajo!
+label.server_error_try_later = ¡Error del servidor! (Intentar más tarde)
+label.error_loading_pdb_data = ¡Error cargando los datos PDB!
+label.fetching_pdb_data = Buscando los datos PDB...
+label.structure_type = Estructura_tipo
+label.settings_for_type = Ajustes para {0}
+label.view_full_application = Ver en la aplicación completa
+label.load_associated_tree = Cargar árbol asociado ...
+label.load_features_annotations = Cargar características/anotaciones ...
+label.export_features = Exportar características...
+label.export_annotations = Exportar anotaciones ...
+label.jalview_copy = Copiar (sólo Jalview)
+label.jalview_cut = Cortar (sólo Jalview)
+label.to_upper_case = Pasar a mayúsculas
+label.to_lower_case = Pasar a minúsculas
+label.toggle_case = Alternar mayúsculas y minúsculas
+label.edit_name_description = Editar nombre/descripción
+label.create_sequence_feature = Crear función de secuencia
+label.edit_sequence = Editar secuencia
+label.edit_sequences = Editar secuencias
+label.sequence_details = Detalles de la secuencia
+label.jmol_help = Ayuda de Jmol
+label.all = Todo
+label.sort_by = Ordenar por
+label.sort_by_score = Ordenar por puntuación
+label.sort_by_density = Ordenar por densidad
+label.sequence_sort_by_density = Ordenar las secuencias por densidad
+label.reveal = Revelar
+label.hide_columns = Ocultar columnas
+label.load_jalview_annotations = Cargar un fichero de anotación de Jalivew o un fichero de características
+label.load_tree_file = Cargar un fichero de árbol
+label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences = Recuperar y parsear un registro de secuencia de base de datos para el alineamiento o secuencias actualmente seleccionados
+label.standard_databases = Bases de datos estándar
+label.fetch_embl_uniprot = Recuperar de EMBL/EMBLCDS o Uniprot/PDB y de cualquier fuente DAS seleccionada
+label.reset_min_max_colours_to_defaults = Reiniciar los colores min y max colours a los valores por defecto establecidos en las preferencias de usuario
+label.align_structures_using_linked_alignment_views = Alinear las estructuras utlizando las {0} vistas de alineamiento enlazadas
+label.connect_to_session = Conectar a la sesión {0}
+label.threshold_feature_display_by_score = Filtrar la característica mostrada por puntuación.
+label.threshold_feature_no_thereshold = Sin umbral
+label.threshold_feature_above_thereshold = Por encima del umbral
+label.threshold_feature_below_thereshold = Por debajo del umbral
+label.adjust_thereshold = Ajustar umbral
+label.toggle_absolute_relative_display_threshold = Cambiar entre mostrar el umbral absoluto y el relativo.
+label.display_features_same_type_different_label_using_different_colour = Mostrar las características del mismo tipo con una etiqueta diferente y empleando un color distinto (p.e. características del dominio)
+label.select_colour_minimum_value = Seleccionar el color para el valor mínimo
+label.select_colour_maximum_value = Seleccionar el color para el valor máximo
+label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista Jmol con todas las estructuras asociadas con la selección acxtual y superponer las utilizando el alineamiento.
+label.open_url_param = Abrir URL {0}
+label.open_url_seqs_param = Abrir URL ({0}..) ({1} secuencias)
+label.load_pdb_file_associate_with_sequence = Cargar un fichero PDB y asociarlo con la secuencia {0}
+label.reveal_hidden_columns = Revelar las columnas ocultas con el botón derecho del ratón
+label.dark_colour = Oscurecer color
+label.light_colour = Aclarar color
+label.highlightnode = Pulse el botón izquierdo para seleccionar las hojas.<br>Haga doble clic para invertir las hojas.<br>Pulse el botón derecho para cambiar el color.
+label.load_colour_scheme = Cargar esquema cromático
+label.toggle_enabled_views = Cuando está habilitado, permite que se seleccionen varias vistas.
+label.edit_notes_parameter_set = Haga clic para editar las notas de este conjunto de parámetros.
+label.open_local_file = Abrir fichero local
+label.enable_automatically_sort_alignment_when_open_new_tree = Habilite esta opción para ordenar automáticamente<br>el alineamiento cuando abra<br> un nuevo árbol.
+label.listen_for_selections = Atención a las selecciones
+label.selections_mirror_selections_made_same_sequences_other_views = Cuando está habilitado, las selecciones de esta vista serán un reflejo<br>de las selecciones realizadas en las mismas secuencias de otras vistas.
+label.toggle_sequence_visibility = Shift+H cambia la visibilidad de la secuencia
+label.toggle_columns_visibility = Ctrl+H cambia la visibilidad de la columna
+label.toggles_visibility_hidden_selected_regions = H cambiar la visibilidad de las regiones ocultas o seleccionadas
+label.rename_tab_eXpand_reGroup= Haga clic en el botón derecho para renombrar la pestaña<br>Presione X para expandir las tablas y G para reagrupar.
+label.right_align_sequence_id = Alinear a la derecha el ID de la secuencia
+label.sequence_id_tooltip = Ayuda del ID de la secuencia
+label.no_services = <Sin Servicios>
+label.select_copy_raw_html = Seleccione esta opción si desea copiar el html en bruto
+label.share_data_vamsas_applications = Compartir datos con otras aplicaciones vamsas
+label.connect_to = Conectar a
+label.join_existing_vamsas_session = Unirse a una sesión vamsas existente
+label.from_url = desde una URL
+label.any_trees_calculated_or_loaded_alignment_automatically_sort = Cuando está habilitado, cualquier árbol calculado o cargado en el alineamiento lo ordenará
+label.sort_with_new_tree = Ordenar con el nuevo árbol
+label.from_textbox = desde un área de texto
+label.window = Ventana
+label.preferences = Preferencias
+label.tools = Herramientas
+label.fetch_sequences = Recuperar secuencia(s)
+label.stop_vamsas_session = Parar sesión vamsas
+label.collect_garbage = Recolector de basura
+label.show_memory_usage = Mostrar uso de memoria
+label.show_java_console = Mostrar consola de Java
+label.show_jalview_news = Mostrar las noticias de Jalview
+label.take_snapshot = Tomar captura
+label.monospaced_fonts_faster_to_render = Las fuentes monoespaciadas son más rápidas de pintar
+label.anti_alias_fonts = Fuentes anti-alias (más lentas de pintar)
+label.monospaced_font= Monoespaciadas
+label.quality = Calidad
+label.maximize_window = Maximizar ventana
+label.conservation = Conservación
+label.consensus = Consenso
+label.histogram = Histograma
+label.logo = Logo
+label.non_positional_features = Características no posicionales
+label.database_references = Referencias a base de datos
+label.share_selection_across_views = Compartir la selección en todas las vistas
+label.scroll_highlighted_regions = Desplazarse hasta las regiones resaltadas
+label.gap_symbol = Símbolo del hueco
+label.alignment_colour = Color del alineamiento
+label.address = Dirección
+label.port = Puerto
+label.default_browser_unix = Navegador por defecto (Unix)
+label.send_usage_statistics = Enviar estadísticas de uso
+label.check_for_questionnaires = Comprobar los cuestionarios
+label.check_for_latest_version = Comprobar la última versión
+label.url_linkfrom_sequence_id = URL del enlace del ID de la secuencia
+label.use_proxy_server = Utilizar un servidor proxy
+label.eps_rendering_style = Estilo de visualización EPS
+label.append_start_end = Añadir /inicio-fin (/15-380)
+label.full_sequence_id = ID de la secuencia completo
+label.smooth_font = Fuente alargada
+label.autocalculate_consensus = Autocalcular consenso
+label.pad_gaps = Rellenar huecos
+label.pad_gaps_when_editing = Rellenar huecos al editar
+label.automatically_set_id_width = Establecer automáticamente al anchura del ID
+label.figure_id_column_width = Anchura de la columna del ID de la Figura
+label.use_modeller_output = Utilizar la salidad del Modeller
+label.wrap_alignment = Envolver alineamiento
+label.right_align_ids = Alinear IDs a la derecha
+label.sequence_name_italics = Nombre de la secuencia en cursiva
+label.open_overview = Abrir resumen
+label.default_colour_scheme_for_alignment = Esquema cromático por defecto para el alineamiento
+label.annotation_shading_default = Sombreado por defecto de la anotación
+label.default_minimum_colour_annotation_shading = Por mínimo por defecto para el sombreado de la anotación
+label.default_maximum_colour_annotation_shading = Por máximo por defecto para el sombreado de la anotación
+label.visual = Visual
+label.connections = Conexiones
+label.output = Salida
+label.editing = Edición
+label.das_settings = Configuración DAS
+label.web_services = Servicios web
+label.right_click_to_edit_currently_selected_parameter = Haga clic en el botón derecho para editar el parámetro seleccionado actualmente.
+label.let_jmol_manage_structure_colours = Permitir que Jmol gestione la estructuras cromáticas
+label.marks_leaves_tree_not_associated_with_sequence = Marcar las hojas del árbol que no están asociadas a una secuencia
+label.index_web_services_menu_by_host_site = Indizar los servicios web en el menú por el host que los aloja
+label.option_want_informed_web_service_URL_cannot_be_accessed_jalview_when_starts_up = Marque esta opción si desea ser informado<br>cuando no se pueda acceder a la URL de un servicio web<br>al arrancar Jalview.
+label.new_service_url = Nueva URL del servicio
+label.edit_service_url = Editar la URL del servicio
+label.delete_service_url = Borrar la URL del servicio
+label.details = Detalles
+label.options = Opciones
+label.parameters = Paramétros
+label.available_das_sources = Fuentes DAS disponibles
+label.full_details = Detalles completos
+label.authority = Autoridad
+label.type = Tipo
+label.proxy_server = Servidor proxy
+label.file_output = Fichero de salida
+label.select_input_type = Seleccionar el tipo de entrada
+label.set_options_for_type = Establecer opciones para el tipo
+label.data_input_parameters = Datos de los parámetros de entrada
+label.data_returned_by_service = Datos devueltos por el servicio
+label.rsbs_encoded_service = Servicio RSBS codificado
+label.parsing_errors = Errores de parseo
+label.simple_bioinformatics_rest_services = Simple Bioinformatics Rest Services
+label.web_service_discovery_urls = URL de descubrimiento de servicios web
+label.input_parameter_name = Nombre del parámetro de entrada
+label.short_descriptive_name_for_service = Nombre corto descriptivo del servicio
+label.function_service_performs = Tipo de función que realiza el servicio (p.e. alineamiento, análisis, búsqueda, etc).
+label.brief_description_service = Descripción breve del servicio
+label.url_post_data_service = URL a la que enviar los datos del servicio. Incluya cualquier parámetro especial que se necesite aquí
+label.optional_suffix = Sufijo opcional añadido a la URL al recuperar los resultados del servicio
+label.preferred_gap_character = ¿Qué caracter para el hueco prefiere el servicio?
+label.gap_character = Carácter para hueco
+label.move_return_type_up_order= Mover el tipo de returno hacia arriba en el orden
+label.move_return_type_down_order= Mover el tipo de returno hacia abajo en el orden
+label.update_user_parameter_set = Actualizar el conjunto de parámetros de usuario existente
+label.delete_user_parameter_set = Borrar el conjunto de parámetros de usuario existente
+label.create_user_parameter_set = Crear un nuevo conjunto de parámetro con la configuración actual.
+label.revert_changes_user_parameter_set = Deshacer todos los cambios en el conjunto de parámetros actual
+label.start_job_current_settings = Arrancar trabajo con la configuración actual
+label.cancel_job_close_dialog = Cerrar este diálogo y cancelar el trabajo
+label.input_output = Entrada/Salida
+label.cut_paste = Cortar y pegar
+label.adjusting_parameters_for_calculation = Ajustar los parámetros para el cálculo existente
+label.2d_rna_structure_line = 2D RNA {0}
+label.2d_rna_sequence_name = 2D RNA - {0}
+label.edit_name_and_description_current_group = Editar el nombre y la descripción del grupo actual.
+label.view_structure_for = Visualizar la estructura para {0}
+label.view_all_structures = Visualizar todas las {0} estructuras.
+label.view_all_representative_structures = Visualizar todas las {0} estructuras representativas.
+label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista de Jmol con todas las estructuras representativas\nasociadas con la selecci\u00F3n actual\nsuperpuesta con el alineamiento actual.
+label.associate_structure_with_sequence = Asociar estructura con la secuencia
+label.from_file = desde fichero
+label.enter_pdb_id = Introducir PDB Id
+label.discover_pdb_ids = Buscar PDB ids
+label.text_colour = Color del texto
+label.structure = Estructura
+label.view_structure = Visualizar estructura
+label.clustalx_colours = Colores de Clustalx
+label.above_identity_percentage = Sobre % identidad
+label.create_sequence_details_report_annotation_for = Anotación para {0}
+label.sequece_details_for = Detalles de la secuencia para {0}
+label.sequence_name = Nombre de la secuencia
+label.sequence_description = Descripción de la secuencia
+label.edit_sequence_name_description = Editar el nombre/descripción de la secuencia
+label.spaces_converted_to_backslashes = Los espacios se han convertido en _
+label.no_spaces_allowed_sequence_name = No se permiten espacios en el nombre de la secuencia
+label.select_outline_colour = Seleccionar el color del límite
+label.web_browser_not_found_unix = Unixers\: No es posible encontrar el navegador web por defecto.\nA\u00F1ada la ruta completa de su navegador en la pesta\u00F1a de Preferencias.
+label.web_browser_not_found = No se encuentra el navegador web
+label.select_pdb_file_for = Seleccione un fichero PDB para {0}
+label.html = HTML
+label.wrap = Envolver
+label.show_database_refs = Mostrar las referencias en base de datos
+label.show_non_positional_features = Mostrar las características no posicionales
+label.save_png_image = Guardar como imagen PNG
+label.load_tree_for_sequence_set = Cargar un árbol para este conjunto de secuencias
+label.export_image = Exportar imagen
+label.vamsas_store = Almacén VAMSAS
+label.translate_cDNA = Traducir cDNA
+label.extract_scores = Extraer puntuaciones
+label.get_cross_refs = Obtener referencias cruzadas
+label.sort_alignment_new_tree = Alinear el alineamiento con el nuevo árbol
+label.add_sequences = Añadir secuencias
+label.new_window = Nueva ventana
+label.refresh_available_sources = Refrescar las fuentes disponibles
+label.use_registry = Utilizar el registro
+label.add_local_source = Añadir fuente local
+label.set_as_default = Establecer por defecto
+label.show_labels = Mostrar etiquetas
+label.background_colour = Color de fondo
+label.associate_nodes_with = Asociar nodos con
+label.jalview_pca_calculation = Cálculo del PCA por Jalview
+label.link_name = Nombre del enalce
+label.pdb_file = Fichero PDB
+label.colour_with_jmol = Colorear con Jmol
+label.align_structures = Alinear estructuras
+label.jmol = Jmol
+label.sort_alignment_by_tree = Ordenar alineamiento por árbol
+label.mark_unlinked_leaves = Marcar las hojas como no enlazadas
+label.associate_leaves_with = Asociar hojas con
+label.save_colour_scheme_with_unique_name_added_to_colour_menu = Guarde el esquema cromáticos con un nombre único y se añadirá al menú de colores
+label.case_sensitive = Sensible a mayúsculas
+label.lower_case_colour = Color para las minúsculas
+label.index_by_host = Indizar por host
+label.index_by_type = Indizar por tipo
+label.enable_jabaws_services = Habilitar servicios JABAWS
+label.display_warnings = Mostrar advertencias
+label.move_url_up = Mover la URL hacia arriba
+label.move_url_down = Mover la URL hacia abajo
+label.add_sbrs_definition = Añadir una definición SBRS
+label.edit_sbrs_definition = Editar una definición SBRS
+label.delete_sbrs_definition = Borrar una definición SBRS
+label.your_sequences_have_been_verified = Sus secuencias has sido verificadas en una base de datos de secuencias conocidas. Algunos de sus ID se han alterado y\n, probablemente, el residuo de inicio/fin se haya actualizado.\nGuarde su alineamiento para mantener el ID actualizado.\n\n
+label.sequence_names_updated = Nombres de secuencia actualizados
+label.dbref_search_completed = Búsqueda de DBRef terminada
+label.show_all_chains = Mostrar todas las cadenas
+label.fetch_all_param = Recuperar todas {0}
+label.paste_new_window = Pegar en una nueva ventana
+label.settings_for_param = Configuración para {0}
+label.view_params = Visualizar {0}
+label.select_all_views = Seleccionar todas las vistas
+label.align_sequences_to_existing_alignment = Alinear las secuencias con el alineamiento existente
+label.realign_with_params = Realinear con {0}
+label.calcname_with_default_settings = {0} por defecto
+label.action_with_default_settings = {0} con la configuración por defecto
+label.edit_settings_and_run = Editar la configuración y ejecutar...
+label.view_and_change_parameters_before_alignment = Ver y cambiar los parámetros antes del alineamiento
+label.run_with_preset_params = Ejecutar {0} con preconfiguración
+label.view_and_change_parameters_before_running_calculation = Ver y cambiar los parámetros antes de lanzar el cálculo
+label.view_documentation = Ver documentación
+label.select_return_type = Seleccionar el tipo de retorno
+label.translation_of_params = Traducción de {0}
+label.features_for_params = Características de - {0}
+label.annotations_for_params = Anotaciones de - {0}
+label.generating_features_for_params = Generando características de - {0}
+label.generating_annotations_for_params = Generando anotaciones de - {0}
+label.varna_params = VARNA - {0}
+label.sequence_feature_settings = Configuración de las características de la secuencia
+label.pairwise_aligned_sequences = Secuencias alineadas a pares
+label.original_data_for_params = Datos originales de {0}
+label.points_for_params = Puntos de {0}
+label.transformed_points_for_params = Puntos transformados de {0}
+label.graduated_color_for_params = Color graduado para la característica de {0}
+label.select_backgroud_colour = Seleccionar color de fondo
+label.invalid_font = Fuente no válida
+label.separate_multiple_accession_ids = Separar los accession id con un punto y coma ";"
+label.replace_commas_semicolons = Cambiar comas por puntos y comas
+label.parsing_failed_syntax_errors_shown_below_param = Parseo erróneo. A continuación, se muestras los errores de sintaxis {0}
+label.parsing_failed_unrecoverable_exception_thrown_param = \nParseo err\u00F3neo. Se ha lanzado una excepci\u00F3n fatal\:\n {0}
+label.example_query_param = Consulta de ejemplo: {0}
+label.enter_value_increase_conservation_visibility = Introduzca un valor para incrementar la visibilidad de la conservación
+label.enter_percentage_identity_above_which_colour_residues = Introduza un % de identidad por encima del cual se colorearán los residuos
+label.wswublast_client_credits = Para mostrar las caracter\u00EDsticas de una secuencia, debe indicarse un id de Uniprot cuya secuencia se corresponda al 100 % con la introducida.\nPara mostrar estas caracter\u00EDsticas, prueba a cambar los nombre de sus secuencia con los ID que se sugieren a continuaci\u00F3n.\n\nRunning WSWUBlast at EBI.\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R.\nSOAP-based services provided by the European Bioinformatics Institute.\nNucleic Acids Res. 33(1)\:W25-W28 (2005));
+label.blasting_for_unidentified_sequence = Ejecutar BLAST para la secuencias sin identificar
+label.select_columns_containing = Seleccione las columnas que contengan
+label.select_columns_not_containing = Seleccione las columnas que no contengan
+option.trim_retrieved_seqs = Ajustar las secuencias recuperadas
+label.trim_retrieved_sequences = Cuando la secuencia de referencia es más larga que la secuencia con la que está trabajando, sólo se mantienen las subsecuencias relevantes.
+label.use_sequence_id_1 = Utilice $SEQUENCE_ID$ o $SEQUENCE_ID=/<regex>/=$
+label.use_sequence_id_2 = \nto para embeber el id de la secuencia en una URL
+label.ws_parameters_for = Parámetros para {0}
+label.switch_server = Cambiar servidor
+label.open_jabaws_web_page = Abra el página principal del servidor JABAWS en un navegador web
+label.choose_jabaws_server = Escoja un servidor para ejecutar este servicio
+label.services_at = Servicios en {0}
+label.rest_client_submit = {0} utilizando {1}
+label.fetch_retrieve_from =Recuperar de {0}
+label.fetch_retrieve_from_all_sources = Recuperar de todas las fuentes {0} en {1}<br>La primera es :{2}
+label.feature_settings_click_drag = Haga clic o arrastre los tipos de las características hacia arriba o hacia abajo para cambiar el orden de visualización.<br/>Haga doble clic para seleccionar las columnas que contienen las características del alineamiento/selección actual.<br/>Presionando Alt seleccionará las columnas exteriores a las características en lugar de las interiores<br/>Presione Shift para modificar la selección actual (en lugar de borrarla)<br/>Presione CTRL o Command/Meta para cambiar las columans externas o internas a las características<br/>
+label.opt_and_params_further_details = ver los detalles adicionales haciendo clic en el botón derecho
+label.opt_and_params_show_brief_desc_image_link = Haga clic para ver una descripción breve<br><img src="{0}"/>Haga clic en el botón derecho para obtener información adicional.
+label.opt_and_params_show_brief_desc = Haga clic para ver una descripción breve<br>
+label.adjusts_width_generated_eps_png = Ajusta la anchura del fichero EPS o PNG generado para asegurar incluso que el ID de la secuencia más larga o las etiquetas de anotación se muestran
+label.manually_specify_width_left_column = Especificar manualmente la anchura de la columna izquierda en las etiquetas de los ID de la secuencia y las anotaciones se mostrar en las figuras del alineamiento exportado.Esta configuraicón se ignorará si está marcada la opción 'Establecer automáticamente al anchura del ID'
+label.job_created_when_checked = Cuando está habilitado, se crea un trabajo para cada secuencia de la selección actual
+label.when_checked_job_visible_region_and_results = Cuando está habilitado, se crea un único trabajo para la región visible y los resultados de mapean en su ubicación dentro del alineamiento. En caso contrario, se creará un trabajo para cada región visible y contigua en el alineamiento o selección actual (p.e. un alineamiento múlitple).</html>
+label.flat_file_representation = La representación del fichero plano de este servicio utilizando el formalismo Really Simple Bioinformatics Service</html>
+label.result_of_parsing_rsbs = Resultados de parsear la representación RSBS</html>
+label.user_preset = Preselección de usuario
+label.service_preset = Preselección del servicio
+label.run_with_preset = Ejecutar {0} con preselección
+label.view_service_doc_url = Visualizar <a href="{0}">{1}</a></html>
+label.submit_sequence = Enviar {0} {1} {2} {3} a<br/>{4}</html>
+action.by_title_param = por {0}
+label.alignment = Alineamiento
+label.secondary_structure_prediction = Predicción de la estructura secundaria
+label.sequence_database_search = Búsqueda en base de datos de secuencias
+label.analysis = Análisis
+label.protein_disorder = Desorden en la proteína
+label.source_from_db_source = Fuentes de {0}
+label.from_msname = de {0}
+label.superpose_with = Superponer con...
+action.do = Hacer
+label.scale_label_to_column = Ajustar la etiqueta a la columna
+label.add_new_row = Añadir nuevo fila
+label.edit_label_description = Editar etiqueta/descripción
+label.hide_row = Ocultar esta fila
+label.delete_row = Borrar esta fila
+label.show_all_hidden_rows = Mostrar todas las filas ocultas
+label.export_annotation = Exportar anotación
+label.copy_consensus_sequence = Copiar secuencia de consenso
+label.helix = Hélice
+label.sheet = Hoja
+label.rna_helix = Hélice de ARN
+label.remove_annotation = Borrar anotación
+label.colour_by = Colorear por...
+label.muscle_multiple_protein_sequence_alignment = Alineamiento múltiple de secuencias de proteínas con Muscle
+label.mafft_multiple_sequence_alignment = Alineamiento múltiple de secuencias con MAFFT
+label.clustalw_multiple_sequence_alignment = Alineamiento múltiple de secuencias con ClustalW
+label.jnet_secondary_structure_prediction = Predicción de la estructura secundaria con JNet
+label.multiharmony = Multi-Harmony
+label.unable_start_web_service_analysis = No es posible iniciar el servicio web de análisis
+label.job_couldnt_be_started_check_input = El trabajo no puede arrancarse. Por favor, compruebe los parámetros de entrada y los mensajes de advertencia de la consola de Jalview.
+label.prompt_each_time = Preguntar siempre
+label.use_source = Fuente
+label.couldnt_save_project = No es posible guardar el proyecto
+label.error_whilst_saving_current_state_to = Error mientras se guardaba el estado a {0}
+label.error_whilst_loading_project_from = Error cargando el proyecto desde {0}
+label.couldnt_load_project = No es posible cargar el proyecto
+label.pca_sequences_not_aligned = Las secuencias deben estar alineadas antes de calcular el PCA.\nPruebe a utilizar la funci\u00F3n de rellenar huecos en el men\u00FA Editar,\no cualquiera de los servicios web de alineamiento m\u00FAltiple.
+label.invalid_name_preset_exists = Nombre no válido - esta preconfiguración ya existe.
+label.invalid_name = Nombre no válido
+label.set_proxy_settings = Por favor, configure su proxy en la pestaña 'Conexiones' de la ventana de Preferencia
+label.proxy_authorization_failed = Autorización del proxy fallida
+label.internal_jalview_error = Error interno de Jalview
+label.secondary_structure_prediction_service_couldnt_be_located = No se ha podido encontrar el Servicio de Predicciónd de la Estructura Secudaria {0} en {1}.
+label.service_called_is_not_msa_service = El Servicio llamado \n{0}\nno es un \nServicio de Alineamiento M\u00FAltiple de Secuencias\!
+label.msa_service_is_unknown = El Servicio de Alineamiento Múltiple llamado {0} es desconocido
+label.service_called_is_not_seq_search_service = El Servicio llamando \n{0}\nno es un \nServicio de B\u00FAsqueda de Secuencias\!
+label.seq_search_service_is_unknown = El Servicio de Búsqueda de Sencuencias llamado {0} es desconocido
+label.feature_type = Tipo de característisca
+label.display = Representación
+label.service_url = URL del servicio
+label.copied_sequences = Secuencias copiadas
+label.cut_sequences = Cortar secuencias
+label.conservation_colour_increment = Incremento de Conservación del Color ({0})
+label.percentage_identity_thereshold = Umbral del Porcentaje de Identidad ({0})
+label.error_unsupported_owwner_user_colour_scheme = Propietario no soportado para el diálogo del Esquema Cromático del Usuario
+label.save_alignment_to_file = Guardar Alineamiento en fichero
+label.save_features_to_file = Guardar Características en un fichero
+label.save_annotation_to_file = Guardar Anotación en un fichero
+label.no_features_on_alignment = No se han encontrado características en el alineamiento
+label.save_pdb_file = Guardar fichero PDB
+label.save_text_to_file = Guardar Texto en un fichero
+label.save_state = Guardar estado
+label.restore_state = Restaurar estado
+label.saving_jalview_project = Guardando el proyecto de Jalview {0}
+label.loading_jalview_project = Cargando el proyecto de Jalview {0}
+label.save_vamsas_document_archive = Guardar el archivo de documento Vamsas
+label.saving_vamsas_doc = Guardando el documento VAMSAS en {0}
+label.load_feature_colours = Cargar colores de características
+label.save_feature_colours = Guardar esquema cromático de características
+label.dataset_for = {0} conjunto de datos para {1}
+label.select_startup_file = Seleccionar fichero de arranque
+label.select_default_browser = Seleccionar navegador web por defecto
+label.save_tree_as_newick = Guardar árbol como fichero newick
+label.create_eps_from_tree = Crear un fichero EPS a partir de un árbol
+label.create_png_from_tree = Crear una imagen PNG a partir de un árbol
+label.save_colour_scheme = Guardar esquema cromático
+label.edit_params_for = Editar los parámetros de {0}
+label.choose_filename_for_param_file = Escoja un nombre de fichero para este fichero de parámetros
+label.save_as_html = Guardar como HTML
+label.recently_opened = Abiertos recientemente
+label.blasting_for_unidentified_sequence_jobs_running = Ejecutando BLAST de las secuencias no indentificadas - {0} trabajos en marcha.
+label.tree_from = Árbol de {0}
+label.webservice_job_title = {0} usando {1}
+label.select_visible_region_of = seleccionada {0} región de {1}
+label.visible = Visible
+label.select_unselect_visible_regions_from = seleccionada y deseleccionadas {0} regiones de {1}
+label.visible_region_of = región visible de
+label.webservice_job_title_on = {0} usando {1} de {2}
+label.updating_vamsas_session = Actualizando sesión VAMSAS
+label.loading_file = Cargando fichero: {0}
+label.edit_params = Editar {0}
+error.not_implemented = No implementado
+error.no_such_method_as_clone1_for = No existe ese método como un clone1 de {0}
+error.null_from_clone1 = Nulo de clone1!
+error.implementation_error_sortbyfeature = Error de implementación - sortByFeature debe ser uno de FEATURE_SCORE, FEATURE_LABEL o FEATURE_DENSITY.
+error.not_yet_implemented = No se ha implementado todavía
+error.unknown_type_dna_or_pep = Tipo desconocido {0} - dna o pep son los únicos valores permitidos
+error.implementation_error_dont_know_thereshold_annotationcolourgradient = Error de implementación: no se conoce el valor umbral para el AnnotationColourGradient actual.
+error.implementation_error_embeddedpopup_not_null = Error de implementación - embeddedPopup debe ser no nulo.
+error.invalid_colour_for_mycheckbox = Color no válido para MyCheckBox
+error.implementation_error_unrecognised_render_object_for_features_type = Error de implementación: no se reconoce el objeto de representación {0} para las características de tipo {1}
+error.implementation_error_unsupported_feature_colour_object = Error de implementación: objeto de color de características no soportado.
+error.invalid_separator_parameter = Separador de parámetros no válido - debe tener longitud mayor que cero
+error.alignment_cigararray_not_implemented = Alignment(CigarArray) no se ha implementado todavía
+error.weak_sequencei_equivalence_not_yet_implemented = Equivalencia débil sequenceI no se ha implementado todavía.
+error.implementation_error_can_only_make_alignmnet_from_cigararray = Error de implementación - sólo se puede construir un vista de alineamiento a partir de una CigarArray de secuencias.
+error.empty_view_cannot_be_updated = una vista vacía no se puede actualizar.
+error.mismatch_between_number_of_sequences_in_block = No hay coincidencia entre el número de secuencias en el bloque {0} ({1}) y la vista original ({2})
+error.padding_not_yet_implemented = El relleno no se ha implementado todavía
+error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view = No hay coincidencia entre los bloques visibles para actualizar y el número de contigs en la vista (contigs=0,blocks={0})
+error.unknown_seq_cigar_operation = Operación SeqCigar {0} desconocida
+error.implementation_bug_parse_cigar_string = Bug de implementación en parseCigarString
+error.implementation_error_invalid_operation_string = Error de implementación. Cadena de operación no válida.
+error.invalid_range_string = Rango de la cadena no válido (debe ser cero o un número positivo)
+error.implementation_error_delete_range_out_of_bounds = Error de implementación: deleteRange fuera de rango: el comienzo debe ser cero o positivo y menor que el final.
+error.implementation_error = Error de implementación
+error.implementation_error_unknown_operation = ¡Error de implementación! Operación desconocida {0}
+error.implementation_error_unexpected_null_from_get_sequence_and_deletions = Error de implementación - valor nulo no esperado en getSequenceAndDeletions
+error.implementation_error_set_seq_null = Error de implementación - _setSeq(null,...)
+error.implementation_error_s = Error de implementación: _s= {0}
+error.implementation_error_seqcigar_possible = SeqCigar: posible error de implementación: la secuencia es más larga de el conjunto de datos de la secuencia
+error.implmentation_bug_seq_null = Bug de implementación. Seq nula
+error.implementation_bug_cigar_operation_list_range_list = Bug de implementación: Cigar Operation list!= range list
+error.not_yet_implemented_cigar_object_from_cigar_string = No implementado todavía: construcción de un objeto Cigar desde una cadena y una secuencia con huecos.
+error.implementation_bug_cigar_operation = Bug de implementación. La operación Cigar {0} {1} no es ni {2}, ni {3} ni {4}.
+error.implementation_error_for_new_cigar = Error de implementación en new Cigar(SequenceI)
+error.implementation_error_cigar_seq_no_operations = Error de implementación: la {0}a secuencia Cigar no tiene operaciones.
+error.implementation_error_jmol_getting_data = Error de implementación - Jmol parece estar todavía intentando recuperar sus datos - informe de ello en http://issues.jalview.org/browse/JAL-1016
+error.implementation_error_no_pdbentry_from_index = Error de implementación - no existe la correspondiente entrada pdb (para el índice {0}) para añadir el mapeo de secuencias a
+error.jmol_version_not_compatible_with_jalview_version = La versión {0} de Jmol no es compatible con esta versión de Jalview. Informe de este problema en http://issues.jalview.org
+error.not_implemented_remove = Borrar: no implementado
+error.not_implemented_clone = Clonar: no implementado
+error.implementation_error_chimera_getting_data = Error de implementación - Chimera parece estar todavía intentando recuperar sus datos - informe de ello en http://issues.jalview.org/browse/JAL-1016
+error.call_setprogressbar_before_registering_handler = llamada a setProgressBar antes de registrar el manejador de la barra de estado
+label.cancelled_params = {0} cancelado
+error.implementation_error_cannot_show_view_alignment_frame = Error de implementación: no es posible mostrar una vista de otro alineamiento en un AlignFrame.
+error.implementation_error_dont_know_about_thereshold_setting = Error de implementación: no se conoce la configuración del umbral para el AnnotationColourGradient actual.
+error.eps_generation_not_implemented = La generación de EPS no se ha implementado todavía
+error.png_generation_not_implemented = La generación de PNG no se ha implementado todavía
+error.try_join_vamsas_session_another = Tratando de establecer una sesión VAMSAS cuando ya había otra conectada
+error.invalid_vamsas_session_id = Identificador de sesión VAMSAS no válido
+error.implementation_error_cannot_create_groovyshell = Error de implementación:no se puede crear groovyShell sin Groovy en el classpath
+label.groovy_support_failed = El soporte Groovy de Jalview ha fallado
+label.couldnt_create_groovy_shell = No es posible crear el shell de Groovy. Compruebe el fichero de log para conocer los detalles.
+error.unsupported_version_calcIdparam = Versión no soportada de {0}
+error.implementation_error_cant_reorder_tree = Error de implementación: no es posible reordenar este árbol. No DefaultMutableTreeNode.
+error.invalid_value_for_option = Valor no válido de {0} para la opción {1}
+error.implementation_error_cannot_import_vamsas_doc = Error de implementación - todavía no es posible importar el documento VAMSAS existente en una sesión existente.
+label.vamsas_doc_couldnt_be_opened_as_new_session = El documento VAMSAS no ha podido abrirse como una nueva sesión. Por favor, escoja otra.
+error.implementation_error_vamsas_operation_not_init = ¡Error de implementación! Operaciones VAMSAS cuando el cliente no estaba inicializado ni conectado
+error.jalview_no_connected_vamsas_session = Jalview está conectado a una sesión VAMSAS
+error.implementation_error_cannot_recover_vamsas_object_mappings = Error de implementación: no es posible recuperar los mapeos del objeto VAMSAS - no se ha hecho ningún backup
+error.setstatus_called_non_existent_job_pane = se lllamado a setStatus para el panel de trabajo {0} no existente
+error.implementation_error_cannot_find_marshaller_for_param_set =Error de implementación: no puede encontrar un marshaller para el conjunto de parámetros
+error.implementation_error_old_jalview_object_not_bound =Error de implementación: ¡el objeto Jalview antiguo no está enlazado! ({0})
+error.implementation_error_vamsas_doc_class_should_bind_to_type = Error de implementación: la clase de documento VAMSAS {0} debe enlazar a {1} (pero se ha encontrado que lo está a {2})
+error.implementation_error_jalview_class_should_bind_to_type = Error de implementación: la clase Jalview {0} debe enlazar a {1} (pero se ha encontrado que lo está a {2})
+error.invalid_vamsas_rangetype_cannot_resolve_lists = RangeType VAMSAS no válido - ¡no es posible resolver ambas listas de Pos y Seg con los valores elegidos!
+error.implementation_error_maplist_is_null = Error de implementación. MapList es nulo en initMapType.
+error.implementation_error_cannot_have_null_alignment = Error de implementación: no es posible tener una clave nula en el alineamiento
+error.implementation_error_null_fileparse = Error de implementación. FileParse nulo en el construictor de copia
+error.implementation_error_cannot_map_alignment_sequences = Error de implementación: no es posible maper un alineamiento de secuencias desde distintos conjuntos de datos en un único alineamiento en el documento VAMSAS.
+error.implementation_error_cannot_duplicate_colour_scheme = Error grave de implementación: no es posible duplicar el esquema cromático {0}
+error.implementation_error_structure_selection_manager_null = Error de implementación. El contexto structure selection manager's es nulo
+exception.ssm_context_is_null = El contexto SSM es nulo
+error.idstring_seqstrings_only_one_per_sequence = idstrings y seqstrings contienen una cadena por cada secuencia
+error.cannot_have_mixed_length_replacement_vectors = No es posible tener vectores de reemplazo de distinta longitud. El vector de reemplazo para {0} es de {1} cadenas de largo, pero se ha considerado ya como un vector de longitud {2}.
+error.cannot_have_zero_length_vector_replacement_strings = No es posible tener un vector de cadenas de reemplazo de longitud cero - debe ser uno o n.
+error.implementation_error_multiple_single_sequence_prediction_jobs_not_supported = ¡Error de implementación! Todavía no se soportan varios trabajos de predicción asociados a una única secuencia.
+error.implementation_error_invalid_msa_index_for_job = ¡Error de implementación! Valor msaIndex no válido para JPredJob en el objeto de entrada MSA padre!
+error.implementation_error_startjob_called = Error de implementación - StartJob(JpredJob) invocado en {0}
+error.multiple_jnet_subjob_merge_not_implemented = Todavía no se han implementado varios subtrabajos JNet conjuntos.
+label.job_never_ran = El trabajo nunca se ejecutó - entrada devuelta al usuario.
+error.implementation_error_minlen_must_be_greater_zero = Error de implementación: minlen debe ser cero o más
+error.implementation_error_msawbjob_called = Error de implementación - StartJob(MsaWSJob) invocado en un WSJobInstance {0}
+error.implementation_error_cannot_attach_ws_menu_entry = Error de implementación: ¡no es posible adjunto una WS Menu Entry sin una referencia a un manejador del servicio!
+error.parameter_migration_not_implemented_yet = La migración de parámetros no se ha implementado todavía
+error.implementation_error_cannot_set_jaba_option = Error de implementación: no es posible establecer el valor de Jaba Option a un valor fuera de su rango permitido
+error.implementation_error_valuetype_doesnt_support_jabaws_type = Error de implementación: jalview.ws.params.ValueConstrainI.ValueType no soporta el tipo JABAWS: {0}
+error.cannot_create_jabaws_param_set = No es posible crear un JabaWSParamSet con parámetros no JabaWS
+error.cannot_set_arguments_to_jabaws_param_set = No es posible establecer argumentos en JabaWSParamSet que no sean argumentos JabaWS
+error.implementation_error_runner_config_not_available = Error de implementación: Runner Config no está disponible para un servicio JABAWS de tipo {0} ({1})
+error.implementation_error_cannot_handle_jaba_param = Error de implementación: no es posible manejar el objeto del parámetro Jaba {0}
+error.implementation_error_attempt_to_delete_service_preset = Error de implementación: intento de borrar un servicio preestablecido
+error.implementation_error_cannot_locate_oldname_presetname = Error de implementación: no es posible localizar ni el nombre antiguo ({0}) ni el presetName ({1} en el almacén de datos.
+error.implementation_error_jabaws_param_set_only_handled_by = Error de implementación: JabaWsParamSets sólo puede ser manejado por JabaParamStore
+error.cannot_set_source_file_for = No es posible establecer el fichero fuente para {0}
+error.mismatch_service_instance_preset = Posible desajuste entre la instancia del servicio y la prestablecida
+error.cannot_set_params_for_ws_preset = No es posible establecer los parámetros para el servicio web JABA presestablecido
+error.implementation_error_can_only_instantiate_jaba_param_sets = Error de implementación: sólo se puede instanciar conjuntos de parámetros Jaba
+error.no_aacon_service_found = No se ha encontrado ningún servicio AACon
+error.implementation_error_couldnt_copy_value_constraint = Error de implementación: ¡no se puede copiar ValueConstrain!
+error.couldnt_encode_as_utf8 = No se ha podido codificar {0} como UTF-8.
+error.tree_inputtype_not_yet_implemented = No se ha implementado todavía el árbol como InputType
+error.implementation_error_need_to_have_httpresponse = Error de implementación: se necesita tener un HttpResponse que procesar
+error.dbrefsource_implementation_exception = Excepción de implementación DBRefSource
+error.implementation_error_dbinstance_must_implement_interface = Error de Implementación- getDbInstances debe recibir una clase que implemente jalview.ws.seqfetcher.DbSourceProxy (recibió {0})
+error.implementation_error_must_init_dbsources =Error de implementación. Debe inicializar dbSources
+label.view_controller_toggled_marked = {0} {1} columnas {2} conteniendo características del tipo {3} en {4} secuencia(s)
+label.toggled = Invertida
+label.marked = Marcada
+label.not = no
+label.no_feature_of_type_found = No se han encontrado características del tipo {0}.
+label.submission_params = Envío {0}
+label.empty_alignment_job = Trabajo de alineamiento vacío
+label.add_new_sbrs_service = Añadir un nuevo SBRS
+label.edit_sbrs_entry = Editar entrada SBRS
+label.pca_recalculating = Recalculando PCA
+label.pca_calculating = Calculando PCA
+label.select_foreground_colour = Escoger color del primer plano
+label.select_colour_for_text = Seleccione el color del texto
+label.adjunst_foreground_text_colour_thereshold = Ajustar el umbral del color del texto en primer plano
+label.select_subtree_colour = Seleccioanr el color del sub-árbol
+label.create_new_sequence_features = Crear nueva(s) característica(s) de secuencia
+label.amend_delete_features = Arrelgar/Borrar características de {0}
+exception.out_of_bounds_for_file = Fuera de rango para el fichero: i={0}, Buffer final: i0={1} iend={2}
+exception.null_string_given_to_regex_search = Cadena nula enviada a Regex.search
+exception.null_string_like_given_to_regex_search = StringLike nula enviada a Regex.search
+exception.null_string_given_to_regex_reverse_search = Cadena nula enviada a Regex.reverseSearch
+exception.null_string_like_given_to_regex_reverse_search = StringLike nula enviada a Regex.reverseSearch
+exception.null_string_like_given_to_regex_search_from = Cadena nula enviada a Regex.searchFrom
+exception.null_string_like_given_to_regex_search_region = Cadena nula enviada a Regex.searchRegion
+exception.replace_null_regex_pointer = Reemplazador tiene un puntero Regex nulo
+exception.bad_pattern_to_regex_perl_code = patrón erróneo en Regex.perlCode: {0}
+exception.no_stub_implementation_for_interface = No existe una implementación del stub para la interfaz: {0}
+exception.cannot_set_endpoint_address_unknown_port = No es posible estabelcer la dirección de punto final para el puerto desconocido {0}
+exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis = Consultando la coincidencia de apertura de paréntesis para paréntesis sin cerrar (?)
+exception.mismatched_unseen_closing_char = Discordancia (no vista) en el carácter de cierre {0}
+exception.mismatched_closing_char = Carácter de cierre discordante {0}
+exception.mismatched_opening_char = Carácter de apertura discordante {0} en {1}
+exception.invalid_datasource_couldnt_obtain_reader = Fuente de datos no válida. No es posible obtener el Reader
+exception.index_value_not_in_range = {0}: el valor del índice {1} en se encuentra en el rango [0..{2}]
+exception.unterminated_cigar_string = Cadena cigar sin terminar
+exception.unexpected_operation_cigar_string_pos = Operación no esperada {0} en una cadena cigar (posición {1} en {2})
+exception.couldnt_parse_responde_from_annotated3d_server = No es posible parsear la respuesta procedente del servidor Annotate3d
+exception.application_test_npe = Prueba de aplicación: lanzando un NullPointerException que debe aparecer en la consola
+exception.overwriting_vamsas_id_binding = Sobreescribiendo la asociación al VAMSAS id
+exception.overwriting_jalview_id_binding = Sobreescribiendo la asociación al Jalview id
+error.implementation_error_unknown_file_format_string = Error de implementación: cadena de formato de fichero desconocido
+exception.failed_to_resolve_gzip_stream = Fallo al resolver el flujo GZIP
+exception.problem_opening_file_also_tried = Problema abriendo {0} (también se intentó {1}) : {2}
+exception.problem_opening_file = Problema abriendo {0} : {1}
+exception.failed_to_read_data_from_source = Error al leer datos de la fuente: {0}
+exception.no_init_source_stream = Flujo de fuente sin inicializar
+exception.invalid_source_stream = Flujo de fuente no válida: {0}
+error.implementation_error_reset_called_for_invalid_source = Error de implementación: se ha invocado un Reset en una fuente no válida.
+exception.number_of_residues_in_query_sequence_differ_from_prediction = El n\u00FAmero de residuos en la supuesta secuencia consultada {0} ({1}\n{2})\ndifiere del n\u00FAmero de sitios de predicci\u00F3n en la predicci\u00F3n ({3})
+label.mapped = mapeado
+exception.jpredconcide_entry_has_unexpected_number_of_columns = JPredConcise: La entrada ({0}) tiene un número inesperado de columnas
+exception.couldnt_parse_concise_annotation_for_prediction = No es posible parsear la anotaci\u00F3n concisa para el perfil de predicci\u00F3n.\n{0}
+exception.newfile = Fichero Newick\: {0}\n
+label.no_tree_read_in = No hay lectura de árbol en
+exception.rnaml_couldnt_access_datasource = No ha sido posible acceder la fuente de datos ({0})
+exception.ranml_couldnt_process_data = No ha sido posible procesar los datos como un fichero RNAML ({0})
+exception.ranml_invalid_file = Fichero RNAML no válido ({0})
+exception.ranml_problem_parsing_data = Problema parseando los datos como RNAML ({0})
+exception.pfam_no_sequences_found = No se han encontrado secuencias (entrada PFAM)
+exception.stockholm_invalid_format = Este fichero no es tiene un formato STOCKHOLM válido: la primera línea no contiene '# STOCKHOLM'
+exception.couldnt_parse_sequence_line = No es posible parse la línea de secuencia: {0}
+exception.error_parsing_line = Error parseando {0}
+exception.unknown_annotation_detected = Anotación desconocida detectada: {0} {1}
+exception.couldnt_store_sequence_mappings = No es posible almacenar los mapeos de secuencia para {0}
+exception.matrix_too_many_iteration = Demasiadas iteraciones en {0} (el máximo es {1})
+exception.browser_not_found = Excepción al buscar el navegador: {0}
+exception.browser_unable_to_locate = Imposible encontrar el navegador: {0}
+exception.invocation_target_exception_creating_aedesc = InvocationTargetException mientras se creaba AEDesc: {0}
+exception.illegal_access_building_apple_evt= IllegalAccessException mientras se construía AppleEvent: {0}
+exception.instantiation_creating_aedesc = InstantiationException mientras se creaba AEDesc: {0}
+exception.unable_to_launch_url = Imposible lanzar la URL: {0}
+exception.unable_to_create_internet_config = Imposible crear una instancia de configuración de Internet: {0}
+exception.invocation_target_calling_url = InvocationTargetException mientras se invocaba openURL: {0}
+exception.illegal_access_calling_url = IllegalAccessException mientras se invocaba openURL: {0}
+exception.interrupted_launching_browser = InterruptedException mientras se lanzaba el navegador: {0}
+exception.das_source_doesnt_support_sequence_command = La fuente {0} no soporta el comando sequence.
+exception.invalid_das_source = Fuente DAS no válida: {0}
+exception.ebiembl_retrieval_failed_on = La recuperación de datos EBI EMBL XML ha fallado en {0}:{1}
+label.no_embl_record_found = # No se ha recuperado ningún registro EMBL de {0}:{1}
+label.embl_successfully_parsed = # Se han parseado con éxito las consultas {0} en un alineamiento
+exception.no_pdb_records_for_chain = No se han encontrado registros {0} para la cadena {1}
+exception.unexpected_handling_rnaml_translation_for_pdb = Excepcion inesperada cuando se traducían a RNAML los datos PDB
+exception.couldnt_recover_sequence_properties_for_alignment = No es posible recuperar las propiedades de la secuencia para el alineamiento
+exception.unknown_format_for_file = Formato desconocido {0} para el fichero \: \n{1}
+label.remove_gaps = Eliminar huecos
+exception.couldnt_recover_sequence_props_for_jnet_query = No ha sido posible recuperar las propiedades de la secuencia para la secuencia JNet Query!
+exception.server_timeout_try_later = Tiempo de conexi\u00F3n ha expirado - int\u00E9ntelo de nuevo m\u00E1s tarde\n
+exception.web_service_returned_null_try_later= El servidor {0} ha devuelto un objeto nulo, por lo que probablemente no se haya podido contactar con él. Inténtelo de nuevo más tarde.
+exception.cannot_contact_service_endpoint_at = No es posible contactar por el punto de acceso al servicio en {0}
+error.implementation_error_cannot_find_service_url_in_given_set = Error de implementación: no es posible encontrar la URL del servicio en el conjunto de URL proporcionado
+error.implementation_error_cannot_find_service_url_in_given_set_param_store = Error de implementación: la URL del servicio en el conjunto de URL para este almacén de parámetros del servicio({0})
+exception.jobsubmission_invalid_params_set = Conjunto de parámetros no válido. Comprueba la implementación de Jalview
+exception.notvaliddata_group_contains_less_than_min_seqs = El grupo contiene menos de {0} secuencias.
+exception.outofmemory_loading_pdb_file = Sin menoria al cargar el fichero PDB
+exception.eps_coudnt_write_output_file = No es posible escribir el fichero de salida: {0}
+exception.eps_method_not_supported = Método actualmente no suportado por la versión {0} de EpsGraphics2D
+exception.eps_unable_to_get_inverse_matrix = Imposible obtener la inversa de la matrix: {0}
+warn.job_cannot_be_cancelled_close_window = Este trabajo no se puede cancelar.\nSimplemente, cierre la ventana.
+warn.service_not_supported = ¡Servicio no soportado!
+warn.input_is_too_big = ¡El tamaño de la entrada es demasiado grande!
+warn.invalid_job_param_set = ¡Conjunto de parámetros del trabajo no válido!
+info.job_couldnt_be_run_server_doesnt_support_program = No es posible ejecutar el trabajo porque el servidor no soporta este programa.\n{0}
+info.job_couldnt_be_run_exceeded_hard_limit = No es posible ejecutar el trabajo porque excede los l\u00EDmites del servidor.\n{0}
+info.job_couldnt_be_run_incorrect_param_setting = No es posible ejecutar el trabjao porque el servidor no soporta algunos de los par\u00E1metros.\n{0}\nPor favor, aseg\u00FArese de que ha usado los par\u00E1metros adecuados para este servicio\n
+info.no_jobs_ran = No se ha ejecutado ningún trabajo
+info.failed_to_submit_prediction = Error al enviar la predicci\u00F3n\:\n{0} {1}
+info.invalid_jnet_job_result_data ={0}\n{1}\nResultados del trabajo JNet no v\u00E1lidos\!\n{2}
+info.failed_to_submit_sequences_for_alignment = Error al enviar la secuencias para el alineamiento.\nLo m\u00E1s probable es que haya un problema en el servidor.\nSimplemente, cierre la ventana\n
+info.alignment_object_method_notes = \nNotas sobre los m\u00E9todos del objeto alineamiento\n
+info.server_exception = \n{0} Excepci\u00F3n del servidor\!\n{1}
+status.processing_commandline_args = Procesando los argumentos de la línea de comandos...
+status.das_features_being_retrived = Recuperando características DAS...
+status.searching_for_sequences_from = Buscando secuencias en {0}
+status.finished_searching_for_sequences_from = Finalizada la búsqueda de secuencias en {0}
+label.eps_file = Fichero EPS
+label.png_image = Imagen PNG
+status.saving_file = Guardando {0}
+status.export_complete = Exportación completada.
+status.fetching_pdb = Recuperando PDB {0}
+status.refreshing_news = Refrescando noticias
+status.importing_vamsas_session_from = Importando sesión VAMSAS de {0}
+status.opening_params = Abriendo {0}
+status.waiting_sequence_database_fetchers_init = Esperando la inicialización de los recuperadores de bases de datos de secuencias
+status.init_sequence_database_fetchers = Inicializando recuperadores de bases de datos de secuencias
+status.fetching_sequence_queries_from = Recuperando {0} consultas de secuencias de {1}
+status.finshed_querying = Consulta finalizada
+status.parsing_results = Parseando resultados.
+status.processing = Procesando...
+status.refreshing_web_service_menus = Refrescando los menús de servicios web
+status.collecting_job_results = Recolectando los resultados de los trabajos.
+status.fetching_das_sequence_features = Recuperando las características DAS de las secuencias
+status.no_das_sources_active = No existe ninguna fuente DAS activa
+status.das_feature_fetching_cancelled = Recuperación de características DAS cancelada
+status.das_feature_fetching_complete = Recuperación de características DAS completada
+status.fetching_db_refs = Recuperando db refs
+label.font_doesnt_have_letters_defined = La fuente no tiene letras definidas\npor lo que no puede emplease\ncon datos de alineamientos
+label.error_loading_file_params = Error cargando el fichero {0}
+label.error_loading_jalview_file = Error cargando el fichero Jalview
+warn.out_of_memory_when_action = Sin memoria al {0}\!\!\nConsulte los ficheros de ayuda para ajustar la memoria de la m\u00E1quina virtual de Java.
+warn.out_of_memory_loading_file = Sin memoria al cargar el fichero {0}\!\!\nConsulte los ficheros de ayuda para ajustar la memoria de la m\u00E1quina virtual de Java.
+label.out_of_memory = Sin memoria
+label.invalid_id_column_width = Identificador de anchura de columna no válido
+warn.user_defined_width_requirements = La anchura definida por el usuario para la \nlas columnas de anotaci\u00F3n e identificador de secuencias\nen figuras exportadas debe ser\na, al menos, de 12 p\u00EDxels
+label.couldnt_create_sequence_fetcher = No es posible crear SequenceFetcher
+warn.couldnt_create_sequence_fetcher_client = No es posible crear el cliente de recuperador de secuencias. Comprueba el fichero de log para más detalles.
+warn.server_didnt_pass_validation = El servicio no ha pasado la validaci\u00F3n.\nCompruebe la consola de Jalview para m\u00E1s detalles.
+warn.url_must_contain = La URL de la secuencia debe contener $SEQUENCE_ID$ o un regex $SEQUENCE_ID=/<regex>/=$
+info.validate_jabaws_server = \u00BFValidar el servidor JabaWS?\n(Consulte la consola de salida para obtener los resultados)
+label.test_server = ¿Probar servidor?
+info.you_want_jalview_to_find_uniprot_accessions = \u00BFDesea que Jalview encuentre\nUniprot Accession ids para los nombres de secuencias dados?
+label.find_uniprot_accession_ids = Buscar Uniprot Accession Ids
+label.new_sequence_fetcher = Añadir recuperador de secuencias
+label.additional_sequence_fetcher = Recuperador de secuencia adicional
+label.select_database_retrieval_source = Seleccionar fuente de recuperación de bases de datos
+label.overwrite_existing_file = ¿Sobreescribir el fichero existente?
+label.file_already_exists = El fichero existe
+label.edit_jabaws_url = Editar JABAWS URL
+label.add_jabaws_url = Añadir nueva JABAWS URL
+label.news_from_jalview = Noticias de http://www.jalview.org
+label.cut_paste_alignmen_file = Cortar & Pegar fichero de alineamiento
+label.enter_redundancy_thereshold = Introducir el umbral de redundancia
+label.select_dark_light_set_thereshold = <i>Seleccionar un color oscuro y un color claro para el texto y establecer el umbral en que<br>cambiar entre colores, basándose en el color de fondo</i>
+label.select_feature_colour = Seleccionar color de las características
+label.ignore_gaps_consensus = Ignorar huecos en el consenso
+label.show_group_histogram = Mostrar histograma de grupo
+label.show_group_logo = Mostrar logo de grupo
+label.normalise_group_logo = Normalizar el logo de grupo
+label.show_histogram = Mostrar histograma
+label.show_logo = Mostrar logo
+label.normalise_logo = Normalizar logo
+label.no_colour_selection_in_scheme = Por favor, seleccione un color antes de aplicar el esquema cromático
label.no_colour_selection_warn = Error guardando el esquema cromático
\ No newline at end of file
*/
package MCview;
-import java.util.*;
-
-import java.awt.*;
-
-import jalview.analysis.*;
-import jalview.datamodel.*;
-import jalview.schemes.*;
+import jalview.analysis.AlignSeq;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+import jalview.schemes.ResidueProperties;
import jalview.structure.StructureMapping;
+import java.awt.Color;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Vector;
+
public class PDBChain
{
/**
+ ((tx.getStatus() == null || tx.getStatus().length() == 0) ? ""
: ":" + tx.getStatus()));
if (tx.begin != 0 && tx.end != 0)
+ {
sq.addSequenceFeature(tx);
+ }
}
}
return features;
// remains the same as the first atom's resNumber (res)
while ((resNumber == res) && (i < atoms.size()))
{
- resAtoms.addElement((Atom) atoms.elementAt(i));
+ resAtoms.addElement(atoms.elementAt(i));
i++;
if (i < atoms.size())
{
annots[i] = (Annotation) resAnnotation.elementAt(i);
if (annots[i].value > max)
+ {
max = annots[i].value;
+ }
resAnnotation.setElementAt(null, i);
}
AlignmentAnnotation tfactorann = new AlignmentAnnotation(
{
int prn = mapping.getPDBResNum(k + 1);
- an[k] = new Annotation((float) prn);
+ an[k] = new Annotation(prn);
if (min == -1)
{
min = k;
}
sq.addAlignmentAnnotation(new AlignmentAnnotation("PDB.RESNUM",
"PDB Residue Numbering for " + this.pdbid + ":" + this.id,
- an, (float) min, (float) max, AlignmentAnnotation.LINE_GRAPH));
+ an, min, max, AlignmentAnnotation.LINE_GRAPH));
+
}
}
}
try
{
tmpPDBFile = pdbentry.getFile();
- PDBfile pdbfile = new PDBfile(tmpPDBFile,
+ PDBfile pdbfile = new PDBfile(false,false,tmpPDBFile,
jalview.io.AppletFormatAdapter.FILE);
pdbcanvas.init(pdbentry, seq, chains, ap, protocol);
*/
package MCview;
-import java.io.*;
-import java.util.*;
-
-import java.awt.*;
-
import jalview.analysis.AlignSeq;
-import jalview.datamodel.*;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceI;
import jalview.io.FileParse;
import jalview.util.MessageManager;
+import java.awt.Color;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Vector;
+
public class PDBfile extends jalview.io.AlignFile
{
public Vector chains;
*/
boolean VisibleChainAnnotation = false;
- public PDBfile(String inFile, String inType) throws IOException
+ boolean processSecondaryStructure=true;
+
+
+ public PDBfile(boolean visibleChainAnnotation,
+ boolean processSecondaryStructure)
{
- super(inFile, inType);
+ super();
+ VisibleChainAnnotation = visibleChainAnnotation;
+ this.processSecondaryStructure = processSecondaryStructure;
}
- public PDBfile(FileParse source) throws IOException
+ public PDBfile(boolean visibleChainAnnotation,
+ boolean processSecondaryStructure, String file, String protocol) throws IOException
{
- super(source);
+ super(false, file, protocol);
+ VisibleChainAnnotation = visibleChainAnnotation;
+ this.processSecondaryStructure = processSecondaryStructure;
+ doParse();
+ }
+
+ public PDBfile(boolean visibleChainAnnotation,
+ boolean processSecondaryStructure, FileParse source) throws IOException
+ {
+ super(false, source);
+ VisibleChainAnnotation = visibleChainAnnotation;
+ this.processSecondaryStructure = processSecondaryStructure;
+ doParse();
}
public String print()
{
for (int ai = 0; ai < chainannot.length; ai++)
{
-
chainannot[ai].visible = VisibleChainAnnotation;
annotations.addElement(chainannot[ai]);
}
}
}
+ if (processSecondaryStructure)
+ {
if (rna.size() > 0)
+ {
try
{
processPdbFileWithAnnotate3d(rna);
x.printStackTrace();
}
+ }
;
if (prot.size() > 0)
+ {
try
{
processPdbFileWithJmol(prot);
} catch (Exception x)
{
System.err
- .println("Exceptions when dealing with RNA in pdb file");
- x.printStackTrace();
-
- }
- ;
- if (prot.size() > 0)
- try
- {
- processPdbFileWithJmol(prot);
- } catch (Exception x)
- {
- System.err
- .println("Exceptions when dealing with RNA in pdb file");
+ .println("Exceptions from Jmol when processing data in pdb file");
x.printStackTrace();
}
- ;
+ }
+ }
} catch (OutOfMemoryError er)
{
System.out.println("OUT OF MEMORY LOADING PDB FILE");
System.err.println(line);
}
}
+ markCalcIds();
}
+ private static String calcIdPrefix = "JalviewPDB:";
+
+ public static boolean isCalcIdHandled(String calcId)
+ {
+ return calcId != null
+ && (calcId.startsWith(calcIdPrefix) && calcId.indexOf(
+ calcIdPrefix,
+ calcIdPrefix.length() + 1) > -1);
+ }
+ public static boolean isCalcIdForFile(String calcId, String pdbFile)
+ {
+ return (calcId != null && calcId.startsWith(calcIdPrefix + pdbFile
+ + ":" + calcIdPrefix));
+ }
+
+ public static String relocateCalcId(String calcId,
+ Hashtable<String, String> alreadyLoadedPDB) throws Exception
+ {
+ int s = calcIdPrefix.length(), end = calcId.indexOf(calcIdPrefix, s);
+ String between = calcId.substring(s, end - 1);
+ return calcIdPrefix + alreadyLoadedPDB.get(between) + ":"
+ + calcId.substring(end);
+ }
+
+ private void markCalcIds()
+ {
+ for (SequenceI sq : seqs)
+ {
+ for (AlignmentAnnotation aa : sq.getAnnotation())
+ {
+ String oldId = aa.getCalcId();
+ if (oldId == null)
+ {
+ oldId = "";
+ }
+ aa.setCalcId("JalviewPDB:" + id + ":JalviewPDB:" + oldId);
+ }
+ }
+ }
private void processPdbFileWithJmol(ArrayList<SequenceI> prot)
throws Exception
{
{}).invoke(jmf));
cl.getMethod("addAnnotations", new Class[]
{ Alignment.class }).invoke(jmf, al);
- replaceMatchingSeqsWith(prot, al, AlignSeq.PEP);
+ for (SequenceI sq : al.getSequences())
+ {
+ if (sq.getDatasetSequence() != null)
+ {
+ sq.getDatasetSequence().getPDBId().clear();
+ }
+ else
+ {
+ sq.getPDBId().clear();
+ }
+ }
+ AlignSeq.replaceMatchingSeqsWith(seqs, annotations, prot, al, AlignSeq.PEP, false);
}
} catch (ClassNotFoundException q)
{
new Class[]
{ FileParse.class }).invoke(annotate3d, new Object[]
{ new FileParse(getDataName(), type) }));
- replaceMatchingSeqsWith(rna, al, AlignSeq.DNA);
- }
- } catch (ClassNotFoundException x)
- {
- // ignore classnotfounds - occurs in applet
- }
- ;
- }
-
- /**
- * matches ochains against al and populates seqs with the best match between
- * each ochain and the set in al
- *
- * @param ochains
- * @param al
- * @param dnaOrProtein
- */
- private void replaceMatchingSeqsWith(ArrayList<SequenceI> ochains,
- AlignmentI al, String dnaOrProtein)
- {
- if (al != null && al.getHeight() > 0)
- {
- ArrayList<SequenceI> matches = new ArrayList<SequenceI>();
- ArrayList<AlignSeq> aligns = new ArrayList<AlignSeq>();
-
- for (SequenceI sq : ochains)
- {
- SequenceI bestm = null;
- AlignSeq bestaseq = null;
- int bestscore = 0;
- for (SequenceI msq : al.getSequences())
- {
- AlignSeq aseq = AlignSeq.doGlobalNWAlignment(msq, sq,
- dnaOrProtein);
- if (bestm == null || aseq.getMaxScore() > bestscore)
- {
- bestscore = aseq.getMaxScore();
- bestaseq = aseq;
- bestm = msq;
- }
- }
- System.out.println("Best Score for " + (matches.size() + 1) + " :"
- + bestscore);
- matches.add(bestm);
- aligns.add(bestaseq);
- al.deleteSequence(bestm);
- }
- for (int p = 0, pSize = seqs.size(); p < pSize; p++)
- {
- SequenceI sq, sp = seqs.get(p);
- int q;
- if ((q = ochains.indexOf(sp)) > -1)
+ for (SequenceI sq : al.getSequences())
{
- seqs.set(p, sq = matches.get(q));
- sq.setName(sp.getName());
- sq.setDescription(sp.getDescription());
- sq.transferAnnotation(sp, aligns.get(q).getMappingFromS1(false));
- int inspos = -1;
- for (int ap = 0; ap < annotations.size();)
+ if (sq.getDatasetSequence() != null)
{
- if (((AlignmentAnnotation) annotations.get(ap)).sequenceRef == sp)
- {
- if (inspos == -1)
- {
- inspos = ap;
- }
- annotations.remove(ap);
- }
- else
- {
- ap++;
- }
+ sq.getDatasetSequence().getPDBId().clear();
}
- if (sq.getAnnotation() != null)
+ else
{
- annotations.addAll(inspos, Arrays.asList(sq.getAnnotation()));
+ sq.getPDBId().clear();
}
}
+ AlignSeq.replaceMatchingSeqsWith(seqs, annotations, rna, al, AlignSeq.DNA, false);
}
+ } catch (ClassNotFoundException x)
+ {
+ // ignore classnotfounds - occurs in applet
}
+ ;
}
/**
for (int i = 0; i < chains.size(); i++)
{
((PDBChain) chains.elementAt(i)).setChainColours(Color.getHSBColor(
- 1.0f / (float) i, .4f, 1.0f));
+ 1.0f / i, .4f, 1.0f));
}
}
# You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
# The Jalview Authors are detailed in the 'AUTHORS' file.
###############################################################################
-# THE CASTOR PROPERTIES FILE\r
-# This file specifies values for Castor run-time which may be configured\r
-# by the user.\r
-# $Id$\r
-\r
-# This section defines Backwards compatibility switches.\r
-#\r
-# Hashtable/Map default mapping.\r
-# For backward compatibility with 0.9.5.2 and earlier.\r
-#\r
-#org.exolab.castor.xml.saveMapKeys=false\r
-\r
-# Defines the default XML parser to be used by Castor.\r
-# The parser must implement org.xml.sax.Parser.\r
-#\r
-org.exolab.castor.parser=org.apache.xerces.parsers.SAXParser\r
-\r
-# Defines the (default) XML serializer factory to use by Castor, which must\r
-# implement org.exolab.castor.xml.SerializerFactory; default is \r
-# org.exolab.castor.xml.XercesXMLSerializerFactory\r
-# \r
-# When using Castor XML with JDK 5.0, you may switch to the XercesJDK5XMLSerializerFactory\r
-# which will use the Xerces instance as shipped with the JDK itself; this avoids\r
-# having to download another Xerces instance and installing it. \r
-org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesXMLSerializerFactory\r
-#org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesJDK5XMLSerializerFactory\r
-\r
-# Defines the NodeType for use with Java primitive types (int, long, boolean,\r
-# etc). This value is only used by the Introspector. Valid values are either\r
-# "attribute" or "element". By default, all primitives are marshaled as\r
-# attributes. Uncomment the following line to change the NodeType to element.\r
-#\r
-#org.exolab.castor.xml.introspector.primitive.nodetype=element\r
-\r
-# Defines the Naming "style" or conventions to use when creating XML names\r
-# from Java class or field names.\r
-# Valid values are as follows:\r
-# -----------------------------------------------------------------\r
-# lower (default) | All names are lowercase with hyphens\r
-# | separating words.\r
-# |\r
-# | Example: personInfo = person-info\r
-# -----------------------------------------------------------------\r
-# mixed | All names are mixed case, with Uppercase\r
-# | character as the first letter of a new word.\r
-# |\r
-# | Example: personInfo = personInfo\r
-# | Example: FooBar = fooBar\r
-# -----------------------------------------------------------------\r
-# {Any ClassName} | Any Class which implements\r
-# | org.exolab.castor.xml.XMLNaming\r
-# -----------------------------------------------------------------\r
-#\r
-# By default, all names are treated as the "lower" option. To preserve the\r
-# Java mixed-case conventions, uncomment the following line.\r
-#\r
-#org.exolab.castor.xml.naming=mixed\r
-\r
-###############################\r
-# REGULAR EXPRESSION EVALUATORS\r
-#\r
-# Defines the Regular Expression Evaluator to be used by Castor.\r
-# The evaluator must implement org.exolab.castor.util.RegExpEvaluator.\r
-#\r
-# Uncomment the following to basically suppress Regular expressions evaluation:\r
-#org.exolab.castor.regexp=org.exolab.castor.xml.util.AlwaysTrueRegExpEvaluator\r
-#\r
-# An implementation which uses the Jakarta RegExp library:\r
-#org.exolab.castor.regexp=org.exolab.castor.util.JakartaRegExpEvaluator\r
-#\r
-# An implementation which uses the Jakarta ORO library:\r
-org.exolab.castor.regexp=org.exolab.castor.util.JakartaOroEvaluator\r
-\r
-# True if all documents should be indented on output by default.\r
-# Defaults to false.\r
-#\r
-#org.exolab.castor.indent=true\r
-\r
-# True if xml documents should be validated by the SAX Parser\r
-# Defaults to false.\r
-#\r
-org.exolab.castor.parser.validation=false\r
-\r
-# True for parser to support Namespaces.\r
-# Defaults to false.\r
-#\r
-org.exolab.castor.parser.namespaces=false\r
-\r
-# True if all documents should be validated by the marshaling framework\r
-# Defaults to true.\r
-#\r
-org.exolab.castor.marshalling.validation=true\r
-\r
-# Comma separated list of SAX 2 features that should be enabled for the\r
-# default parser.\r
-#\r
-#org.exolab.castor.sax.features=\r
-\r
-# Comma separated list of SAX 2 features that should be disabled for the\r
-# default parser.\r
-#\r
-#org.exolab.castor.sax.features-to-disable\r
-\r
-# True if debugging output should be generated.\r
-# Defaults to false.\r
-#\r
-org.exolab.castor.debug=false\r
-\r
-# List of collection handlers for Java 1.1 and Java 1.2 run-times:\r
-#\r
-org.exolab.castor.mapping.collections=\\r
- org.exolab.castor.mapping.loader.J1CollectionHandlers,\\r
- org.exolab.castor.mapping.loader.J2CollectionHandlers\r
-\r
-# List of persistence factories for the supported database servers:\r
-#\r
-org.exolab.castor.jdo.engines=\\r
- org.exolab.castor.jdo.drivers.OracleFactory,\\r
- org.exolab.castor.jdo.drivers.PostgreSQLFactory,\\r
- org.exolab.castor.jdo.drivers.SybaseFactory,\\r
- org.exolab.castor.jdo.drivers.SQLServerFactory,\\r
- org.exolab.castor.jdo.drivers.DB2Factory,\\r
- org.exolab.castor.jdo.drivers.InformixFactory,\\r
- org.exolab.castor.jdo.drivers.HsqlFactory,\\r
- org.exolab.castor.jdo.drivers.InstantDBFactory,\\r
- org.exolab.castor.jdo.drivers.InterbaseFactory,\\r
- org.exolab.castor.jdo.drivers.MySQLFactory,\\r
- org.exolab.castor.jdo.drivers.SapDbFactory,\\r
- org.exolab.castor.jdo.drivers.GenericFactory,\\r
- org.exolab.castor.jdo.drivers.DerbyFactory,\\r
- org.castor.jdo.drivers.PointbaseFactory,\\r
- org.castor.jdo.drivers.ProgressFactory\r
-\r
-# List of key generator factories:\r
-#\r
-org.exolab.castor.jdo.keyGeneratorFactories=\\r
- org.exolab.castor.jdo.keygen.MaxKeyGeneratorFactory,\\r
- org.exolab.castor.jdo.keygen.HighLowKeyGeneratorFactory,\\r
- org.exolab.castor.jdo.keygen.IdentityKeyGeneratorFactory,\\r
- org.exolab.castor.jdo.keygen.SequenceKeyGeneratorFactory,\\r
- org.exolab.castor.jdo.keygen.UUIDKeyGeneratorFactory\r
-\r
-# Collection handlers for the source code generator:\r
-#\r
-org.exolab.castor.builder.type.j2=\\r
- org.exolab.castor.builder.FieldInfoFactoryJ2\r
-org.exolab.castor.builder.type.j1=\\r
- org.exolab.castor.builder.FieldInfoFactory\r
-org.exolab.castor.builder.type.odmg=\\r
- org.exolab.castor.builder.FieldInfoFactoryODMG30\r
-\r
-# Configures the default time zone to apply to dates/times fetched from\r
-# database fields (if not already part of the data). Specify same format as\r
-# in java.util.TimeZone.getTimeZone, or the empty string to use the computer's\r
-# local time zone. Please see http://de.wikipedia.org/wiki/Zeitzone for\r
-# detailed information about time zones.\r
-#\r
-org.exolab.castor.jdo.defaultTimeZone=\r
-#org.exolab.castor.jdo.defaultTimeZone=GMT-8:00\r
-\r
-# List of TxSynchronizeable implementations:\r
-#\r
-#org.exolab.castor.persist.TxSynchronizable=\r
-\r
-# Sets the buffer size in bytes for fetching LOBs (this is dependent upon\r
-# the JDBC driver implementation). The value below == 5k.\r
-#\r
-org.exolab.castor.jdo.lobBufferSize=5120\r
-\r
-# True if database configuration should be initalization\r
-# when loading it (default: true).\r
-#\r
-#org.exolab.castor.jdo.DatabaseInitializeAtLoad=true\r
-\r
-# True if proxy classes should be used for JDBC connections and\r
-# prepared statements.\r
-# Defaults to true.\r
-#\r
-org.exolab.castor.persist.useProxies=false\r
-\r
-# MappingLoader implementations:\r
-#\r
-org.castor.mapping.loaderFactories=\\r
- org.castor.mapping.JDOMappingLoaderFactory,\\r
- org.castor.mapping.XMLMappingLoaderFactory\r
-\r
-# Cache implementations:\r
-#\r
-org.castor.cache.Factories=\\r
- org.castor.cache.simple.NoCacheFactory,\\r
- org.castor.cache.simple.TimeLimitedFactory,\\r
- org.castor.cache.simple.CountLimitedFactory,\\r
- org.castor.cache.simple.UnlimitedFactory,\\r
- org.castor.cache.distributed.FKCacheFactory,\\r
- org.castor.cache.distributed.JcsCacheFactory,\\r
- org.castor.cache.distributed.JCacheFactory,\\r
- org.castor.cache.distributed.CoherenceCacheFactory,\\r
- org.castor.cache.distributed.OsCacheFactory,\\r
- org.castor.cache.hashbelt.FIFOHashbeltFactory,\\r
- org.castor.cache.hashbelt.LRUHashbeltFactory,\\r
- org.castor.cache.distributed.EHCacheFactory,\\r
- org.castor.cache.distributed.GigaspacesCacheFactory\r
-\r
-# TransactionManagerFactory implementations:\r
-#\r
-org.castor.transactionmanager.Factories=\\r
- org.castor.transactionmanager.WebSphereTransactionManagerFactory,\\r
- org.castor.transactionmanager.WebSphere5TransactionManagerFactory,\\r
- org.castor.transactionmanager.WebSphere51TransactionManagerFactory,\\r
- org.castor.transactionmanager.LocalTransactionManagerFactory,\\r
- org.castor.transactionmanager.JNDIENCTransactionManagerFactory,\\r
- org.castor.transactionmanager.JOTMTransactionManagerFactory\r
-\r
-# Selects whether the TransactionManager should be initialized at registration,\r
-# or lazily when requested for the first time.\r
-# Defaults to false.\r
-#\r
-org.castor.transactionmanager.InitializeAtRegistration=false\r
-\r
-# Instructs Castor JDO to use the JDBC 3.0-specific features to obtain\r
-# the generated value of an identity column.\r
-# Defaults to false.\r
-#\r
-org.castor.jdo.use.jdbc30=false\r
-\r
-# Specifies whether to use ANSI-compliant SQL for MS SQL Server.\r
-# Defaults to false.\r
-#\r
-org.exolab.castor.jdo.sqlserver.ansi-compliant=false\r
-\r
-# Specifyies whether the ClassDescriptorResolver should (automatically) search\r
-# for and consult with package mapping files (.castor.xml) to retrieve class\r
-# descriptor information; on by default.\r
-# Defaults to true.\r
-#\r
-#org.exolab.castor.xml.loadPackageMappings=false\r
+# THE CASTOR PROPERTIES FILE
+# This file specifies values for Castor run-time which may be configured
+# by the user.
+# $Id$
+
+# This section defines Backwards compatibility switches.
+#
+# Hashtable/Map default mapping.
+# For backward compatibility with 0.9.5.2 and earlier.
+#
+#org.exolab.castor.xml.saveMapKeys=false
+
+# Defines the default XML parser to be used by Castor.
+# The parser must implement org.xml.sax.Parser.
+#
+org.exolab.castor.parser=org.apache.xerces.parsers.SAXParser
+
+# Defines the (default) XML serializer factory to use by Castor, which must
+# implement org.exolab.castor.xml.SerializerFactory; default is
+# org.exolab.castor.xml.XercesXMLSerializerFactory
+#
+# When using Castor XML with JDK 5.0, you may switch to the XercesJDK5XMLSerializerFactory
+# which will use the Xerces instance as shipped with the JDK itself; this avoids
+# having to download another Xerces instance and installing it.
+org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesXMLSerializerFactory
+#org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesJDK5XMLSerializerFactory
+
+# Defines the NodeType for use with Java primitive types (int, long, boolean,
+# etc). This value is only used by the Introspector. Valid values are either
+# "attribute" or "element". By default, all primitives are marshaled as
+# attributes. Uncomment the following line to change the NodeType to element.
+#
+#org.exolab.castor.xml.introspector.primitive.nodetype=element
+
+# Defines the Naming "style" or conventions to use when creating XML names
+# from Java class or field names.
+# Valid values are as follows:
+# -----------------------------------------------------------------
+# lower (default) | All names are lowercase with hyphens
+# | separating words.
+# |
+# | Example: personInfo = person-info
+# -----------------------------------------------------------------
+# mixed | All names are mixed case, with Uppercase
+# | character as the first letter of a new word.
+# |
+# | Example: personInfo = personInfo
+# | Example: FooBar = fooBar
+# -----------------------------------------------------------------
+# {Any ClassName} | Any Class which implements
+# | org.exolab.castor.xml.XMLNaming
+# -----------------------------------------------------------------
+#
+# By default, all names are treated as the "lower" option. To preserve the
+# Java mixed-case conventions, uncomment the following line.
+#
+#org.exolab.castor.xml.naming=mixed
+
+###############################
+# REGULAR EXPRESSION EVALUATORS
+#
+# Defines the Regular Expression Evaluator to be used by Castor.
+# The evaluator must implement org.exolab.castor.util.RegExpEvaluator.
+#
+# Uncomment the following to basically suppress Regular expressions evaluation:
+#org.exolab.castor.regexp=org.exolab.castor.xml.util.AlwaysTrueRegExpEvaluator
+#
+# An implementation which uses the Jakarta RegExp library:
+#org.exolab.castor.regexp=org.exolab.castor.util.JakartaRegExpEvaluator
+#
+# An implementation which uses the Jakarta ORO library:
+org.exolab.castor.regexp=org.exolab.castor.util.JakartaOroEvaluator
+
+# True if all documents should be indented on output by default.
+# Defaults to false.
+#
+#org.exolab.castor.indent=true
+
+# True if xml documents should be validated by the SAX Parser
+# Defaults to false.
+#
+org.exolab.castor.parser.validation=false
+
+# True for parser to support Namespaces.
+# Defaults to false.
+#
+org.exolab.castor.parser.namespaces=false
+
+# True if all documents should be validated by the marshaling framework
+# Defaults to true.
+#
+org.exolab.castor.marshalling.validation=true
+
+# Comma separated list of SAX 2 features that should be enabled for the
+# default parser.
+#
+#org.exolab.castor.sax.features=
+
+# Comma separated list of SAX 2 features that should be disabled for the
+# default parser.
+#
+#org.exolab.castor.sax.features-to-disable
+
+# True if debugging output should be generated.
+# Defaults to false.
+#
+org.exolab.castor.debug=false
+
+# List of collection handlers for Java 1.1 and Java 1.2 run-times:
+#
+org.exolab.castor.mapping.collections=\
+ org.exolab.castor.mapping.loader.J1CollectionHandlers,\
+ org.exolab.castor.mapping.loader.J2CollectionHandlers
+
+# List of persistence factories for the supported database servers:
+#
+org.exolab.castor.jdo.engines=\
+ org.exolab.castor.jdo.drivers.OracleFactory,\
+ org.exolab.castor.jdo.drivers.PostgreSQLFactory,\
+ org.exolab.castor.jdo.drivers.SybaseFactory,\
+ org.exolab.castor.jdo.drivers.SQLServerFactory,\
+ org.exolab.castor.jdo.drivers.DB2Factory,\
+ org.exolab.castor.jdo.drivers.InformixFactory,\
+ org.exolab.castor.jdo.drivers.HsqlFactory,\
+ org.exolab.castor.jdo.drivers.InstantDBFactory,\
+ org.exolab.castor.jdo.drivers.InterbaseFactory,\
+ org.exolab.castor.jdo.drivers.MySQLFactory,\
+ org.exolab.castor.jdo.drivers.SapDbFactory,\
+ org.exolab.castor.jdo.drivers.GenericFactory,\
+ org.exolab.castor.jdo.drivers.DerbyFactory,\
+ org.castor.jdo.drivers.PointbaseFactory,\
+ org.castor.jdo.drivers.ProgressFactory
+
+# List of key generator factories:
+#
+org.exolab.castor.jdo.keyGeneratorFactories=\
+ org.exolab.castor.jdo.keygen.MaxKeyGeneratorFactory,\
+ org.exolab.castor.jdo.keygen.HighLowKeyGeneratorFactory,\
+ org.exolab.castor.jdo.keygen.IdentityKeyGeneratorFactory,\
+ org.exolab.castor.jdo.keygen.SequenceKeyGeneratorFactory,\
+ org.exolab.castor.jdo.keygen.UUIDKeyGeneratorFactory
+
+# Collection handlers for the source code generator:
+#
+org.exolab.castor.builder.type.j2=\
+ org.exolab.castor.builder.FieldInfoFactoryJ2
+org.exolab.castor.builder.type.j1=\
+ org.exolab.castor.builder.FieldInfoFactory
+org.exolab.castor.builder.type.odmg=\
+ org.exolab.castor.builder.FieldInfoFactoryODMG30
+
+# Configures the default time zone to apply to dates/times fetched from
+# database fields (if not already part of the data). Specify same format as
+# in java.util.TimeZone.getTimeZone, or the empty string to use the computer's
+# local time zone. Please see http://de.wikipedia.org/wiki/Zeitzone for
+# detailed information about time zones.
+#
+org.exolab.castor.jdo.defaultTimeZone=
+#org.exolab.castor.jdo.defaultTimeZone=GMT-8:00
+
+# List of TxSynchronizeable implementations:
+#
+#org.exolab.castor.persist.TxSynchronizable=
+
+# Sets the buffer size in bytes for fetching LOBs (this is dependent upon
+# the JDBC driver implementation). The value below == 5k.
+#
+org.exolab.castor.jdo.lobBufferSize=5120
+
+# True if database configuration should be initalization
+# when loading it (default: true).
+#
+#org.exolab.castor.jdo.DatabaseInitializeAtLoad=true
+
+# True if proxy classes should be used for JDBC connections and
+# prepared statements.
+# Defaults to true.
+#
+org.exolab.castor.persist.useProxies=false
+
+# MappingLoader implementations:
+#
+org.castor.mapping.loaderFactories=\
+ org.castor.mapping.JDOMappingLoaderFactory,\
+ org.castor.mapping.XMLMappingLoaderFactory
+
+# Cache implementations:
+#
+org.castor.cache.Factories=\
+ org.castor.cache.simple.NoCacheFactory,\
+ org.castor.cache.simple.TimeLimitedFactory,\
+ org.castor.cache.simple.CountLimitedFactory,\
+ org.castor.cache.simple.UnlimitedFactory,\
+ org.castor.cache.distributed.FKCacheFactory,\
+ org.castor.cache.distributed.JcsCacheFactory,\
+ org.castor.cache.distributed.JCacheFactory,\
+ org.castor.cache.distributed.CoherenceCacheFactory,\
+ org.castor.cache.distributed.OsCacheFactory,\
+ org.castor.cache.hashbelt.FIFOHashbeltFactory,\
+ org.castor.cache.hashbelt.LRUHashbeltFactory,\
+ org.castor.cache.distributed.EHCacheFactory,\
+ org.castor.cache.distributed.GigaspacesCacheFactory
+
+# TransactionManagerFactory implementations:
+#
+org.castor.transactionmanager.Factories=\
+ org.castor.transactionmanager.WebSphereTransactionManagerFactory,\
+ org.castor.transactionmanager.WebSphere5TransactionManagerFactory,\
+ org.castor.transactionmanager.WebSphere51TransactionManagerFactory,\
+ org.castor.transactionmanager.LocalTransactionManagerFactory,\
+ org.castor.transactionmanager.JNDIENCTransactionManagerFactory,\
+ org.castor.transactionmanager.JOTMTransactionManagerFactory
+
+# Selects whether the TransactionManager should be initialized at registration,
+# or lazily when requested for the first time.
+# Defaults to false.
+#
+org.castor.transactionmanager.InitializeAtRegistration=false
+
+# Instructs Castor JDO to use the JDBC 3.0-specific features to obtain
+# the generated value of an identity column.
+# Defaults to false.
+#
+org.castor.jdo.use.jdbc30=false
+
+# Specifies whether to use ANSI-compliant SQL for MS SQL Server.
+# Defaults to false.
+#
+org.exolab.castor.jdo.sqlserver.ansi-compliant=false
+
+# Specifyies whether the ClassDescriptorResolver should (automatically) search
+# for and consult with package mapping files (.castor.xml) to retrieve class
+# descriptor information; on by default.
+# Defaults to true.
+#
+#org.exolab.castor.xml.loadPackageMappings=false
*/
package jalview.analysis;
-import java.util.*;
-
-import java.awt.*;
-
-import jalview.datamodel.*;
-import jalview.schemes.*;
-import jalview.util.*;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Mapping;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceI;
+import jalview.schemes.ResidueProperties;
+import jalview.schemes.ScoreMatrix;
+import jalview.util.Comparison;
+import jalview.util.Format;
+import jalview.util.MapList;
+import jalview.util.MessageManager;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.StringTokenizer;
/**
*
}
/**
+ *
+ * @return aligned instance of Seq 1
+ */
+ public SequenceI getAlignedSeq1()
+ {
+ SequenceI alSeq1 = new Sequence(s1.getName(), getAStr1());
+ alSeq1.setStart(s1.getStart() + getSeq1Start() - 1);
+ alSeq1.setEnd(s1.getStart() + getSeq1End() - 1);
+ alSeq1.setDatasetSequence(s1.getDatasetSequence() == null ? s1 : s1
+ .getDatasetSequence());
+ return alSeq1;
+ }
+
+ /**
+ *
+ * @return aligned instance of Seq 2
+ */
+ public SequenceI getAlignedSeq2()
+ {
+ SequenceI alSeq2 = new Sequence(s2.getName(), getAStr2());
+ alSeq2.setStart(s2.getStart() + getSeq2Start() - 1);
+ alSeq2.setEnd(s2.getStart() + getSeq2End() - 1);
+ alSeq2.setDatasetSequence(s2.getDatasetSequence() == null ? s2 : s2
+ .getDatasetSequence());
+ return alSeq2;
+ }
+
+ /**
* Construct score matrix for sequences with standard DNA or PEPTIDE matrix
*
* @param s1
output = output.append("\n\n");
}
- pid = pid / (float) (aseq1.length - count) * 100;
+ pid = pid / (aseq1.length - count) * 100;
output = output.append(new Format("Percentage ID = %2.2f\n\n")
.form(pid));
}
/**
+ * matches ochains against al and populates seqs with the best match between
+ * each ochain and the set in al
+ *
+ * @param ochains
+ * @param al
+ * @param dnaOrProtein
+ * @param removeOldAnnots when true, old annotation is cleared before new annotation transferred
+ */
+ public static void replaceMatchingSeqsWith(List<SequenceI> seqs, List<AlignmentAnnotation> annotations, List<SequenceI> ochains,
+ AlignmentI al, String dnaOrProtein, boolean removeOldAnnots)
+ {
+ if (al != null && al.getHeight() > 0)
+ {
+ ArrayList<SequenceI> matches = new ArrayList<SequenceI>();
+ ArrayList<AlignSeq> aligns = new ArrayList<AlignSeq>();
+
+ for (SequenceI sq : ochains)
+ {
+ SequenceI bestm = null;
+ AlignSeq bestaseq = null;
+ int bestscore = 0;
+ for (SequenceI msq : al.getSequences())
+ {
+ AlignSeq aseq = doGlobalNWAlignment(msq, sq,
+ dnaOrProtein);
+ if (bestm == null || aseq.getMaxScore() > bestscore)
+ {
+ bestscore = aseq.getMaxScore();
+ bestaseq = aseq;
+ bestm = msq;
+ }
+ }
+ System.out.println("Best Score for " + (matches.size() + 1) + " :"
+ + bestscore);
+ matches.add(bestm);
+ aligns.add(bestaseq);
+ al.deleteSequence(bestm);
+ }
+ for (int p = 0, pSize = seqs.size(); p < pSize; p++)
+ {
+ SequenceI sq, sp = seqs.get(p);
+ int q;
+ if ((q = ochains.indexOf(sp)) > -1)
+ {
+ seqs.set(p, sq = matches.get(q));
+ sq.setName(sp.getName());
+ sq.setDescription(sp.getDescription());
+ Mapping sp2sq;
+ sq.transferAnnotation(sp, sp2sq = aligns.get(q).getMappingFromS1(false));
+ int inspos = -1;
+ for (int ap = 0; ap < annotations.size();)
+ {
+ if (annotations.get(ap).sequenceRef == sp)
+ {
+ if (inspos == -1)
+ {
+ inspos = ap;
+ }
+ if (removeOldAnnots) {
+ annotations.remove(ap);
+ } else {
+ AlignmentAnnotation alan = annotations.remove(ap);
+ alan.liftOver(sq, sp2sq);
+ alan.setSequenceRef(sq);
+ sq.addAlignmentAnnotation(alan);
+ }
+ }
+ else
+ {
+ ap++;
+ }
+ }
+ if (sq.getAnnotation() != null)
+ {
+ annotations.addAll(inspos, Arrays.asList(sq.getAnnotation()));
+ }
+ }
+ }
+ }
+ }
+
+ /**
* compute the PID vector used by the redundancy filter.
*
* @param originalSequences
--- /dev/null
+package jalview.analysis;
+
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.SequenceI;
+import jalview.renderer.AnnotationRenderer;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class AlignmentAnnotationUtils
+{
+
+ /**
+ * Helper method to populate lists of annotation types for the Show/Hide
+ * Annotations menus. If sequenceGroup is not null, this is restricted to
+ * annotations which are associated with sequences in the selection group.
+ * <p/>
+ * If an annotation row is currently visible, its type (label) is added (once
+ * only per type), to the shownTypes list. If it is currently hidden, it is
+ * added to the hiddenTypesList.
+ * <p/>
+ * For rows that belong to a line graph group, so are always rendered
+ * together:
+ * <ul>
+ * <li>Treat all rows in the group as visible, if at least one of them is</li>
+ * <li>Build a list of all the annotation types that belong to the group</li>
+ * </ul>
+ *
+ * @param shownTypes
+ * a map, keyed by calcId (annotation source), whose entries are the
+ * lists of annotation types found for the calcId; each annotation
+ * type in turn may be a list (in the case of grouped annotations)
+ * @param hiddenTypes
+ * a map, similar to shownTypes, but for hidden annotation types
+ * @param annotations
+ * the annotations on the alignment to scan
+ * @param forSequences
+ * the sequences to restrict search to
+ */
+ public static void getShownHiddenTypes(
+ Map<String, List<List<String>>> shownTypes,
+ Map<String, List<List<String>>> hiddenTypes,
+ List<AlignmentAnnotation> annotations,
+ List<SequenceI> forSequences)
+ {
+ BitSet visibleGraphGroups = AlignmentAnnotationUtils
+ .getVisibleLineGraphGroups(annotations);
+
+ /*
+ * Build a lookup, by calcId (annotation source), of all annotation types in
+ * each graph group.
+ */
+ Map<String, Map<Integer, List<String>>> groupLabels = new HashMap<String, Map<Integer, List<String>>>();
+
+ // trackers for which calcId!label combinations we have dealt with
+ List<String> addedToShown = new ArrayList<String>();
+ List<String> addedToHidden = new ArrayList<String>();
+
+ for (AlignmentAnnotation aa : annotations)
+ {
+ if (forSequences != null
+ && (aa.sequenceRef != null && forSequences
+ .contains(aa.sequenceRef)))
+ {
+ String calcId = aa.getCalcId();
+
+ /*
+ * Build a 'composite label' for types in line graph groups.
+ */
+ final List<String> labelAsList = new ArrayList<String>();
+ final String displayLabel = aa.label;
+ labelAsList.add(displayLabel);
+ if (aa.graph == AlignmentAnnotation.LINE_GRAPH
+ && aa.graphGroup > -1)
+ {
+ if (!groupLabels.containsKey(calcId))
+ {
+ groupLabels.put(calcId, new HashMap<Integer, List<String>>());
+ }
+ Map<Integer, List<String>> groupLabelsForCalcId = groupLabels
+ .get(calcId);
+ if (groupLabelsForCalcId.containsKey(aa.graphGroup))
+ {
+ if (!groupLabelsForCalcId.get(aa.graphGroup).contains(
+ displayLabel))
+ {
+ groupLabelsForCalcId.get(aa.graphGroup).add(displayLabel);
+ }
+ }
+ else
+ {
+ groupLabelsForCalcId.put(aa.graphGroup, labelAsList);
+ }
+ }
+ else
+ /*
+ * 'Simple case' - not a grouped annotation type - list of one label
+ * only
+ */
+ {
+ String rememberAs = calcId + "!" + displayLabel;
+ if (aa.visible && !addedToShown.contains(rememberAs))
+ {
+ if (!shownTypes.containsKey(calcId))
+ {
+ shownTypes.put(calcId, new ArrayList<List<String>>());
+ }
+ shownTypes.get(calcId).add(labelAsList);
+ addedToShown.add(rememberAs);
+ }
+ else
+ {
+ if (!aa.visible && !addedToHidden.contains(rememberAs))
+ {
+ if (!hiddenTypes.containsKey(calcId))
+ {
+ hiddenTypes.put(calcId, new ArrayList<List<String>>());
+ }
+ hiddenTypes.get(calcId).add(labelAsList);
+ addedToHidden.add(rememberAs);
+ }
+ }
+ }
+ }
+ }
+ /*
+ * finally add the 'composite group labels' to the appropriate lists,
+ * depending on whether the group is identified as visible or hidden
+ */
+ for (String calcId : groupLabels.keySet())
+ {
+ for (int group : groupLabels.get(calcId).keySet())
+ {
+ final List<String> groupLabel = groupLabels.get(calcId).get(group);
+ if (visibleGraphGroups.get(group))
+ {
+ if (!shownTypes.containsKey(calcId))
+ {
+ shownTypes.put(calcId, new ArrayList<List<String>>());
+ }
+ shownTypes.get(calcId).add(groupLabel);
+ }
+ else
+ {
+ if (!hiddenTypes.containsKey(calcId))
+ {
+ hiddenTypes.put(calcId, new ArrayList<List<String>>());
+ }
+ hiddenTypes.get(calcId).add(groupLabel);
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns a BitSet (possibly empty) of those graphGroups for line graph
+ * annotations, which have at least one member annotation row marked visible.
+ * <p/>
+ * Only one row in each visible group is marked visible, but when it is drawn,
+ * so are all the other rows in the same group.
+ * <p/>
+ * This lookup set allows us to check whether rows apparently marked not
+ * visible are in fact shown.
+ *
+ * @see AnnotationRenderer#drawComponent
+ * @param annotations
+ * @return
+ */
+ public static BitSet getVisibleLineGraphGroups(
+ List<AlignmentAnnotation> annotations)
+ {
+ BitSet result = new BitSet();
+ for (AlignmentAnnotation ann : annotations)
+ {
+ if (ann.graph == AlignmentAnnotation.LINE_GRAPH && ann.visible)
+ {
+ int gg = ann.graphGroup;
+ if (gg > -1)
+ {
+ result.set(gg);
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Converts an array of AlignmentAnnotation into a List of
+ * AlignmentAnnotation. A null array is converted to an empty list.
+ *
+ * @param anns
+ * @return
+ */
+ public static List<AlignmentAnnotation> asList(
+ AlignmentAnnotation[] anns)
+ {
+ // TODO use AlignmentAnnotationI instead when it exists
+ return (anns == null ? Collections.<AlignmentAnnotation> emptyList()
+ : Arrays.asList(anns));
+ }
+}
import jalview.util.MessageManager;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
/**
* Data structure to hold and manipulate a multiple sequence alignment
import jalview.analysis.Rna;
import jalview.analysis.SecStrConsensus.SimpleBP;
-
import jalview.analysis.WUSSParseException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
-
-import fr.orsay.lri.varna.models.rna.RNA;
+import java.util.Map.Entry;
/**
* DOCUMENT ME!
// System.out.println("featuregroup " + _rnasecstr[0].getFeatureGroup());
}
- public java.util.Hashtable sequenceMapping;
+ public java.util.Hashtable<Integer, Annotation> sequenceMapping;
/** DOCUMENT ME!! */
public float graphMin;
// Check for RNA secondary structure
{
// System.out.println(annotations[i].secondaryStructure);
- // TODO: 2.8.2 should this ss symbol validation check be a function in RNA/ResidueProperties ?
+ // TODO: 2.8.2 should this ss symbol validation check be a function in
+ // RNA/ResidueProperties ?
if (annotations[i].secondaryStructure == '('
|| annotations[i].secondaryStructure == '['
|| annotations[i].secondaryStructure == '<'
{
this.label = new String(annotation.label);
if (annotation.description != null)
+ {
this.description = new String(annotation.description);
+ }
this.graphMin = annotation.graphMin;
this.graphMax = annotation.graphMax;
this.graph = annotation.graph;
{
// could optimise this!
p = (Integer) pos.nextElement();
- Annotation a = (Annotation) annotation.sequenceMapping.get(p);
+ Annotation a = annotation.sequenceMapping.get(p);
if (a == null)
{
continue;
return;
}
if (startRes < 0)
+ {
startRes = 0;
+ }
if (startRes >= annotations.length)
+ {
startRes = annotations.length - 1;
+ }
if (endRes >= annotations.length)
+ {
endRes = annotations.length - 1;
+ }
if (annotations == null)
+ {
return;
+ }
Annotation[] temp = new Annotation[endRes - startRes + 1];
if (startRes < annotations.length)
{
public void adjustForAlignment()
{
if (sequenceRef == null)
+ {
return;
+ }
if (annotations == null)
{
{
position = sequenceRef.findIndex(a) - 1;
- temp[position] = (Annotation) sequenceMapping.get(index);
+ temp[position] = sequenceMapping.get(index);
}
}
if (annotations[i] == null)
{
if (i + 1 < iSize)
+ {
System.arraycopy(annotations, i + 1, annotations, i, iSize - i
- 1);
+ }
iSize--;
}
else
{
if (sequenceRef != null)
{
+ boolean rIsDs=sequenceRef.getDatasetSequence()==null,tIsDs=sequenceI.getDatasetSequence()==null;
if (sequenceRef != sequenceI
- && !sequenceRef.equals(sequenceI)
- && sequenceRef.getDatasetSequence() != sequenceI
+ && (rIsDs && !tIsDs && sequenceRef != sequenceI
+ .getDatasetSequence())
+ && (!rIsDs && tIsDs && sequenceRef.getDatasetSequence() != sequenceI)
+ && (!rIsDs && !tIsDs && sequenceRef.getDatasetSequence() != sequenceI
.getDatasetSequence())
+ && !sequenceRef.equals(sequenceI))
{
// if sequenceRef isn't intersecting with sequenceI
// throw away old mapping and reconstruct.
for (int i = 0; i < annotations.length; i++)
{
if (annotations[i] == null)
+ {
annotations[i] = new Annotation(String.valueOf(gapchar), null,
' ', 0f, null);
+ }
else if (annotations[i].displayCharacter == null
|| annotations[i].displayCharacter.equals(" "))
+ {
annotations[i].displayCharacter = String.valueOf(gapchar);
+ }
}
}
}
{
return isrna;
}
+
+ /**
+ * transfer annotation to the given sequence using the given mapping from the
+ * current positions or an existing sequence mapping
+ *
+ * @param sq
+ * @param sp2sq
+ * map involving sq as To or From
+ */
+ public void liftOver(SequenceI sq, Mapping sp2sq)
+ {
+ if (sp2sq.getMappedWidth() != sp2sq.getWidth())
+ {
+ // TODO: employ getWord/MappedWord to transfer annotation between cDNA and Protein reference frames
+ throw new Error("liftOver currently not implemented for transfer of annotation between different types of seqeunce");
+ }
+ boolean mapIsTo = (sp2sq != null) ? (sp2sq.getTo() == sq || sp2sq
+ .getTo() == sq.getDatasetSequence()) : false;
+
+ // TODO build a better annotation element map and get rid of annotations[]
+ Hashtable<Integer, Annotation> mapForsq = new Hashtable();
+ if (sequenceMapping != null)
+ {
+ if (sp2sq != null)
+ {
+ for (Entry<Integer, Annotation> ie : sequenceMapping.entrySet())
+ {
+ Integer mpos = Integer.valueOf(mapIsTo ? sp2sq
+ .getMappedPosition(ie.getKey()) : sp2sq.getPosition(ie
+ .getKey()));
+ if (mpos >= sq.getStart() && mpos <= sq.getEnd())
+ {
+ mapForsq.put(mpos, ie.getValue());
+ }
+ }
+ sequenceMapping = mapForsq;
+ sequenceRef = sq;
+ adjustForAlignment();
+ }
+ else
+ {
+ // trim positions
+ }
+ }
+
+ }
}
*/
package jalview.datamodel;
-import java.util.*;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
/**
* Data structure to hold and manipulate a multiple sequence alignment
*/
package jalview.datamodel;
-import jalview.util.MessageManager;
-
import java.util.*;
public class AlignmentOrder
{
if (!identity)
{
- throw new Error(MessageManager.getString("error.weak_sequencei_equivalence_not_yet_implemented"));
+ throw new Error("Weak sequenceI equivalence not yet implemented.");
}
else
{
}
if (!identity)
{
- throw new Error(MessageManager.getString("error.weak_sequencei_equivalence_not_yet_implemented"));
+ throw new Error("Weak sequenceI equivalence not yet implemented.");
}
else
{
import jalview.analysis.AlignSeq;
+import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.List;
import java.util.Vector;
import fr.orsay.lri.varna.models.rna.RNA;
public char[] getSequence(int start, int end)
{
if (start < 0)
+ {
start = 0;
+ }
// JBPNote - left to user to pad the result here (TODO:Decide on this
// policy)
if (start >= sequence.length)
AlignmentAnnotation[] ret = new AlignmentAnnotation[annotation.size()];
for (int r = 0; r < ret.length; r++)
{
- ret[r] = (AlignmentAnnotation) annotation.elementAt(r);
+ ret[r] = annotation.elementAt(r);
}
return ret;
{
this.annotation.removeElement(annotation);
if (this.annotation.size() == 0)
+ {
this.annotation = null;
+ }
}
}
for (int i = 0; i < annotations.length; i++)
{
if (annotations[i] != null)
+ {
addAlignmentAnnotation(annotations[i]);
+ }
}
}
}
return rna;
}
+ /**
+ * Returns a (possibly empty) list of any annotations that match on given
+ * calcId (source) and label (type). Null values do not match.
+ *
+ * @param calcId
+ * @param label
+ */
+ @Override
+ public List<AlignmentAnnotation> getAlignmentAnnotations(String calcId,
+ String label)
+ {
+ List<AlignmentAnnotation> result = new ArrayList<AlignmentAnnotation>();
+ if (this.annotation != null) {
+ for (AlignmentAnnotation ann : annotation) {
+ if (ann.calcId != null && ann.calcId.equals(calcId)
+ && ann.label != null && ann.label.equals(label))
+ {
+ result.add(ann);
+ }
+ }
+ }
+ return result;
+ }
+
}
*/
package jalview.datamodel;
-import java.util.*;
+import jalview.analysis.AAFrequency;
+import jalview.analysis.Conservation;
+import jalview.schemes.ColourSchemeI;
+import jalview.schemes.ResidueProperties;
+
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Hashtable;
import java.util.List;
-
-import java.awt.*;
-
-import jalview.analysis.*;
-import jalview.schemes.*;
+import java.util.Map;
+import java.util.Vector;
/**
* Collects a set contiguous ranges on a set of sequences
return eres;
}
+ @Override
public List<SequenceI> getSequences()
{
return sequences;
}
+ @Override
public List<SequenceI> getSequences(
Map<SequenceI, SequenceCollectionI> hiddenReps)
{
SequenceI seq;
for (int i = 0; i < sequences.size(); i++)
{
- seq = (SequenceI) sequences.elementAt(i);
+ seq = sequences.elementAt(i);
allSequences.addElement(seq);
if (hiddenReps.containsKey(seq))
{
*
* @return the first column selected by this group. Runs from 0<=i<N_cols
*/
+ @Override
public int getStartRes()
{
return startRes;
*
* @return the groups last selected column. Runs from 0<=i<N_cols
*/
+ @Override
public int getEndRes()
{
return endRes;
*/
public SequenceI getSequenceAt(int i)
{
- return (SequenceI) sequences.elementAt(i);
+ return sequences.elementAt(i);
}
/**
*
* @return DOCUMENT ME!
*/
+ @Override
public int getWidth()
{
// MC This needs to get reset when characters are inserted and deleted
if (sequences.size() > 0)
{
- width = ((SequenceI) sequences.elementAt(0)).getLength();
+ width = sequences.elementAt(0).getLength();
}
for (int i = 1; i < sequences.size(); i++)
{
- SequenceI seq = (SequenceI) sequences.elementAt(i);
+ SequenceI seq = sequences.elementAt(i);
if (seq.getLength() > width)
{
// TODO add in other methods like 'getAlignmentAnnotation(String label),
// etc'
ArrayList<AlignmentAnnotation> annot = new ArrayList<AlignmentAnnotation>();
- for (SequenceI seq : (Vector<SequenceI>) sequences)
+ for (SequenceI seq : sequences)
{
AlignmentAnnotation[] aa = seq.getAnnotation();
if (aa != null)
return aa;
}
+ /**
+ * Answer true if any annotation matches the calcId passed in (if not null).
+ *
+ * @param calcId
+ * @return
+ */
+ public boolean hasAnnotation(String calcId)
+ {
+ if (calcId != null && !"".equals(calcId))
+ {
+ for (AlignmentAnnotation a : getAlignmentAnnotation())
+ {
+ if (a.getCalcId() == calcId)
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
public void clear()
{
sequences.clear();
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)\r
- * Copyright (C) 2014 The Jalview Authors\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3\r
- * of the License, or (at your option) any later version.\r
- * \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE. See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License\r
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.\r
- * The Jalview Authors are detailed in the 'AUTHORS' file.\r
- */\r
-package jalview.datamodel;\r
-\r
-import java.util.Vector;\r
-\r
-import fr.orsay.lri.varna.models.rna.RNA;\r
-\r
-/**\r
- * DOCUMENT ME!\r
- * \r
- * @author $author$\r
- * @version $Revision$\r
- */\r
-public interface SequenceI\r
-{\r
- /**\r
- * Set the display name for the sequence\r
- * \r
- * @param name\r
- */\r
- public void setName(String name);\r
-\r
- /**\r
- * Get the display name\r
- */\r
- public String getName();\r
-\r
- /**\r
- * Set start position of first non-gapped symbol in sequence\r
- * \r
- * @param start\r
- * new start position\r
- */\r
- public void setStart(int start);\r
-\r
- /**\r
- * get start position of first non-gapped residue in sequence\r
- * \r
- * @return\r
- */\r
- public int getStart();\r
-\r
- /**\r
- * get the displayed id of the sequence\r
- * \r
- * @return true means the id will be returned in the form\r
- * DisplayName/Start-End\r
- */\r
- public String getDisplayId(boolean jvsuffix);\r
-\r
- /**\r
- * set end position for last residue in sequence\r
- * \r
- * @param end\r
- */\r
- public void setEnd(int end);\r
-\r
- /**\r
- * get end position for last residue in sequence getEnd()>getStart() unless\r
- * sequence only consists of gap characters\r
- * \r
- * @return\r
- */\r
- public int getEnd();\r
-\r
- /**\r
- * @return length of sequence including gaps\r
- * \r
- */\r
- public int getLength();\r
-\r
- /**\r
- * Replace the sequence with the given string\r
- * \r
- * @param sequence\r
- * new sequence string\r
- */\r
- public void setSequence(String sequence);\r
-\r
- /**\r
- * @return sequence as string\r
- */\r
- public String getSequenceAsString();\r
-\r
- /**\r
- * get a range on the sequence as a string\r
- * \r
- * @param start\r
- * position relative to start of sequence including gaps (from 0)\r
- * @param end\r
- * position relative to start of sequence including gaps (from 0)\r
- * \r
- * @return String containing all gap and symbols in specified range\r
- */\r
- public String getSequenceAsString(int start, int end);\r
-\r
- /**\r
- * Get the sequence as a character array\r
- * \r
- * @return seqeunce and any gaps\r
- */\r
- public char[] getSequence();\r
-\r
- /**\r
- * get stretch of sequence characters in an array\r
- * \r
- * @param start\r
- * absolute index into getSequence()\r
- * @param end\r
- * exclusive index of last position in segment to be returned.\r
- * \r
- * @return char[max(0,end-start)];\r
- */\r
- public char[] getSequence(int start, int end);\r
-\r
- /**\r
- * create a new sequence object from start to end of this sequence\r
- * \r
- * @param start\r
- * int\r
- * @param end\r
- * int\r
- * @return SequenceI\r
- */\r
- public SequenceI getSubSequence(int start, int end);\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @param i\r
- * DOCUMENT ME!\r
- * \r
- * @return DOCUMENT ME!\r
- */\r
- public char getCharAt(int i);\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @param desc\r
- * DOCUMENT ME!\r
- */\r
- public void setDescription(String desc);\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @return DOCUMENT ME!\r
- */\r
- public String getDescription();\r
-\r
- /**\r
- * Return the alignment column for a sequence position * Return the alignment\r
- * position for a sequence position\r
- * \r
- * @param pos\r
- * lying from start to end\r
- * \r
- * @return aligned column for residue (0 if residue is upstream from\r
- * alignment, -1 if residue is downstream from alignment) note.\r
- * Sequence object returns sequence.getEnd() for positions upstream\r
- * currently. TODO: change sequence for\r
- * assert(findIndex(seq.getEnd()+1)==-1) and fix incremental bugs\r
- * \r
- */\r
- public int findIndex(int pos);\r
-\r
- /**\r
- * Returns the sequence position for an alignment position\r
- * \r
- * @param i\r
- * column index in alignment (from 1)\r
- * \r
- * @return residue number for residue (left of and) nearest ith column\r
- */\r
- public int findPosition(int i);\r
-\r
- /**\r
- * Returns an int array where indices correspond to each residue in the\r
- * sequence and the element value gives its position in the alignment\r
- * \r
- * @return int[SequenceI.getEnd()-SequenceI.getStart()+1] or null if no\r
- * residues in SequenceI object\r
- */\r
- public int[] gapMap();\r
-\r
- /**\r
- * Returns an int array where indices correspond to each position in sequence\r
- * char array and the element value gives the result of findPosition for that\r
- * index in the sequence.\r
- * \r
- * @return int[SequenceI.getLength()]\r
- */\r
- public int[] findPositionMap();\r
-\r
- /**\r
- * Delete a range of aligned sequence columns, creating a new dataset sequence\r
- * if necessary and adjusting start and end positions accordingly.\r
- * \r
- * @param i\r
- * first column in range to delete\r
- * @param j\r
- * last column in range to delete\r
- */\r
- public void deleteChars(int i, int j);\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @param i\r
- * DOCUMENT ME!\r
- * @param c\r
- * DOCUMENT ME!\r
- */\r
- public void insertCharAt(int i, char c);\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @param i\r
- * DOCUMENT ME!\r
- * @param c\r
- * DOCUMENT ME!\r
- */\r
- public void insertCharAt(int i, int length, char c);\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @return DOCUMENT ME!\r
- */\r
- public SequenceFeature[] getSequenceFeatures();\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @param v\r
- * DOCUMENT ME!\r
- */\r
- public void setSequenceFeatures(SequenceFeature[] features);\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @param id\r
- * DOCUMENT ME!\r
- */\r
- public void setPDBId(Vector ids);\r
-\r
- /**\r
- * DOCUMENT ME!\r
- * \r
- * @return DOCUMENT ME!\r
- */\r
- public Vector getPDBId();\r
-\r
- /**\r
- * add entry to the vector of PDBIds, if it isn't in the list already\r
- * \r
- * @param entry\r
- */\r
- public void addPDBId(PDBEntry entry);\r
-\r
- /**\r
- * update the list of PDBEntrys to include any DBRefEntrys citing structural\r
- * databases\r
- * \r
- * @return true if PDBEntry list was modified\r
- */\r
- public boolean updatePDBIds();\r
-\r
- public String getVamsasId();\r
-\r
- public void setVamsasId(String id);\r
-\r
- public void setDBRef(DBRefEntry[] dbs);\r
-\r
- public DBRefEntry[] getDBRef();\r
-\r
- /**\r
- * add the given entry to the list of DBRefs for this sequence, or replace a\r
- * similar one if entry contains a map object and the existing one doesnt.\r
- * \r
- * @param entry\r
- */\r
- public void addDBRef(DBRefEntry entry);\r
-\r
- public void addSequenceFeature(SequenceFeature sf);\r
-\r
- public void deleteFeature(SequenceFeature sf);\r
-\r
- public void setDatasetSequence(SequenceI seq);\r
-\r
- public SequenceI getDatasetSequence();\r
-\r
- public AlignmentAnnotation[] getAnnotation();\r
-\r
- public void addAlignmentAnnotation(AlignmentAnnotation annotation);\r
-\r
- public void removeAlignmentAnnotation(AlignmentAnnotation annotation);\r
-\r
- /**\r
- * Derive a sequence (using this one's dataset or as the dataset)\r
- * \r
- * @return duplicate sequence with valid dataset sequence\r
- */\r
- public SequenceI deriveSequence();\r
-\r
- /**\r
- * set the array of associated AlignmentAnnotation for this sequenceI\r
- * \r
- * @param revealed\r
- */\r
- public void setAlignmentAnnotation(AlignmentAnnotation[] annotation);\r
-\r
- /**\r
- * Get one or more alignment annotations with a particular label.\r
- * \r
- * @param label\r
- * string which each returned annotation must have as a label.\r
- * @return null or array of annotations.\r
- */\r
- public AlignmentAnnotation[] getAnnotation(String label);\r
-\r
- /**\r
- * create a new dataset sequence (if necessary) for this sequence and sets\r
- * this sequence to refer to it. This call will move any features or\r
- * references on the sequence onto the dataset. It will also make a duplicate\r
- * of existing annotation rows for the dataset sequence, rather than relocate\r
- * them in order to preserve external references (since 2.8.2).\r
- * \r
- * @return dataset sequence for this sequence\r
- */\r
- public SequenceI createDatasetSequence();\r
-\r
- /**\r
- * Transfer any database references or annotation from entry under a sequence\r
- * mapping. <br/>\r
- * <strong>Note: DOES NOT transfer sequence associated alignment\r
- * annotation </strong><br/>\r
- * \r
- * @param entry\r
- * @param mp\r
- * null or mapping from entry's numbering to local start/end\r
- */\r
- public void transferAnnotation(SequenceI entry, Mapping mp);\r
-\r
- /**\r
- * @param index\r
- * The sequence index in the MSA\r
- */\r
- public void setIndex(int index);\r
-\r
- /**\r
- * @return The index of the sequence in the alignment\r
- */\r
- public int getIndex();\r
-\r
- /**\r
- * @return The RNA of the sequence in the alignment\r
- */\r
-\r
- public RNA getRNA();\r
-\r
- /**\r
- * @param rna\r
- * The RNA.\r
- */\r
- public void setRNA(RNA rna);\r
-\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.datamodel;
+
+import java.util.List;
+import java.util.Vector;
+
+import fr.orsay.lri.varna.models.rna.RNA;
+
+/**
+ * DOCUMENT ME!
+ *
+ * @author $author$
+ * @version $Revision$
+ */
+public interface SequenceI
+{
+ /**
+ * Set the display name for the sequence
+ *
+ * @param name
+ */
+ public void setName(String name);
+
+ /**
+ * Get the display name
+ */
+ public String getName();
+
+ /**
+ * Set start position of first non-gapped symbol in sequence
+ *
+ * @param start
+ * new start position
+ */
+ public void setStart(int start);
+
+ /**
+ * get start position of first non-gapped residue in sequence
+ *
+ * @return
+ */
+ public int getStart();
+
+ /**
+ * get the displayed id of the sequence
+ *
+ * @return true means the id will be returned in the form
+ * DisplayName/Start-End
+ */
+ public String getDisplayId(boolean jvsuffix);
+
+ /**
+ * set end position for last residue in sequence
+ *
+ * @param end
+ */
+ public void setEnd(int end);
+
+ /**
+ * get end position for last residue in sequence getEnd()>getStart() unless
+ * sequence only consists of gap characters
+ *
+ * @return
+ */
+ public int getEnd();
+
+ /**
+ * @return length of sequence including gaps
+ *
+ */
+ public int getLength();
+
+ /**
+ * Replace the sequence with the given string
+ *
+ * @param sequence
+ * new sequence string
+ */
+ public void setSequence(String sequence);
+
+ /**
+ * @return sequence as string
+ */
+ public String getSequenceAsString();
+
+ /**
+ * get a range on the sequence as a string
+ *
+ * @param start
+ * position relative to start of sequence including gaps (from 0)
+ * @param end
+ * position relative to start of sequence including gaps (from 0)
+ *
+ * @return String containing all gap and symbols in specified range
+ */
+ public String getSequenceAsString(int start, int end);
+
+ /**
+ * Get the sequence as a character array
+ *
+ * @return seqeunce and any gaps
+ */
+ public char[] getSequence();
+
+ /**
+ * get stretch of sequence characters in an array
+ *
+ * @param start
+ * absolute index into getSequence()
+ * @param end
+ * exclusive index of last position in segment to be returned.
+ *
+ * @return char[max(0,end-start)];
+ */
+ public char[] getSequence(int start, int end);
+
+ /**
+ * create a new sequence object from start to end of this sequence
+ *
+ * @param start
+ * int
+ * @param end
+ * int
+ * @return SequenceI
+ */
+ public SequenceI getSubSequence(int start, int end);
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param i
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public char getCharAt(int i);
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param desc
+ * DOCUMENT ME!
+ */
+ public void setDescription(String desc);
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public String getDescription();
+
+ /**
+ * Return the alignment column for a sequence position * Return the alignment
+ * position for a sequence position
+ *
+ * @param pos
+ * lying from start to end
+ *
+ * @return aligned column for residue (0 if residue is upstream from
+ * alignment, -1 if residue is downstream from alignment) note.
+ * Sequence object returns sequence.getEnd() for positions upstream
+ * currently. TODO: change sequence for
+ * assert(findIndex(seq.getEnd()+1)==-1) and fix incremental bugs
+ *
+ */
+ public int findIndex(int pos);
+
+ /**
+ * Returns the sequence position for an alignment position
+ *
+ * @param i
+ * column index in alignment (from 1)
+ *
+ * @return residue number for residue (left of and) nearest ith column
+ */
+ public int findPosition(int i);
+
+ /**
+ * Returns an int array where indices correspond to each residue in the
+ * sequence and the element value gives its position in the alignment
+ *
+ * @return int[SequenceI.getEnd()-SequenceI.getStart()+1] or null if no
+ * residues in SequenceI object
+ */
+ public int[] gapMap();
+
+ /**
+ * Returns an int array where indices correspond to each position in sequence
+ * char array and the element value gives the result of findPosition for that
+ * index in the sequence.
+ *
+ * @return int[SequenceI.getLength()]
+ */
+ public int[] findPositionMap();
+
+ /**
+ * Delete a range of aligned sequence columns, creating a new dataset sequence
+ * if necessary and adjusting start and end positions accordingly.
+ *
+ * @param i
+ * first column in range to delete
+ * @param j
+ * last column in range to delete
+ */
+ public void deleteChars(int i, int j);
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param i
+ * DOCUMENT ME!
+ * @param c
+ * DOCUMENT ME!
+ */
+ public void insertCharAt(int i, char c);
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param i
+ * DOCUMENT ME!
+ * @param c
+ * DOCUMENT ME!
+ */
+ public void insertCharAt(int i, int length, char c);
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public SequenceFeature[] getSequenceFeatures();
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param v
+ * DOCUMENT ME!
+ */
+ public void setSequenceFeatures(SequenceFeature[] features);
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param id
+ * DOCUMENT ME!
+ */
+ public void setPDBId(Vector ids);
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public Vector getPDBId();
+
+ /**
+ * add entry to the vector of PDBIds, if it isn't in the list already
+ *
+ * @param entry
+ */
+ public void addPDBId(PDBEntry entry);
+
+ /**
+ * update the list of PDBEntrys to include any DBRefEntrys citing structural
+ * databases
+ *
+ * @return true if PDBEntry list was modified
+ */
+ public boolean updatePDBIds();
+
+ public String getVamsasId();
+
+ public void setVamsasId(String id);
+
+ public void setDBRef(DBRefEntry[] dbs);
+
+ public DBRefEntry[] getDBRef();
+
+ /**
+ * add the given entry to the list of DBRefs for this sequence, or replace a
+ * similar one if entry contains a map object and the existing one doesnt.
+ *
+ * @param entry
+ */
+ public void addDBRef(DBRefEntry entry);
+
+ public void addSequenceFeature(SequenceFeature sf);
+
+ public void deleteFeature(SequenceFeature sf);
+
+ public void setDatasetSequence(SequenceI seq);
+
+ public SequenceI getDatasetSequence();
+
+ public AlignmentAnnotation[] getAnnotation();
+
+ public void addAlignmentAnnotation(AlignmentAnnotation annotation);
+
+ public void removeAlignmentAnnotation(AlignmentAnnotation annotation);
+
+ /**
+ * Derive a sequence (using this one's dataset or as the dataset)
+ *
+ * @return duplicate sequence with valid dataset sequence
+ */
+ public SequenceI deriveSequence();
+
+ /**
+ * set the array of associated AlignmentAnnotation for this sequenceI
+ *
+ * @param revealed
+ */
+ public void setAlignmentAnnotation(AlignmentAnnotation[] annotation);
+
+ /**
+ * Get one or more alignment annotations with a particular label.
+ *
+ * @param label
+ * string which each returned annotation must have as a label.
+ * @return null or array of annotations.
+ */
+ public AlignmentAnnotation[] getAnnotation(String label);
+
+ /**
+ * Return a list of any annotations which match the given calcId (source) and
+ * label (type). Null values do not match.
+ *
+ * @param calcId
+ * @param label
+ * @return
+ */
+ public List<AlignmentAnnotation> getAlignmentAnnotations(String calcId,
+ String label);
+
+ /**
+ * create a new dataset sequence (if necessary) for this sequence and sets
+ * this sequence to refer to it. This call will move any features or
+ * references on the sequence onto the dataset. It will also make a duplicate
+ * of existing annotation rows for the dataset sequence, rather than relocate
+ * them in order to preserve external references (since 2.8.2).
+ *
+ * @return dataset sequence for this sequence
+ */
+ public SequenceI createDatasetSequence();
+
+ /**
+ * Transfer any database references or annotation from entry under a sequence
+ * mapping. <br/>
+ * <strong>Note: DOES NOT transfer sequence associated alignment
+ * annotation </strong><br/>
+ *
+ * @param entry
+ * @param mp
+ * null or mapping from entry's numbering to local start/end
+ */
+ public void transferAnnotation(SequenceI entry, Mapping mp);
+
+ /**
+ * @param index
+ * The sequence index in the MSA
+ */
+ public void setIndex(int index);
+
+ /**
+ * @return The index of the sequence in the alignment
+ */
+ public int getIndex();
+
+ /**
+ * @return The RNA of the sequence in the alignment
+ */
+
+ public RNA getRNA();
+
+ /**
+ * @param rna
+ * The RNA.
+ */
+ public void setRNA(RNA rna);
+
+}
setMenusFromViewport(viewport);
buildSortByAnnotationScoresMenu();
buildTreeMenu();
+
if (viewport.wrapAlignment)
{
wrapMenuItem_actionPerformed(null);
case KeyEvent.VK_F1:
try
{
- ClassLoader cl = jalview.gui.Desktop.class.getClassLoader();
- java.net.URL url = javax.help.HelpSet.findHelpSet(cl,
- "help/help");
- javax.help.HelpSet hs = new javax.help.HelpSet(cl, url);
-
- javax.help.HelpBroker hb = hs.createHelpBroker();
- hb.setCurrentID("home");
- hb.setDisplayed(true);
+ Help.showHelpWindow();
} catch (Exception ex)
{
ex.printStackTrace();
scaleLeft.setVisible(av.wrapAlignment);
scaleRight.setVisible(av.wrapAlignment);
annotationPanelMenuItem.setState(av.showAnnotation);
+ /*
+ * Show/hide all annotations only enabled if annotation panel is shown
+ */
+ showAllAnnotations.setEnabled(annotationPanelMenuItem.getState());
+ hideAllAnnotations.setEnabled(annotationPanelMenuItem.getState());
viewBoxesMenuItem.setSelected(av.showBoxes);
viewTextMenuItem.setSelected(av.showText);
showNonconservedMenuItem.setSelected(av.getShowUnconserved());
return;
}
- Vector seqs = new Vector();
+ List<SequenceI> seqs = new ArrayList<SequenceI>(sg.getSize());
SequenceI seq;
for (int i = 0; i < sg.getSize(); i++)
{
seq = sg.getSequenceAt(i);
- seqs.addElement(seq);
+ seqs.add(seq);
}
- // If the cut affects all sequences, remove highlighted columns
+ // If the cut affects all sequences, warn, remove highlighted columns
if (sg.getSize() == viewport.getAlignment().getHeight())
{
+ int confirm = JOptionPane.showConfirmDialog(this,
+ MessageManager.getString("warn.delete_all"), // $NON-NLS-1$
+ MessageManager.getString("label.delete_all"), // $NON-NLS-1$
+ JOptionPane.OK_CANCEL_OPTION);
+
+ if (confirm == JOptionPane.CANCEL_OPTION
+ || confirm == JOptionPane.CLOSED_OPTION)
+ {
+ return;
+ }
viewport.getColumnSelection().removeElements(sg.getStartRes(),
sg.getEndRes() + 1);
}
SequenceI[] cut = new SequenceI[seqs.size()];
for (int i = 0; i < seqs.size(); i++)
{
- cut[i] = (SequenceI) seqs.elementAt(i);
+ cut[i] = seqs.get(i);
}
/*
}
/**
- * DOCUMENT ME!
+ * Action on toggle of the 'Show annotations' menu item. This shows or hides
+ * the annotations panel as a whole.
+ *
+ * The options to show/hide all annotations should be enabled when the panel
+ * is shown, and disabled when the panel is hidden.
*
* @param e
- * DOCUMENT ME!
*/
@Override
public void annotationPanelMenuItem_actionPerformed(ActionEvent e)
{
- viewport.setShowAnnotation(annotationPanelMenuItem.isSelected());
- alignPanel.setAnnotationVisible(annotationPanelMenuItem.isSelected());
+ final boolean setVisible = annotationPanelMenuItem.isSelected();
+ viewport.setShowAnnotation(setVisible);
+ alignPanel.setAnnotationVisible(setVisible);
+ this.showAllAnnotations.setEnabled(setVisible);
+ this.hideAllAnnotations.setEnabled(setVisible);
}
@Override
tm.setText(title);//
tm.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
NewTreePanel(type, (String) pwtype, title);
// object broker mechanism.
final Vector<JMenu> wsmenu = new Vector<JMenu>();
final IProgressIndicator af = me;
- final JMenu msawsmenu = new JMenu(MessageManager.getString("label.alignment"));
- final JMenu secstrmenu = new JMenu(MessageManager.getString("label.secondary_structure_prediction"));
- final JMenu seqsrchmenu = new JMenu(MessageManager.getString("label.sequence_database_search"));
- final JMenu analymenu = new JMenu(MessageManager.getString("label.analysis"));
- final JMenu dismenu = new JMenu(MessageManager.getString("label.protein_disorder"));
+ final JMenu msawsmenu = new JMenu("Alignment");
+ final JMenu secstrmenu = new JMenu(
+ "Secondary Structure Prediction");
+ final JMenu seqsrchmenu = new JMenu("Sequence Database Search");
+ final JMenu analymenu = new JMenu("Analysis");
+ final JMenu dismenu = new JMenu("Protein Disorder");
+ // final JMenu msawsmenu = new
+ // JMenu(MessageManager.getString("label.alignment"));
+ // final JMenu secstrmenu = new
+ // JMenu(MessageManager.getString("label.secondary_structure_prediction"));
+ // final JMenu seqsrchmenu = new
+ // JMenu(MessageManager.getString("label.sequence_database_search"));
+ // final JMenu analymenu = new
+ // JMenu(MessageManager.getString("label.analysis"));
+ // final JMenu dismenu = new
+ // JMenu(MessageManager.getString("label.protein_disorder"));
// JAL-940 - only show secondary structure prediction services from
// the legacy server
if (// Cache.getDefault("SHOW_JWS1_SERVICES", true)
"AUTOASSOCIATE_PDBANDSEQS_IGNOREOTHERS", false) || JOptionPane
.showConfirmDialog(
this,
- MessageManager
+ "<html>"+MessageManager
.formatMessage(
"label.ignore_unmatched_dropped_files_info",
new String[]
{ Integer.valueOf(
filesnotmatched
.size())
- .toString() }),
+ .toString() })+"</html>",
MessageManager
.getString("label.ignore_unmatched_dropped_files"),
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION))
trimrs.setSelected(Cache.getDefault("TRIM_FETCHED_DATASET_SEQS", true));
trimrs.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
trimrs.setSelected(trimrs.isSelected());
tabbedPane.setSelectedIndex(alignPanels.indexOf(alignmentPanel));
}
}
+
+ /**
+ * Action on selection of menu option to Show or Hide all annotations.
+ *
+ * @param visibile
+ */
+ @Override
+ protected void setAllAnnotationsVisibility(boolean visible)
+ {
+ for (AlignmentAnnotation aa : alignPanel.getAlignment()
+ .getAlignmentAnnotation())
+ {
+ aa.visible = visible;
+ }
+ this.alignPanel.paintAlignment(true);
+ }
}
class PrintThread extends Thread
--- /dev/null
+package jalview.gui;
+
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceGroup;
+import jalview.util.MessageManager;
+
+import java.awt.BorderLayout;
+import java.awt.Checkbox;
+import java.awt.CheckboxGroup;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.JButton;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.JPanel;
+
+/**
+ * A panel that allows the user to select which sequence-associated annotation
+ * rows to show or hide.
+ *
+ * @author gmcarstairs
+ *
+ */
+@SuppressWarnings("serial")
+public class AnnotationChooser extends JPanel
+{
+
+ private static final Font CHECKBOX_FONT = new Font("Serif", Font.BOLD, 12);
+
+ private static final int MY_FRAME_WIDTH = 600;
+
+ private static final int MY_FRAME_HEIGHT = 250;
+
+ private JInternalFrame frame;
+
+ private AlignmentPanel ap;
+
+ private SequenceGroup sg;
+
+ // all annotation rows' original visible state
+ private boolean[] resetState = null;
+
+ // is 'Show' selected?
+ private boolean showSelected;
+
+ // apply settings to selected (or all) sequences?
+ private boolean applyToSelectedSequences;
+
+ // apply settings to unselected (or all) sequences?
+ private boolean applyToUnselectedSequences;
+
+ // currently selected 'annotation type' checkboxes
+ private Map<String, String> selectedTypes = new HashMap<String, String>();
+
+ /**
+ * Constructor.
+ *
+ * @param alignPane
+ */
+ public AnnotationChooser(AlignmentPanel alignPane)
+ {
+ super();
+ this.ap = alignPane;
+ this.sg = alignPane.av.getSelectionGroup();
+ saveResetState(alignPane.getAlignment());
+
+ try
+ {
+ jbInit();
+ } catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ showFrame();
+ }
+
+ /**
+ * Save the initial show/hide state of all annotations to allow a Cancel
+ * operation.
+ *
+ * @param alignment
+ */
+ protected void saveResetState(AlignmentI alignment)
+ {
+ AlignmentAnnotation[] annotations = alignment.getAlignmentAnnotation();
+ final int count = annotations.length;
+ this.resetState = new boolean[count];
+ for (int i = 0; i < count; i++)
+ {
+ this.resetState[i] = annotations[i].visible;
+ }
+ }
+
+ /**
+ * Populate this frame with:
+ * <p>
+ * checkboxes for the types of annotation to show or hide (i.e. any annotation
+ * type shown for any sequence in the whole alignment)
+ * <p>
+ * option to show or hide selected types
+ * <p>
+ * option to show/hide for the currently selected group, or its inverse
+ * <p>
+ * OK and Cancel (reset) buttons
+ */
+ protected void jbInit()
+ {
+ setLayout(new GridLayout(3, 1));
+ add(buildAnnotationTypesPanel());
+ add(buildShowHideOptionsPanel());
+ add(buildActionButtonsPanel());
+ validate();
+ }
+
+ /**
+ * Construct the panel with checkboxes for annotation types.
+ *
+ * @return
+ */
+ protected JPanel buildAnnotationTypesPanel()
+ {
+ JPanel jp = new JPanel(new FlowLayout(FlowLayout.LEFT));
+
+ List<String> annotationTypes = getAnnotationTypes(
+ this.ap.getAlignment(), true);
+
+ for (final String type : annotationTypes)
+ {
+ final Checkbox check = new Checkbox(type);
+ check.setFont(CHECKBOX_FONT);
+ check.addItemListener(new ItemListener()
+ {
+ @Override
+ public void itemStateChanged(ItemEvent evt)
+ {
+ if (evt.getStateChange() == ItemEvent.SELECTED)
+ {
+ AnnotationChooser.this.selectedTypes.put(type, type);
+ }
+ else
+ {
+ AnnotationChooser.this.selectedTypes.remove(type);
+ }
+ changeTypeSelected_actionPerformed(type);
+ }
+ });
+ jp.add(check);
+ }
+ return jp;
+ }
+
+ /**
+ * Update display when scope (All/Selected sequences/Unselected) is changed.
+ * <p>
+ * Set annotations (with one of the selected types) to the selected Show/Hide
+ * visibility, if they are in the new application scope. Set to the opposite
+ * if outside the scope.
+ * <p>
+ * Note this only affects sequence-specific annotations, others are left
+ * unchanged.
+ */
+ protected void changeApplyTo_actionPerformed()
+ {
+ setAnnotationVisibility(true);
+
+ // copied from AnnotationLabel.actionPerformed (after show/hide row)...
+ // TODO should drive this functionality into AlignmentPanel
+ ap.updateAnnotation();
+ // this.ap.annotationPanel.adjustPanelHeight();
+ // this.ap.alabels.setSize(this.ap.alabels.getSize().width,
+ // this.ap.annotationPanel.getSize().height);
+ // this.ap.validate();
+ this.ap.paintAlignment(true);
+ }
+
+ /**
+ * Update display when an annotation type is selected or deselected.
+ * <p>
+ * If the type is selected, set visibility of annotations of that type which
+ * are in the application scope (all, selected or unselected sequences).
+ * <p>
+ * If the type is unselected, set visibility to the opposite value. That is,
+ * treat select/deselect as a 'toggle' operation.
+ *
+ * @param type
+ */
+ protected void changeTypeSelected_actionPerformed(String type)
+ {
+ boolean typeSelected = this.selectedTypes.containsKey(type);
+ for (AlignmentAnnotation aa : this.ap.getAlignment()
+ .getAlignmentAnnotation())
+ {
+ if (aa.sequenceRef != null && type.equals(aa.label)
+ && isInActionScope(aa))
+ {
+ aa.visible = typeSelected ? this.showSelected : !this.showSelected;
+ }
+ }
+ ap.updateAnnotation();
+ // // this.ap.annotationPanel.adjustPanelHeight();
+ // this.ap.alabels.setSize(this.ap.alabels.getSize().width,
+ // this.ap.annotationPanel.getSize().height);
+ // this.ap.validate();
+ this.ap.paintAlignment(true);
+ }
+
+ /**
+ * Update display on change of choice of Show or Hide
+ * <p>
+ * For annotations of any selected type, set visibility of annotations of that
+ * type which are in the application scope (all, selected or unselected
+ * sequences).
+ *
+ * @param type
+ */
+ protected void changeShowHide_actionPerformed()
+ {
+ setAnnotationVisibility(false);
+
+ this.ap.updateAnnotation();
+ // this.ap.annotationPanel.adjustPanelHeight();
+ this.ap.paintAlignment(true);
+ }
+
+ /**
+ * Update visibility flags on annotation rows as per the current user choices.
+ *
+ * @param updateAllRows
+ */
+ protected void setAnnotationVisibility(boolean updateAllRows)
+ {
+ for (AlignmentAnnotation aa : this.ap.getAlignment()
+ .getAlignmentAnnotation())
+ {
+ if (aa.sequenceRef != null)
+ {
+ setAnnotationVisibility(aa, updateAllRows);
+ }
+ }
+ }
+
+ /**
+ * Determine and set the visibility of the given annotation from the currently
+ * selected options.
+ * <p>
+ * Only update annotations whose type is one of the selected types.
+ * <p>
+ * If its sequence is in the selected application scope
+ * (all/selected/unselected sequences), then we set its visibility according
+ * to the current choice of Show or Hide.
+ * <p>
+ * If force update of all rows is wanted, then set rows not in the sequence
+ * selection scope to the opposite visibility to those in scope.
+ *
+ * @param aa
+ * @param updateAllRows
+ */
+ protected void setAnnotationVisibility(AlignmentAnnotation aa,
+ boolean updateAllRows)
+ {
+ if (this.selectedTypes.containsKey(aa.label))
+ {
+ if (isInActionScope(aa))
+ {
+ aa.visible = this.showSelected;
+ }
+ else if (updateAllRows)
+ {
+ aa.visible = !this.showSelected;
+ }
+ }
+ // TODO force not visible if associated sequence is hidden?
+ // currently hiding a sequence does not hide its annotation rows
+ }
+
+ /**
+ * Answers true if the annotation falls in the current selection criteria for
+ * show/hide.
+ * <p>
+ * It must be in the sequence selection group (for 'Apply to selection'), or
+ * not in it (for 'Apply except to selection'). No check needed for 'Apply to
+ * all'.
+ *
+ * @param aa
+ * @return
+ */
+ protected boolean isInActionScope(AlignmentAnnotation aa)
+ {
+ boolean result = false;
+ if (this.applyToSelectedSequences && this.applyToUnselectedSequences)
+ {
+ // we don't care if the annotation's sequence is selected or not
+ result = true;
+ }
+ else if (this.sg == null)
+ {
+ // shouldn't happen - defensive programming
+ result = true;
+ }
+ else if (this.sg.getSequences().contains(aa.sequenceRef))
+ {
+ // annotation is for a member of the selection group
+ result = this.applyToSelectedSequences ? true : false;
+ }
+ else
+ {
+ // annotation is not associated with the selection group
+ result = this.applyToUnselectedSequences ? true : false;
+ }
+ return result;
+ }
+
+ /**
+ * Get annotation 'types' for an alignment, optionally restricted to
+ * sequence-specific annotations only. The label is currently used for 'type'.
+ *
+ * TODO refactor to helper class. See
+ * AnnotationColourChooser.getAnnotationItems() for another client
+ *
+ * @param alignment
+ * @param sequenceSpecific
+ * @return
+ */
+ public static List<String> getAnnotationTypes(AlignmentI alignment,
+ boolean sequenceSpecificOnly)
+ {
+ List<String> result = new ArrayList<String>();
+ for (AlignmentAnnotation aa : alignment.getAlignmentAnnotation())
+ {
+ if (!sequenceSpecificOnly || aa.sequenceRef != null)
+ {
+ String label = aa.label;
+ if (!result.contains(label))
+ {
+ result.add(label);
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Construct the panel with options to:
+ * <p>
+ * show or hide the selected annotation types
+ * <p>
+ * do this for the current selection group or its inverse
+ *
+ * @return
+ */
+ protected JPanel buildShowHideOptionsPanel()
+ {
+ JPanel jp = new JPanel();
+ jp.setLayout(new BorderLayout());
+
+ JPanel showHideOptions = buildShowHidePanel();
+ jp.add(showHideOptions, BorderLayout.CENTER);
+
+ JPanel applyToOptions = buildApplyToOptionsPanel();
+ jp.add(applyToOptions, BorderLayout.SOUTH);
+
+ return jp;
+ }
+
+ /**
+ * Build a panel with radio buttons options for sequences to apply show/hide
+ * to. Options are all, current selection, all except current selection.
+ * Initial state has 'current selection' selected.
+ * <p>
+ * If the sequence group is null, then we are acting on the whole alignment,
+ * and only 'all sequences' is enabled (and selected).
+ *
+ * @return
+ */
+ protected JPanel buildApplyToOptionsPanel()
+ {
+ final boolean wholeAlignment = this.sg == null;
+ JPanel applyToOptions = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ CheckboxGroup actingOn = new CheckboxGroup();
+
+ String forAll = MessageManager.getString("label.all_sequences");
+ final Checkbox allSequences = new Checkbox(forAll, actingOn,
+ wholeAlignment);
+ allSequences.addItemListener(new ItemListener()
+ {
+ @Override
+ public void itemStateChanged(ItemEvent evt)
+ {
+ if (evt.getStateChange() == ItemEvent.SELECTED) {
+ AnnotationChooser.this.setApplyToSelectedSequences(true);
+ AnnotationChooser.this.setApplyToUnselectedSequences(true);
+ AnnotationChooser.this.changeApplyTo_actionPerformed();
+ }
+ }
+ });
+ applyToOptions.add(allSequences);
+
+ String forSelected = MessageManager
+ .getString("label.selected_sequences");
+ final Checkbox selectedSequences = new Checkbox(forSelected, actingOn,
+ !wholeAlignment);
+ selectedSequences.setEnabled(!wholeAlignment);
+ selectedSequences.addItemListener(new ItemListener()
+ {
+ @Override
+ public void itemStateChanged(ItemEvent evt)
+ {
+ if (evt.getStateChange() == ItemEvent.SELECTED)
+ {
+ AnnotationChooser.this.setApplyToSelectedSequences(true);
+ AnnotationChooser.this.setApplyToUnselectedSequences(false);
+ AnnotationChooser.this.changeApplyTo_actionPerformed();
+ }
+ }
+ });
+ applyToOptions.add(selectedSequences);
+
+ String exceptSelected = MessageManager
+ .getString("label.except_selected_sequences");
+ final Checkbox unselectedSequences = new Checkbox(exceptSelected, actingOn, false);
+ unselectedSequences.setEnabled(!wholeAlignment);
+ unselectedSequences.addItemListener(new ItemListener()
+ {
+ @Override
+ public void itemStateChanged(ItemEvent evt)
+ {
+ if (evt.getStateChange() == ItemEvent.SELECTED)
+ {
+ AnnotationChooser.this.setApplyToSelectedSequences(false);
+ AnnotationChooser.this.setApplyToUnselectedSequences(true);
+ AnnotationChooser.this.changeApplyTo_actionPerformed();
+ }
+ }
+ });
+ applyToOptions.add(unselectedSequences);
+
+ // set member variables to match the initial selection state
+ this.applyToSelectedSequences = selectedSequences.getState()
+ || allSequences.getState();
+ this.applyToUnselectedSequences = unselectedSequences.getState()
+ || allSequences.getState();
+
+ return applyToOptions;
+ }
+
+ /**
+ * Build a panel with radio button options to show or hide selected
+ * annotations.
+ *
+ * @return
+ */
+ protected JPanel buildShowHidePanel()
+ {
+ JPanel showHideOptions = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ CheckboxGroup showOrHide = new CheckboxGroup();
+
+ /*
+ * Radio button 'Show selected annotations' - initially unselected
+ */
+ String showLabel = MessageManager
+ .getString("label.show_selected_annotations");
+ final Checkbox showOption = new Checkbox(showLabel, showOrHide, false);
+ showOption.addItemListener(new ItemListener()
+ {
+ @Override
+ public void itemStateChanged(ItemEvent evt)
+ {
+ if (evt.getStateChange() == ItemEvent.SELECTED) {
+ AnnotationChooser.this.setShowSelected(true);
+ AnnotationChooser.this.changeShowHide_actionPerformed();
+ }
+ }
+ });
+ showHideOptions.add(showOption);
+
+ /*
+ * Radio button 'hide selected annotations'- initially selected
+ */
+ String hideLabel = MessageManager
+ .getString("label.hide_selected_annotations");
+ final Checkbox hideOption = new Checkbox(hideLabel, showOrHide, true);
+ hideOption.addItemListener(new ItemListener()
+ {
+ @Override
+ public void itemStateChanged(ItemEvent evt)
+ {
+ if (evt.getStateChange() == ItemEvent.SELECTED)
+ {
+ AnnotationChooser.this.setShowSelected(false);
+ AnnotationChooser.this.changeShowHide_actionPerformed();
+ }
+ }
+ });
+ showHideOptions.add(hideOption);
+
+ /*
+ * Set member variable to match initial selection state
+ */
+ this.showSelected = showOption.getState();
+
+ return showHideOptions;
+ }
+
+ /**
+ * Construct the panel with OK and Cancel buttons.
+ *
+ * @return
+ */
+ protected JPanel buildActionButtonsPanel()
+ {
+ JPanel jp = new JPanel();
+ final Font labelFont = JvSwingUtils.getLabelFont();
+
+ JButton ok = new JButton(MessageManager.getString("action.ok"));
+ ok.setFont(labelFont);
+ ok.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ close_actionPerformed();
+ }
+ });
+ jp.add(ok);
+
+ JButton cancel = new JButton(MessageManager.getString("action.cancel"));
+ cancel.setFont(labelFont);
+ cancel.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ cancel_actionPerformed();
+ }
+ });
+ jp.add(cancel);
+
+ return jp;
+ }
+
+ /**
+ * On 'Cancel' button, undo any changes.
+ */
+ protected void cancel_actionPerformed()
+ {
+ resetOriginalState();
+ this.ap.repaint();
+ close_actionPerformed();
+ }
+
+ /**
+ * Restore annotation visibility to their state on entry here, and repaint
+ * alignment.
+ */
+ protected void resetOriginalState()
+ {
+ int i = 0;
+ for (AlignmentAnnotation aa : this.ap.getAlignment()
+ .getAlignmentAnnotation())
+ {
+ aa.visible = this.resetState[i++];
+ }
+ }
+
+ /**
+ * On 'Close' button, close the dialog.
+ */
+ protected void close_actionPerformed()
+ {
+ try
+ {
+ this.frame.setClosed(true);
+ } catch (Exception exe)
+ {
+ }
+ }
+
+ /**
+ * Render a frame containing this panel.
+ */
+ private void showFrame()
+ {
+ frame = new JInternalFrame();
+ frame.setContentPane(this);
+ frame.setLayer(JLayeredPane.PALETTE_LAYER);
+ Desktop.addInternalFrame(frame,
+ MessageManager.getString("label.choose_annotations"),
+ MY_FRAME_WIDTH, MY_FRAME_HEIGHT, true);
+ }
+
+ protected void setShowSelected(boolean showSelected)
+ {
+ this.showSelected = showSelected;
+ }
+
+ protected void setApplyToSelectedSequences(
+ boolean applyToSelectedSequences)
+ {
+ this.applyToSelectedSequences = applyToSelectedSequences;
+ }
+
+ protected void setApplyToUnselectedSequences(
+ boolean applyToUnselectedSequences)
+ {
+ this.applyToUnselectedSequences = applyToUnselectedSequences;
+ }
+
+ protected boolean isShowSelected()
+ {
+ return showSelected;
+ }
+
+ protected boolean isApplyToSelectedSequences()
+ {
+ return applyToSelectedSequences;
+ }
+
+ protected boolean isApplyToUnselectedSequences()
+ {
+ return applyToUnselectedSequences;
+ }
+
+}
*/
package jalview.gui;
-import java.util.*;
-
-import java.awt.*;
-import java.awt.event.*;
-
-import javax.swing.*;
-import javax.swing.event.*;
-
-import net.miginfocom.swing.MigLayout;
-
import jalview.bin.Cache;
-import jalview.datamodel.*;
-import jalview.schemes.*;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.SequenceGroup;
+import jalview.schemes.AnnotationColourGradient;
+import jalview.schemes.ColourSchemeI;
import jalview.util.MessageManager;
+import java.awt.BorderLayout;
+import java.awt.Color;
import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+import javax.swing.JComboBox;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.JPanel;
+import javax.swing.JSlider;
+import javax.swing.JTextField;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import net.miginfocom.swing.MigLayout;
public class AnnotationColourChooser extends JPanel
{
slider.addChangeListener(new ChangeListener()
{
+ @Override
public void stateChanged(ChangeEvent evt)
{
if (!adjusting)
{
- thresholdValue.setText(((float) slider.getValue() / 1000f) + "");
+ thresholdValue.setText((slider.getValue() / 1000f) + "");
valueChanged(!sliderDragging);
}
}
super.mouseDragged(e);
}
+ @Override
public void mouseReleased(MouseEvent evt)
{
if (sliderDragging)
if (!list.contains(label))
{
anmap[list.size()] = i;
- list.addElement(label);
+ list.add(label);
}
else
if (!isSeqAssociated)
{
anmap[list.size()] = i;
- list.addElement(label + "_" + (index++));
+ list.add(label + "_" + (index++));
}
}
}
seqAssociated.setEnabled(enableSeqAss);
- annmap = new int[list.size()];
- System.arraycopy(anmap, 0, annmap, 0, annmap.length);
+ this.annmap = new int[list.size()];
+ System.arraycopy(anmap, 0, this.annmap, 0, this.annmap.length);
return list;
}
minColour.setToolTipText(MessageManager.getString("label.min_colour"));
minColour.addMouseListener(new MouseAdapter()
{
+ @Override
public void mousePressed(MouseEvent e)
{
if (minColour.isEnabled())
maxColour.setToolTipText(MessageManager.getString("label.max_colour"));
maxColour.addMouseListener(new MouseAdapter()
{
+ @Override
public void mousePressed(MouseEvent e)
{
if (maxColour.isEnabled())
ok.setText(MessageManager.getString("action.ok"));
ok.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
ok_actionPerformed(e);
cancel.setText(MessageManager.getString("action.cancel"));
cancel.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
cancel_actionPerformed(e);
annotations.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
annotations_actionPerformed(e);
});
threshold.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
threshold_actionPerformed(e);
});
thresholdValue.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
thresholdValue_actionPerformed(e);
.getString("label.use_original_colours"));
currentColours.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
currentColours_actionPerformed(e);
.getString("label.threshold_minmax"));
thresholdIsMin.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent actionEvent)
{
thresholdIsMin_actionPerformed(actionEvent);
{
changeColour();
}
- currentAnnotation.threshold.value = (float) slider.getValue() / 1000f;
+ currentAnnotation.threshold.value = slider.getValue() / 1000f;
propagateSeqAssociatedThreshold(updateAllAnnotation);
ap.paintAlignment(false);
}
*/
package jalview.gui;
-import java.util.*;
-import java.util.regex.Pattern;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.io.FormatAdapter;
+import jalview.util.MessageManager;
-import java.awt.*;
-import java.awt.datatransfer.*;
-import java.awt.event.*;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.MediaTracker;
+import java.awt.RenderingHints;
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
import java.awt.geom.AffineTransform;
-import java.awt.image.*;
-import javax.swing.*;
+import java.awt.image.BufferedImage;
+import java.util.Arrays;
+import java.util.Vector;
+import java.util.regex.Pattern;
-import jalview.datamodel.*;
-import jalview.io.*;
-import jalview.util.MessageManager;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.SwingUtilities;
+import javax.swing.ToolTipManager;
/**
* DOCUMENT ME!
Graphics2D g = (Graphics2D) bi.getGraphics();
g.rotate(Math.toRadians(90));
g.drawImage(temp, 0, -bi.getWidth(this), this);
- image = (Image) bi;
+ image = bi;
addMouseListener(this);
addMouseMotionListener(this);
aa[selectedRow].scaleColLabel = !aa[selectedRow].scaleColLabel;
}
+ refresh();
+
+ }
+
+ /**
+ * Redraw sensibly.
+ */
+ protected void refresh()
+ {
ap.validateAnnotationDimensions(false);
ap.addNotify();
ap.repaint();
- // validate();
- // ap.paintAlignment(true);
}
/**
this.setToolTipText(desc.toString());
}
else
+ {
this.setToolTipText(null);
+ }
}
}
*/
public void mouseClicked(MouseEvent evt)
{
- AlignmentAnnotation[] aa = ap.av.getAlignment()
+ final AlignmentAnnotation[] aa = ap.av.getAlignment()
.getAlignmentAnnotation();
if (SwingUtilities.isLeftMouseButton(evt))
{
item = new JMenuItem(HIDE);
item.addActionListener(this);
pop.add(item);
+ // JAL-1264 hide all sequence-specific annotations of this type
+ final String label = aa[selectedRow].label;
+ if (selectedRow < aa.length)
+ {
+ if (aa[selectedRow].sequenceRef != null)
+ {
+ JMenuItem hideType = new JMenuItem();
+ String text = MessageManager.getString("label.hide_all") + " " + label;
+ hideType.setText(text);
+ hideType.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ for (AlignmentAnnotation ann : ap.av.getAlignment()
+ .getAlignmentAnnotation())
+ {
+ if (ann.sequenceRef != null && ann.label != null
+ && ann.label.equals(label))
+ {
+ ann.visible = false;
+ }
+ }
+ refresh();
+ }
+ });
+ pop.add(hideType);
+ }
+ }
item = new JMenuItem(DELETE);
item.addActionListener(this);
pop.add(item);
pop.add(item);
}
}
- else if (aa[selectedRow].label.indexOf("Consensus") > -1)
+ else if (label.indexOf("Consensus") > -1)
{
pop.addSeparator();
// av and sequencegroup need to implement same interface for
offset -= fm.getDescent();
}
else
+ {
offset += fm.getDescent();
+ }
x = width - fm.stringWidth(aa[i].label) - 3;
SequenceI sequence, boolean prompt)
{
PDBEntry entry = new PDBEntry();
+ MCview.PDBfile pdbfile = null;
try
{
- MCview.PDBfile pdbfile = new MCview.PDBfile(choice, protocol);
-
+ // TODO JAL-674 extract secondary structure and transfer it to associated
+ // sequence
+ pdbfile = new MCview.PDBfile(false, false, choice, protocol);
if (pdbfile.id == null)
{
String reply = null;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkEvent.EventType;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
-import javax.swing.event.HyperlinkEvent.EventType;
/**
* Jalview Desktop
else
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- setBounds((int) (screenSize.width - 900) / 2,
- (int) (screenSize.height - 650) / 2, 900, 650);
+ setBounds((screenSize.width - 900) / 2,
+ (screenSize.height - 650) / 2, 900, 650);
}
jconsole = new Console(this, showjconsole);
// add essential build information
{
try
{
- ClassLoader cl = jalview.gui.Desktop.class.getClassLoader();
- java.net.URL url = javax.help.HelpSet.findHelpSet(cl, "help/help");
- javax.help.HelpSet hs = new javax.help.HelpSet(cl, url);
-
- javax.help.HelpBroker hb = hs.createHelpBroker();
- hb.setCurrentID("home");
- hb.setDisplayed(true);
+ Help.showHelpWindow();
} catch (Exception ex)
{
}
throw new Error(MessageManager.getString("error.call_setprogressbar_before_registering_handler"));
}
progressBarHandlers.put(new Long(id), handler);
- final JPanel progressPanel = (JPanel) progressBars.get(new Long(id));
+ final JPanel progressPanel = progressBars.get(new Long(id));
if (handler.canCancel())
{
JButton cancel = new JButton(
*/
package jalview.gui;
-import java.io.*;
-import java.util.*;
-import java.util.List;
-import java.awt.*;
-import java.awt.event.*;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.table.*;
-
import jalview.analysis.AlignmentSorter;
import jalview.bin.Cache;
import jalview.commands.OrderCommand;
-import jalview.datamodel.*;
-import jalview.io.*;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.io.JalviewFileChooser;
import jalview.schemes.AnnotationColourGradient;
import jalview.schemes.GraduatedColor;
import jalview.util.MessageManager;
import jalview.ws.dbsources.das.api.jalviewSourceI;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.GridLayout;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseMotionAdapter;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.BorderFactory;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JColorChooser;
+import javax.swing.JDialog;
+import javax.swing.JInternalFrame;
+import javax.swing.JLabel;
+import javax.swing.JLayeredPane;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JSlider;
+import javax.swing.JTabbedPane;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
+
public class FeatureSettings extends JPanel
{
DasSourceBrowser dassourceBrowser;
(String) table.getValueAt(selectedRow, 0));
}
}
+
+ // isPopupTrigger fires on mouseReleased on Mac
+ @Override
+ public void mouseReleased(MouseEvent evt)
+ {
+ selectedRow = table.rowAtPoint(evt.getPoint());
+ if (evt.isPopupTrigger())
+ {
+ popupSort(selectedRow, (String) table.getValueAt(selectedRow, 0),
+ table.getValueAt(selectedRow, 1), fr.minmax, evt.getX(),
+ evt.getY());
+ }
+ }
});
table.addMouseMotionListener(new MouseMotionAdapter()
file), "UTF-8");
jalview.schemabinding.version2.JalviewUserColours jucs = new jalview.schemabinding.version2.JalviewUserColours();
- jucs = (jalview.schemabinding.version2.JalviewUserColours) jucs
+ jucs = jucs
.unmarshal(in);
for (int i = jucs.getColourCount() - 1; i >= 0; i--)
{
public void stateChanged(ChangeEvent evt)
{
- fr.setTransparency((float) (100 - transparency.getValue()) / 100f);
+ fr.setTransparency((100 - transparency.getValue()) / 100f);
af.alignPanel.paintAlignment(true);
}
});
*/
package jalview.gui;
-import java.util.*;
-import java.awt.event.*;
+import jalview.datamodel.SearchResults;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+import jalview.jbgui.GFinder;
+import jalview.util.MessageManager;
-import javax.swing.*;
+import java.awt.event.ActionEvent;
+import java.util.Vector;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
-import jalview.datamodel.*;
-import jalview.jbgui.*;
-import jalview.util.MessageManager;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.JOptionPane;
/**
- * DOCUMENT ME!
+ * Performs the menu option for searching the alignment, for the next or all
+ * matches. If matches are found, they are highlighted, and the user has the
+ * option to create a new feature on the alignment for the matched positions.
+ *
+ * Searches can be for a simple base sequence, or may use a regular expression.
+ * Any gaps are ignored.
*
* @author $author$
* @version $Revision$
*/
public class Finder extends GFinder
{
+ private static final int HEIGHT = 110;
+
+ private static final int WIDTH = 340;
+
AlignViewport av;
AlignmentPanel ap;
SearchResults searchResults;
/**
- * Creates a new Finder object.
- *
- * @param av
- * DOCUMENT ME!
- * @param ap
- * DOCUMENT ME!
- * @param f
- * DOCUMENT ME!
+ * Creates a new Finder object with no associated viewport or panel.
*/
public Finder()
{
focusfixed = false;
}
+ /**
+ * Constructor given an associated viewport and alignment panel. Constructs
+ * and displays an internal frame where the user can enter a search string.
+ *
+ * @param viewport
+ * @param alignPanel
+ */
public Finder(AlignViewport viewport, AlignmentPanel alignPanel)
{
av = viewport;
frame = new JInternalFrame();
frame.setContentPane(this);
frame.setLayer(JLayeredPane.PALETTE_LAYER);
- Desktop.addInternalFrame(frame, "Find", 340, 110);
+ Desktop.addInternalFrame(frame, MessageManager.getString("label.find"),
+ WIDTH, HEIGHT);
textfield.requestFocus();
}
/**
- * DOCUMENT ME!
+ * Performs the 'Find Next' action.
*
* @param e
- * DOCUMENT ME!
*/
public void findNext_actionPerformed(ActionEvent e)
{
}
/**
- * DOCUMENT ME!
+ * Performs the 'Find All' action.
*
* @param e
- * DOCUMENT ME!
*/
public void findAll_actionPerformed(ActionEvent e)
{
}
/**
- * incrementally search the alignment
+ * Search the alignment for the next or all matches. If 'all matches', a
+ * dialog is shown with the number of sequence ids and subsequences matched.
*
* @param findAll
- * true means find all results and raise a dialog box
*/
void doSearch(boolean findAll)
{
String searchString = textfield.getText().trim();
- if (searchString.length() < 1)
+ if (isInvalidSearchString(searchString))
{
return;
}
}
}
+
+ /**
+ * Displays an error dialog, and answers false, if the search string is
+ * invalid, else answers true.
+ *
+ * @param searchString
+ * @return
+ */
+ protected boolean isInvalidSearchString(String searchString)
+ {
+ String error = getSearchValidationError(searchString);
+ if (error == null)
+ {
+ return false;
+ }
+ JOptionPane.showInternalMessageDialog(this, error,
+ MessageManager.getString("label.invalid_search"), // $NON-NLS-1$
+ JOptionPane.ERROR_MESSAGE);
+ return true;
+ }
+
+ /**
+ * Returns an error message string if the search string is invalid, else
+ * returns null.
+ *
+ * Currently validation is limited to checking the string is not empty, and is
+ * a valid regular expression (simple searches for base sub-sequences will
+ * pass this test). Additional validations may be added in future if the
+ * search syntax is expanded.
+ *
+ * @param searchString
+ * @return
+ */
+ protected String getSearchValidationError(String searchString)
+ {
+ String error = null;
+ if (searchString == null || searchString.length() == 0)
+ {
+ error = MessageManager.getString("label.invalid_search");
+ }
+ try
+ {
+ Pattern.compile(searchString);
+ } catch (PatternSyntaxException e)
+ {
+ error = MessageManager.getString("error.invalid_regex") + ": "
+ + e.getDescription();
+ }
+ return error;
+ }
}
--- /dev/null
+package jalview.gui;
+
+import java.net.URL;
+
+import javax.help.HelpBroker;
+import javax.help.HelpSet;
+import javax.help.HelpSetException;
+
+/**
+ * Utility class to show the help documentation window.
+ *
+ * @author gmcarstairs
+ *
+ */
+public class Help
+{
+
+ private static final long HALF_A_MO = 500; // half a second
+
+ private static long lastOpenedTime = 0L;
+
+ /**
+ * Not instantiable
+ */
+ private Help()
+ {
+
+ }
+
+ /**
+ * Show help text in a new window. But do nothing if within half a second of
+ * the last invocation.
+ *
+ * This is a workaround for issue JAL-914 - both Desktop and AlignFrame
+ * responding to F1 key, resulting in duplicate help windows opened.
+ *
+ * @throws HelpSetException
+ */
+ public static void showHelpWindow() throws HelpSetException
+ {
+ long timeNow = System.currentTimeMillis();
+
+ if (timeNow - lastOpenedTime > HALF_A_MO)
+ {
+ lastOpenedTime = timeNow;
+ ClassLoader cl = Desktop.class.getClassLoader();
+ URL url = HelpSet.findHelpSet(cl, "help/help"); // $NON-NLS-$
+ HelpSet hs = new HelpSet(cl, url);
+
+ HelpBroker hb = hs.createHelpBroker();
+ hb.setCurrentID("home");
+ hb.setDisplayed(true);
+ }
+ }
+}
*/
package jalview.gui;
-import java.awt.*;
-import java.awt.event.*;
-import java.util.List;
-import java.util.Vector;
-
-import javax.swing.*;
-
-import jalview.datamodel.*;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
import jalview.io.SequenceAnnotationReport;
import jalview.util.MessageManager;
import jalview.util.UrlLink;
+import java.awt.BorderLayout;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
+import java.util.List;
+import java.util.Vector;
+
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.ToolTipManager;
+
/**
- * DOCUMENT ME!
+ * This panel hosts alignment sequence ids and responds to mouse clicks on them,
+ * as well as highlighting ids matched by a search from the Find menu.
*
* @author $author$
* @version $Revision$
* Creates a new IdPanel object.
*
* @param av
- * DOCUMENT ME!
* @param parent
- * DOCUMENT ME!
*/
public IdPanel(AlignViewport av, AlignmentPanel parent)
{
}
/**
- * DOCUMENT ME!
+ * Respond to mouse movement by constructing tooltip text for the sequence id
+ * under the mouse.
*
* @param e
* DOCUMENT ME!
if (seq > -1 && seq < av.getAlignment().getHeight())
{
SequenceI sequence = av.getAlignment().getSequenceAt(seq);
- StringBuffer tip = new StringBuffer();
+ StringBuffer tip = new StringBuffer(64);
seqAnnotReport
.createSequenceAnnotationReport(tip, sequence,
av.isShowDbRefs(), av.isShowNpFeats(),
}
/**
- * DOCUMENT ME!
+ * Responds to a mouse drag by selecting the sequences under the dragged
+ * region.
*
* @param e
- * DOCUMENT ME!
*/
@Override
public void mouseDragged(MouseEvent e)
alignPanel.paintAlignment(true);
}
+ /**
+ * Response to the mouse wheel by scrolling the alignment panel.
+ */
@Override
public void mouseWheelMoved(MouseWheelEvent e)
{
if (e.isShiftDown())
{
alignPanel.scrollRight(true);
-
}
else
{
}
/**
- * DOCUMENT ME!
+ * Handle a mouse click event. Currently only responds to a double-click. The
+ * action is to try to open a browser window at a URL that searches for the
+ * selected sequence id. The search URL is configured in Preferences |
+ * Connections | URL link from Sequence ID. For example:
+ *
+ * http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$
*
* @param e
- * DOCUMENT ME!
*/
@Override
public void mouseClicked(MouseEvent e)
{
- if (e.getClickCount() < 2)
+ /*
+ * Ignore single click. Ignore 'left' click followed by 'right' click (user
+ * selects a row then its pop-up menu).
+ */
+ if (e.getClickCount() < 2 || SwingUtilities.isRightMouseButton(e))
{
return;
}
- java.util.Vector links = Preferences.sequenceURLLinks;
+ Vector links = Preferences.sequenceURLLinks;
if (links == null || links.size() < 1)
{
return;
MessageManager.getString("label.web_browser_not_found"), JOptionPane.WARNING_MESSAGE);
ex.printStackTrace();
}
-
}
/**
}
/**
- * DOCUMENT ME!
+ * Respond to a mouse press. Does nothing for (left) double-click as this is
+ * handled by mouseClicked().
+ *
+ * Right mouse down - construct and show context menu.
+ *
+ * Ctrl-down or Shift-down - add to or expand current selection group if there
+ * is one.
+ *
+ * Mouse down - select this sequence.
*
* @param e
- * DOCUMENT ME!
*/
@Override
public void mousePressed(MouseEvent e)
{
- if (e.getClickCount() == 2)
+ if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e))
{
return;
}
int seq = alignPanel.seqPanel.findSeq(e);
- if (javax.swing.SwingUtilities.isRightMouseButton(e))
+ if (SwingUtilities.isRightMouseButton(e))
{
Sequence sq = (Sequence) av.getAlignment().getSequenceAt(seq);
// build a new links menu based on the current links + any non-positional
}
/**
- * DOCUMENT ME!
+ * Toggle whether the sequence is part of the current selection group.
*
* @param seq
- * DOCUMENT ME!
*/
void selectSeq(int seq)
{
}
/**
- * DOCUMENT ME!
+ * Add contiguous rows of the alignment to the current selection group. Does
+ * nothing if there is no selection group.
*
* @param start
- * DOCUMENT ME!
* @param end
- * DOCUMENT ME!
*/
void selectSeqs(int start, int end)
{
}
/**
- * DOCUMENT ME!
+ * Respond to mouse released. Refreshes the display and triggers broadcast of
+ * the new selection group to any listeners.
*
* @param e
- * DOCUMENT ME!
*/
@Override
public void mouseReleased(MouseEvent e)
}
/**
- * DOCUMENT ME!
+ * Highlight sequence ids that match the given list, and if necessary scroll
+ * to the start sequence of the list.
*
* @param list
- * DOCUMENT ME!
*/
public void highlightSearchResults(List<SequenceI> list)
{
// Only create description boxes if there actually is a description.
if (finfo != null)
{
- showDesc.setToolTipText(JvSwingUtils.wrapTooltip(false, MessageManager.formatMessage("label.opt_and_params_show_brief_desc_image_link", new String[]{linkImageURL.toExternalForm()})));
+ showDesc.setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager.formatMessage("label.opt_and_params_show_brief_desc_image_link", new String[]{linkImageURL.toExternalForm()})));
showDesc.addMouseListener(this);
}
else
{
- showDesc.setToolTipText(JvSwingUtils.wrapTooltip(false, MessageManager.getString("label.opt_and_params_show_brief_desc")));
+ showDesc.setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.opt_and_params_show_brief_desc")));
}
showDesc.addActionListener(new ActionListener()
{
package jalview.gui;
import jalview.analysis.AAFrequency;
+import jalview.analysis.AlignmentAnnotationUtils;
import jalview.analysis.Conservation;
import jalview.commands.ChangeCaseCommand;
import jalview.commands.EditCommand;
import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.AlignmentView;
import jalview.datamodel.Annotation;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.PDBEntry;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.Hashtable;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
import java.util.Vector;
import javax.swing.ButtonGroup;
*/
public class PopupMenu extends JPopupMenu
{
+ private static final String ALL_ANNOTATIONS = "All";
+
+ private static final String COMMA = ",";
+
JMenu groupMenu = new JMenu();
JMenuItem groupName = new JMenuItem();
JMenuItem sequenceSelDetails = new JMenuItem();
+ JMenuItem chooseAnnotations = new JMenuItem();
+
SequenceI sequence;
JMenuItem createGroupMenuItem = new JMenuItem();
JMenu outputMenu = new JMenu();
+ JMenu showAnnotationsMenu = new JMenu();
+
+ JMenu hideAnnotationsMenu = new JMenu();
+
+ JMenuItem addReferenceAnnotations = new JMenuItem();
+
JMenuItem sequenceFeature = new JMenuItem();
JMenuItem textColour = new JMenuItem();
item.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
outputText_actionPerformed(e);
outputMenu.add(item);
}
+ /*
+ * Build menus for annotation types that may be shown or hidden, and for
+ * 'reference annotations' that may be added to the alignment. The scope is
+ * annotations for the current selection group (if there is one), else the
+ * current sequence (if there is one), else not applicable (e.g. for popup
+ * menu within the sequence).
+ */
+ final List<SequenceI> sequenceScope = getSequenceScope(seq);
+ if (!sequenceScope.isEmpty())
+ {
+ buildAnnotationTypesMenus(sequenceScope);
+ configureReferenceAnnotationsMenu(addReferenceAnnotations, sequenceScope);
+ }
+
try
{
jbInit();
menuItem = new JMenuItem();
menuItem.setText(pdb.getId());
- menuItem.addActionListener(new java.awt.event.ActionListener()
+ menuItem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
// TODO re JAL-860: optionally open dialog or provide a menu entry
ap.av.collateForPDB(new PDBEntry[]
{ pdb })[0], null, ap);
}
-
});
viewStructureMenu.add(menuItem);
"label.2d_rna_structure_line", new String[]
{ structureLine }));
menuItem.addActionListener(new java.awt.event.ActionListener()
-
{
+ @Override
public void actionPerformed(ActionEvent e)
{
// System.out.println("1:"+structureLine);
{ seq.getName() }));
menuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
// TODO: VARNA does'nt print gaps in the sequence
MessageManager.getString("action.hide_sequences"));
menuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hideSequences(false);
{ seq.getName() }));
menuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hideSequences(true);
MessageManager.getString("action.reveal_sequences"));
menuItem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
ap.av.showSequence(index);
MessageManager.getString("action.reveal_all"));
menuItem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
ap.av.showAllHiddenSeqs();
SequenceI sqass = null;
for (SequenceI sq : ap.av.getSequenceSelection())
{
- Vector<PDBEntry> pes = (Vector<PDBEntry>) sq.getDatasetSequence()
- .getPDBId();
+ Vector<PDBEntry> pes = sq.getDatasetSequence().getPDBId();
if (pes != null && pes.size() > 0)
{
reppdb.put(pes.get(0).getId(), pes.get(0));
}
}
+ /**
+ * Add annotation types to a 'Show annotations' or 'Hide annotations' menu.
+ * "All" is added first, followed by a separator. Then add any annotation
+ * types associated with the current selection.
+ * <p>
+ * Some annotation rows are always rendered together - these can be identified
+ * by a common graphGroup property > -1. Only one of each group will be marked
+ * as visible (to avoid duplication of the display). For such groups we add a
+ * composite type name, e.g.
+ * <p>
+ * IUPredWS (Long), IUPredWS (Short)
+ *
+ * @param forSequences
+ */
+ protected void buildAnnotationTypesMenus(List<SequenceI> forSequences)
+ {
+ showAnnotationsMenu.removeAll();
+ hideAnnotationsMenu.removeAll();
+ final List<String> all = Arrays.asList(ALL_ANNOTATIONS);
+ addAnnotationTypeToShowHide(showAnnotationsMenu, forSequences, "", all,
+ true, true);
+ addAnnotationTypeToShowHide(hideAnnotationsMenu, forSequences, "", all,
+ true, false);
+ showAnnotationsMenu.addSeparator();
+ hideAnnotationsMenu.addSeparator();
+
+ final AlignmentAnnotation[] annotations = ap.getAlignment()
+ .getAlignmentAnnotation();
+
+ /*
+ * Find shown/hidden annotations types, distinguished by source (calcId),
+ * and grouped by graphGroup.
+ */
+ Map<String, List<List<String>>> shownTypes = new HashMap<String, List<List<String>>>();
+ Map<String, List<List<String>>> hiddenTypes = new HashMap<String, List<List<String>>>();
+ AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes,
+ hiddenTypes,
+ AlignmentAnnotationUtils.asList(annotations),
+ forSequences);
+
+ for (String calcId : hiddenTypes.keySet())
+ {
+ for (List<String> type : hiddenTypes.get(calcId))
+ {
+ addAnnotationTypeToShowHide(showAnnotationsMenu, forSequences,
+ calcId, type, false, true);
+ }
+ }
+ // grey out 'show annotations' if none are hidden
+ showAnnotationsMenu.setEnabled(!hiddenTypes.isEmpty());
+
+ for (String calcId : shownTypes.keySet())
+ {
+ for (List<String> type : shownTypes.get(calcId))
+ {
+ addAnnotationTypeToShowHide(hideAnnotationsMenu, forSequences,
+ calcId, type, false, false);
+ }
+ }
+ // grey out 'hide annotations' if none are shown
+ hideAnnotationsMenu.setEnabled(!shownTypes.isEmpty());
+ }
+
+ /**
+ * Returns a list of sequences - either the current selection group (if there
+ * is one), else the specified single sequence.
+ *
+ * @param seq
+ * @return
+ */
+ protected List<SequenceI> getSequenceScope(SequenceI seq)
+ {
+ List<SequenceI> forSequences = null;
+ final SequenceGroup selectionGroup = ap.av.getSelectionGroup();
+ if (selectionGroup != null && selectionGroup.getSize() > 0)
+ {
+ forSequences = selectionGroup.getSequences();
+ }
+ else
+ {
+ forSequences = seq == null ? Collections.<SequenceI> emptyList()
+ : Arrays.asList(seq);
+ }
+ return forSequences;
+ }
+
+ /**
+ * Add one annotation type to the 'Show Annotations' or 'Hide Annotations'
+ * menus.
+ *
+ * @param showOrHideMenu
+ * the menu to add to
+ * @param forSequences
+ * the sequences whose annotations may be shown or hidden
+ * @param calcId
+ * @param types
+ * the label to add
+ * @param allTypes
+ * if true this is a special label meaning 'All'
+ * @param actionIsShow
+ * if true, the select menu item action is to show the annotation
+ * type, else hide
+ */
+ protected void addAnnotationTypeToShowHide(JMenu showOrHideMenu,
+ final List<SequenceI> forSequences, String calcId,
+ final List<String> types, final boolean allTypes,
+ final boolean actionIsShow)
+ {
+ String label = types.toString(); // [a, b, c]
+ label = label.substring(1, label.length() - 1);
+ final JMenuItem item = new JMenuItem(label);
+ item.setToolTipText(calcId);
+ item.addActionListener(new java.awt.event.ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ showHideAnnotation_actionPerformed(types, forSequences, allTypes,
+ actionIsShow);
+ }
+ });
+ showOrHideMenu.add(item);
+ }
+
+ /**
+ * Action on selecting a list of annotation type (or the 'all types' values)
+ * to show or hide for the specified sequences.
+ *
+ * @param types
+ * @param forSequences
+ * @param anyType
+ * @param doShow
+ */
+ protected void showHideAnnotation_actionPerformed(
+ Collection<String> types, List<SequenceI> forSequences,
+ boolean anyType, boolean doShow)
+ {
+ for (AlignmentAnnotation aa : ap.getAlignment()
+ .getAlignmentAnnotation())
+ {
+ if (anyType || types.contains(aa.label))
+ {
+ if ((aa.sequenceRef != null)
+ && forSequences.contains(aa.sequenceRef))
+ {
+ aa.visible = doShow;
+ }
+ }
+ }
+ refresh();
+ }
+
private void buildGroupURLMenu(SequenceGroup sg, Vector groupLinks)
{
{ url }));
item.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
new Thread(new Runnable()
{
+ @Override
public void run()
{
showLink(url);
// TODO: put in info about what is being sent.
item.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
new Thread(new Runnable()
{
+ @Override
public void run()
{
try
groupName.setText(MessageManager.getString("label.name"));
groupName.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
groupName_actionPerformed();
.getString("label.edit_name_description"));
sequenceName.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sequenceName_actionPerformed();
}
});
+ chooseAnnotations.setText(MessageManager
+ .getString("label.choose_annotations") + "...");
+ chooseAnnotations.addActionListener(new java.awt.event.ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ chooseAnnotations_actionPerformed(e);
+ }
+ });
sequenceDetails.setText(MessageManager
.getString("label.sequence_details") + "...");
sequenceDetails.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sequenceDetails_actionPerformed();
sequenceSelDetails
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sequenceSelectionDetails_actionPerformed();
.setText(MessageManager.getString("action.remove_group"));
unGroupMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
unGroupMenuItem_actionPerformed();
createGroupMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
createGroupMenuItem_actionPerformed();
outline.setText(MessageManager.getString("action.border_colour"));
outline.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
outline_actionPerformed();
.setText(MessageManager.getString("label.nucleotide"));
nucleotideMenuItem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
nucleotideMenuItem_actionPerformed();
showBoxes.setState(true);
showBoxes.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showBoxes_actionPerformed();
showText.setState(true);
showText.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showText_actionPerformed();
showColourText.setText(MessageManager.getString("label.colour_text"));
showColourText.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showColourText_actionPerformed();
displayNonconserved.setState(true);
displayNonconserved.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showNonconserved_actionPerformed();
cut.setText(MessageManager.getString("action.cut"));
cut.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
cut_actionPerformed();
upperCase.setText(MessageManager.getString("label.to_upper_case"));
upperCase.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
changeCase(e);
copy.setText(MessageManager.getString("action.copy"));
copy.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
copy_actionPerformed();
lowerCase.setText(MessageManager.getString("label.to_lower_case"));
lowerCase.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
changeCase(e);
toggle.setText(MessageManager.getString("label.toggle_case"));
toggle.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
changeCase(e);
pdbFromFile.setText(MessageManager.getString("label.from_file"));
pdbFromFile.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
pdbFromFile_actionPerformed();
enterPDB.setText(MessageManager.getString("label.enter_pdb_id"));
enterPDB.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
enterPDB_actionPerformed();
discoverPDB.setText(MessageManager.getString("label.discover_pdb_ids"));
discoverPDB.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
discoverPDB_actionPerformed();
});
outputMenu.setText(MessageManager.getString("label.out_to_textbox")
+ "...");
+ showAnnotationsMenu.setText(MessageManager
+ .getString("label.show_annotations"));
+ hideAnnotationsMenu.setText(MessageManager
+ .getString("label.hide_annotations"));
sequenceFeature.setText(MessageManager
.getString("label.create_sequence_feature"));
sequenceFeature.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sequenceFeature_actionPerformed();
textColour.setText(MessageManager.getString("label.text_colour"));
textColour.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
textColour_actionPerformed();
+ "...");
editSequence.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent actionEvent)
{
editSequence_actionPerformed(actionEvent);
add(groupMenu);
add(sequenceMenu);
this.add(structureMenu);
+ // annotations configuration panel suppressed for now
+ // groupMenu.add(chooseAnnotations);
+
+ /*
+ * Add show/hide annotations to either Selection menu (if a selection group
+ * in force), else to the Sequence menu.
+ */
+ SequenceGroup sg = this.ap.av.getSelectionGroup();
+ if (sg != null && sg.getSize() > 0)
+ {
+ groupMenu.add(showAnnotationsMenu);
+ groupMenu.add(hideAnnotationsMenu);
+ groupMenu.add(addReferenceAnnotations);
+ }
+ else
+ {
+ sequenceMenu.add(showAnnotationsMenu);
+ sequenceMenu.add(hideAnnotationsMenu);
+ sequenceMenu.add(addReferenceAnnotations);
+ }
groupMenu.add(editMenu);
groupMenu.add(outputMenu);
groupMenu.add(sequenceFeature);
JMenuItem item = new JMenuItem(userColours.nextElement().toString());
item.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent evt)
{
userDefinedColour_actionPerformed(evt);
noColourmenuItem.setText(MessageManager.getString("label.none"));
noColourmenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
noColourmenuItem_actionPerformed();
.getString("label.clustalx_colours"));
clustalColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
clustalColour_actionPerformed();
zappoColour.setText(MessageManager.getString("label.zappo"));
zappoColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
zappoColour_actionPerformed();
taylorColour.setText(MessageManager.getString("label.taylor"));
taylorColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
taylorColour_actionPerformed();
hydrophobicityColour
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hydrophobicityColour_actionPerformed();
helixColour.setText(MessageManager.getString("label.helix_propensity"));
helixColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
helixColour_actionPerformed();
.getString("label.strand_propensity"));
strandColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
strandColour_actionPerformed();
turnColour.setText(MessageManager.getString("label.turn_propensity"));
turnColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
turnColour_actionPerformed();
buriedColour.setText(MessageManager.getString("label.buried_index"));
buriedColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
buriedColour_actionPerformed();
.getString("label.above_identity_percentage"));
abovePIDColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
abovePIDColour_actionPerformed();
.getString("action.user_defined"));
userDefinedColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
userDefinedColour_actionPerformed(e);
.setText(MessageManager.getString("label.percentage_identity"));
PIDColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
PIDColour_actionPerformed();
BLOSUM62Colour.setText(MessageManager.getString("label.blosum62"));
BLOSUM62Colour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
BLOSUM62Colour_actionPerformed();
purinePyrimidineColour
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
purinePyrimidineColour_actionPerformed();
conservationMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
conservationMenuItem_actionPerformed();
});
}
+ /**
+ * Check for any annotations on the underlying dataset sequences (for the
+ * current selection group) which are not on the alignment annotations for the
+ * sequence. If any are found, enable the option to add them to the alignment.
+ * The criteria for 'on the alignment' is finding an alignment annotation on
+ * the sequence, that matches on calcId and label. A tooltip is also
+ * constructed that displays the source (calcId) and type (label) of the
+ * annotations that can be added.
+ *
+ * @param menuItem
+ * @param forSequences
+ */
+ protected void configureReferenceAnnotationsMenu(
+ JMenuItem menuItem, List<SequenceI> forSequences)
+ {
+ menuItem.setText(MessageManager
+ .getString("label.add_reference_annotations"));
+ menuItem.setEnabled(false);
+ if (forSequences == null)
+ {
+ return;
+ }
+
+ /*
+ * Temporary store to hold distinct calcId / type pairs for the tooltip.
+ * Using TreeMap means calcIds are shown in alphabetical order.
+ */
+ Map<String, String> tipEntries = new TreeMap<String, String>();
+ StringBuilder tooltip = new StringBuilder(64);
+ tooltip.append(MessageManager.getString("label.add_annotations_for"));
+
+ /*
+ * For each sequence selected in the alignment, make a list of any
+ * annotations on the underlying dataset sequence which are not already on
+ * the sequence in the alignment.
+ *
+ * Build a map of { alignmentSequence, <List of annotations to add> }
+ */
+ final Map<SequenceI, List<AlignmentAnnotation>> candidates = new LinkedHashMap<SequenceI, List<AlignmentAnnotation>>();
+ for (SequenceI seq : forSequences)
+ {
+ SequenceI dataset = seq.getDatasetSequence();
+ if (dataset == null)
+ {
+ continue;
+ }
+ AlignmentAnnotation[] datasetAnnotations = dataset.getAnnotation();
+ if (datasetAnnotations == null)
+ {
+ continue;
+ }
+ final List<AlignmentAnnotation> result = new ArrayList<AlignmentAnnotation>();
+ for (AlignmentAnnotation dsann : datasetAnnotations)
+ {
+ /*
+ * If the sequence has no annotation that matches this one, then add
+ * this one to the results list.
+ */
+ if (seq.getAlignmentAnnotations(dsann.getCalcId(), dsann.label)
+ .isEmpty())
+ {
+ result.add(dsann);
+ tipEntries.put(dsann.getCalcId(), dsann.label);
+ }
+ }
+ /*
+ * Save any addable annotations for this sequence
+ */
+ if (!result.isEmpty())
+ {
+ candidates.put(seq, result);
+ }
+ }
+ if (!candidates.isEmpty())
+ {
+ /*
+ * Found annotations that could be added. Enable the menu item, and
+ * configure its tooltip and action.
+ */
+ menuItem.setEnabled(true);
+ for (String calcId : tipEntries.keySet())
+ {
+ tooltip.append("<br/>" + calcId + "/" + tipEntries.get(calcId));
+ }
+ String tooltipText = JvSwingUtils.wrapTooltip(true,
+ tooltip.toString());
+ menuItem.setToolTipText(tooltipText);
+
+ menuItem.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ addReferenceAnnotations_actionPerformed(candidates);
+ }
+ });
+ }
+ }
+
+ /**
+ * Add annotations to the sequences and to the alignment.
+ *
+ * @param candidates
+ * a map whose keys are sequences on the alignment, and values a list
+ * of annotations to add to each sequence
+ */
+ protected void addReferenceAnnotations_actionPerformed(
+ Map<SequenceI, List<AlignmentAnnotation>> candidates)
+ {
+ /*
+ * Add annotations at the top of the annotation, in the same order as their
+ * related sequences.
+ */
+ int insertPosition = 0;
+ for (SequenceI seq : candidates.keySet())
+ {
+ for (AlignmentAnnotation ann : candidates.get(seq))
+ {
+ AlignmentAnnotation copyAnn = new AlignmentAnnotation(ann);
+ int startRes = 0;
+ int endRes = ann.annotations.length;
+ final SequenceGroup selectionGroup = this.ap.av.getSelectionGroup();
+ if (selectionGroup != null)
+ {
+ startRes = selectionGroup.getStartRes();
+ endRes = selectionGroup.getEndRes();
+ }
+ copyAnn.restrict(startRes, endRes);
+
+ // add to the sequence (sets copyAnn.datasetSequence)
+ seq.addAlignmentAnnotation(copyAnn);
+ // adjust for gaps
+ copyAnn.adjustForAlignment();
+ // add to the alignment and set visible
+ this.ap.getAlignment().addAnnotation(copyAnn, insertPosition++);
+ copyAnn.visible = true;
+ }
+ }
+ refresh();
+ }
+
protected void sequenceSelectionDetails_actionPerformed()
{
createSequenceDetailsReport(ap.av.getSequenceSelection());
}
/**
+ * Open a panel where the user can choose which types of sequence annotation
+ * to show or hide.
+ *
+ * @param e
+ */
+ protected void chooseAnnotations_actionPerformed(ActionEvent e)
+ {
+ // todo correct way to guard against opening a duplicate panel?
+ new AnnotationChooser(ap);
+ }
+
+ /**
* DOCUMENT ME!
*
* @param e
// or we simply trust the user wants
// wysiwig behaviour
- cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(), ap.av, true));
+ cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(),
+ ap.av, true));
}
public void pdbFromFile_actionPerformed()
: ap.av.getSequenceSelection());
Thread discpdb = new Thread(new Runnable()
{
+ @Override
public void run()
{
if (sg != null)
{
if (sequence == null)
- sequence = (Sequence) sg.getSequenceAt(0);
+ {
+ sequence = sg.getSequenceAt(0);
+ }
EditNameDialog dialog = new EditNameDialog(
sequence.getSequenceAsString(sg.getStartRes(),
JPanel panel = new JPanel();
bigpanel.add(panel, BorderLayout.CENTER);
bigpanel.add(
- new JLabel(MessageManager.getString("label.select_dark_light_set_thereshold")),
+ new JLabel("<html>"+MessageManager.getString("label.select_dark_light_set_thereshold")+"</html>"),
BorderLayout.NORTH);
panel.add(col1);
panel.add(slider);
/**
* annotation to be added to generated alignment object
*/
- protected Vector annotations;
+ protected Vector<AlignmentAnnotation> annotations;
/**
* Properties to be added to generated alignment object
boolean jvSuffix = true;
+ private boolean parseCalled;
+
/**
* Creates a new AlignFile object.
*/
*/
public AlignFile(String inFile, String type) throws IOException
{
+ this(true, inFile, type);
+ }
+
+ /**
+ * Constructor which (optionally delays) parsing of data from a file of some specified type.
+ *
+ * @param parseImmediately
+ * if false, need to call 'doParse()' to begin parsing data
+ * @param inFile
+ * Filename to read from.
+ * @param type
+ * What type of file to read from (File, URL)
+ * @throws IOException
+ */
+ public AlignFile(boolean parseImmediately, String inFile, String type) throws IOException
+ {
super(inFile, type);
initData();
- parse();
- // sets the index of each sequence in the alignment
- for (int i = 0, c = seqs.size(); i < c; i++)
- {
- seqs.get(i).setIndex(i);
+ if (parseImmediately) {
+ doParse();
}
}
-
/**
* Attempt to read from the position where some other parsing process left
* off.
*/
public AlignFile(FileParse source) throws IOException
{
+ this(true,source);
+ }
+ /**
+ * Construct a new parser to read from the position where some other parsing process left
+ *
+ * @param parseImmediately
+ * if false, need to call 'doParse()' to begin parsing data
+ * @param source
+ */
+ public AlignFile(boolean parseImmediately, FileParse source) throws IOException
+ {
super(source);
initData();
+ if (parseImmediately) {
+ doParse();
+ }
+ }
+ /**
+ * called if parsing was delayed till after parser was constructed
+ * @throws IOException
+ */
+ public void doParse() throws IOException
+ {
+ if (parseCalled)
+ {
+ throw new IOException(
+ "Implementation error: Parser called twice for same data.\n"
+ + "Need to call initData() again before parsing can be reattempted.");
+ }
+ parseCalled=true;
parse();
// sets the index of each sequence in the alignment
for (int i = 0, c = seqs.size(); i < c; i++)
}
}
+
/**
* Return the seqs Vector
*/
{
seqs = new Vector();
annotations = new Vector();
+ parseCalled=false;
}
/**
}
else if (format.equals("PDB"))
{
- afile = new MCview.PDBfile(inFile, type);
+ afile = new MCview.PDBfile(true,true,inFile, type);
// Uncomment to test Jmol data based PDB processing: JAL-1213
// afile = new jalview.ext.jmol.PDBFileWithJmol(inFile, type);
}
}
else if (format.equals("PDB"))
{
- afile = new MCview.PDBfile(source);
+ afile = new MCview.PDBfile(true,true,source);
}
else if (format.equals("STH"))
{
*/
package jalview.jbgui;
+import jalview.bin.Cache;
+import jalview.gui.JvSwingUtils;
import jalview.schemes.ColourSchemeProperty;
import jalview.util.MessageManager;
JMenuItem showAllhidden = new JMenuItem();
+ protected JMenuItem showAllAnnotations = new JMenuItem();
+
+ protected JMenuItem hideAllAnnotations = new JMenuItem();
+
protected JCheckBoxMenuItem hiddenMarkers = new JCheckBoxMenuItem();
JMenuItem invertColSel = new JMenuItem();
item.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
outputText_actionPerformed(e);
}
} catch (Exception e)
{
+ System.err.println(e.toString());
}
if (!new jalview.util.Platform().isAMac())
radioItem.setName("USER_DEFINED");
radioItem.addMouseListener(new MouseAdapter()
{
+ @Override
public void mousePressed(MouseEvent evt)
{
if (evt.isControlDown()
{
radioItem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent evt)
{
userDefinedColour_actionPerformed(evt);
});
radioItem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent evt)
{
userDefinedColour_actionPerformed(evt);
| java.awt.event.KeyEvent.SHIFT_MASK, false));
saveAs.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
saveAs_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
closeMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
closeMenuItem_actionPerformed(false);
selectAllSequenceMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
selectAllSequenceMenuItem_actionPerformed(e);
deselectAllSequenceMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
deselectAllSequenceMenuItem_actionPerformed(e);
invertSequenceMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
invertSequenceMenuItem_actionPerformed(e);
.getString("action.make_groups_selection"));
grpsFromSelection.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
makeGrpsFromSelection_actionPerformed(e);
remove2LeftMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
remove2LeftMenuItem_actionPerformed(e);
remove2RightMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
remove2RightMenuItem_actionPerformed(e);
removeGappedColumnMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
removeGappedColumnMenuItem_actionPerformed(e);
removeAllGapsMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
removeAllGapsMenuItem_actionPerformed(e);
justifyLeftMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
justifyLeftMenuItem_actionPerformed(e);
justifyRightMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
justifyRightMenuItem_actionPerformed(e);
viewBoxesMenuItem.setState(true);
viewBoxesMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
viewBoxesMenuItem_actionPerformed(e);
viewTextMenuItem.setState(true);
viewTextMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
viewTextMenuItem_actionPerformed(e);
showNonconservedMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showUnconservedMenuItem_actionPerformed(e);
sortPairwiseMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sortPairwiseMenuItem_actionPerformed(e);
sortIDMenuItem.setText(MessageManager.getString("action.by_id"));
sortIDMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sortIDMenuItem_actionPerformed(e);
sortLengthMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sortLengthMenuItem_actionPerformed(e);
sortGroupMenuItem.setText(MessageManager.getString("action.by_group"));
sortGroupMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sortGroupMenuItem_actionPerformed(e);
removeRedundancyMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
removeRedundancyMenuItem_actionPerformed(e);
pairwiseAlignmentMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
pairwiseAlignmentMenuItem_actionPerformed(e);
.getString("label.principal_component_analysis"));
PCAMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
PCAMenuItem_actionPerformed(e);
averageDistanceTreeMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
averageDistanceTreeMenuItem_actionPerformed(e);
neighbourTreeMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
neighbourTreeMenuItem_actionPerformed(e);
clustalColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
clustalColour_actionPerformed(e);
zappoColour.setText(MessageManager.getString("label.zappo"));
zappoColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
zappoColour_actionPerformed(e);
taylorColour.setText(MessageManager.getString("label.taylor"));
taylorColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
taylorColour_actionPerformed(e);
hydrophobicityColour
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hydrophobicityColour_actionPerformed(e);
helixColour.setText(MessageManager.getString("label.helix_propensity"));
helixColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
helixColour_actionPerformed(e);
.getString("label.strand_propensity"));
strandColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
strandColour_actionPerformed(e);
turnColour.setText(MessageManager.getString("label.turn_propensity"));
turnColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
turnColour_actionPerformed(e);
buriedColour.setText(MessageManager.getString("label.buried_index"));
buriedColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
buriedColour_actionPerformed(e);
.getString("action.user_defined"));
userDefinedColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
userDefinedColour_actionPerformed(e);
.setText(MessageManager.getString("label.percentage_identity"));
PIDColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
PIDColour_actionPerformed(e);
.setText(MessageManager.getString("label.blosum62_score"));
BLOSUM62Colour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
BLOSUM62Colour_actionPerformed(e);
nucleotideColour.setText(MessageManager.getString("label.nucleotide"));
nucleotideColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
nucleotideColour_actionPerformed(e);
purinePyrimidineColour
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
purinePyrimidineColour_actionPerformed(e);
RNAInteractionColour
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
RNAInteractionColour_actionPerformed(e);
avDistanceTreeBlosumMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
avTreeBlosumMenuItem_actionPerformed(e);
njTreeBlosumMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
njTreeBlosumMenuItem_actionPerformed(e);
annotationPanelMenuItem.setActionCommand("");
annotationPanelMenuItem.setText(MessageManager
.getString("label.show_annotations"));
- annotationPanelMenuItem.setState(jalview.bin.Cache.getDefault(
- "SHOW_ANNOTATIONS", true));
- annotationPanelMenuItem
- .addActionListener(new java.awt.event.ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- annotationPanelMenuItem_actionPerformed(e);
- }
- });
+ annotationPanelMenuItem.setState(Cache.getDefault("SHOW_ANNOTATIONS",
+ true));
+ annotationPanelMenuItem.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ annotationPanelMenuItem_actionPerformed(e);
+ }
+ });
+ /*
+ * Show/hide all annotations only enabled if annotation panel is shown
+ */
+ showAllAnnotations.setText(MessageManager
+ .getString("label.show_all_annotations"));
+ showAllAnnotations.setEnabled(annotationPanelMenuItem.getState());
+ showAllAnnotations.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ showAllAnnotations_actionPerformed();
+ }
+ });
+ hideAllAnnotations.setText(MessageManager
+ .getString("label.hide_all_annotations"));
+ hideAllAnnotations.setEnabled(annotationPanelMenuItem.getState());
+ hideAllAnnotations.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ hideAllAnnotations_actionPerformed();
+ }
+ });
colourTextMenuItem.setText(MessageManager
.getString("label.colour_text"));
colourTextMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
colourTextMenuItem_actionPerformed(e);
htmlMenuItem.setText(MessageManager.getString("label.html"));
htmlMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
htmlMenuItem_actionPerformed(e);
.getString("label.overview_window"));
overviewMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
overviewMenuItem_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
undoMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
undoMenuItem_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
redoMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
redoMenuItem_actionPerformed(e);
conservationMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
conservationMenuItem_actionPerformed(e);
noColourmenuItem.setText(MessageManager.getString("label.none"));
noColourmenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
noColourmenuItem_actionPerformed(e);
wrapMenuItem.setText(MessageManager.getString("label.wrap"));
wrapMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
wrapMenuItem_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
printMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
printMenuItem_actionPerformed(e);
renderGapsMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
renderGapsMenuItem_actionPerformed(e);
findMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_F, Toolkit.getDefaultToolkit()
.getMenuShortcutKeyMask(), false));
+ findMenuItem.setToolTipText(JvSwingUtils.wrapTooltip(true,
+ MessageManager.getString("label.find_tip")));
findMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
findMenuItem_actionPerformed(e);
.getString("label.above_identity_threshold"));
abovePIDThreshold.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
abovePIDThreshold_actionPerformed(e);
.getString("label.show_sequence_features"));
showSeqFeatures.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent actionEvent)
{
showSeqFeatures_actionPerformed(actionEvent);
showDbRefsMenuitem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showDbRefs_actionPerformed(e);
showNpFeatsMenuitem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showNpFeats_actionPerformed(e);
showGroupConservation.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showGroupConservation_actionPerformed(e);
showGroupConsensus.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showGroupConsensus_actionPerformed(e);
showConsensusHistogram.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showConsensusHistogram_actionPerformed(e);
showSequenceLogo.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showSequenceLogo_actionPerformed(e);
normaliseSequenceLogo.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
normaliseSequenceLogo_actionPerformed(e);
applyAutoAnnotationSettings.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
applyAutoAnnotationSettings_actionPerformed(e);
nucleotideColour.setText(MessageManager.getString("label.nucleotide"));
nucleotideColour.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
nucleotideColour_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
deleteGroups.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
deleteGroups_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
createGroup.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
createGroup_actionPerformed(e);
| java.awt.event.KeyEvent.SHIFT_MASK, false));
unGroup.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
unGroup_actionPerformed(e);
copy.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
copy_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
cut.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
cut_actionPerformed(e);
}
});
delete.setText(MessageManager.getString("action.delete"));
- delete.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
- java.awt.event.KeyEvent.VK_BACK_SPACE, 0, false));
delete.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
delete_actionPerformed(e);
| java.awt.event.KeyEvent.SHIFT_MASK, false));
pasteNew.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
pasteNew_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
pasteThis.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
pasteThis_actionPerformed(e);
.getString("label.apply_colour_to_all_groups"));
applyToAllGroups.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
applyToAllGroups_actionPerformed(e);
});
createPNG.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
createPNG(null);
font.setText(MessageManager.getString("action.font"));
font.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
font_actionPerformed(e);
seqLimits.setState(jalview.bin.Cache.getDefault("SHOW_JVSUFFIX", true));
seqLimits.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
seqLimit_actionPerformed(e);
epsFile.setText("EPS");
epsFile.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
createEPS(null);
.getString("label.load_associated_tree"));
LoadtreeMenuItem.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
LoadtreeMenuItem_actionPerformed(e);
scaleAbove.setText(MessageManager.getString("action.scale_above"));
scaleAbove.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
scaleAbove_actionPerformed(e);
scaleLeft.setText(MessageManager.getString("action.scale_left"));
scaleLeft.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
scaleLeft_actionPerformed(e);
scaleRight.setText(MessageManager.getString("action.scale_right"));
scaleRight.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
scaleRight_actionPerformed(e);
centreColumnLabelsMenuItem
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
centreColumnLabels_actionPerformed(e);
followHighlightMenuItem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
followHighlight_actionPerformed();
.getString("label.modify_identity_thereshold"));
modifyPID.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
modifyPID_actionPerformed(e);
modifyConservation
.addActionListener(new java.awt.event.ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
modifyConservation_actionPerformed(e);
sort.setText(MessageManager.getString("action.sort"));
sort.addMenuListener(new MenuListener()
{
+ @Override
public void menuSelected(MenuEvent e)
{
buildTreeMenu();
}
+ @Override
public void menuDeselected(MenuEvent e)
{
}
+ @Override
public void menuCanceled(MenuEvent e)
{
}
sortByAnnotScore.addMenuListener(new javax.swing.event.MenuListener()
{
+ @Override
public void menuCanceled(MenuEvent e)
{
}
+ @Override
public void menuDeselected(MenuEvent e)
{
}
+ @Override
public void menuSelected(MenuEvent e)
{
buildSortByAnnotationScoresMenu();
.getDefault("PAD_GAPS", false));
padGapsMenuitem.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
padGapsMenuitem_actionPerformed(e);
vamsasStore.setText(MessageManager.getString("label.vamsas_store"));
vamsasStore.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
vamsasStore_actionPerformed(e);
.getString("label.translate_cDNA"));
showTranslation.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showTranslation_actionPerformed(e);
+ "...");
extractScores.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
extractScores_actionPerformed(e);
.getString("label.feature_settings"));
openFeatureSettings.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
featureSettings_actionPerformed(e);
.setText(MessageManager.getString("label.fetch_sequences"));
fetchSequence.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
fetchSequence_actionPerformed(e);
.getString("action.by_annotation"));
annotationColour.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
annotationColour_actionPerformed(e);
.getString("action.by_rna_helixes"));
rnahelicesColour.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
rnahelicesColour_actionPerformed(e);
.getString("label.load_features_annotations"));
associatedData.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
associatedData_actionPerformed(e);
"AUTO_CALC_CONSENSUS", true));
autoCalculate.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
autoCalculate_actionPerformed(e);
.setState(jalview.bin.Cache.getDefault("SORT_BY_TREE", false));
sortByTree.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
sortByTreeOption_actionPerformed(e);
listenToViewSelections.setState(false);
listenToViewSelections.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
listenToViewSelections_actionPerformed(e);
addFromFile.setText(MessageManager.getString("label.from_file"));
addFromFile.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
addFromFile_actionPerformed(e);
addFromText.setText(MessageManager.getString("label.from_textbox"));
addFromText.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
addFromText_actionPerformed(e);
addFromURL.setText(MessageManager.getString("label.from_url"));
addFromURL.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
addFromURL_actionPerformed(e);
.getString("label.export_features"));
exportFeatures.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
exportFeatures_actionPerformed(e);
.getString("label.export_annotations"));
exportAnnotations.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
exportAnnotations_actionPerformed(e);
.getString("label.toggle_sequence_visibility"));
showAllSeqs.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showAllSeqs_actionPerformed(e);
.getString("label.toggle_columns_visibility"));
showAllColumns.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showAllColumns_actionPerformed(e);
.getString("label.toggle_sequence_visibility"));
hideSelSequences.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hideSelSequences_actionPerformed(e);
.getString("label.toggle_columns_visibility"));
hideSelColumns.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hideSelColumns_actionPerformed(e);
.getString("label.selected_region"));
hideAllSelection.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hideAllSelection_actionPerformed(e);
.getString("label.all_but_selected_region"));
hideAllButSelection.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hideAllButSelection_actionPerformed(e);
.getString("label.toggles_visibility_hidden_selected_regions"));
showAllhidden.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
showAllhidden_actionPerformed(e);
}
});
-
hiddenMarkers.setText(MessageManager
.getString("action.show_hidden_markers"));
hiddenMarkers.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
hiddenMarkers_actionPerformed(e);
| java.awt.event.KeyEvent.ALT_MASK, false));
invertColSel.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
invertColSel_actionPerformed(e);
});
tabbedPane.addChangeListener(new javax.swing.event.ChangeListener()
{
+ @Override
public void stateChanged(ChangeEvent evt)
{
JTabbedPane pane = (JTabbedPane) evt.getSource();
});
tabbedPane.addMouseListener(new MouseAdapter()
{
+ @Override
public void mousePressed(MouseEvent e)
{
tabbedPane_mousePressed(e);
});
tabbedPane.addFocusListener(new FocusAdapter()
{
+ @Override
public void focusGained(FocusEvent e)
{
tabbedPane_focusGained(e);
.getMenuShortcutKeyMask(), false));
save.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
save_actionPerformed(e);
reload.setText(MessageManager.getString("action.reload"));
reload.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
reload_actionPerformed(e);
.getMenuShortcutKeyMask(), false));
newView.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
newView_actionPerformed(e);
+ "...");
textColour.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
textColour_actionPerformed(e);
.getString("label.right_align_sequence_id"));
idRightAlign.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
idRightAlign_actionPerformed(e);
java.awt.event.KeyEvent.VK_G, 0, false));
gatherViews.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
gatherViews_actionPerformed(e);
java.awt.event.KeyEvent.VK_X, 0, false));
expandViews.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
expandViews_actionPerformed(e);
.setText(MessageManager.getString("action.page_setup") + "...");
pageSetup.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
pageSetup_actionPerformed(e);
.getString("label.alignment_props") + "...");
alignmentProperties.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent actionEvent)
{
alignmentProperties();
viewMenu.addSeparator();
viewMenu.add(followHighlightMenuItem);
viewMenu.add(annotationPanelMenuItem);
+ viewMenu.add(showAllAnnotations);
+ viewMenu.add(hideAllAnnotations);
autoAnnMenu.add(applyAutoAnnotationSettings);
autoAnnMenu.add(showConsensusHistogram);
autoAnnMenu.add(showSequenceLogo);
// selectMenu.add(listenToViewSelections);
}
+ /**
+ * Action on clicking Show all annotations.
+ */
+ protected void showAllAnnotations_actionPerformed()
+ {
+ setAllAnnotationsVisibility(true);
+ }
+
+ /**
+ * Action on clicking Hide all annotations.
+ */
+ protected void hideAllAnnotations_actionPerformed()
+ {
+ setAllAnnotationsVisibility(false);
+ }
+
+ /**
+ * Set the visibility of all annotations to true or false.
+ *
+ * @param visible
+ */
+ protected void setAllAnnotationsVisibility(boolean visible)
+ {
+
+ }
+
protected void normaliseSequenceLogo_actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
hSeparable = new JCheckBox(MessageManager.getString("label.per_seq"));
hSeparable
.setToolTipText(JvSwingUtils
- .wrapTooltip(false, MessageManager.getString("label.job_created_when_checked")));
+ .wrapTooltip(true, MessageManager.getString("label.job_created_when_checked")));
hSeparable.addActionListener(new ActionListener()
{
vSeparable = new JCheckBox(
MessageManager.getString("label.result_vertically_separable"));
vSeparable
- .setToolTipText(JvSwingUtils.wrapTooltip(false, MessageManager.getString("label.when_checked_job_visible_region_and_results")));
+ .setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.when_checked_job_visible_region_and_results")));
vSeparable.addActionListener(new ActionListener()
{
urldescPane.add(urldescVp, "span");
paste.add(urldescPane, "span");
urldescPane
- .setToolTipText(JvSwingUtils.wrapTooltip(false, MessageManager.getString("label.flat_file_representation")));
+ .setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.flat_file_representation")));
parseRes = new JTextArea();
parseResVp = new JScrollPane();
parseWarnings.setBorder(new TitledBorder(MessageManager
.getString("label.parsing_errors")));
parseWarnings
- .setToolTipText(JvSwingUtils.wrapTooltip(false, MessageManager.getString("label.result_of_parsing_rsbs")));
+ .setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.result_of_parsing_rsbs")));
parseWarnings.add(parseResVp, "center");
parseRes.setEditable(false);
paste.add(parseWarnings, "span");
*/
package jalview.structure;
-import java.io.*;
-import java.util.*;
-
-import MCview.*;
-import jalview.analysis.*;
-import jalview.api.AlignmentViewPanel;
+import jalview.analysis.AlignSeq;
import jalview.api.StructureSelectionManagerProvider;
-import jalview.datamodel.*;
+import jalview.datamodel.AlignedCodonFrame;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SearchResults;
+import jalview.datamodel.SequenceI;
import jalview.util.MessageManager;
+import java.io.PrintStream;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.IdentityHashMap;
+import java.util.Vector;
+
+import MCview.Atom;
+import MCview.PDBChain;
+
public class StructureSelectionManager
{
static IdentityHashMap<StructureSelectionManagerProvider, StructureSelectionManager> instances;
* the tried and tested MCview pdb mapping
*/
MCview.PDBfile pdb = null;
+ boolean parseSecStr=true;
+ for (SequenceI sq:sequence)
+ {
+ SequenceI ds = sq;while (ds.getDatasetSequence()!=null) { ds = ds.getDatasetSequence();};
+ if (ds.getAnnotation()!=null)
+ {
+ for (AlignmentAnnotation ala:ds.getAnnotation())
+ {
+ // false if any annotation present from this structure
+ if (MCview.PDBfile.isCalcIdForFile(ala.getCalcId(), pdbFile))
+ {
+ parseSecStr = false;
+ }
+ }
+ }
+ }
try
{
- pdb = new MCview.PDBfile(pdbFile, protocol);
+ pdb = new MCview.PDBfile(true, parseSecStr, pdbFile, protocol);
+
} catch (Exception ex)
{
ex.printStackTrace();
}
}
else
+ {
targetChain = "";
+ }
int max = -10;
AlignSeq maxAlignseq = null;
}
if (protocol.equals(jalview.io.AppletFormatAdapter.PASTE))
+ {
pdbFile = "INLINE" + pdb.id;
+ }
mappings[mappings.length - 1] = new StructureMapping(sequence[s],
pdbFile, pdb.id, maxChainId, mapping,
String[] handlepdbs;
Vector pdbs = new Vector();
for (int i = 0; i < pdbfiles.length; pdbs.addElement(pdbfiles[i++]))
+ {
;
+ }
StructureListener sl;
for (int i = 0; i < listeners.size(); i++)
{
{
Object li = listeners.elementAt(i);
if (li instanceof SequenceListener)
+ {
((SequenceListener) li).highlightSequence(results);
+ }
}
}
}
boolean hasSequenceListeners = handlingVamsasMo || seqmappings != null;
SearchResults results = null;
if (index == -1)
+ {
index = seq.findPosition(indexpos);
+ }
StructureListener sl;
int atomNo = 0;
for (int i = 0; i < listeners.size(); i++)
AlignedCodonFrame[] codonFrames)
{
if (!add && (seqmappings == null || seqmappings.size() == 0))
+ {
return;
+ }
if (seqmappings == null)
+ {
seqmappings = new Vector();
+ }
if (codonFrames != null && codonFrames.length > 0)
{
for (int cf = 0; cf < codonFrames.length; cf++)
int[] nsr = new int[(seqmappingrefs == null) ? 1
: seqmappingrefs.length + 1];
if (seqmappingrefs != null && seqmappingrefs.length > 0)
+ {
System.arraycopy(seqmappingrefs, 0, nsr, 0,
seqmappingrefs.length);
+ }
nsr[(seqmappingrefs == null) ? 0 : seqmappingrefs.length] = 1;
seqmappingrefs = nsr;
}
if (alignViewport.isClosed())
{
abortAndDestroy();
+ return;
}
AlignmentI alignment = alignViewport.getAlignment();
*/
package jalview.workers;
-import java.util.ArrayList;
-import java.util.List;
-
import jalview.analysis.Conservation;
import jalview.api.AlignCalcWorkerI;
-import jalview.api.AlignmentViewPanel;
import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import java.util.ArrayList;
+import java.util.List;
+
public class ConservationThread extends AlignCalcWorker implements
AlignCalcWorkerI
{
if (alignViewport.isClosed())
{
abortAndDestroy();
+ return;
}
List<AlignmentAnnotation> ourAnnot = new ArrayList<AlignmentAnnotation>();
AlignmentI alignment = alignViewport.getAlignment();
*/
package jalview.workers;
-import java.util.Hashtable;
-
import jalview.analysis.StructureFrequency;
import jalview.api.AlignCalcWorkerI;
import jalview.api.AlignViewportI;
import jalview.datamodel.Annotation;
import jalview.datamodel.SequenceI;
+import java.util.Hashtable;
+
public class StrucConsensusThread extends AlignCalcWorker implements
AlignCalcWorkerI
{
if (alignViewport.isClosed())
{
abortAndDestroy();
+ return;
}
AlignmentI alignment = alignViewport.getAlignment();
--- /dev/null
+package jalview.analysis;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+import jalview.io.AppletFormatAdapter;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class AlignmentAnnotationUtilsTest
+{
+ // 4 sequences x 13 positions
+ final static String EOL = "\n";
+
+ // @formatter:off
+ final static String TEST_DATA =
+ ">FER_CAPAA Ferredoxin" + EOL +
+ "TIETHKEAELVG-" + EOL +
+ ">FER_CAPAN Ferredoxin, chloroplast precursor" + EOL +
+ "TIETHKEAELVG-" + EOL +
+ ">FER1_SOLLC Ferredoxin-1, chloroplast precursor" + EOL +
+ "TIETHKEEELTA-" + EOL +
+ ">Q93XJ9_SOLTU Ferredoxin I precursor" + EOL +
+ "TIETHKEEELTA-" + EOL;
+ // @formatter:on
+
+ private static final int SEQ_ANN_COUNT = 10;
+
+ private AlignmentI alignment;
+
+ /**
+ * Test method that converts a (possibly null) array to a list.
+ */
+ @Test
+ public void testAsList()
+ {
+ // null array
+ Collection<AlignmentAnnotation> c1 = AlignmentAnnotationUtils
+ .asList(null);
+ assertTrue(c1.isEmpty());
+
+ // empty array
+ AlignmentAnnotation[] anns = new AlignmentAnnotation[0];
+ c1 = AlignmentAnnotationUtils.asList(anns);
+ assertTrue(c1.isEmpty());
+
+ // non-empty array
+ anns = new AlignmentAnnotation[2];
+ anns[0] = new AlignmentAnnotation("label0", "desc0", 0.0f);
+ anns[1] = new AlignmentAnnotation("label1", "desc1", 1.0f);
+ c1 = AlignmentAnnotationUtils.asList(anns);
+ assertEquals(2, c1.size());
+ assertTrue(c1.contains(anns[0]));
+ assertTrue(c1.contains(anns[1]));
+ }
+
+ /**
+ * This output is not part of the test but may help make sense of it...
+ *
+ * @param shownTypes
+ * @param hiddenTypes
+ */
+ protected void consoleDebug(Map<String, List<List<String>>> shownTypes,
+ Map<String, List<List<String>>> hiddenTypes)
+ {
+ for (String calcId : shownTypes.keySet())
+ {
+ System.out.println("Visible annotation types for calcId=" + calcId);
+ for (List<String> type : shownTypes.get(calcId))
+ {
+ System.out.println(" " + type);
+ }
+ }
+ for (String calcId : hiddenTypes.keySet())
+ {
+ System.out.println("Hidden annotation types for calcId=" + calcId);
+ for (List<String> type : hiddenTypes.get(calcId))
+ {
+ System.out.println(" " + type);
+ }
+ }
+ }
+
+ /**
+ * Add a sequence group to the alignment with the specified sequences (base 0)
+ * in it
+ *
+ * @param i
+ * @param more
+ */
+ private List<SequenceI> selectSequences(int... selected)
+ {
+ List<SequenceI> result = new ArrayList<SequenceI>();
+ SequenceI[] seqs = alignment.getSequencesArray();
+ for (int i : selected)
+ {
+ result.add(seqs[i]);
+ }
+ return result;
+ }
+
+ @Before
+ public void setUp() throws IOException
+ {
+ alignment = new jalview.io.FormatAdapter().readFile(TEST_DATA,
+ AppletFormatAdapter.PASTE, "FASTA");
+
+ AlignmentAnnotation[] anns = new AlignmentAnnotation[SEQ_ANN_COUNT];
+ for (int i = 0; i < anns.length; i++)
+ {
+ anns[i] = new AlignmentAnnotation("Label" + i, null, 0d);
+ anns[i].setCalcId("CalcId" + i);
+ anns[i].visible = true;
+ alignment.addAnnotation(anns[i]);
+ }
+ }
+
+ /**
+ * Test a mixture of show/hidden annotations in/outside selection group.
+ */
+ @Test
+ public void testGetShownHiddenTypes_forSelectionGroup()
+ {
+ Map<String, List<List<String>>> shownTypes = new HashMap<String, List<List<String>>>();
+ Map<String, List<List<String>>> hiddenTypes = new HashMap<String, List<List<String>>>();
+ AlignmentAnnotation[] anns = alignment.getAlignmentAnnotation();
+ SequenceI[] seqs = alignment.getSequencesArray();
+
+ /*
+ * Configure annotation properties for test
+ */
+ // not in selection group (should be ignored):
+ // hidden annotation Label4 not in selection group
+ anns[4].sequenceRef = seqs[2];
+ anns[4].visible = false;
+ anns[7].sequenceRef = seqs[1];
+ anns[7].visible = true;
+
+ /*
+ * in selection group, hidden:
+ */
+ anns[2].sequenceRef = seqs[3]; // CalcId2/Label2
+ anns[2].visible = false;
+ anns[3].sequenceRef = seqs[3]; // CalcId3/Label2
+ anns[3].visible = false;
+ anns[3].label = "Label2";
+ anns[4].sequenceRef = seqs[3]; // CalcId2/Label3
+ anns[4].visible = false;
+ anns[4].label = "Label3";
+ anns[4].setCalcId("CalcId2");
+ anns[8].sequenceRef = seqs[0]; // CalcId9/Label9
+ anns[8].visible = false;
+ anns[8].label = "Label9";
+ anns[8].setCalcId("CalcId9");
+ /*
+ * in selection group, visible
+ */
+ anns[6].sequenceRef = seqs[0]; // CalcId6/Label6
+ anns[6].visible = true;
+ anns[9].sequenceRef = seqs[3]; // CalcId9/Label9
+ anns[9].visible = true;
+
+ List<SequenceI> selected = selectSequences(0, 3);
+ AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes, hiddenTypes,
+ AlignmentAnnotationUtils.asList(anns),
+ selected);
+
+ // check results; note CalcId9/Label9 is both hidden and shown (for
+ // different sequences) so should be in both
+ // shown: CalcId6/Label6 and CalcId9/Label9
+ assertEquals(2, shownTypes.size());
+ assertEquals(1, shownTypes.get("CalcId6").size());
+ assertEquals(1, shownTypes.get("CalcId6").get(0).size());
+ assertEquals("Label6", shownTypes.get("CalcId6").get(0).get(0));
+ assertEquals(1, shownTypes.get("CalcId9").size());
+ assertEquals(1, shownTypes.get("CalcId9").get(0).size());
+ assertEquals("Label9", shownTypes.get("CalcId9").get(0).get(0));
+
+ // hidden: CalcId2/Label2, CalcId2/Label3, CalcId3/Label2, CalcId9/Label9
+ assertEquals(3, hiddenTypes.size());
+ assertEquals(2, hiddenTypes.get("CalcId2").size());
+ assertEquals(1, hiddenTypes.get("CalcId2").get(0).size());
+ assertEquals("Label2", hiddenTypes.get("CalcId2").get(0).get(0));
+ assertEquals(1, hiddenTypes.get("CalcId2").get(1).size());
+ assertEquals("Label3", hiddenTypes.get("CalcId2").get(1).get(0));
+ assertEquals(1, hiddenTypes.get("CalcId3").size());
+ assertEquals(1, hiddenTypes.get("CalcId3").get(0).size());
+ assertEquals("Label2", hiddenTypes.get("CalcId3").get(0).get(0));
+ assertEquals(1, hiddenTypes.get("CalcId9").size());
+ assertEquals(1, hiddenTypes.get("CalcId9").get(0).size());
+ assertEquals("Label9", hiddenTypes.get("CalcId9").get(0).get(0));
+
+ consoleDebug(shownTypes, hiddenTypes);
+ }
+
+ /**
+ * Test case where there are 'grouped' annotations, visible and hidden, within
+ * and without the selection group.
+ */
+ @Test
+ public void testGetShownHiddenTypes_withGraphGroups()
+ {
+ final int GROUP_4 = 4;
+ final int GROUP_5 = 5;
+ final int GROUP_6 = 6;
+
+ Map<String, List<List<String>>> shownTypes = new HashMap<String, List<List<String>>>();
+ Map<String, List<List<String>>> hiddenTypes = new HashMap<String, List<List<String>>>();
+ AlignmentAnnotation[] anns = alignment.getAlignmentAnnotation();
+ SequenceI[] seqs = alignment.getSequencesArray();
+
+ /*
+ * Configure annotation properties for test
+ */
+ // annotations for selection group and graph group
+ // hidden annotations Label2, Label3, in (hidden) group 5
+ anns[2].sequenceRef = seqs[3];
+ anns[2].visible = false;
+ anns[2].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[2].graphGroup = GROUP_5; // not a visible group
+ anns[3].sequenceRef = seqs[0];
+ anns[3].visible = false;
+ anns[3].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[3].graphGroup = GROUP_5;
+ // need to ensure annotations have the same calcId as well
+ anns[3].setCalcId("CalcId2");
+
+ // annotations Label1 (hidden), Label5 (visible) in group 6 (visible)
+ anns[1].sequenceRef = seqs[3];
+ // being in a visible group should take precedence over this visibility
+ anns[1].visible = false;
+ anns[1].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[1].graphGroup = GROUP_6;
+ anns[5].sequenceRef = seqs[0];
+ anns[5].visible = true;
+ anns[5].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[5].graphGroup = GROUP_6;
+ anns[5].setCalcId("CalcId1");
+
+ // annotations outwith selection group - should be ignored
+ // hidden grouped annotations
+ anns[6].sequenceRef = seqs[2];
+ anns[6].visible = false;
+ anns[6].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[6].graphGroup = GROUP_4;
+ anns[8].sequenceRef = seqs[1];
+ anns[8].visible = false;
+ anns[8].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[8].graphGroup = GROUP_4;
+ // visible grouped annotations Label7, Label9
+ anns[7].sequenceRef = seqs[2];
+ anns[7].visible = true;
+ anns[7].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[7].graphGroup = GROUP_4;
+ anns[9].sequenceRef = seqs[1];
+ anns[9].visible = true;
+ anns[9].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[9].graphGroup = GROUP_4;
+
+ List<SequenceI> selected = selectSequences(0, 3);
+ AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes, hiddenTypes,
+ AlignmentAnnotationUtils.asList(anns),
+ selected);
+
+ consoleDebug(shownTypes, hiddenTypes);
+
+ // CalcId1 / Label1, Label5 (only) should be 'shown', as a compound type
+ assertEquals(1, shownTypes.get("CalcId1").size());
+ assertEquals(2, shownTypes.get("CalcId1").get(0).size());
+ assertEquals("Label1", shownTypes.get("CalcId1").get(0).get(0));
+ assertEquals("Label5", shownTypes.get("CalcId1").get(0).get(1));
+
+ // CalcId2 / Label2, Label3 (only) should be 'hidden'
+ assertEquals(1, hiddenTypes.get("CalcId2").size());
+ assertEquals(2, hiddenTypes.get("CalcId2").get(0).size());
+ assertEquals("Label2", hiddenTypes.get("CalcId2").get(0).get(0));
+ assertEquals("Label3", hiddenTypes.get("CalcId2").get(0).get(1));
+ }
+
+ /**
+ * Test method that determines visible graph groups.
+ */
+ @Test
+ public void testGetVisibleGraphGroups()
+ {
+ AlignmentAnnotation[] anns = alignment.getAlignmentAnnotation();
+ /*
+ * a bar graph group is not included
+ */
+ anns[0].graph = AlignmentAnnotation.BAR_GRAPH;
+ anns[0].graphGroup = 1;
+ anns[0].visible = true;
+
+ /*
+ * a line graph group is included as long as one of its members is visible
+ */
+ anns[1].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[1].graphGroup = 5;
+ anns[1].visible = false;
+ anns[2].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[2].graphGroup = 5;
+ anns[2].visible = true;
+
+ /*
+ * a line graph group with no visible rows is not included
+ */
+ anns[3].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[3].graphGroup = 3;
+ anns[3].visible = false;
+
+ // a visible line graph with no graph group is not included
+ anns[4].graph = AlignmentAnnotation.LINE_GRAPH;
+ anns[4].graphGroup = -1;
+ anns[4].visible = true;
+
+ BitSet result = AlignmentAnnotationUtils
+ .getVisibleLineGraphGroups(AlignmentAnnotationUtils
+ .asList(anns));
+ assertTrue(result.get(5));
+ assertFalse(result.get(0));
+ assertFalse(result.get(1));
+ assertFalse(result.get(2));
+ assertFalse(result.get(3));
+ }
+
+ /**
+ * Test for case where no sequence is selected. Shouldn't normally arise but
+ * check it handles it gracefully.
+ */
+ @Test
+ public void testGetShownHiddenTypes_noSequenceSelected()
+ {
+ Map<String, List<List<String>>> shownTypes = new HashMap<String, List<List<String>>>();
+ Map<String, List<List<String>>> hiddenTypes = new HashMap<String, List<List<String>>>();
+ AlignmentAnnotation[] anns = alignment.getAlignmentAnnotation();
+ // selected sequences null
+ AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes, hiddenTypes,
+ AlignmentAnnotationUtils.asList(anns), null);
+ assertTrue(shownTypes.isEmpty());
+ assertTrue(hiddenTypes.isEmpty());
+
+ List<SequenceI> sequences = new ArrayList<SequenceI>();
+ // selected sequences empty list
+ AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes, hiddenTypes,
+ AlignmentAnnotationUtils.asList(anns), sequences);
+ assertTrue(shownTypes.isEmpty());
+ assertTrue(hiddenTypes.isEmpty());
+ }
+}
--- /dev/null
+package jalview.datamodel;
+
+import static org.junit.Assert.*;
+
+import java.awt.Frame;
+
+import javax.swing.JFrame;
+import javax.swing.SwingWorker;
+
+import jalview.analysis.AlignSeq;
+import jalview.gui.AlignFrame;
+import jalview.io.AppletFormatAdapter;
+import jalview.io.FormatAdapter;
+
+import org.junit.Test;
+
+public class AlignmentAnnotationTests
+{
+ /**
+ * create some dummy annotation derived from the sequence
+ *
+ * @param sq
+ */
+ public static void createAnnotation(SequenceI sq)
+ {
+ Annotation[] al = new Annotation[sq.getLength()];
+ for (int i = 0; i < al.length; i++)
+ {
+ al[i] = new Annotation(new Annotation("" + sq.getCharAt(i), "",
+ (char) 0, (float) sq.findPosition(i)));
+ }
+ AlignmentAnnotation alan = new AlignmentAnnotation("For "
+ + sq.getName(), "Fake alignment annot", al);
+ // create a sequence mapping for the annotation vector in its current state
+ alan.createSequenceMapping(sq, sq.getStart(), false);
+ sq.addAlignmentAnnotation(alan);
+ }
+
+ /**
+ * use this to test annotation derived from method above as it is transferred
+ * across different sequences derived from same dataset coordinate frame
+ *
+ * @param ala
+ */
+ public static void testAnnotTransfer(AlignmentAnnotation ala)
+ {
+ assertEquals(
+ "Failed - need annotation created by createAnnotation method",
+ ala.description, "Fake alignment annot");
+ ala.adjustForAlignment();
+ for (int p = 0; p < ala.annotations.length; p++)
+ {
+ if (ala.annotations[p] != null)
+ {
+ assertEquals("Mismatch at position " + p
+ + " between annotation position value and sequence"
+ + ala.annotations[p], (int) ala.annotations[p].value,
+ ala.sequenceRef.findPosition(p));
+ }
+ }
+ }
+
+ /**
+ * Tests the liftOver method and also exercises the functions for remapping
+ * annotation across different reference sequences. Here, the test is between
+ * different dataset frames (annotation transferred by mapping between
+ * sequences)
+ */
+ @Test
+ public void testLiftOver()
+ {
+ SequenceI sqFrom = new Sequence("fromLong", "QQQCDEWGH");
+ sqFrom.setStart(10);
+ sqFrom.setEnd(sqFrom.findPosition(sqFrom.getLength() - 1));
+ SequenceI sqTo = new Sequence("toShort", "RCDEW");
+ sqTo.setStart(20);
+ sqTo.setEnd(sqTo.findPosition(sqTo.getLength() - 1));
+ createAnnotation(sqTo);
+ AlignmentAnnotation origTo = sqTo.getAnnotation()[0];
+ createAnnotation(sqFrom);
+ AlignmentAnnotation origFrom = sqFrom.getAnnotation()[0];
+ AlignSeq align = AlignSeq.doGlobalNWAlignment(sqFrom, sqTo,
+ AlignSeq.PEP);
+ SequenceI alSeq1 = new Sequence(sqFrom.getName(), align.getAStr1());
+ alSeq1.setStart(sqFrom.getStart() + align.getSeq1Start() - 1);
+ alSeq1.setEnd(sqFrom.getStart() + align.getSeq1End() - 1);
+ alSeq1.setDatasetSequence(sqFrom);
+ SequenceI alSeq2 = new Sequence(sqTo.getName(), align.getAStr2());
+ alSeq2.setStart(sqTo.getStart() + align.getSeq2Start() - 1);
+ alSeq2.setEnd(sqTo.getStart() + align.getSeq2End() - 1);
+ alSeq2.setDatasetSequence(sqTo);
+ System.out.println(new AppletFormatAdapter().formatSequences("STH",
+ new Alignment(new SequenceI[]
+ { sqFrom, alSeq1, sqTo, alSeq2 }), true));
+
+ Mapping mp = align.getMappingFromS1(false);
+
+ AlignmentAnnotation almap1 = new AlignmentAnnotation(
+ sqTo.getAnnotation()[0]);
+ almap1.liftOver(sqFrom, mp);
+ assertEquals(almap1.sequenceRef, sqFrom);
+ alSeq1.addAlignmentAnnotation(almap1);
+ almap1.setSequenceRef(alSeq1);
+ almap1.adjustForAlignment();
+ AlignmentAnnotation almap2 = new AlignmentAnnotation(
+ sqFrom.getAnnotation()[0]);
+ almap2.liftOver(sqTo, mp);
+ assertEquals(almap2.sequenceRef, sqTo);
+
+ alSeq2.addAlignmentAnnotation(almap2);
+ almap2.setSequenceRef(alSeq2);
+ almap2.adjustForAlignment();
+
+ AlignmentI all = new Alignment(new SequenceI[]
+ { alSeq1, alSeq2 });
+ all.addAnnotation(almap1);
+ all.addAnnotation(almap2);
+ System.out.println(new AppletFormatAdapter().formatSequences("STH",
+ all, true));
+
+ for (int p = 0; p < alSeq1.getLength(); p++)
+ {
+ Annotation orig1, trans1, orig2, trans2;
+ trans2 = almap2.annotations[p];
+ orig2 = origFrom.annotations[alSeq1.findPosition(p)
+ - sqFrom.getStart()];
+ orig1 = origTo.annotations[alSeq2.findPosition(p) - sqTo.getStart()];
+ trans1 = almap1.annotations[p];
+ if (trans1 == trans2)
+ {
+ System.out.println("Pos " + p + " mismatch");
+ continue;
+ }
+ assertEquals(
+ "Mismatch on Original From and transferred annotation on 2",
+ (orig2 != null) ? orig2.toString() : null,
+ (trans2 != null) ? trans2.toString() : null);
+ assertEquals(
+ "Mismatch on Original To and transferred annotation on 1",
+ (orig1 != null) ? orig1.toString() : null,
+ (trans1 != null) ? trans1.toString() : null);
+ String alm1 = ""
+ + (almap1.annotations.length > p ? almap1.annotations[p].displayCharacter
+ : "Out of range");
+ String alm2 = ""
+ + (almap2.annotations.length > p ? almap2.annotations[p].displayCharacter
+ : "Out of range");
+ assertEquals("Position " + p + " " + alm1 + " " + alm2, alm1, alm2);
+ }
+ // new jalview.io.FormatAdapter().formatSequences("STOCKHOLM", n)
+ }
+
+}
--- /dev/null
+package jalview.datamodel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import jalview.io.AppletFormatAdapter;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for Alignment datamodel.
+ *
+ * @author gmcarstairs
+ *
+ */
+public class AlignmentTest
+{
+ // @formatter:off
+ private static final String TEST_DATA =
+ "# STOCKHOLM 1.0\n" +
+ "#=GS D.melanogaster.1 AC AY119185.1/838-902\n" +
+ "#=GS D.melanogaster.2 AC AC092237.1/57223-57161\n" +
+ "#=GS D.melanogaster.3 AC AY060611.1/560-627\n" +
+ "D.melanogaster.1 G.AGCC.CU...AUGAUCGA\n" +
+ "#=GR D.melanogaster.1 SS ................((((\n" +
+ "D.melanogaster.2 C.AUUCAACU.UAUGAGGAU\n" +
+ "#=GR D.melanogaster.2 SS ................((((\n" +
+ "D.melanogaster.3 G.UGGCGCU..UAUGACGCA\n" +
+ "#=GR D.melanogaster.3 SS (.(((...(....(((((((\n" +
+ "//";
+ // @formatter:on
+
+
+ private Alignment al;
+
+ /*
+ * Read in Stockholm format test data including secondary structure
+ * annotations.
+ */
+ @Before
+ public void setUp() throws IOException
+ {
+ al = new jalview.io.FormatAdapter().readFile(TEST_DATA,
+ AppletFormatAdapter.PASTE, "STH");
+ for (int i = 0; i < al.getSequencesArray().length; ++i)
+ {
+ al.addAnnotation(al.getSequenceAt(i).getAnnotation()[0]);
+ al.getSequenceAt(i).getAnnotation()[0].setCalcId("CalcIdFor"
+ + al.getSequenceAt(i).getName());
+ }
+ }
+
+ /**
+ * Test method that returns annotations that match on calcId.
+ */
+ @Test
+ public void testFindAnnotation_byCalcId()
+ {
+ Iterable<AlignmentAnnotation> anns = al
+ .findAnnotation("CalcIdForD.melanogaster.2");
+ Iterator<AlignmentAnnotation> iter = anns.iterator();
+ assertTrue(iter.hasNext());
+ AlignmentAnnotation ann = iter.next();
+ assertEquals("D.melanogaster.2", ann.sequenceRef.getName());
+ assertFalse(iter.hasNext());
+ }
+}
--- /dev/null
+package jalview.datamodel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class SequenceTest
+{
+ Sequence seq;
+
+ @Before
+ public void setUp()
+ {
+ seq = new Sequence("FER1", "AKPNGVL");
+ }
+ @Test
+ public void testGetAnnotation()
+ {
+ // initial state returns null not an empty array
+ assertNull(seq.getAnnotation());
+ AlignmentAnnotation ann = addAnnotation("label1", "desc1", "calcId1",
+ 1f);
+ AlignmentAnnotation[] anns = seq.getAnnotation();
+ assertEquals(1, anns.length);
+ assertSame(ann, anns[0]);
+
+ // removing all annotations reverts array to null
+ seq.removeAlignmentAnnotation(ann);
+ assertNull(seq.getAnnotation());
+ }
+
+ @Test
+ public void testGetAnnotation_forLabel()
+ {
+ AlignmentAnnotation ann1 = addAnnotation("label1", "desc1", "calcId1", 1f);
+ AlignmentAnnotation ann2 = addAnnotation("label2", "desc2", "calcId2", 1f);
+ AlignmentAnnotation ann3 = addAnnotation("label1", "desc3", "calcId3", 1f);
+ AlignmentAnnotation[] anns = seq.getAnnotation("label1");
+ assertEquals(2, anns.length);
+ assertSame(ann1, anns[0]);
+ assertSame(ann3, anns[1]);
+ }
+
+ private AlignmentAnnotation addAnnotation(String label,
+ String description, String calcId,
+ float value)
+ {
+ final AlignmentAnnotation annotation = new AlignmentAnnotation(label, description,
+ value);
+ annotation.setCalcId(calcId);
+ seq.addAlignmentAnnotation(annotation);
+ return annotation;
+ }
+
+ @Test
+ public void testGetAlignmentAnnotations_forCalcIdAndLabel()
+ {
+ AlignmentAnnotation ann1 = addAnnotation("label1", "desc1", "calcId1",
+ 1f);
+ AlignmentAnnotation ann2 = addAnnotation("label2", "desc2", "calcId2",
+ 1f);
+ AlignmentAnnotation ann3 = addAnnotation("label2", "desc3", "calcId3",
+ 1f);
+ AlignmentAnnotation ann4 = addAnnotation("label2", "desc3", "calcId2",
+ 1f);
+ AlignmentAnnotation ann5 = addAnnotation("label5", "desc3", null,
+ 1f);
+ AlignmentAnnotation ann6 = addAnnotation(null, "desc3", "calcId3",
+ 1f);
+ List<AlignmentAnnotation> anns = seq.getAlignmentAnnotations("calcId2",
+ "label2");
+ assertEquals(2, anns.size());
+ assertSame(ann2, anns.get(0));
+ assertSame(ann4, anns.get(1));
+
+ assertTrue(seq.getAlignmentAnnotations("calcId2", "label3").isEmpty());
+ assertTrue(seq.getAlignmentAnnotations("calcId3", "label5").isEmpty());
+ assertTrue(seq.getAlignmentAnnotations("calcId2", null).isEmpty());
+ assertTrue(seq.getAlignmentAnnotations(null, "label3").isEmpty());
+ assertTrue(seq.getAlignmentAnnotations(null, null).isEmpty());
+ }
+
+ /**
+ * Tests for addAlignmentAnnotation. Note this method has the side-effect of
+ * setting the sequenceRef on the annotation.
+ */
+ @Test
+ public void testAddAlignmentAnnotation()
+ {
+ assertNull(seq.annotation);
+ final AlignmentAnnotation annotation = new AlignmentAnnotation("a",
+ "b", 2d);
+ assertNull(annotation.sequenceRef);
+ seq.addAlignmentAnnotation(annotation);
+ assertSame(seq, annotation.sequenceRef);
+ AlignmentAnnotation[] anns = seq.getAnnotation();
+ assertEquals(1, anns.length);
+ assertSame(annotation, anns[0]);
+ }
+}
*/
package jalview.ext.jmol;
-import static org.junit.Assert.*;
-
-import java.util.Vector;
-
+import static org.junit.Assert.assertTrue;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
import jalview.io.AppletFormatAdapter;
import jalview.io.FileLoader;
+import java.util.Vector;
+
import org.junit.Test;
/**
}
}
+
private void validateSecStrRows(AlignmentI al)
{
if (!al.isNucleotide())
@Test
public void testPDBfileVsRNAML() throws Exception
{
- PDBfile pdbf = new PDBfile("examples/2GIS.pdb", FormatAdapter.FILE);
+ PDBfile pdbf = new PDBfile(true,true,"examples/2GIS.pdb", FormatAdapter.FILE);
Assert.assertTrue(pdbf.isValid());
// Comment - should add new FileParse constructor like new FileParse(Reader
// ..). for direct reading
--- /dev/null
+package jalview.gui;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.io.AppletFormatAdapter;
+import jalview.util.MessageManager;
+
+import java.awt.BorderLayout;
+import java.awt.Checkbox;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.event.ItemEvent;
+import java.io.IOException;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JPanel;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for AnnotationChooser
+ *
+ * @author gmcarstairs
+ *
+ */
+public class AnnotationChooserTest
+{
+ // 4 sequences x 13 positions
+ final static String TEST_DATA = ">FER_CAPAA Ferredoxin\n"
+ + "TIETHKEAELVG-\n"
+ + ">FER_CAPAN Ferredoxin, chloroplast precursor\n"
+ + "TIETHKEAELVG-\n"
+ + ">FER1_SOLLC Ferredoxin-1, chloroplast precursor\n"
+ + "TIETHKEEELTA-\n" + ">Q93XJ9_SOLTU Ferredoxin I precursor\n"
+ + "TIETHKEEELTA-\n";
+
+ AnnotationChooser testee;
+
+ AlignmentPanel parentPanel;
+
+ AlignFrame af;
+
+ @Before
+ public void setUp() throws IOException
+ {
+ AlignmentI al = new jalview.io.FormatAdapter().readFile(TEST_DATA,
+ AppletFormatAdapter.PASTE, "FASTA");
+ af = new AlignFrame(al, 700, 500);
+ parentPanel = new AlignmentPanel(af, af.getViewport());
+ addAnnotations();
+ }
+
+ /**
+ * Add 4 annotations, 3 of them sequence-specific.
+ *
+ * <PRE>
+ * ann1 - for sequence 0 - label 'IUPRED'
+ * ann2 - not sequence related - label 'Beauty'
+ * ann3 - for sequence 3 - label 'JMol'
+ * ann4 - for sequence 2 - label 'IUPRED'
+ * ann5 - for sequence 1 - label 'JMol'
+ */
+ private void addAnnotations()
+ {
+ Annotation an = new Annotation(2f);
+ Annotation[] anns = new Annotation[]
+ { an, an, an };
+ AlignmentAnnotation ann0 = new AlignmentAnnotation("IUPRED", "", anns);
+ AlignmentAnnotation ann1 = new AlignmentAnnotation("Beauty", "", anns);
+ AlignmentAnnotation ann2 = new AlignmentAnnotation("JMol", "", anns);
+ AlignmentAnnotation ann3 = new AlignmentAnnotation("IUPRED", "", anns);
+ AlignmentAnnotation ann4 = new AlignmentAnnotation("JMol", "", anns);
+ SequenceI[] seqs = parentPanel.getAlignment().getSequencesArray();
+ ann0.setSequenceRef(seqs[0]);
+ ann2.setSequenceRef(seqs[3]);
+ ann3.setSequenceRef(seqs[2]);
+ ann4.setSequenceRef(seqs[1]);
+ parentPanel.getAlignment().addAnnotation(ann0);
+ parentPanel.getAlignment().addAnnotation(ann1);
+ parentPanel.getAlignment().addAnnotation(ann2);
+ parentPanel.getAlignment().addAnnotation(ann3);
+ parentPanel.getAlignment().addAnnotation(ann4);
+ }
+
+ /**
+ * Test creation of panel with OK and Cancel buttons
+ */
+ @Test
+ public void testBuildActionButtonsPanel()
+ {
+ testee = new AnnotationChooser(parentPanel);
+ JPanel jp = testee.buildActionButtonsPanel();
+ assertTrue("Wrong layout", jp.getLayout() instanceof FlowLayout);
+
+ Component[] comps = jp.getComponents();
+ assertEquals("Not 2 action buttons", 2, comps.length);
+
+ final Component jb1 = comps[0];
+ final Component jb2 = comps[1];
+
+ assertEquals("Not 'OK' button", MessageManager.getString("action.ok"),
+ ((JButton) jb1).getText());
+ assertEquals("Wrong button font", JvSwingUtils.getLabelFont(),
+ jb1.getFont());
+
+ assertEquals("Not 'Cancel' button",
+ MessageManager.getString("action.cancel"),
+ ((JButton) jb2).getText());
+ assertEquals("Wrong button font", JvSwingUtils.getLabelFont(),
+ jb2.getFont());
+ }
+
+ /**
+ * Test 'Apply to' has 3 radio buttons enabled, 'Selected Sequences' selected,
+ * when there is a current selection group.
+ */
+ @Test
+ public void testBuildApplyToOptionsPanel_withSelectionGroup()
+ {
+ selectSequences(0, 2, 3);
+ testee = new AnnotationChooser(parentPanel);
+
+ JPanel jp = testee.buildApplyToOptionsPanel();
+ Component[] comps = jp.getComponents();
+ assertEquals("Not 3 radio buttons", 3, comps.length);
+
+ final Checkbox cb1 = (Checkbox) comps[0];
+ final Checkbox cb2 = (Checkbox) comps[1];
+ final Checkbox cb3 = (Checkbox) comps[2];
+
+ assertTrue("Not enabled", cb1.isEnabled());
+ assertTrue("Not enabled", cb2.isEnabled());
+ assertTrue("Not enabled", cb3.isEnabled());
+ assertEquals("Option not selected", cb2, cb2.getCheckboxGroup()
+ .getSelectedCheckbox());
+
+ // check state variables match checkbox selection
+ assertTrue(testee.isApplyToSelectedSequences());
+ assertFalse(testee.isApplyToUnselectedSequences());
+ }
+
+ /**
+ * Add a sequence group to the alignment with the specified sequences (base 0)
+ * in it
+ *
+ * @param i
+ * @param more
+ */
+ private void selectSequences(int... selected)
+ {
+ SequenceI[] seqs = parentPanel.getAlignment().getSequencesArray();
+ SequenceGroup sg = new SequenceGroup();
+ for (int i : selected)
+ {
+ sg.addSequence(seqs[i], false);
+ }
+ parentPanel.av.setSelectionGroup(sg);
+ }
+
+ /**
+ * Test 'Apply to' has 1 radio button enabled, 'All Sequences' selected, when
+ * there is no current selection group.
+ */
+ @Test
+ public void testBuildApplyToOptionsPanel_noSelectionGroup()
+ {
+ testee = new AnnotationChooser(parentPanel);
+ JPanel jp = testee.buildApplyToOptionsPanel();
+ verifyApplyToOptionsPanel_noSelectionGroup(jp);
+ }
+
+ protected void verifyApplyToOptionsPanel_noSelectionGroup(JPanel jp)
+ {
+ assertTrue("Wrong layout", jp.getLayout() instanceof FlowLayout);
+ Component[] comps = jp.getComponents();
+ assertEquals("Not 3 radio buttons", 3, comps.length);
+
+ final Checkbox cb1 = (Checkbox) comps[0];
+ final Checkbox cb2 = (Checkbox) comps[1];
+ final Checkbox cb3 = (Checkbox) comps[2];
+
+ assertTrue("Not enabled", cb1.isEnabled());
+ assertFalse("Enabled", cb2.isEnabled());
+ assertFalse("Enabled", cb3.isEnabled());
+ assertEquals("Not selected", cb1, cb1.getCheckboxGroup()
+ .getSelectedCheckbox());
+
+ // check state variables match checkbox selection
+ assertTrue(testee.isApplyToSelectedSequences());
+ assertTrue(testee.isApplyToUnselectedSequences());
+
+ assertEquals("Wrong text",
+ MessageManager.getString("label.all_sequences"), cb1.getLabel());
+ assertEquals("Wrong text",
+ MessageManager.getString("label.selected_sequences"),
+ cb2.getLabel());
+ assertEquals("Wrong text",
+ MessageManager.getString("label.except_selected_sequences"),
+ cb3.getLabel());
+ }
+
+ /**
+ * Test Show and Hide radio buttons created, with Hide initially selected.
+ */
+ @Test
+ public void testBuildShowHidePanel()
+ {
+ testee = new AnnotationChooser(parentPanel);
+ JPanel jp = testee.buildShowHidePanel();
+ verifyShowHidePanel(jp);
+
+ }
+
+ protected void verifyShowHidePanel(JPanel jp)
+ {
+ assertTrue("Wrong layout", jp.getLayout() instanceof FlowLayout);
+ Component[] comps = jp.getComponents();
+ assertEquals("Not 2 radio buttons", 2, comps.length);
+
+ final Checkbox cb1 = (Checkbox) comps[0];
+ final Checkbox cb2 = (Checkbox) comps[1];
+
+ assertTrue("Show not enabled", cb1.isEnabled());
+ assertTrue("Hide not enabled", cb2.isEnabled());
+
+ // Hide (button 2) selected; note this may change to none (null)
+ assertEquals("Not selected", cb2, cb2.getCheckboxGroup()
+ .getSelectedCheckbox());
+
+ assertTrue("Show is flagged", !testee.isShowSelected());
+
+ assertEquals("Wrong text",
+ MessageManager.getString("label.show_selected_annotations"),
+ cb1.getLabel());
+ assertEquals("Wrong text",
+ MessageManager.getString("label.hide_selected_annotations"),
+ cb2.getLabel());
+ }
+
+ /**
+ * Test construction of panel containing two sub-panels
+ */
+ @Test
+ public void testBuildShowHideOptionsPanel()
+ {
+ testee = new AnnotationChooser(parentPanel);
+ JPanel jp = testee.buildShowHideOptionsPanel();
+ assertTrue("Wrong layout", jp.getLayout() instanceof BorderLayout);
+ Component[] comps = jp.getComponents();
+ assertEquals("Not 2 sub-panels", 2, comps.length);
+
+ verifyShowHidePanel((JPanel) comps[0]);
+ verifyApplyToOptionsPanel_noSelectionGroup((JPanel) comps[1]);
+ }
+
+ /**
+ * Test that annotation types are (uniquely) identified.
+ *
+ */
+ @Test
+ public void testGetAnnotationTypes()
+ {
+ selectSequences(1);
+ testee = new AnnotationChooser(parentPanel);
+ // selection group should make no difference to the result
+ // as all annotation types for the alignment are considered
+
+ List<String> types = AnnotationChooser.getAnnotationTypes(
+ parentPanel.getAlignment(), true);
+ assertEquals("Not two annotation types", 2, types.size());
+ assertTrue("IUPRED missing", types.contains("IUPRED"));
+ assertTrue("JMol missing", types.contains("JMol"));
+
+ types = AnnotationChooser.getAnnotationTypes(
+ parentPanel.getAlignment(), false);
+ assertEquals("Not six annotation types", 6, types.size());
+ assertTrue("IUPRED missing", types.contains("IUPRED"));
+ assertTrue("JMol missing", types.contains("JMol"));
+ assertTrue("Beauty missing", types.contains("Beauty"));
+ // These are added by viewmodel.AlignViewport.initAutoAnnotation():
+ assertTrue("Consensus missing", types.contains("Consensus"));
+ assertTrue("Quality missing", types.contains("Quality"));
+ assertTrue("Conservation missing", types.contains("Conservation"));
+ }
+
+ /**
+ * Test result of selecting an annotation type, with 'Hide for all sequences'.
+ *
+ * We expect all annotations of that type to be set hidden. Other annotations
+ * should be left visible.
+ */
+ @Test
+ public void testSelectType_hideForAll()
+ {
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+ final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
+ setSelected(hideCheckbox, true);
+
+ final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
+ 1, 1, 0);
+ setSelected(allSequencesCheckbox, true);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+
+ assertTrue(anns[5].visible); // JMol for seq3
+ assertTrue(anns[7].visible); // JMol for seq1
+
+ setSelected(getTypeCheckbox("JMol"), true);
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertTrue(anns[3].visible); // IUPred for seq0
+ assertTrue(anns[4].visible); // Beauty
+ assertFalse(anns[5].visible); // JMol for seq3 - not selected but hidden
+ assertTrue(anns[6].visible); // IUPRED for seq2
+ assertFalse(anns[7].visible); // JMol for seq1 - selected and hidden
+ }
+
+ /**
+ * Test result of selecting an annotation type, with 'Hide for selected
+ * sequences'.
+ *
+ * We expect the annotations of that type, linked to the sequence group, to be
+ * set hidden. Other annotations should be left visible.
+ */
+ @Test
+ public void testSelectType_hideForSelected()
+ {
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+ final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
+ setSelected(hideCheckbox, true);
+
+ /*
+ * Don't set the 'selected sequences' radio button since this would trigger
+ * an update, including unselected sequences / annotation types
+ */
+ // setSelected(getSelectedSequencesCheckbox());
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+
+ assertTrue(anns[7].visible); // JMol for seq1
+
+ setSelected(getTypeCheckbox("JMol"), true);
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertTrue(anns[3].visible); // IUPred for seq0
+ assertTrue(anns[4].visible); // Beauty
+ assertTrue(anns[5].visible); // JMol for seq3 not in selection group
+ assertTrue(anns[6].visible); // IUPRED for seq2
+ assertFalse(anns[7].visible); // JMol for seq1 in selection group
+ }
+
+ /**
+ * Test result of deselecting an annotation type, with 'Hide for all
+ * sequences'.
+ *
+ * We expect all annotations of that type to be set visible. Other annotations
+ * should be left unchanged.
+ */
+ @Test
+ public void testDeselectType_hideForAll()
+ {
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+
+ final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
+ setSelected(hideCheckbox, true);
+
+ final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
+ 1, 1, 0);
+ setSelected(allSequencesCheckbox, true);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+
+ final Checkbox typeCheckbox = getTypeCheckbox("JMol");
+
+ // select JMol - all hidden
+ setSelected(typeCheckbox, true);
+ assertFalse(anns[5].visible); // JMol for seq3
+ assertFalse(anns[7].visible); // JMol for seq1
+
+ // deselect JMol - all unhidden
+ setSelected(typeCheckbox, false);
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertTrue(anns[3].visible); // IUPred for seq0
+ assertTrue(anns[4].visible); // Beauty
+ assertTrue(anns[5].visible); // JMol for seq3
+ assertTrue(anns[6].visible); // IUPRED for seq2
+ assertTrue(anns[7].visible); // JMol for seq1
+ }
+
+ /**
+ * Test result of deselecting an annotation type, with 'Hide for selected
+ * sequences'.
+ *
+ * We expect the annotations of that type, linked to the sequence group, to be
+ * set visible. Other annotations should be left unchanged.
+ */
+ @Test
+ public void testDeselectType_hideForSelected()
+ {
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+ final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
+ setSelected(hideCheckbox, true);
+
+ /*
+ * Don't set the 'selected sequences' radio button since this would trigger
+ * an update, including unselected sequences / annotation types
+ */
+ // setSelected(getSelectedSequencesCheckbox());
+
+ setSelected(getTypeCheckbox("JMol"), true);
+ setSelected(getTypeCheckbox("JMol"), false);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertTrue(anns[3].visible); // IUPred for seq0
+ assertTrue(anns[4].visible); // Beauty
+ assertTrue(anns[5].visible); // JMol for seq3 not in selection group
+ assertTrue(anns[6].visible); // IUPRED for seq2
+ assertTrue(anns[7].visible); // JMol for seq1 in selection group
+ }
+
+ /**
+ * Test result of selecting an annotation type, with 'Show for all sequences'.
+ *
+ * We expect all annotations of that type to be set visible. Other annotations
+ * should be left unchanged
+ */
+ @Test
+ public void testSelectType_showForAll()
+ {
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+ final Checkbox showCheckbox = (Checkbox) getComponent(testee, 1, 0, 0);
+ final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
+
+ final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
+ 1, 1, 0);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+
+ // hide all JMol annotations
+ setSelected(allSequencesCheckbox, true);
+ setSelected(hideCheckbox, true);
+ setSelected(getTypeCheckbox("JMol"), true);
+ assertFalse(anns[5].visible); // JMol for seq3
+ assertFalse(anns[7].visible); // JMol for seq1
+ // ...now show them...
+ setSelected(showCheckbox, true);
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertTrue(anns[3].visible); // IUPred for seq0
+ assertTrue(anns[4].visible); // Beauty
+ assertTrue(anns[5].visible); // JMol for seq3
+ assertTrue(anns[6].visible); // IUPRED for seq2
+ assertTrue(anns[7].visible); // JMol for seq1
+ }
+
+ /**
+ * Test result of selecting an annotation type, with 'Show for selected
+ * sequences'.
+ *
+ * We expect all annotations of that type, linked to the sequence group, to be
+ * set visible. Other annotations should be left unchanged
+ */
+ @Test
+ public void testSelectType_showForSelected()
+ {
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+ final Checkbox showCheckbox = (Checkbox) getComponent(testee, 1, 0, 0);
+ final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
+
+ final Checkbox selectedSequencesCheckbox = (Checkbox) getComponent(
+ testee, 1, 1, 1);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+
+ // hide all JMol annotations in the selection region (== annotation 7)
+ setSelected(selectedSequencesCheckbox, true);
+ setSelected(hideCheckbox, true);
+ setSelected(getTypeCheckbox("JMol"), true);
+ assertTrue(anns[5].visible); // JMol for seq3
+ assertFalse(anns[7].visible); // JMol for seq1
+ // ...now show them...
+ setSelected(showCheckbox, true);
+
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertTrue(anns[3].visible); // IUPred for seq0
+ assertTrue(anns[4].visible); // Beauty
+ assertTrue(anns[5].visible); // JMol for seq3
+ assertTrue(anns[6].visible); // IUPRED for seq2
+ assertTrue(anns[7].visible); // JMol for seq1
+ }
+
+ /**
+ * Test result of deselecting an annotation type, with 'Show for all
+ * sequences'.
+ *
+ * We expect all annotations of that type to be set hidden. Other annotations
+ * should be left unchanged.
+ */
+ @Test
+ public void testDeselectType_showForAll()
+ {
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+
+ final Checkbox showCheckbox = (Checkbox) getComponent(testee, 1, 0, 0);
+ setSelected(showCheckbox, true);
+
+ final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
+ 1, 1, 0);
+ setSelected(allSequencesCheckbox, true);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+
+ final Checkbox typeCheckbox = getTypeCheckbox("JMol");
+ // select JMol - all shown
+ setSelected(typeCheckbox, true);
+ assertTrue(anns[5].visible); // JMol for seq3
+ assertTrue(anns[7].visible); // JMol for seq1
+
+ // deselect JMol - all hidden
+ setSelected(typeCheckbox, false);
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertTrue(anns[3].visible); // IUPred for seq0
+ assertTrue(anns[4].visible); // Beauty
+ assertFalse(anns[5].visible); // JMol for seq3
+ assertTrue(anns[6].visible); // IUPRED for seq2
+ assertFalse(anns[7].visible); // JMol for seq1
+ }
+
+ /**
+ * Test result of deselecting an annotation type, with 'Show for selected
+ * sequences'.
+ *
+ * We expect the annotations of that type, linked to the sequence group, to be
+ * set hidden. Other annotations should be left unchanged.
+ */
+ @Test
+ public void testDeselectType_showForSelected()
+ {
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+ final Checkbox showCheckbox = (Checkbox) getComponent(testee, 1, 0, 0);
+ setSelected(showCheckbox, true);
+
+ /*
+ * Don't set the 'selected sequences' radio button since this would trigger
+ * an update, including unselected sequences / annotation types
+ */
+ // setSelected(getSelectedSequencesCheckbox());
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+
+ // select JMol - should remain visible
+ setSelected(getTypeCheckbox("JMol"), true);
+ assertTrue(anns[5].visible); // JMol for seq3
+ assertTrue(anns[7].visible); // JMol for seq1
+
+ // deselect JMol - should be hidden for selected sequences only
+ setSelected(getTypeCheckbox("JMol"), false);
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertTrue(anns[3].visible); // IUPred for seq0
+ assertTrue(anns[4].visible); // Beauty
+ assertTrue(anns[5].visible); // JMol for seq3 not in selection group
+ assertTrue(anns[6].visible); // IUPRED for seq2
+ assertFalse(anns[7].visible); // JMol for seq1 in selection group
+ }
+
+ /**
+ * Helper method to drill down to a sub-component in a Container hierarchy.
+ *
+ * @param cont
+ * @param i
+ * @param j
+ * @param k
+ * @return
+ */
+ public static Component getComponent(Container cont, int... positions)
+ {
+ Component comp = cont;
+ for (int i : positions)
+ {
+ comp = ((Container) comp).getComponent(i);
+ }
+ return comp;
+ }
+
+ /**
+ * Helper method to set or unset a checkbox and fire its action listener.
+ *
+ * @param cb
+ * @param select
+ */
+ protected void setSelected(Checkbox cb, boolean select)
+ {
+ // TODO refactor to a test utility class
+ cb.setState(select);
+ // have to manually fire the action listener
+ cb.getItemListeners()[0].itemStateChanged(new ItemEvent(cb,
+ ItemEvent.ITEM_STATE_CHANGED, cb, select ? ItemEvent.SELECTED
+ : ItemEvent.DESELECTED));
+ }
+
+ /**
+ * Helper method to drill down to the 'Annotation type' checkbox with given
+ * label.
+ *
+ * @return
+ */
+ private Checkbox getTypeCheckbox(String forLabel)
+ {
+ Component[] cbs = ((JPanel) testee.getComponent(0)).getComponents();
+ for (Component comp : cbs)
+ {
+ final Checkbox cb = (Checkbox) comp;
+ if (cb.getLabel().equals(forLabel))
+ {
+ return cb;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Test isInActionScope for the case where the scope is selected sequences.
+ * Test cases include sequences in the selection group, and others not in the
+ * group.
+ */
+ @Test
+ public void testIsInActionScope_selectedScope()
+ {
+ // sequences 1 and 2 have annotations 4 and 3 respectively
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+
+ final Checkbox selectedSequencesCheckbox = (Checkbox) getComponent(
+ testee, 1, 1, 1);
+ setSelected(selectedSequencesCheckbox, true);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+ // remember 3 annotations to skip (Conservation/Quality/Consensus)
+ assertFalse(testee.isInActionScope(anns[3]));
+ assertFalse(testee.isInActionScope(anns[4]));
+ assertFalse(testee.isInActionScope(anns[5]));
+ assertTrue(testee.isInActionScope(anns[6]));
+ assertTrue(testee.isInActionScope(anns[7]));
+ }
+
+ /**
+ * Test isInActionScope for the case where the scope is unselected sequences.
+ * Test cases include sequences in the selection group, and others not in the
+ * group.
+ */
+ @Test
+ public void testIsInActionScope_unselectedScope()
+ {
+ // sequences 1 and 2 have annotations 4 and 3 respectively
+ selectSequences(1, 2);
+ testee = new AnnotationChooser(parentPanel);
+
+ final Checkbox unselectedSequencesCheckbox = (Checkbox) getComponent(
+ testee, 1, 1, 2);
+ setSelected(unselectedSequencesCheckbox, true);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+ // remember 3 annotations to skip (Conservation/Quality/Consensus)
+ assertTrue(testee.isInActionScope(anns[3]));
+ assertTrue(testee.isInActionScope(anns[4]));
+ assertTrue(testee.isInActionScope(anns[5]));
+ assertFalse(testee.isInActionScope(anns[6]));
+ assertFalse(testee.isInActionScope(anns[7]));
+ }
+
+ /**
+ * Test that the reset method restores previous visibility flags.
+ */
+ @Test
+ public void testResetOriginalState()
+ {
+ testee = new AnnotationChooser(parentPanel);
+
+ AlignmentAnnotation[] anns = parentPanel.getAlignment()
+ .getAlignmentAnnotation();
+ // all start visible
+ for (int i = 0; i < anns.length; i++)
+ {
+ assertTrue(i + "'th sequence not visible", anns[i].visible);
+ }
+
+ final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
+ setSelected(hideCheckbox, true);
+
+ final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
+ 1, 1, 0);
+ setSelected(allSequencesCheckbox, true);
+
+ setSelected(getTypeCheckbox("JMol"), true);
+ setSelected(getTypeCheckbox("IUPRED"), true);
+
+ assertTrue(anns[0].visible); // Conservation
+ assertTrue(anns[1].visible); // Quality
+ assertTrue(anns[2].visible); // Consensus
+ assertFalse(anns[3].visible); // IUPRED
+ assertTrue(anns[4].visible); // Beauty (not seq-related)
+ assertFalse(anns[5].visible); // JMol
+ assertFalse(anns[6].visible); // IUPRED
+ assertFalse(anns[7].visible); // JMol
+
+ // reset - should all be visible
+ testee.resetOriginalState();
+ for (int i = 0; i < anns.length; i++)
+ {
+ assertTrue(i + "'th sequence not visible", anns[i].visible);
+ }
+ }
+}
*/
package jalview.gui;
-import static org.junit.Assert.*;
import jalview.bin.Cache;
-import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JPanel;
import javax.swing.JTextArea;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
public class JAL1353bugdemo
volatile boolean finish = false;
@Test
+ @Ignore
+ // comment out @Ignore to enable this test
public void test()
{
Cache.initLogger();
--- /dev/null
+package jalview.gui;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+import jalview.io.AppletFormatAdapter;
+import jalview.util.MessageManager;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JMenuItem;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class PopupMenuTest
+{
+ // 4 sequences x 13 positions
+ final static String TEST_DATA = ">FER_CAPAA Ferredoxin\n"
+ + "TIETHKEAELVG-\n"
+ + ">FER_CAPAN Ferredoxin, chloroplast precursor\n"
+ + "TIETHKEAELVG-\n"
+ + ">FER1_SOLLC Ferredoxin-1, chloroplast precursor\n"
+ + "TIETHKEEELTA-\n" + ">Q93XJ9_SOLTU Ferredoxin I precursor\n"
+ + "TIETHKEEELTA-\n";
+
+ AlignmentI alignment;
+
+ AlignmentPanel parentPanel;
+
+ PopupMenu testee = null;
+
+ @Before
+ public void setUp() throws IOException
+ {
+ alignment = new jalview.io.FormatAdapter().readFile(TEST_DATA,
+ AppletFormatAdapter.PASTE, "FASTA");
+ AlignFrame af = new AlignFrame(alignment, 700, 500);
+ parentPanel = new AlignmentPanel(af, af.getViewport());
+ testee = new PopupMenu(parentPanel, null, null);
+ int i = 0;
+ for (SequenceI seq : alignment.getSequences())
+ {
+ final AlignmentAnnotation annotation = new AlignmentAnnotation("label" + i,
+ "desc" + i, i);
+ annotation.setCalcId("calcId" + i);
+ seq.addAlignmentAnnotation(annotation);
+ annotation.setSequenceRef(seq);
+ }
+ }
+
+ @Test
+ public void testConfigureReferenceAnnotationsMenu_noSequenceSelected()
+ {
+ JMenuItem menu = new JMenuItem();
+ List<SequenceI> seqs = new ArrayList<SequenceI>();
+ testee.configureReferenceAnnotationsMenu(menu, seqs);
+ assertFalse(menu.isEnabled());
+ assertEquals(
+ MessageManager.getString("label.add_reference_annotations"),
+ menu.getText());
+ // now try null list
+ menu.setEnabled(true);
+ testee.configureReferenceAnnotationsMenu(menu, seqs);
+ assertFalse(menu.isEnabled());
+ }
+
+ /**
+ * Test building the 'add reference annotations' menu for the case where there
+ * are no reference annotations to add to the alignment. The menu item should
+ * be disabled.
+ */
+ @Test
+ public void testConfigureReferenceAnnotationsMenu_noReferenceAnnotations()
+ {
+ JMenuItem menu = new JMenuItem();
+ List<SequenceI> seqs = new ArrayList<SequenceI>();
+
+ /*
+ * Initial state is that sequences have annotations, and have dataset
+ * sequences, but the dataset sequences have no annotations. Hence nothing
+ * to add.
+ */
+ seqs = parentPanel.getAlignment().getSequences();
+
+ testee.configureReferenceAnnotationsMenu(menu, seqs);
+ assertFalse(menu.isEnabled());
+ }
+
+ /**
+ * Test building the 'add reference annotations' menu for the case where all
+ * reference annotations are already on the alignment. The menu item should be
+ * disabled.
+ */
+ @Test
+ public void testConfigureReferenceAnnotationsMenu_alreadyAdded()
+ {
+ JMenuItem menu = new JMenuItem();
+ List<SequenceI> seqs = new ArrayList<SequenceI>();
+
+ seqs = parentPanel.getAlignment().getSequences();
+ // copy annotation from sequence to dataset
+ seqs.get(1).getDatasetSequence()
+ .addAlignmentAnnotation(seqs.get(1).getAnnotation()[0]);
+ testee.configureReferenceAnnotationsMenu(menu, seqs);
+ assertFalse(menu.isEnabled());
+ }
+
+ /**
+ * Test building the 'add reference annotations' menu for the case where
+ * several reference annotations are on the dataset but not on the sequences.
+ * The menu item should be enabled, and acquire a tooltip which lists the
+ * annotation sources (calcIds) and type (labels).
+ */
+ @Test
+ public void testConfigureReferenceAnnotationsMenu()
+ {
+ JMenuItem menu = new JMenuItem();
+ List<SequenceI> seqs = new ArrayList<SequenceI>();
+
+ seqs = parentPanel.getAlignment().getSequences();
+ // make up new annotations and add to dataset sequences
+
+ // PDB.secondary structure on Sequence0
+ AlignmentAnnotation annotation = new AlignmentAnnotation(
+ "secondary structure", "", 0);
+ annotation.setCalcId("PBD");
+ seqs.get(0).getDatasetSequence().addAlignmentAnnotation(annotation);
+
+ // PDB.Temp on Sequence1
+ annotation = new AlignmentAnnotation("Temp", "", 0);
+ annotation.setCalcId("PBD");
+ seqs.get(1).getDatasetSequence().addAlignmentAnnotation(annotation);
+
+ // JMOL.secondary structure on Sequence0
+ annotation = new AlignmentAnnotation("secondary structure", "", 0);
+ annotation.setCalcId("JMOL");
+ seqs.get(0).getDatasetSequence().addAlignmentAnnotation(annotation);
+
+ testee.configureReferenceAnnotationsMenu(menu, seqs);
+ assertTrue(menu.isEnabled());
+ String expected = "<html><table width=350 border=0><tr><td>Add annotations for<br/>JMOL/secondary structure<br/>PBD/Temp</td></tr></table></html>";
+ assertEquals(expected, menu.getToolTipText());
+ }
+}
--- /dev/null
+package jalview.io;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceI;
+import jalview.gui.AlignFrame;
+
+import java.io.File;
+import java.util.Vector;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class AnnotatedPDBFileInputTest
+{
+
+ AlignmentI al;
+
+ String pdbStr = "examples/2GIS.pdb";
+
+ String pdbId;
+
+ @Before
+ public void setup() throws Exception
+ {
+ FileLoader loader = new FileLoader(false);
+ AlignFrame af = loader.LoadFileWaitTillLoaded(pdbStr,
+ FormatAdapter.FILE);
+ al = af.getViewport().getAlignment();
+ pdbId = ((PDBEntry) al.getSequenceAt(0).getDatasetSequence().getPDBId()
+ .get(0)).getId();
+ }
+
+ @Test
+ public void checkNoDuplicates()
+ {
+ // not strictly a requirement, but strange things may happen if multiple
+ // instances of the same annotation are placed in the alignment annotation
+ // vector
+ assertNotNull(al.getAlignmentAnnotation());
+ // verify that all sequence annotation is doubly referenced
+ AlignmentAnnotation[] avec = al.getAlignmentAnnotation();
+ for (int p = 0; p < avec.length; p++)
+ {
+ for (int q = p + 1; q < avec.length; q++)
+ {
+ assertNotEquals(
+ "Found a duplicate annotation row " + avec[p].label,
+ avec[p], avec[q]);
+ }
+ }
+ }
+
+ @Test
+ public void checkPDBannotationSource()
+ {
+
+ for (SequenceI asq : al.getSequences())
+ {
+ for (AlignmentAnnotation aa : asq.getAnnotation())
+ {
+
+ System.out.println("CalcId: " + aa.getCalcId());
+ assertTrue(MCview.PDBfile.isCalcIdForFile(aa.getCalcId(), pdbId));
+ }
+ }
+ }
+
+ @Test
+ public void checkAnnotationWiring()
+ {
+ assertTrue(al.getAlignmentAnnotation() != null);
+ // verify that all sequence annotation is doubly referenced
+ for (AlignmentAnnotation aa : al.getAlignmentAnnotation())
+ {
+ if (aa.sequenceRef != null)
+ {
+ assertTrue(al.getSequences().contains(aa.sequenceRef));
+ assertNotNull(aa.sequenceRef.getAnnotation());
+ boolean found = false;
+ for (AlignmentAnnotation sqan : aa.sequenceRef.getAnnotation())
+ {
+ if (sqan == aa)
+ {
+ found = true;
+ break;
+ }
+ }
+ assertTrue(
+ "Couldn't find sequence associated annotation "
+ + aa.label
+ + " on the sequence it is associated with.\nSequence associated editing will fail.",
+ found);
+ }
+ }
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception
+ {
+ jalview.bin.Jalview.main(new String[]
+ { "-props", "test/src/jalview/io/testProps.jvprops" });
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception
+ {
+ jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
+
+ }
+
+ @Test
+ public void testJalviewProjectRelocationAnnotation() throws Exception
+ {
+
+ String inFile = "examples/2GIS.pdb";
+ String tfile = File.createTempFile("JalviewTest", ".jvp")
+ .getAbsolutePath();
+ AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
+ inFile, FormatAdapter.FILE);
+ assertTrue("Didn't read input file " + inFile, af != null);
+ assertTrue("Failed to store as a project.",
+ af.saveAlignment(tfile, "Jalview"));
+ af.closeMenuItem_actionPerformed(true);
+ af = null;
+ af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile,
+ FormatAdapter.FILE);
+ assertTrue("Failed to import new project", af != null);
+ for (SequenceI asq : af.getViewport().getAlignment().getSequences())
+ {
+ SequenceI sq = asq;
+ while (sq.getDatasetSequence() != null)
+ {
+ sq = sq.getDatasetSequence();
+ }
+ assertNotNull(sq.getPDBId());
+ assertEquals("Expected only one PDB ID", sq.getPDBId().size(), 1);
+ for (PDBEntry pdbentry : (Vector<PDBEntry>) sq.getPDBId())
+ {
+ System.err.println("PDB Entry " + pdbentry.getId() + " "
+ + pdbentry.getFile());
+ boolean exists = false, found = false;
+ for (AlignmentAnnotation ana : sq.getAnnotation())
+ {
+ System.err.println("CalcId " + ana.getCalcId());
+ if (ana.getCalcId() != null
+ && MCview.PDBfile.isCalcIdHandled(ana.getCalcId()))
+ {
+ exists = true;
+ if (MCview.PDBfile.isCalcIdForFile(ana.getCalcId(),
+ pdbentry.getId()))
+ {
+ found = true;
+ }
+ }
+ }
+ if (exists)
+ {
+ assertTrue("Couldn't find any annotation for " + pdbentry.getId()
+ + " (file handle " + pdbentry.getFile() + ")", found);
+ }
+ }
+ }
+ }
+}
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)\r
- * Copyright (C) 2014 The Jalview Authors\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3\r
- * of the License, or (at your option) any later version.\r
- * \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE. See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License\r
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.\r
- * The Jalview Authors are detailed in the 'AUTHORS' file.\r
- */\r
-package jalview.ws;\r
-\r
-import static org.junit.Assert.*;\r
-import jalview.datamodel.AlignmentI;\r
-import jalview.datamodel.SequenceI;\r
-import jalview.ws.seqfetcher.DbSourceProxy;\r
-\r
-import java.util.List;\r
-\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-public class PDBSequenceFetcherTest\r
-{\r
-\r
- SequenceFetcher sf;\r
-\r
- @Before\r
- public void setUp() throws Exception\r
- {\r
- sf = new SequenceFetcher(false);\r
- }\r
-\r
- @Test\r
- public void testRnaSeqRetrieve() throws Exception\r
- {\r
- List<DbSourceProxy> sps = sf.getSourceProxy("PDB");\r
- AlignmentI response = sps.get(0).getSequenceRecords("2GIS");\r
- assertTrue(response != null);\r
- assertTrue(response.getHeight() == 1);\r
- for (SequenceI sq : response.getSequences())\r
- {\r
- assertTrue("No annotation transfered to sequence.",\r
- sq.getAnnotation().length > 0);\r
- assertTrue("No PDBEntry on sequence.", sq.getPDBId().size() > 0);\r
- assertTrue("No RNA annotation on sequence.", sq.getRNA() != null);\r
- }\r
- }\r
-\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.ws;
+
+import static org.junit.Assert.*;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+import jalview.ws.seqfetcher.DbSourceProxy;
+
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class PDBSequenceFetcherTest
+{
+
+ SequenceFetcher sf;
+
+ @Before
+ public void setUp() throws Exception
+ {
+ sf = new SequenceFetcher(false);
+ }
+
+ @Test
+ public void testRnaSeqRetrieve() throws Exception
+ {
+ List<DbSourceProxy> sps = sf.getSourceProxy("PDB");
+ AlignmentI response = sps.get(0).getSequenceRecords("2GIS");
+ assertTrue(response != null);
+ assertTrue(response.getHeight() == 1);
+ for (SequenceI sq : response.getSequences())
+ {
+ assertTrue("No annotation transfered to sequence.",
+ sq.getAnnotation().length > 0);
+ assertTrue("No PDBEntry on sequence.", sq.getPDBId().size() > 0);
+ assertTrue("No RNA annotation on sequence.", sq.getRNA() != null);
+ }
+ }
+
+}
}
String jobid = msaservice.align(iseqs);
- if (jobid != null) {
- JobStatus js = null;
- do {
- try {
- Thread.sleep(500);
- } catch (InterruptedException q) {
- }
- ;
- js = msaservice.getJobStatus(jobid);
- } while (!js.equals(JobStatus.FAILED)
- && !js.equals(JobStatus.CANCELLED)
- && !js.equals(JobStatus.FINISHED));
- assertEquals("Trial alignment failed. State was " + js.name(),
- js, JobStatus.FINISHED);
- assertEquals(
- "Mismatch in number of input and result sequences - assume alignment service wasn't interacted with correctly",
- msaservice.getResult(jobid).getSequences().size(),
- iseqs.size());
- List<FastaSequence> seqList = msaservice.getResult(jobid).getSequences();
- for(FastaSequence fSeq : seqList){
- System.out.println(">"+fSeq.getId());
- System.out.println(fSeq.getFormattedFasta());
- }
+ if (jobid != null)
+ {
+ JobStatus js = null;
+ do
+ {
+ try
+ {
+ Thread.sleep(500);
+ } catch (InterruptedException q)
+ {
+ }
+ ;
+ js = msaservice.getJobStatus(jobid);
+ } while (!js.equals(JobStatus.FAILED)
+ && !js.equals(JobStatus.CANCELLED)
+ && !js.equals(JobStatus.FINISHED));
+ assertEquals("Trial alignment failed. State was " + js.name(), js,
+ JobStatus.FINISHED);
+ assertEquals(
+ "Mismatch in number of input and result sequences - assume alignment service wasn't interacted with correctly",
+ msaservice.getResult(jobid).getSequences().size(),
+ iseqs.size());
+ for (FastaSequence t : msaservice.getResult(jobid).getSequences())
+ {
+ System.out.println(">" + t.getId());
+ System.out.println(t.getFormattedFasta());
+ }
+ // .forEach(new Consumer<FastaSequence>() {
+ // @Override
+ // public void accept(FastaSequence t) {
+ // System.out.println(">"+t.getId());
+ // System.out.println(t.getFormattedFasta());
+ // }
+ // });
}
}
--- /dev/null
+package jalview.ws.seqfetcher;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class DasSequenceFetcher
+{
+
+ @Test
+ public void testDasRegistryContact()
+ {
+ jalview.bin.Cache.getDasSourceRegistry().refreshSources();
+ assertTrue(
+ "Expected to find at least one DAS source at the registry. Check config.",
+ jalview.bin.Cache.getDasSourceRegistry().getSources().size() > 0);
+ }
+
+}
-help2Website.class\r
-getJavaVersion.class\r
+help2Website.class
+getJavaVersion.class
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[slf-api-1.7.7.jar]]></string>
+ <string><![CDATA[slf4j-api-1.7.7.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[slf-api-1.7.7.jar]]></string>
+ <string><![CDATA[slf4j-api-1.7.7.jar]]></string>
</property>
<property name="fileSize">
<long>348699</long>
<string><![CDATA[664]]></string>
</property>
<property name="sourceName">
- <string><![CDATA[VARNAv3-9.jar]]></string>
+ <string><![CDATA[VARNAv3-91.jar]]></string>
</property>
<property name="overrideUnixPermissions">
<boolean>false</boolean>
<boolean>true</boolean>
</property>
<property name="destinationName">
- <string><![CDATA[VARNAv3-9.jar]]></string>
+ <string><![CDATA[VARNAv3-91.jar]]></string>
</property>
<property name="fileSize">
<long>663408</long>
# You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
# The Jalview Authors are detailed in the 'AUTHORS' file.
##
- \r
-# Splits a concatenated set of Stockholm Files into several individual files.\r
-\r
-use strict;\r
-use FileHandle;\r
-my $ac;\r
-my $lns="";\r
-my $fh;\r
-while (<>) {\r
- if ($_=~m!^//!) {\r
- $fh->print("//\n");\r
- $fh->close();\r
- $ac = undef;\r
- $lns = "";\r
- } else {\r
- if ($_=~/GF\s+AC\s+([0-9.RPF]+)/) { \r
- $ac=$1; \r
- ($fh=new FileHandle)->open(">$ac.stk") or die("Couldn't open file '$ac.stk'"); \r
- $lns=~/^. STOCKHOLM 1.0/ or $fh->print("# STOCKHOLM 1.0\n");\r
- };\r
- if (defined($fh)) {\r
- if (defined $lns) { \r
- $fh->print($lns); $lns=undef; }\r
- \r
- $fh->print($_);\r
- } else {\r
- $lns .= $_;\r
- }\r
- }\r
-}\r
+
+# Splits a concatenated set of Stockholm Files into several individual files.
+
+use strict;
+use FileHandle;
+my $ac;
+my $lns="";
+my $fh;
+while (<>) {
+ if ($_=~m!^//!) {
+ $fh->print("//\n");
+ $fh->close();
+ $ac = undef;
+ $lns = "";
+ } else {
+ if ($_=~/GF\s+AC\s+([0-9.RPF]+)/) {
+ $ac=$1;
+ ($fh=new FileHandle)->open(">$ac.stk") or die("Couldn't open file '$ac.stk'");
+ $lns=~/^. STOCKHOLM 1.0/ or $fh->print("# STOCKHOLM 1.0\n");
+ };
+ if (defined($fh)) {
+ if (defined $lns) {
+ $fh->print($lns); $lns=undef; }
+
+ $fh->print($_);
+ } else {
+ $lns .= $_;
+ }
+ }
+}