Skip to content
Lukas Mueller edited this page Apr 15, 2026 · 41 revisions

Configuration keys

All configuration keys are available in sgn.conf with their defaults. Do not change any values in that file, as it is git controlled. Instead, change the value in sgn_local.conf, or add the key there with the new value. Values in sgn_local.conf supersede values specified in sgn.conf. sgn_local.conf is not controlled in the default git repo.

#is this a production server?

key name explanation typical values comments
dbhost the host for the database localhost
dbname the name of the database fixture
dbuser web_usr the name of the postgres database user usually either web_usr or postgres
dbpass XYZ the postgres database password for the dbuser
production_server is this a production server? 0 (not a production server), 1 (production server) production servers do not send out emails for example
rootpath the file path to the cxgn folder /home/production/cxgn/
basepath the file path to the sgn folder /home/vagrant/cxgn/sgn
personalized_homepage display the personalized homepage 1
show_transplanting_date whether the transplanting date is shown in the trial creation/edit dialogs and trial info 0 = hide; 1 = show
python_executable location of the python executable /usr/bin/python3.5 used for drone data analysis
python_executable_maskrcnn_env locaction of python executable for maskrcnn /usr/bin/python3.5
exclude_phenotype_outliers whether phenotype outliers should be excluded. DEPRECATED 0 = include; 1 = exclude
image_analysis_services the config for automated image analysis services ``` { "necrosis" : { "server_endpoint" : "http://unet.mcrops.org/api/", "image_type_name" : "image_analysis_necrosis_solomon_nsumba", "description" : "Necrosis Analysis, Makerere University", "service_traits" : { "CBSDpct CO_334:0002078" : "Cassava" } }, "whitefly_count" : { "server_endpoint" : "http://18.216.149.204/home/api2/", "image_type_name" : "image_analysis_white_fly_count_solomon_nsumba", "description": "Whitefly count, Makarere University" }, "count_contours" : { "image_type_name" : "image_analysis_contours", "trait_name" : "count_contours", "script" : "GetContours.py", "input_image" : "image_path", "outfile_image" : "outfile_path", "results_outfile" : "results_outfile_path", "description" : "Count Contours" }, "largest_contour_percent" : { "image_type_name" : "image_analysis_largest_contour", "trait_name" : "percent_largest_contour", "script" : "GetLargestContour.py", "input_image" : "image_path", "outfile_image" : "outfile_path", "results_outfile" : "results_outfile_path", "description" : "Largest Contour Percent" }, "count_sift" : { "image_type_name" : "image_analysis_sift", "trait_name" : "count_sift", "script" : "ImageProcess/CalculatePhenotypeSift.py", "input_image" : "image_paths", "outfile_image" : "outfile_paths", "results_outfile" : "results_outfile_path", "description" : "SIFT analysis" } }```
composable_cvs which CVs can be post composed trait,object,tod,toy,unit,method,experiment_treatment
composable_cvs_allowed_combinations which combinations of CVs are allowed ```Agronomic trait+toy,Metabolic|trait+object+tod+toy+unit+method```
composable_cvterm_delimiter the delimiter used to separate different cvterms in composed terms |
composable_cvterm_format the composable cvterm format, either concise or concise
composable_variables display only variable terms in the post composing tool 1
composable_tod_root_cvterm the root term for the time of day ontology "time of day|TIME:0000001"
composable_toy_root_cvterm the root term for the time of year ontology "time of year|TIME:0000005"
composable_gen_root_cvterm the generation ontology root term "generation TIME:0000072"
composable_evt_root_cvterm the event root term "event TIME:0000477"
composable_validation_check_name 0
allow_observation_variable_submission_interface whether the observation variable submission interface should be displayed 0
trait_ontology_db_name the db name of the trait ontology DEPRECATED (should be specified in cvprop table) SP
trait_ontology_cv_name the cv name of the trait ontology DEPRECATED (should be specified in cvprop table) solanaceae_trait
trait_ontology_cvterm_name the name of the root term of the trait ontology Solanaceae trait ontology
#For displaying ontologies in Ontology Browser
onto_root_namespaces the db names followed by a description in parentheses for the ontologies to be displayed in the ontology browser GO (Gene Ontology), PO (Plant Ontology), SO (Sequence Ontology), PATO (Phenotype and Trait Ontology), SP (Solanaceae Ontology), UO (Units), CASSTISS (Cass tissues)
allow_trait_edits whether variable attribute edits should be allowed 1 = yes, 0 = no
allow_treatment_edits whether treatment edits should be allowed 1 = yes, 0 = no
# Marker Metadata Trait Categories

Set the DB:Accession of the root term of the ontology used to define trait categories for marker metadata

marker_metadata_trait_ontology_root

Seedlot Maintenance Events

seedlot_maintenance_event_ontology_root

The DB:Accession of the root term of the ontology used to define the Seedlot Maintenance categories, events, and values

seedlot_maintenance_event_ontology_root SEEDLOT_MAINTENANCE:0000000

seedlot_maintenance_event_ontology_root

seedlot_maintenance_info_cvterms

The cvterm_id(s) of event(s) displayed as seedlot information on the record page

seedlot_maintenance_info_cvterms 78211,78168

seedlot_maintenance_info_cvterms

seedlot material type options: seed, root, clone, plant, tissue culture or gametophyte

#default_seedlot_material_type seed

project_name SGN

user_registration_join_breeding_programs 0 # when enabled, a new user can choose which breeding programs to join during registration user_registration_admin_confirmation 0 # when enabled, the new user confirmation message will be sent to the address(es) below instead of the user user_registration_admin_confirmation_email # a comma-separated list of email addresses to send new user confirmation messages to, when the above is enabled disable_login 0 default_login_janedoe 0 require_login 0

Report parameters

report_engine phenotype_properties_check

brapi_require_login 1 brapi_observation_units_require_login 1 brapi_observations_require_login 1 brapi_post_variables 0 brapi_put_variables 0 brapi_images_require_login 1 brapi_variables_require_login 1 brapi_lists_require_login 1 #brapi_default_user admin #brapi_default_user_role curator

temporary feature flag until breedbase is storing treatments properly through brapi

brapi_treatments_no_management_factor 1 brapi_GET any brapi_POST submitter,curator brapi_PUT submitter,curator brapi_OPTIONS any brapi_include_CO_xref 1 brapi_ou_order_plot_num 0

allow_repeat_measures 0

#export trait names as synonyms (1) or the original trait name (0) fieldbook_trait_synonym 1

list_trait_require_id 1

Cluster backend

backend Slurm cache_file_path /home/production/volume/cache job_finish_log /home/production/volume/logs/job_finish.log

crossing prediction tool - should the sex of the plants be taken into account? (for diecieous plants such as Yam)

if yes, provide the name of the variable that is used to score the sex of the plant

plant_sex_variable_name "Plant sex estimation 0-4"

the species that should be preselected in a list of species

preferred_species

who is the web server user for chowning and emailing. need to set

these manually under Apache mod_perl for example, because the server

runs under a different user than when it starts.

www_user USERNAME www_group GROUPNAME

when true, server removes its tempfiles when the app is started

clear_tempfiles_on_restart 1

show_grafting_interface 0 graft_separator_string "on"

solqtl /export/prod/tmp/solqtl/USERNAME

other config variables

dbsearchpath sgn dbsearchpath public dbsearchpath annotation dbsearchpath genomic dbsearchpath insitu dbsearchpath metadata dbsearchpath pheno_population dbsearchpath phenome dbsearchpath physical dbsearchpath tomato_gff dbsearchpath biosource dbsearchpath gem dbsearchpath sgn_people

#password set_this_please dsn dbi:Pg:host=localhost;dbname=cxgn user postgres search_path public search_path sgn search_path annotation search_path genomic search_path insitu search_path metadata search_path pheno_population search_path phenome search_path physical search_path tomato_gff search_path biosource search_path gem search_path sgn_people

Cview configuration parameters

Controller::Cview cview_default_map_id 9 </Controller::Cview>

##Github access token used for contact form posting of issues github_access_token NULL

##NOAA National Climatic Data Center Access token noaa_ncdc_access_token NULL

captcha keys for the production site

#captcha_private_key 6Lc__9YSAAAAANcTczARhRnZRkKmzWjnhipyqI6f #captcha_public_key 6Lc__9YSAAAAAH2ODL2FlR8jKa2Ms9i9d_0ziBWr

backcompat variables for the various static content types

relative URL and absolute path for static datasets

static_datasets_url /data static_datasets_path /export/prod/public

