GLUE for virus sequence data, with a focus on variation, evolution and sequence interpretation.
Installation on Ubuntu
http://tools.glue.cvr.ac.uk/#/installation
Install Java
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install oracle-java8-set-default
java -version
Install MySQL
sudo apt install mysql-server
sudo mysql
create user 'gluetools'@'localhost' identified by 'glue12345';
create database GLUE_TOOLS character set UTF8;
grant all privileges on GLUE_TOOLS.* to 'gluetools'@'localhost';
exit
Test DB – login with user gluetools
mysql -u gluetools --password=glue12345
Install GLUE
Download the GLUE install zip from the GLUE download page. Unzip the GLUE install zip file in a convenient location (e.g. /home/fred).
wget http://tools.glue.cvr.ac.uk/downloads/glueInstallDir-1.1.6.zip
Insatll unzip
sudo apt install unzip
Unzip
unzip glueInstallDir-1.1.6.zip
Add GLUE_HOME to your bash path
Edit ~$.bashrc with
nano /home/user/.bashrc
export GLUE_HOME=/home/user/gluetools export PATH=${PATH}:${GLUE_HOME}/bin
Restart terminal for paths to take effect.
Make sure the bash script is executable:
chmod u+x /home/user/gluetools/bin/gluetools.sh
Download GLUE Engine
Download the GLUE engine jar file from the GLUE download page. Place it inside the gluetools/lib directory.
cd /home/user/gluetools/lib
wget http://tools.glue.cvr.ac.uk/downloads/gluetools-core-1.1.6.jar
Edit GLUE Config
In a text editor, load the XML file gluetools/conf/gluetools-config.xml. You will need to make sure that the database section specifies the correct MySQL username, password and database name as necessary, by editing the contents of the username, password and jdbcUrl elements.
nano /home/user/gluetools/conf/gluetools-config.xml
gluetools glue12345 MySQL jdbc:mysql://localhost:3306/GLUE_TOOLS?characterEncoding=UTF-8
Running the GLUE command line
gluetools.sh
Exit GLUE
exit
Software integration: BLAST+
Download and install BLAST+ 2.2.31 from NCBI’s BLAST+ FTP page.
wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.31/ncbi-blast-2.2.31+-x64-linux.tar.gz
tar xvzf ncbi-blast-2.2.31+-x64-linux.tar.gz
To integrate BLAST+ into GLUE, load the XML file gluetools/conf/gluetools-config.xml in a text editor.
gluetools.core.programs.blast.blastn.executable /home/user/ncbi-blast-2.2.31+/bin/blastn gluetools.core.programs.blast.tblastn.executable /home/user/ncbi-blast-2.2.31+/bin/tblastn gluetools.core.programs.blast.makeblastdb.executable /home/user/ncbi-blast-2.2.31+/bin/makeblastdb gluetools.core.programs.blast.temp.dir /home/user/gluetools/tmp/blastfiles gluetools.core.programs.blast.db.dir /home/user/gluetools/tmp/blastdbs gluetools.core.programs.blast.search.threads 4
Software integration: MAFFT
Download MAFFT from the CBRC MAFFT page and install it locally.
Download https://mafft.cbrc.jp/alignment/software/linux.html
wget https://mafft.cbrc.jp/alignment/software/mafft_7.407-1_amd64.deb
sudo dpkg -i mafft_x.xxx-x_amd64.deb
gluetools.core.programs.mafft.executable /usr/bin/mafft gluetools.core.programs.mafft.cpus 4 gluetools.core.programs.mafft.temp.dir /home/user/gluetools/tmp/mafftfiles
Software integration: RAxML
GLUE uses RAxML as part of its maximum likelihood genotyping procedure, and for general phylogenetics.
We suggest RAxML be compiled locally so that it is optimised for your hardware. Instructions can be found at the Exelixis Lab RAxML page.
git clone https://github.com/stamatak/standard-RAxML.git
cd standard-RAxML
make -f Makefile.AVX.gcc
This will generate a RAxML executable called raxmlHPC-AVX.
Add the location to the gluetools config.
gluetools.core.programs.raxml.raxmlhpc.executable /home/user/standard-RAxML/raxmlHPC-AVX gluetools.core.programs.raxml.raxmlhpc.cpus 4 gluetools.core.programs.raxml.temp.dir /home/user/gluetools/tmp/raxmlfiles
Example project
http://tools.glue.cvr.ac.uk/#exampleProject
cd /home/user/gluetools/projects
wget http://tools.glue.cvr.ac.uk/downloads/exampleProject-1.1.6.zip
unzip exampleProject-1.1.6.zip
Command line interpreter
http://tools.glue.cvr.ac.uk/#/interactiveCommandLine
cd ~/gluetools/projects/exampleProject
gluetools.sh
In GLUE
run file exampleProject.glue
Offline HCV-GLUE
http://hcv.glue.cvr.ac.uk/#/aboutGlueProject
Download an HCV-GLUE project build
gunzip -c ncbi_hcv_glue.sql.gz | mysql --user=gluetools --password=glue12345 GLUE_TOOLS
cd ~/gluetools/projects
gluetools.sh
list project
project hcv
Example use: Combined genotyping and drug resistance analysis reports
This first example will produce a report for a FASTA file, e.g. resistanceGeno1.fasta. A preview of the JSON output is available here.
gluetools.sh -p cmd-result-format:json -EC -i project hcv module hcvDRReporter invoke-function reportFasta resistanceGeno1.fasta
19:00:23.978 NashornJsScript WARNING: The convertTableToObjects option is deprecated. Wrap the call to glue.command(...) with glue.tableToObjects(...) instead. 19:01:56.434 NashornJsScript WARNING: The convertTableToObjects option is deprecated. Wrap the call to glue.command(...) with glue.tableToObjects(...) instead. 19:01:56.467 NashornJsScript WARNING: The convertTableToObjects option is deprecated. Wrap the call to glue.command(...) with glue.tableToObjects(...) instead. 19:01:56.649 NashornJsScript WARNING: The convertTableToObjects option is deprecated. Wrap the call to glue.command(...) with glue.tableToObjects(...) instead. Exception at line 1 of inline-command Error: Required property "showMatchesAsTable" missing from element "scan" at recastException (:75) at command ( :126) at (hcvDRReporter.js:39) at forEach ( :161) at (hcvDRReporter.js:38) at inMode ( :133) at (hcvDRReporter.js:37) at forEach ( :161) at reportFasta (hcvDRReporter.js:26) Cause: Required property "showMatchesAsTable" missing from element "scan"
This example will produce a report for a SAM/BAM file, e.g. ngsData.bam. A preview of the JSON output is available here.
gluetools.sh -p cmd-result-format:json -EC -i project hcv module hcvDRReporter invoke-function reportBam ngsData.bam
{ "bamReport":{ "bamFilePath":"ngsData.bam", "samReferenceResults":[ { "id":"RS15005637-A_S51.consensus1", "samReference":{ "name":"RS15005637-A_S51.consensus1", "length":9266, "index":0, "species":null, "assembly":null }, "isForwardHcv":true, "isReverseHcv":false, "genotypingResult":{ "queryName":"RS15005637-A_S51.consensus1", "genotypeFinalClade":"AL_1", "genotypeCladeBalance":"AL_1:100.00%", "genotypeClosestMemberAlignmentName":"AL_1a", "genotypeClosestMemberSourceName":"ncbi-refseqs", "genotypeClosestMemberSequenceID":"HQ850279", "genotypeClosestTargetAlignmentName":"AL_1a", "genotypeClosestTargetSourceName":"ncbi-refseqs", "genotypeClosestTargetSequenceID":"HQ850279", "subtypeFinalClade":"AL_1a", "subtypeCladeBalance":"AL_1a:100.00%", "subtypeClosestMemberAlignmentName":"AL_1a", "subtypeClosestMemberSourceName":"ncbi-refseqs", "subtypeClosestMemberSequenceID":"HQ850279", "subtypeClosestTargetAlignmentName":"AL_1a", "subtypeClosestTargetSourceName":"ncbi-refseqs", "subtypeClosestTargetSequenceID":"HQ850279" }, "licensedDrugRegimens":[ { "drugRegimen":{ "id":"gzr_ebr", "displayName":"grazoprevir/elbasvir ± ribavirin", "shortDisplayName":"GZR/EBR", "daaDrugsInRegimen":{ "drug":[ { "id":"elbasvir", "categoryId":"NS5A_inhibitor", "categoryDisplayName":"NS5A inhibitor" }, { "id":"grazoprevir", "categoryId":"NS3_inhibitor", "categoryDisplayName":"NS3/4A protease inhibitor" } ] } }, "recommendationLevel":"available" }, { "drugRegimen":{ "id":"obv_ptv_r_dbv", "displayName":"ombitasvir/paritaprevir/ritonavir + dasabuvir ± ribavirin", "shortDisplayName":"OBV/PTV-r/DBV", "daaDrugsInRegimen":{ "drug":[ { "id":"dasabuvir", "categoryId":"NS5B_inhibitor", "categoryDisplayName":"NS5B RNA polymerase inhibitor" }, { "id":"ombitasvir", "categoryId":"NS5A_inhibitor", "categoryDisplayName":"NS5A inhibitor" }, { "id":"paritaprevir", "categoryId":"NS3_inhibitor", "categoryDisplayName":"NS3/4A protease inhibitor" } ] } }, "recommendationLevel":"available" }, { "drugRegimen":{ "id":"sof_dcv", "displayName":"sofosbuvir + daclatasvir ± ribavirin", "shortDisplayName":"SOF/DCV", "daaDrugsInRegimen":{ "drug":[ { "id":"daclatasvir", "categoryId":"NS5A_inhibitor", "categoryDisplayName":"NS5A inhibitor" }, { "id":"sofosbuvir", "categoryId":"NS5B_inhibitor", "categoryDisplayName":"NS5B RNA polymerase inhibitor" } ] } }, "recommendationLevel":"available" }, { "drugRegimen":{ "id":"sof_ldv", "displayName":"sofosbuvir/ledipasvir ± ribavirin", "shortDisplayName":"SOF/LDV", "daaDrugsInRegimen":{ "drug":[ { "id":"ledipasvir", "categoryId":"NS5A_inhibitor", "categoryDisplayName":"NS5A inhibitor" }, { "id":"sofosbuvir", "categoryId":"NS5B_inhibitor", "categoryDisplayName":"NS5B RNA polymerase inhibitor" } ] } }, "recommendationLevel":"available" }, { "drugRegimen":{ "id":"sof_sim", "displayName":"sofosbuvir + simeprevir ± ribavirin", "shortDisplayName":"SOF/SIM", "daaDrugsInRegimen":{ "drug":[ { "id":"simeprevir", "categoryId":"NS3_inhibitor", "categoryDisplayName":"NS3/4A protease inhibitor" }, { "id":"sofosbuvir", "categoryId":"NS5B_inhibitor", "categoryDisplayName":"NS5B RNA polymerase inhibitor" } ] } }, "recommendationLevel":"suboptimal" }, { "drugRegimen":{ "id":"sof_vel", "displayName":"sofosbuvir/velpatasvir ± ribavirin", "shortDisplayName":"SOF/VEL", "daaDrugsInRegimen":{ "drug":[ { "id":"sofosbuvir", "categoryId":"NS5B_inhibitor", "categoryDisplayName":"NS5B RNA polymerase inhibitor" }, { "id":"velpatasvir", "categoryId":"NS5A_inhibitor", "categoryDisplayName":"NS5A inhibitor" } ] } }, "recommendationLevel":"available" } ], "targetRefName":"REF_1a_HQ850279", "easlNgsScanResult":[ { "referenceName":"REF_MASTER_NC_004102", "featureName":"NS5A", "variationName":"RAS_NS5A_31M", "readsPresent":90, "pctPresent":31.690140845070424, "readsAbsent":194, "pctAbsent":68.30985915492958, "rasDetails":[ { "easlOfficialGuidance":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "drugCategory":"NS5A_inhibitor", "drugCategoryDisplayName":"NS5A inhibitor", "cladeName":"AL_1a", "cladeDisplayName":"HCV Subtype 1a", "clinicalFinding":[ { "clinicalStudyName":"c_edge_te", "clinicalStudyDisplayName":"C-EDGE TE", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516351708", "publicationID":"Kwo_et_al_2017", "publication":"Gastroenterology", "publicationDisplayName":"Kwo et al., 2017", "pubLocation":"152(1):164-175", "authors":"Kwo P, Gane EJ, Peng CY, Pearlman B, Vierling JM, Serfaty L, Buti M, Shafran S, Stryszak P, Lin L, Gress J, Black S, Dutko FJ, Robertson M, Wahl J, Lupinacci L, Barr E, Haber B", "title":"Effectiveness of Elbasvir and Grazoprevir Combination, With or Without Ribavirin, for Treatment-Experienced Patients With Chronic Hepatitis C Infection", "year":2017 }, { "clinicalStudyName":"c_edge_tn", "clinicalStudyDisplayName":"C-EDGE TN", "webLink":"http://annals.org/aim/article/2279766/grazoprevir-elbasvir-combination-therapy-treatment-naive-cirrhotic-noncirrhotic-patients-chronic", "publicationID":"Zeuzem_et_al_2015a", "publication":"Annals of Internal Medicine", "publicationDisplayName":"Zeuzem et al., 2015a", "pubLocation":"163(1):1-13", "authors":"Zeuzem S, Ghalib R, Reddy KR, Pockros PJ, Ben Ari Z, Zhao Y, Brown DD, Wan S, DiNubile MJ, Nguyen BY, Robertson MN, Wahl J, Barr E, Butterton JR", "title":"Grazoprevir-Elbasvir Combination Therapy for Treatment-Naive Cirrhotic and Noncirrhotic Patients With Chronic Hepatitis C Virus Genotype 1, 4, or 6 Infection: A Randomized Trial", "year":2015 }, { "clinicalStudyName":"ion_post_hoc", "clinicalStudyDisplayName":"Post-hoc pooled ION trial data analysis", "webLink":"http://onlinelibrary.wiley.com/doi/10.1002/hep.28181/pdf", "publicationID":"Zeuzem_et_al_2015b", "publication":"Hepatology 2015", "publicationDisplayName":"Zeuzem et al., 2015b", "pubLocation":"62:254A", "authors":"Zeuzem S, Mizokami M, Pianko S, Mangia A, Han KH, Martin R, et al.", "title":"Prevalence of Pre-Treatment NS5A Resistance Associated Variants in Genotype 1 Patients Across Different Regions Using Deep Sequencing and Effect on Treatment Outcome with LDV/SOF", "year":2015 } ], "drugGuideline":[ { "drugGuidelineResistedDrug":"ledipasvir", "drugGuidelineSource":"EASL", "drugGuidelineText":"If reliable NS5A resistance testing is performed, treatment-experienced, DAA-naïve patients infected with genotype 1a with or without compensated cirrhosis who have NS5A RASs that confer high-level resistance to ledipasvir (M28A/G/T, Q30E/G/H/K/R, L31M/V, P32L/S, H58D, and/or Y93C/H/N/S) detected at baseline should be treated with the fixed-dose combination of sofosbuvir and ledipasvir for 12 weeks with ribavirin, whereas those without ledipasvir RASs at baseline can be treated with the fixed-dose combination of sofosbuvir and ledipasvir for 12 weeks without ribavirin (B1)." }, { "drugGuidelineResistedDrug":"elbasvir", "drugGuidelineSource":"EASL", "drugGuidelineText":"If reliable NS5A resistance testing is performed, treatment-naïve and treatment-experienced patients infected with subtype 1a with or without compensated cirrhosis should receive the combination of grazoprevir and elbasvir for 16 weeks with daily weight-based ribavirin (1000 or 1200 mg in patients <75 kg or ≥75 kg, respectively) if their HCV RNA level is >800,000 IU/ml and NS5A RASs that confer resistance to elbasvir (M28A/G/T, Q30D/E/G/H/K/L/R, L31F/M/V, H58D and/or Y93C/H/N/S) are present at baseline. Patients infected with subtype 1a with or without compensated cirrhosis with an HCV RNA level ≤800,000 IU/ml and those with an HCV RNA level >800,000 IU/ml without elbasvir NS5A RASs at baseline should receive the combination of grazoprevir and elbasvir for 12 weeks without ribavirin (B1)." } ] } } ] } ], "inVitroNgsScanResult":[ { "referenceName":"REF_MASTER_NC_004102", "featureName":"NS3", "variationName":"RAS_NS3_170V", "readsPresent":334, "pctPresent":80.28846153846153, "readsAbsent":82, "pctAbsent":19.71153846153846, "rasDetails":[ { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS3", "rasName":"RAS_NS3_170V", "rasRenderedName":"NS3:170V", "rasSubstitutions":"170V", "resistedDrug":"asunaprevir", "publication":{ "id":"Pawlotsky_2016", "displayName":"Pawlotsky, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516300555" }, "minFoldChange":2, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS3", "rasName":"RAS_NS3_170V", "rasRenderedName":"NS3:170V", "rasSubstitutions":"170V", "resistedDrug":"paritaprevir", "publication":{ "id":"Pawlotsky_2016", "displayName":"Pawlotsky, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516300555" }, "minFoldChange":2, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS3", "rasName":"RAS_NS3_170V", "rasRenderedName":"NS3:170V", "rasSubstitutions":"170V", "resistedDrug":"simeprevir", "publication":{ "id":"Pawlotsky_2016", "displayName":"Pawlotsky, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516300555" }, "minFoldChange":2, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } } ] }, { "referenceName":"REF_MASTER_NC_004102", "featureName":"NS5A", "variationName":"RAS_NS5A_31M", "readsPresent":90, "pctPresent":31.690140845070424, "readsAbsent":194, "pctAbsent":68.30985915492958, "rasDetails":[ { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"daclatasvir", "publication":{ "id":"Lontok_et_al_2015", "displayName":"Lontok et al., 2015", "webLink":"http://onlinelibrary.wiley.com/doi/10.1002/hep.27934/abstract" }, "minFoldChange":105, "maxFoldChange":105, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"daclatasvir", "publication":{ "id":"Pawlotsky_2016", "displayName":"Pawlotsky, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516300555" }, "minFoldChange":100, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"daclatasvir", "publication":{ "id":"Sarrazin_2016", "displayName":"Sarrazin, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0168827815006297" }, "minFoldChange":100, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"elbasvir", "publication":{ "id":"Pawlotsky_2016", "displayName":"Pawlotsky, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516300555" }, "minFoldChange":100, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"ledipasvir", "publication":{ "id":"Lontok_et_al_2015", "displayName":"Lontok et al., 2015", "webLink":"http://onlinelibrary.wiley.com/doi/10.1002/hep.27934/abstract" }, "minFoldChange":554, "maxFoldChange":554, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"ledipasvir", "publication":{ "id":"Pawlotsky_2016", "displayName":"Pawlotsky, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516300555" }, "minFoldChange":100, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"ledipasvir", "publication":{ "id":"Sarrazin_2016", "displayName":"Sarrazin, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0168827815006297" }, "minFoldChange":100, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"ombitasvir", "publication":{ "id":"Pawlotsky_2016", "displayName":"Pawlotsky, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516300555" }, "minFoldChange":100, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } }, { "inVitroResistanceFinding":{ "rasReferenceSequence":"REF_MASTER_NC_004102", "rasFeature":"NS5A", "rasName":"RAS_NS5A_31M", "rasRenderedName":"NS5A:31M", "rasSubstitutions":"31M", "resistedDrug":"velpatasvir", "publication":{ "id":"Pawlotsky_2016", "displayName":"Pawlotsky, 2016", "webLink":"http://www.sciencedirect.com/science/article/pii/S0016508516300555" }, "minFoldChange":100, "maxFoldChange":null, "repliconCladeId":"AL_1a", "repliconCladeDisplayName":"HCV Subtype 1a" } } ] } ] } ] } }
Project
http://tools.glue.cvr.ac.uk/#/buildYourOwnProject