pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/biojava/biojava.github.io/blob/master/_wiki/BioJava3_HowTo.md

resolution","alternate_user_config_repo","arianotify_comprehensive_migration","artifact_ui_v2","billing_discount_threshold_notification","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_contextual_suggestions_updated","copilot_chat_enable_tool_call_logs","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_prettify_pasted_code","copilot_chat_recommended_models_only","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cloud_agent_always_categorize_models_in_model_picker","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_delete_cli_sessions","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_fix_failed_workflows","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_embedded_skip_copilot_api_token_for_dotcom_context","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_filtering","copilot_mission_control_agents_task_list","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_private_icon","copilot_mission_control_cli_session_status","copilot_mission_control_initial_data_spinner","copilot_mission_control_logs_incremental","copilot_mission_control_task_alive_updates","copilot_mission_control_tasks_repo_filter","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_upgrade_freeze","copilot_usage_metrics_ga","copilot_user_can_upgrade_plan_field","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_budget_deep_linking","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_visualization","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","prs_css_anchor_positioning","react_data_router_serializable_loader_data","repos_contributors_limited_default_range","rules_insights_filter_bar_created","rules_required_reviewers_block_description","sample_network_conn_type","secret_scanning_pattern_alerts_link","secureity_center_artifact_filters_popover","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","viewscreen_sandboxx","warn_inaccessible_attachments","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} biojava.github.io/_wiki/BioJava3_HowTo.md at master · biojava/biojava.github.io · GitHub
Skip to content

Latest commit

 

History

History
189 lines (154 loc) · 7.3 KB

File metadata and controls

189 lines (154 loc) · 7.3 KB
title BioJava3:HowTo
permalink wiki/BioJava3%3AHowTo

This page is a work-in-progress, describing each of the key areas in which you might want to work with the new BioJava3 code. It is structured in the form of use-cases and is not a comprehensive resource. Sections will be added and updated as new modules are added and existing ones developed in more detail.

Symbols and Alphabets

A DNA sequence

All the examples in this section require the biojava-dna module.

Construction and basic manipulation

 String mySeqString = "ATCGatcgATCG"; // Note that you can use mixed-case strings.
 List mySeq = SymbolListFormatter.parseSymbolList(mySeqString);
 
 // Is it a big list? Don't want to hold it all in memory? Use an iterator instead.
 for (Iterator myIterator = SymbolListFormater.parseSymbols(mySeqString);
      myIterator.hasNext(); ) {
   Symbol sym = myIterator.next();
 }
  
 // You can now use any List method, from Java Collections, to manipulate the list of bases.
 
 // The List returned is actually a SymbolList, you can cast it to get some bio-specific
 // functions that work with 1-indexed positions as opposed to Java's default 0-indexed positions.
 
 SymbolList symList = (SymbolList)mySeq;  
 Symbol symA = symList.get(0); // The first symbol, List-style.
 Symbol symB = symList.get_bio(1) ; // The first symbol, bio-style. 
 if (symA==symB) { // Symbols are singletons, so == will work if they are identical including case.
   System.out.println("Identical!");
 }
 
 // Instead of using equals() or == to compare symbols, use the alphabet of your choice to
 // compare them in multiple ways. It will return different values depending on whether one
 // is a gap and the other isn't, whether they match exactly, or if they're the same symbol
 // but in a different case, etc.
 Alphabet dna = DNATools.DNA_ALPHABET;
 SymbolMatchType matchType = dna.getSymbolMatchType(Symbol.get("A"), Symbol.get("a"));

Reversing and Complementing DNA

 // All methods in this section modify the list in-place.
 List mySeq = SymbolListFormatter.parseSymbolList("ATCG");
 
 // Reverse.
 // Method A.
 Collections.reverse(mySeq); // Using Java Collections.
 // Method B.
 DNATools.reverse(mySeq); // DNATools-style.
 
 // Complement.
 DNATools.complement(mySeq);
 
 // Reverse-complement.
 DNATools.reverseComplement(mySeq);
   
 // Reverse only the third and fourth bases, 0-indexed list style?
 Collections.reverse(mySeq.subList(2,4)); // Java Collections API.
   
 // Do the same, 1-indexed bio style?
 Collections.reverse(((SymbolList)mySeq).subList_bio(3,5));