relative URL and absoluate path for static site content

static_content_url /static_content static_content_path /export/prod/public/sgn_static_content homepage_files_dir /export/prod/public/sgn_static_content/homepage

this needs to be here rather than in the CGI controller itself to

work around a bug in all but the most recent

Catalyst::Controller::CGIBin

Controller::CGI cgi_dir path_to(cgi-bin) </Controller::CGI>

Controller::Genomes::Tomato bac_publish_subdir tomato_genome/bacs </Controller::Genomes::Tomato>

Plugin::SmartURI disposition host-header # application-wide uri_class URI::SmartURI # by default </Plugin::SmartURI>

View::Email::ErrorEmail content_type text/plain to sgn-bugs@solgenomics.net from sgn-bugs@solgenomics.net charset utf-8 dump_skip_class Catalyst Catalyst::Stats DBIx::Class::Schema DBIx::Class::ResultSet DBIx::Class::Row HTML::Mason::Interp </View::Email::ErrorEmail>

should we send emails, if we are a production server? this can be

used to turn off emails if we are being bombarded.

admin_email sgn-feedback@solgenomics.net feedback_email sgn-feedback@solgenomics.net bugs_email sgn-bugs@solgenomics.net email sgn-feedback@solgenomics.net contact_form_email contactform@solgenomics.net cluster_job_email cluster-jobs@solgenomics.net tokn_email scp78@cornell.edu disable_emails 0

External SMTP Server to send emails

smtp_server smtp_layer ssl smtp_auth AUTO smtp_port smtp_login smtp_pass smtp_from

URL of the canonical, main production site

main_production_site_url http://solgenomics.net

#is there a system message text file somewhere we should be displaying? system_message_file HOME/system_message.txt

defaults to /tmp//SGN-site

#tempfiles_base

tempfiles_base ""

where to run cluster jobs - nothing means "batch" queue

#web_cluster_queue

where to run cluster jobs

web_cluster_queue batch

#is this a mirror of SGN, or the real thing? is_mirror 0

how to find cosii_files for markerinfo.pl

cosii_files /export/cosii2

log files, ABSOLUTE PATHS

error_log /var/log/sgn-site/error.log access_log /var/log/sgn-site/access.log rewrite_log /var/log/sgn-site/rewrite.log blast_log /export/prod/tmp/blast/blast.log image_analysis_log /tmp/image_analysis.log

paths to stuff

hmmsearch_location hmmsearch intron_finder_database /export/prod/public/intron_finder_database

trace_path /export/prod/public/chromatograms image_dir /images/image_files image_path /export/prod/public/images tempfiles_subdir /static/documents/tempfiles submit_dir /data/shared/submit-uploads programs_subdir /programs documents_subdir /documents conf_subdir /conf support_data_subdir /support_data

#stock tempfiles (for downloading phenotype and genotype raw data) stock_tempfiles /static/documents/tempfiles/stock #weblogo tempfiles for motifs finder tools

tmp_weblogo_path /static/documents/tempfiles/ tempfiles_base_motifs_finder /home/production/tmp cluster_motifs_finder /home/production/cluster/bin

#currently our cookies encrypt stuff, so this is just a random string to use to do that cookie_encryption_key bo9yie2JeeVee6ouAhch9aomeesieJ3iShae8aa8

where the genefamily info is stored

genefamily_dir /export/prod/private/genomes/genefamily/ genefamily_format Orthomcl # or orthofinder

stock properties that should be displayed and allowed to be edited in the "additional information" section and can be used in the accession file upload

editable_stock_props variety,released_variety_name,donor,donor institute,donor PUI,country of origin,state,institute code,institute name,biological status of accession code,notes,accession number,PUI,seed source,type of germplasm storage code,acquisition date,organization,location_code,ploidy_level,genome_structure,ncbi_taxonomy_id,transgenic,introgression_parent,introgression_backcross_parent,introgression_map_version,introgression_chromosome,introgression_start_position_bp,introgression_end_position_bp,number_of_insertions,GenbankRecord

editable_stock_props_definitions released_variety_name:offical variety name of the accession or stock,location_code:location code(s) for the accession,ploidy:a number(s) indicating the ploidy (e.g. 2 for diploid or 3 for triploid),genome_structure:genome structure(s) for accession which take into account ploidy and ancestral genome info e.g. AAA or AB,variety:variety(s) can be defined as a group of individuals or plants having similar traits that can be reproduced true to type from generation to generation,donor:the accession_name(s) of the donor accession and should be used in conjunction with donor institute and donor PUI,donor institute:the institute(s) of the donor accession(s),donor PUI:the permanent unique identifier(s) of the donor accession,country of origin:the country(s) of origin,state:the state(s) of origin,institute code: the institute code(s) of origin,institute name:the institute name(s) of origin,biological status of accession code:code(s) indicating the state of accession,notes:free text for notes,accession number:accession number(s) for accession from germplasm bank,PUI:permanent unique identifier(s) of the accession,seed source:origin(s) of seed source,type of germplasm storage code:code(s) indicating the type of germplasm storage,acquisition date:date(s) of acquisition YYYYMMDD for accession,transgenic:indicates if accession is transgenic. Please indicate 1 if transgenic and empty if otherwise.,introgression_parent:if the accession you are adding has an introgression that originated from one of the parents you can specify the parent here,introgression_backcross_parent:the backcross parent for introducing an introgression into the accession being added,introgression_map_version:the map version for identifying the start and stop position of the introgression. e.g. AGPv2,introgression_chromosome:the chromosome number that the introgression is on,introgression_start_position_bp:the start position of the introgression in base pairs,introgression_end_position_bp:the end position of the introgression in base pairs,number_of_insertions:number of transgene insertions in a transgenic plant,organization:the name(s) of the organization(s) which use this accession e.g. NARO,IITA

editable_vector_props Strain,CloningOrganism,InherentMarker,Backbone,SelectionMarker,CassetteName,VectorType,Gene,Promotors,Terminators,GenbankRecord,PlantAntibioticResistantMarker,BacterialResistantMarker

Cross properties that should be displayed and allowed to be added to crosses on cross detail page.

Cross properties for cassavabase

cross_properties Tag Number,Pollination Date,Number of Bags,Number of Flowers,Number of Fruits,Number of Seeds

##Cross properties for yambase ##cross_properties Number of Flowers,Pollination Date,Harvest Date,Number of Seeds Harvested,Days to Maturity,Seed Extraction Date,Number of Seeds Extracted,Number of Viable Seeds,Number of Nonviable Seeds, Days from Harvest to Extraction

##Cross properties for musabase ##cross_properties First Pollination Date,Repeat Pollination Date,Harvest Date,Seed Extraction Date,Number of Seeds Extracted,Embryo Rescue Good Seeds,Embryo Rescue Bad Seeds,Embryo Rescue Total Seeds,Embryo Rescue Date,Subculture Date,Subcultures Count,Subcultures Multiplication Number,Rooting Date,Rooting Plantlet,Germinating After 2 Weeks Date,Active Germinating After 2 Weeks,Germinating Afte 8 Weeks Date,Active Germinating After 8 Weeks,Screenhouse Transfer Date,Hardening Date

Cross additional info

cross_additional_info female_focus_trait,male_focus_trait,female_source_trial,male_source_trial cross_additional_info_header Female Focus Trait,Male Focus Trait,Female Source Trial,Male Source Trial

genotyping_facilities None,Cornell IGD,DArT,Intertek,IBRC Japan,BGI

sampling_facilities In-lab,Cornell IGD,DArT,Intertek,IBRC Japan,BGI

management_factor_types Fertilizer,Fungicide,Irrigation,Drought,Herbicide,Weeding,Pruning,Hormone treatment,Light treatment

design_types Completely Randomized,Complete Block,Resolvable Row-Column,Doubly-Resolvable Row-Column,Un-Replicated Diagonal Design, Augmented Row-Column,Alpha Lattice,Lattice,Augmented,Modified Augmented Design,Nursery/Greenhouse,Split Plot,Strip Plot,Partially Replicated,Westcott

trial_activities Started Phenotyping, Phenotyping Completed, Data Cleaning Completed, Data Analysis Completed

properties for ordering system (required 2 sets of order properties: order_properties and order_properties_dialog)

customized dropdown menu can be included in the order_properties_dialog. Dropdown menu can be linked with each property by using ":"

for example Facility and Experiment Type properties have customized dropdown menu:

#order_properties Quantity,Facility,Scientist,Required by Date,Experiment Name,Experiment Type #order_properties_dialog Quantity,Facility:green house:growth chamber,Scientist,Required by Date,Experiment Name,Experiment Type:seed production:experimentation

###for setting up a single step submission use the following: #ordering_type single_step ##two steps (adding to your cart first) is by default

order_properties Quantity,Comments order_properties_dialog Quantity,Comments

##for connecting orders with tracking activity project tracking_order_activity 0

##for connecting transformation with tracking activity project tracking_transformation 0

tracking_activities subculture_count,rooted_count,hardened_count tracking_activities_header Subculture Count,Rooted Count,Hardened Count

tracking_transformation_info coculture_date,number_of_transformants tracking_transformation_info_header Co-culture Date, Number of Transformants

tracking_tissue_culture_info subculture_count,rooted_count,hardened_count tracking_tissue_culture_info_header Subculture Count,Rooted Count,Hardened Count

##Whether obsoleted accessions are allowed to include in new trials allow_obsoleted_accessions 0

enabled 1 enabled 1 # # default GBrowse2 configuration, for a Debian gbrowse2 installation enabled 1 perl_inc /usr/local/share/website/gbrowse/lib/perl5 tmp_dir /usr/local/share/website/tmp/gbrowse cgi_url /gbrowse/bin static_url /gbrowse/static run_mode fastcgi cgi_bin /usr/lib/cgi-bin/gbrowse static_dir /usr/local/share/website/gbrowse/htdocs # # default ITAG config enabled 1 pipeline_base /export/shared/tomato_genome/itagpipeline/itag releases_base /export/prod/private/genomes/solanum_lycopersicum/annotation # cview_db_backend cxgn

#how to find blast stuff blast_path "" blast_db_path /export/prod/blast/databases/current preselected_blastdb 224 jbrowse_path /jbrowse_solgenomics/?data=data/json

Set the the Blast DB (by species and reference genome) used for getting the marker flanking sequence

flanking_sequence_blast_db Triticum aestivum|RefSeq_v1|4,Triticum durum|Triticum durum|5

flanking_sequence_blast_db

#bin directory used by cluster nodes cluster_shared_bindir /export/prod/bin

#the shared temp directory used by cluster nodes cluster_shared_tempdir /export/prod/tmp gbs_temp_data /export/prod/public

cluster_host ""

#how verbose we want the warnings to be in the apache error log verbose_warnings 1

Insitu file locations

insitu_fullsize_dir /export/prod/public/images/insitu/processed insitu_fullsize_url /export/images/insitu/processed insitu_display_dir /export/prod/public/images/insitu/display insitu_display_url /export/images/insitu/display insitu_input_dir /export/prod/public/images/insitu/incoming

#path to our production_ftp site ftpsite_root /export/prod/public ftpsite_url ftp://ftp.solgenomics.net #path to the pucebaboon temperature sensor file: pucebaboon_file /export/prod/public/digitemp.out

#path for archving uploaded files archive_path /export/prod/sgn_archive

#path for Cache::File system. used by CXGN::Dataset::Cache

cache_file_path /export/prod/sgn_cache

#site overall identifier prefix used for site specific data #such as stocks, unignes (yet to be implemented) and other datatypes #for example, uploading barcode phenotyping data will not work without this key (see LCXGN::Stock::StockBarcode ) identifier_prefix SGN

#default genotyping protocol to use: default_genotyping_protocol undefined(set this in sgn_local.conf)

genotyping_server_host NULL genotyping_server_username NULL genotyping_server_password NULL genotyping_server_token NULL

#HIDAP Shiny Server Support hidap_enabled 0

#BrAPI params supportedCrop Cassava

#Expression Atlas Connection has_expression_atlas 0 expression_atlas_url 0

#Sampling trial tissue types sample_tissue_types leaf,root,stem,seed,fruit,tuber

#Homepage controller customization homepage_display_phenotype_uploads 0

banana ordering system

ordering_service_name NULL ordering_service_url https://ona.io ordering_service_username ONAUSER ordering_service_password ONAPASS

#ODK Services odk_crossing_data_service_name NULL odk_crossing_data_service_url https://ona.io odk_crossing_data_service_username ONAUSER odk_crossing_data_service_password ONAPASS odk_crossing_data_test_form_name NULL odk_crossing_data_separate_wishlist_by_location 0 odk_phenotyping_data_service_name NULL odk_phenotyping_data_service_url https://bio.smap.com.au odk_phenotyping_data_service_username SMAPUSER odk_phenotyping_data_service_password SMAPPASS crontab_file NULL crontab_log_filepath NULL

#Transcriptomics protocol options library_method_options 3RNA-Seq, Small RNA-seq, Poly(A)-Enriched Methods (mRNA-Seq), Total RNA-Seq (ribo-depleted), Single-Cell RNA-Seq (scRNA-Seq), Iso-Seq, Spatial Transcriptomics , Extracellular RNA-Seq instrument_model_options NovaSeq X Plus, NovaSeq X, NovaSeq 6000, NextSeq 2000, NextSeq 1000, NextSeq 500, NextSeq 550, MiSeq, HiSeq 2500, HiSeq 3000/4000, HiSeq X, Sequel IIe, REvio, PacBio RSII, PromethION 48, PromethION 24, GridION X5, MinION Mk1C, MinION Mk1B,Flongle, Chromium iX, Chromium X, Visium, DNBSEQ-T7, DNBSEQ-G400 (MGISEQ-2000), DNBSEQ-G50 (MGISEQ-200), Evercode, GEXSCOPE, Ion Proton, Ion S5, Ion S5 XL layout_options Single-end, Paired-end, mate-paire, single-molecule, single-cell, long-read, exon capture mapping_software_options HISAT2, STAR, TopHat2, Bowtie2, Subjunc, GATK, MapSplice sequencing_platform_options Illumina, PacBio, Oxford Nanopore Technologies, 10C genomics Chromium, BGI/MGI, Element Biosciences (AVITI), Parse Biiosciences(Evercode), Singleron (GEXSCOPE), Slide-seq, MERFISH/seqFISH, Thermo Fisher Ion Torrent , BGI Small RNA-seq, na_extraction_method_options RNeasy Mini Kit, RNeasy Plus Mini Kit, RNeasy Plant Mini Kit, Thermo Fisher GeneJET RNA Purification Kit, TRIzol (Invitrogen), Zymo Quick-RNA Plant Kit, Zymo Quick-RNA Fungal/Bacterial Kit, Nucleospin RNA Plant Kit, Biozym RNAprep Plant Kit, CTAB Method, LiCl Method, TRIzol, Dynabeads mRNA DIRECT Kit , Dynabeads mRNA Purification Kit, Beckman Coulter Agencourt RNAClean XP Kit, Nucleospin RNA Kit

#Authorized Clients for SSO

authorized_clients_JSON {"TEST://":"TEST","fieldbook://":"Field Book App","https://apps.cipotato.org/hidap_sbase/":"HIDAP","https://phenoapps.org/field-book":"Field Book App","https://fieldbook.phenoapps.org/": "Field Book App","https://phenoapps.org/coordinate":"Coordinate App","https://phenoapps.org/intercross":"Intercross App","https://snpsnapp.breedbase.org":"snpsnapp","https://climmob.net":"ClimMob", "https://synonyms.triticeaetoolbox.org":"BrAPI Synonym Search Tool"}

simsearch_datadir /home/production/simsearch_data

version sgn-311.0-236 version_updated 2021-12-23T19:04:41Z

<oidc_client>

# Create OAuth client ID in the cloud console: https://console.cloud.google.com/apis/credentials

# Authorized JavaScript origins: https://

# Authorized redirect URIs: https:///authenticate/oidc/google/callback

client_id .apps.googleusercontent.com # [REQUIRED] Client ID in google (XXX.apps.googleusercontent.com)

client_secret # [REQUIRED] Client Secret in google

well_known_url https://accounts.google.com/.well-known/openid-configuration # [REQUIRED] Well Known Configuration

auto_provision 0 # [OPTIONAL] If email does not exist in database, don't create new user

client_id # [REQUIRED] Client ID in keycloak

client_secret # [REQUIRED] Client ID in keycloak

well_known_url https:///auth/realms//.well-known/openid-configuration # [REQUIRED] Well Known Configuration

code_challenge_method S256 # [OPTIONAL] PKCE code challenge method

auto_provision 1 # [OPTIONAL] If email does not exist in database, do create new user

</oidc_client>

root@b8da7160b875:~/cxgn/sgn#

Clone this wiki locally