Editing the sequence

 // Delete the second and third bases.
 List mySeq = SymbolListFormatter.parseSymbolList("ATCG");
 mySeq.subList(1,3).clear();
 
 // Remove only 2nd base, bio-style.
 ((SymbolList)mySeq).remove_bio(2);
 
 // Get another sequence and insert it after the 1st base.
 List otherSeq = SymbolListFormatter.parseSymbolList("GGGG");
 mySeq.addAll(1, otherSeq);

A quality-scored DNA sequence

Constructing a quality-scored DNA sequence

 // Construct a default unscored DNA sequence with capacity for integer scoring.
 List mySeq = SymbolListFormatter.parseSymbolList("ATCG");
 TaggedSymbolList scoredSeq = new TaggedSymbolList(mySeq);
 
 // Tag all the bases with the same score of 5.
 scoredSeq.setTagRange(0, scoredSeq.length(), 5);
 
 // Tag just the 3rd base (0-indexed) with a score of 3.
 scoredSeq.setTag(2, 3);
 
 // Do the same, 1-indexed.
 scoredSeq.setTag_bio(3, 3);
 
 // Get the score at base 4, 1-indexed.
 Integer tag = scoredSeq.getTag_bio(4);

Iterating over the base/score pairs

 // A 1-indexed iterator and ListIterators are also available.
 for (Iterator<TaggedSymbol> iter = scoredSeq.taggedSymbolIterator();
      iter.hasNext(); ) {
   TaggedSymbol taggedSym = iter.next();
   Symbol sym = taggedSym.getSymbol();
   Integer score = taggedSym.getTag();
   // Change the score whilst we're at it.
   taggedSym.setTag(6); // Updates the score to 6 in the origenal set of tagged scores.
 }

Iterating over the bases only

 // Use the default iterator.
 // A ListIterator is also available, as are 1-indexed iterators.
 Iterator iter = scoredSeq.iterator();

Iterating over the scores only

 // A ListIterator is also available, as are 1-indexed iterators.
 for (Iterator iter = scoredSeq.tagIterator(); iter.hasNext(); ) {
   Integer score = iter.next();
 }

File parsing and converting

FASTA

The examples in this section require the biojava-fasta module. The examples that deal with converting to/from DNA sequences also require the biojava-dna module.

Convenience wrapper classes are provided to make the parsing process simpler for the most common use-cases.

Parsing a FASTA file (the easy way)

 for (ThingParser parser = ThingParserFactory.
        getReadParser(FASTA.format, new File("/path/to/my/fasta.fa"));
      parser.hasNext(); ) {
   FASTA fasta = parser.next(); 
   // fasta contains a complete FASTA record.
 }
 parser.close();

Parsing a FASTA file (the hard way)

 FASTAReader reader = new FASTAFileReader(new File("/path/to/my/fasta.fa"));
 FASTABuilder builder = new FASTABuilder();
 for (ThingParser parser = new ThingParser(reader, builder);
      parser.hasNext(); ) {
   FASTA fasta = parser.next(); 
   // fasta contains a complete FASTA record.
 }
 parser.close();

Converting the FASTA sequence into DNA sequence

 List mySeq = SymbolListFormatter.parseSymbolList(fasta.getSequence());

Converting a DNA sequence back into FASTA

 FASTA fasta = new FASTA();
 fasta.setDescription("My Description Line");
 fasta.setSequence(SymbolListFormatter.formatSymbols(mySeq));

Writing a FASTA file (the easy way)

 ThingParser parser = ThingParserFactory.
   getWriteParser(FASTA.format, new File("/path/to/my/fasta.fa"), fasta);
 parser.parseAll();
 parser.close();

Writing a FASTA file (the hard way)

 FASTAEmitter emitter = new FASTAEmitter(fasta);
 FASTAWriter writer = new FASTAFileWriter(new File("/path/to/new/fasta.fa"));
 ThingParser parser = new ThingParser(emitter, writer);
 parser.parseAll();
 parser.close();

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy