From 3a1446e06bbda39312c002b427c99b698c027b05 Mon Sep 17 00:00:00 2001 From: hujing Date: Wed, 12 Oct 2022 02:26:26 +0800 Subject: [PATCH 1/7] add trinity config --- .DS_Store | Bin 6148 -> 10244 bytes .../openeuler-bisheng2-trinity-2.14.0.def | 35 + .../openeuler-gcc-9.3.0-trinity-2.14.0.def | 35 + doc/.DS_Store | Bin 6148 -> 6148 bytes doc/trinity/.DS_Store | Bin 0 -> 6148 bytes ...25\346\212\245\345\221\212\343\200\213.md" | 727 ++++++++++++++++++ ...15\346\214\207\345\215\227\343\200\213.md" | 318 ++++++++ package/boost/1.72.0/clang/install.sh | 2 +- package/bowtie2/2.4.5/install.sh | 22 + package/jellyfish/2.3.0/install.sh | 10 + package/salmon/1.9.0/bisheng/install.sh | 13 + package/salmon/1.9.0/install.sh | 8 + templates/.DS_Store | Bin 0 -> 6148 bytes .../2.14.0/data.trinity.arm.cpu.config | 0 .../2.14.0/data.trinity.x86.cpu.config | 50 ++ test/test-trinity.sh | 16 + 16 files changed, 1235 insertions(+), 1 deletion(-) create mode 100644 container/openeuler-bisheng2-trinity-2.14.0.def create mode 100644 container/openeuler-gcc-9.3.0-trinity-2.14.0.def create mode 100644 doc/trinity/.DS_Store create mode 100644 "doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\347\232\204\350\275\257\344\273\266\346\265\213\350\257\225\346\212\245\345\221\212\343\200\213.md" create mode 100644 "doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" create mode 100644 package/bowtie2/2.4.5/install.sh create mode 100644 package/jellyfish/2.3.0/install.sh create mode 100644 package/salmon/1.9.0/bisheng/install.sh create mode 100644 package/salmon/1.9.0/install.sh create mode 100644 templates/.DS_Store create mode 100644 templates/trinity/2.14.0/data.trinity.arm.cpu.config create mode 100644 templates/trinity/2.14.0/data.trinity.x86.cpu.config create mode 100644 test/test-trinity.sh diff --git a/.DS_Store b/.DS_Store index 7cbe275046a42350e05301fa3e51caa9dcc81710..a3d6dcd077a6d3b7ff2f87cbccb55a237bd4090c 100644 GIT binary patch literal 10244 zcmeHMO>h)N6z(?($qX6D0Ezs#16x@r0Rt=v7=EiZe+rTi%qCm`IhOTpYoNR$vFV`WrRv6-bXJ*zW{6iVhI1+*u`AU1J{Me-({(OU=v z0s;YnfIvVXAP~3}5WwGTR^%#9MJo^x2nYlw5n%U26f2{NkdAX2Tpid1DFD)P6bA*r zF%JlAq9IL$bez+`6vyP*1B9j!rWnA@Q6FX9ktRYq&M7x1z|9GSGeel6KrlPnMT71H z5}b-wARrK!i2%#p6_O<$=I#E}{5|VrJkMbUWyC~vHZwwpGme)*$;HgDV^cpK{{p14 z@;Mcia;01)A50E;BT3)z3$(?^A7ES$4v{H+8=3vKHImk9T0Pe{Y}d*M2DWKom%%>U zHNBA*ui%tjJ1QTRb|tadUmNv1!v-eROndL%cq^sqwC{F-5M8ZP?zOKIY_H z?-90I4E^wmAoDms*`CI)a5E;IvA<$6?>e4)gpGi;0-rK+2*?q9&Y)AfD~OYYs$t@w zntjv%2Q;&6th8?i$Si7y7F)SXlqE|p@ny*+l(|*vJiRZ~KcEh#wS`4I`>tW%_FTH( z%2T9it(u~b?9O`bzP!cseOb>bHs>U>)ZF+R=(e$S<5wT_ek%EZTdrfMVs0g$Lev7oTV&)dS#+| z$jiuG2HwET*hoz;ST)ReGI%fN5Iu z7Pe++utvXA?V-2_Su=RY^=e%0IfhZBXp~DD)y;aZV`MBx(M&$i7ImB6SLFCB+8!?4 zsn+VLte4B-7OBEz&3dbTh)vsJP`_)~a@mqDqYk%rcb%^HGhMT31`ArYWNEd&NAHxi zPvrqRWaO=`5e)B%P=22*2WO3PHd?!B``)Comnk*dE!uc<;IZ-xM2;n%I1?OAEU}g! zQLJ=Q9Ozgg9tvcllLpd8I>=#?C!^#nd77LfZ;?ynL-INKn*2b1CD#C;0xDrHR6z|a zgOyMZo1qD|z*cC1F4za%kc2@P0vnD3g%fZRM&T4Z45#5yI17)#Q}8^z058Hz@EW`U zZ^8w58{UJ<@G*P>pTSl52EK*w;Agl7zr!C=xim+rlw@g<6p?gkxfGYSO53FE(q5@c zN=b%vRPv-@zJ956T^%fKFqEG}I(yKC_po$+_MnU0vupRgYR7*j=&sBU!mOtDw#Cs^ zYd37#va@;89l8IOTy|<81m1r`%mm&ac*iu)oe1JlUB03efY(EkhiET`jden1(W_O4 zy<;n73>$4u$gW<4>>jOxvypY{WeibG3RpGL(5PS_YGon2t_fM-jJkb?f+4AuhwSnM zvLs+4k+yam=CUT=EPua3u9EM`FXT`3_xZ30mcShlM=x)IU9dOs^Ca}bAxOhv$bbns zaKVG)=<%mu3?77WcnJOd40`sbXD=VzuIH!RLHoWPrY14I(g5Kn{1lpGj%DHFS>Atxa#Ga{G1Zdeg&pcwmO3dG=!R&~&?=5qWuWrEgEK-z|%Z zSBM%N{cg15aI90K4{?O~0`E+XO=f@@UF8HJF7Q}7bm<^`@ge-k!dEE5 zj*jnFHXKCYkXvSe8Mx2DntN=}{r}CJzu~2NHo+2aT!~knX#>qTPQjCn7FEX34Y<|G3#k`rFgP#Ma2q^NM bc{0C%i9t^ diff --git a/doc/trinity/.DS_Store b/doc/trinity/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0> left.fa +CMD: seqtk-trinity seq -A -R 2 <(gunzip -c /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/reads.right.fq.gz) >> right.fa +CMD finished (0 seconds) +CMD finished (0 seconds) +CMD: touch left.fa.ok +CMD finished (0 seconds) +CMD: touch right.fa.ok +CMD finished (0 seconds) +Done converting input files.CMD: cat left.fa right.fa > both.fa +CMD finished (0 seconds) +CMD: touch both.fa.ok +CMD finished (0 seconds) +-kmer counting. +------------------------------------------- +----------- Jellyfish -------------------- +-- (building a k-mer catalog from reads) -- +------------------------------------------- + +CMD: jellyfish count -t 1 -m 25 -s 100000000 both.fa +CMD finished (1 seconds) +CMD: jellyfish histo -t 1 -o jellyfish.K25.min2.kmers.fa.histo mer_counts.jf +CMD finished (0 seconds) +CMD: jellyfish dump -L 2 mer_counts.jf > jellyfish.K25.min2.kmers.fa +CMD finished (0 seconds) +CMD: touch jellyfish.K25.min2.kmers.fa.success +CMD finished (0 seconds) +-generating stats files +CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/..//Inchworm/bin/fastaToKmerCoverageStats --reads left.fa --kmers jellyfish.K25.min2.kmers.fa --kmer_size 25 --num_threads 1 > left.fa.K25.stats +CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/..//Inchworm/bin/fastaToKmerCoverageStats --reads right.fa --kmers jellyfish.K25.min2.kmers.fa --kmer_size 25 --num_threads 1 > right.fa.K25.stats +-reading Kmer occurrences... +-reading Kmer occurrences... + + done parsing 100973 Kmers, 100873 added, taking 0 seconds. + + done parsing 100973 Kmers, 100873 added, taking 0 seconds. +STATS_GENERATION_TIME: 1 seconds. +STATS_GENERATION_TIME: 1 seconds. +CMD finished (1 seconds) +CMD finished (1 seconds) +CMD: touch left.fa.K25.stats.ok +CMD finished (0 seconds) +CMD: touch right.fa.K25.stats.ok +CMD finished (0 seconds) +-sorting each stats file by read name. +CMD: head -n1 left.fa.K25.stats > left.fa.K25.stats.sort && tail -n +2 left.fa.K25.stats | /usr/bin/sort --parallel=1 -k1,1 -T . -S 1G >> left.fa.K25.stats.sort +CMD: head -n1 right.fa.K25.stats > right.fa.K25.stats.sort && tail -n +2 right.fa.K25.stats | /usr/bin/sort --parallel=1 -k1,1 -T . -S 1G >> right.fa.K25.stats.sort +CMD finished (0 seconds) +CMD finished (0 seconds) +CMD: touch left.fa.K25.stats.sort.ok +CMD finished (0 seconds) +CMD: touch right.fa.K25.stats.sort.ok +CMD finished (0 seconds) +-defining normalized reads +CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/..//util/support_scripts//nbkc_merge_left_right_stats.pl --left left.fa.K25.stats.sort --right right.fa.K25.stats.sort --sorted > pairs.K25.stats +-opening left.fa.K25.stats.sort +-opening right.fa.K25.stats.sort +-done opening files. +CMD finished (0 seconds) +CMD: touch pairs.K25.stats.ok +CMD finished (0 seconds) +CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/..//util/support_scripts//nbkc_normalize.pl --stats_file pairs.K25.stats --max_cov 200 --min_cov 1 --max_CV 10000 > pairs.K25.stats.C200.maxCV10000.accs +30472 / 30575 = 99.66% reads selected during normalization. +0 / 30575 = 0.00% reads discarded as likely aberrant based on coverage profiles. +0 / 30575 = 0.00% reads discarded as below minimum coverage threshold=1 +CMD finished (1 seconds) +CMD: touch pairs.K25.stats.C200.maxCV10000.accs.ok +CMD finished (0 seconds) +-search and capture. +-preparing to extract selected reads from: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/reads.left.fq.gz ... done prepping, now search and capture. +-capturing normalized reads from: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/reads.left.fq.gz +-preparing to extract selected reads from: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/reads.right.fq.gz ... done prepping, now search and capture. +-capturing normalized reads from: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/reads.right.fq.gz +CMD: touch /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/reads.left.fq.gz.normalized_K25_maxC200_minC1_maxCV10000.fq.ok +CMD finished (0 seconds) +CMD: touch /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/reads.right.fq.gz.normalized_K25_maxC200_minC1_maxCV10000.fq.ok +CMD finished (0 seconds) +CMD: ln -sf /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/reads.left.fq.gz.normalized_K25_maxC200_minC1_maxCV10000.fq left.norm.fq +CMD finished (0 seconds) +CMD: ln -sf /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/reads.right.fq.gz.normalized_K25_maxC200_minC1_maxCV10000.fq right.norm.fq +CMD finished (0 seconds) +-removing tmp dir /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/tmp_normalized_reads + + +Normalization complete. See outputs: + /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/reads.left.fq.gz.normalized_K25_maxC200_minC1_maxCV10000.fq + /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/reads.right.fq.gz.normalized_K25_maxC200_minC1_maxCV10000.fq +Monday, October 10, 2022: 22:20:25 CMD: touch /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/normalization.ok +Converting input files. (in parallel)Monday, October 10, 2022: 22:20:25 CMD: cat /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/left.norm.fq | seqtk-trinity seq -r -A -R 1 - >> left.fa +Monday, October 10, 2022: 22:20:25 CMD: cat /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/insilico_read_normalization/right.norm.fq | seqtk-trinity seq -A -R 2 - >> right.fa +Monday, October 10, 2022: 22:20:25 CMD: touch left.fa.ok +Monday, October 10, 2022: 22:20:25 CMD: touch right.fa.ok +Monday, October 10, 2022: 22:20:25 CMD: touch left.fa.ok right.fa.ok +Monday, October 10, 2022: 22:20:25 CMD: cat left.fa right.fa > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa +Monday, October 10, 2022: 22:20:25 CMD: touch /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa.ok +------------------------------------------- +----------- Jellyfish -------------------- +-- (building a k-mer (25) catalog from reads) -- +------------------------------------------- + +* [Mon Oct 10 22:20:25 2022] Running CMD: jellyfish count -t 1 -m 25 -s 100000000 -o mer_counts.25.asm.jf /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa +* [Mon Oct 10 22:20:26 2022] Running CMD: jellyfish dump -L 1 mer_counts.25.asm.jf > jellyfish.kmers.25.asm.fa +* [Mon Oct 10 22:20:26 2022] Running CMD: jellyfish histo -t 1 -o jellyfish.kmers.25.asm.fa.histo mer_counts.25.asm.jf +---------------------------------------------- +--------------- Inchworm (K=25, asm) --------------------- +-- (Linear contig construction from k-mers) -- +---------------------------------------------- + +* [Mon Oct 10 22:20:26 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/Inchworm/bin//inchworm --kmers jellyfish.kmers.25.asm.fa --run_inchworm -K 25 --monitor 1 --num_threads 1 --PARALLEL_IWORM --min_any_entropy 1.0 -L 25 --no_prune_error_kmers > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/inchworm.fa.tmp +Kmer length set to: 25 +Min assembly length set to: 25 +Monitor turned on, set to: 1 +min entropy set to: 1 +setting number of threads to: 1 +-setting parallel iworm mode. +-reading Kmer occurrences... + + [0M] Kmers parsed. + [0M] Kmers parsed. + [0M] Kmers parsed. + [0M] Kmers parsed. + [0M] Kmers parsed. + done parsing 519541 Kmers, 519541 added, taking 1 seconds. + +TIMING KMER_DB_BUILDING 1 s. +Pruning kmers (min_kmer_count=1 min_any_entropy=1 min_ratio_non_error=0.005) +Pruned 4252 kmers from catalog. + Pruning time: 0 seconds = 0 minutes. + +TIMING PRUNING 0 s. +-populating the kmer seed candidate list. +Kcounter hash size: 519541 +Processed 515289 non-zero abundance kmers in kcounter. +-Not sorting list of kmers, given parallel mode in effect. +-beginning inchworm contig assembly. +Total kcounter hash size: 519541 vs. sorted list size: 515289 +num threads set to: 1 +Done opening file. tmp.iworm.fa.pid_29706.thread_0 + + Iworm contig assembly time: 1 seconds = 0.0166667 minutes. + +TIMING CONTIG_BUILDING 1 s. + +TIMING PROG_RUNTIME 2 s. +* [Mon Oct 10 22:20:28 2022] Running CMD: mv /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/inchworm.fa.tmp /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/inchworm.fa +Monday, October 10, 2022: 22:20:28 CMD: touch /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/inchworm.fa.finished +-------------------------------------------------------- +-------------------- Chrysalis ------------------------- +-- (Contig Clustering & de Bruijn Graph Construction) -- +-------------------------------------------------------- + +inchworm_target: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa +bowtie_reads_fa: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa +chrysalis_reads_fa: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa +* [Mon Oct 10 22:20:28 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/support_scripts/filter_iworm_by_min_length_or_cov.pl /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/inchworm.fa 100 10 > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/inchworm.fa.min100 +* [Mon Oct 10 22:20:28 2022] Running CMD: /root/hpcrunner/software/libs/gcc9/bowtie2/2.4.5/bin/bowtie2-build --threads 1 -o 3 /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/inchworm.fa.min100 /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/inchworm.fa.min100 1>/dev/null +* [Mon Oct 10 22:20:28 2022] Running CMD: bash -c " set -o pipefail;/root/hpcrunner/software/libs/gcc9/bowtie2/2.4.5/bin/bowtie2 --local -k 2 --no-unal --threads 1 -f --score-min G,20,8 -x /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/inchworm.fa.min100 /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa | samtools view -@ 1 -F4 -Sb - | samtools sort -m 1073741824 -@ 1 -no /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm.bowtie.nameSorted.bam" +* [Mon Oct 10 22:20:31 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/support_scripts/scaffold_iworm_contigs.pl /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm.bowtie.nameSorted.bam /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/inchworm.fa.min100 > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm_scaffolds.txt +* [Mon Oct 10 22:20:32 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/Chrysalis/bin/GraphFromFasta -i /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/inchworm.fa.min100 -r /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa -min_contig_length 200 -min_glue 2 -glue_factor 0.05 -min_iso_ratio 0.05 -t 1 -k 24 -kk 48 -strand -scaffolding /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm_scaffolds.txt > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm_cluster_welds_graph.txt +* [Mon Oct 10 22:20:32 2022] Running CMD: /usr/bin/sort --parallel=1 -T . -S 2G -k9,9gr /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm_cluster_welds_graph.txt > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm_cluster_welds_graph.txt.sorted +* [Mon Oct 10 22:20:32 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/support_scripts/annotate_chrysalis_welds_with_iworm_names.pl /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/inchworm.fa.min100 /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm_cluster_welds_graph.txt.sorted > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm_cluster_welds_graph.txt.sorted.wIwormNames +* [Mon Oct 10 22:20:32 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/Chrysalis/bin/BubbleUpClustering -i /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/inchworm.fa.min100 -weld_graph /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/iworm_cluster_welds_graph.txt.sorted -min_contig_length 200 -max_cluster_size 25 > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/GraphFromIwormFasta.out +* [Mon Oct 10 22:20:32 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/Chrysalis/bin/CreateIwormFastaBundle -i /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/GraphFromIwormFasta.out -o /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/bundled_iworm_contigs.fasta -min 200 +* [Mon Oct 10 22:20:32 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/Chrysalis/bin/ReadsToTranscripts -i /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa -f /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/bundled_iworm_contigs.fasta -o /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/readsToComponents.out -t 1 -max_mem_reads 50000000 -strand -p 10 +* [Mon Oct 10 22:20:35 2022] Running CMD: /usr/bin/sort --parallel=1 -T . -S 2G -k 1,1n -k3,3nr -k2,2 /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/readsToComponents.out > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/chrysalis/readsToComponents.out.sort +Monday, October 10, 2022: 22:20:35 CMD: mkdir -p /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/read_partitions/Fb_0/CBin_0 +Monday, October 10, 2022: 22:20:35 CMD: touch /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/partitioned_reads.files.list.ok +Monday, October 10, 2022: 22:20:35 CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/support_scripts/write_partitioned_trinity_cmds.pl --reads_list_file /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/partitioned_reads.files.list --CPU 1 --max_memory 1G --run_as_paired --SS_lib_type F --seqType fa --trinity_complete --full_cleanup --no_salmon > recursive_trinity.cmds +Monday, October 10, 2022: 22:20:35 CMD: touch recursive_trinity.cmds.ok +Monday, October 10, 2022: 22:20:35 CMD: touch recursive_trinity.cmds.ok + + +-------------------------------------------------------------------------------- +------------ Trinity Phase 2: Assembling Clusters of Reads --------------------- +------- (involving the Inchworm, Chrysalis, Butterfly trifecta ) --------------- +-------------------------------------------------------------------------------- + +Monday, October 10, 2022: 22:20:35 CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/trinity-plugins/BIN/ParaFly -c recursive_trinity.cmds -CPU 1 -v -shuffle +Number of Commands: 36 + +succeeded(1) 2.77778% completed. +succeeded(2) 5.55556% completed. +succeeded(3) 8.33333% completed. +succeeded(4) 11.1111% completed. +succeeded(5) 13.8889% completed. +succeeded(6) 16.6667% completed. +succeeded(7) 19.4444% completed. +succeeded(8) 22.2222% completed. +succeeded(9) 25% completed. +succeeded(10) 27.7778% completed. +succeeded(11) 30.5556% completed. +succeeded(12) 33.3333% completed. +succeeded(13) 36.1111% completed. +succeeded(14) 38.8889% completed. +succeeded(15) 41.6667% completed. +succeeded(16) 44.4444% completed. +succeeded(17) 47.2222% completed. +succeeded(18) 50% completed. +succeeded(19) 52.7778% completed. +succeeded(20) 55.5556% completed. +succeeded(21) 58.3333% completed. +succeeded(22) 61.1111% completed. +succeeded(23) 63.8889% completed. +succeeded(24) 66.6667% completed. +succeeded(25) 69.4444% completed. +succeeded(26) 72.2222% completed. +succeeded(27) 75% completed. +succeeded(28) 77.7778% completed. +succeeded(29) 80.5556% completed. +succeeded(30) 83.3333% completed. +succeeded(31) 86.1111% completed. +succeeded(32) 88.8889% completed. +succeeded(33) 91.6667% completed. +succeeded(34) 94.4444% completed. +succeeded(35) 97.2222% completed. +succeeded(36) 100% completed. + +All commands completed successfully. :-) + + + +** Harvesting all assembled transcripts into a single multi-fasta file... + +Monday, October 10, 2022: 22:21:36 CMD: find /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/read_partitions/ -name '*inity.fasta' | /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/support_scripts/partitioned_trinity_aggregator.pl --token_prefix TRINITY_DN --output_prefix /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/Trinity.tmp +* [Mon Oct 10 22:21:36 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/support_scripts/salmon_runner.pl Trinity.tmp.fasta /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa 1 +* [Mon Oct 10 22:21:37 2022] Running CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/support_scripts/filter_transcripts_require_min_cov.pl Trinity.tmp.fasta /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir/both.fa salmon_outdir/quant.sf 2 > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir.Trinity.fasta +Monday, October 10, 2022: 22:21:37 CMD: /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/util/support_scripts/get_Trinity_gene_to_trans_map.pl /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir.Trinity.fasta > /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir.Trinity.fasta.gene_trans_map + + +############################################################################# +Finished. Final Trinity assemblies are written to /root/hpcrunner/tmp/trinityrnaseq-v2.14.0/sample_data/test_Trinity_Assembly/trinity_out_dir.Trinity.fasta +############################################################################# + + + +##### Done Running Trinity ##### + +if [ $* ]; then + # check full-length reconstruction stats: + + ${TRINITY_HOME}/util/misc/illustrate_ref_comparison.pl __indiv_ex_sample_derived/refSeqs.fa trinity_out_dir.Trinity.fasta 90 + + ./test_FL.sh --query trinity_out_dir.Trinity.fasta --target __indiv_ex_sample_derived/refSeqs.fa --no_reuse + +fi + +touch test +``` + +## 3.性能测试 + +### 3.1.测试平台信息对比 + +| | arm信息 | x86信息 | +| -------- | --------------------------------------------- | --------------------------- | +| 操作系统 | openEuler 20.09 | openEuler 20.09 | +| 内核版本 | 4.19.90-2110.8.0.0119.oe1.aarch64 | 4.19.90-2003.4.0.0036.oe1.x86_64 | + +### 3.2.测试软件环境信息对比 + +| | arm信息 | x86信息 | +| ----- | ------------- | --------- | +| gcc | bisheng 2.1.0 | gcc 9.3.0 | +| bowtie2 | 2.4.5 | 2.4.5 | +| trinity | 2.14.0 | 2.14.0 | + +### 3.3.测试硬件性能信息对比 + +| | arm信息 | x86信息 | +| ------ | ----------- | ---------- | +| cpu | Kunpeng 920 | Intel(R) Core(TM) i5-8259U| +| 核心数 | 4 | 8 | +| 内存 | 16 GB | 16 GB | +| 磁盘io | 1.3 GB/s | 1.3 MB/s | +| 虚拟化 | KVM | KVM | + +### 3.4.单线程 +单线程运行测试时间对比(五次运行取平均值) +| | arm | x86 | +| -------------- | -------- | -------- | +| 实际CPU时间 | 2m15.058 | 1m19.252s | +| 用户时间 | 2m5.220s | 1m45.283s | + +### 3.5.多线程 + +多线程运行测试时间对比(五次运行取平均值) + +| | arm | x86 | +| ----------- | ---------- | --------- | +| 线程数 | 4 | 4 | +| 实际CPU时间 | 0m58.279s | 0m33.555s | +| 用户时间 | 2m21.631s | 2m16.764s | + +arm多线程时间耗费数据表: + +| 线程 | 1 | 2 | 4 | +| :------------ | -------- | ------- | -------- | +| 用户时间(s) | 135.058 | 83.990 | 58.279 | +| 用户态时间(s) | 125.220 | 132.509 | 141.631 | +| 内核态时间(s) | 8.176 | 8.773 | 9.524 | + +x86多线程时间耗费数据表: +| 线程 | 1 | 2 | 4 | 8 | +| :------------ | -------- | ------- | -------- | ------- | +| 用户时间(s) | 79.252 | 50.657 | 33.555 | 32.992 | +| 用户态时间(s) | 105.283 | 124.320 | 132.276 | 165.228 | +| 内核态时间(s) | 12.283 | 12.512 | 12.276 | 15.676 | + + +## 4.精度测试 + +### 4.1.所选测试案例 + +sample_data/test_Trinity_Assembly/reads.left.fq.gz +sample_data/test_Trinity_Assembly/reads.right.fq.gz + + +### 4.2.获取对比数据 + +arm 运行结果(部分) + +```bash +succeeded(30) 83.3333% completed. +succeeded(31) 86.1111% completed. +succeeded(32) 88.8889% completed. +succeeded(33) 91.6667% completed. +succeeded(34) 94.4444% completed. +succeeded(35) 97.2222% completed. +succeeded(36) 100% completed. + +All commands completed successfully. :-) +``` + +### 4.3.测试总结 +从arm输出结果可以看出所有的测试通过。 \ No newline at end of file diff --git "a/doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" "b/doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" new file mode 100644 index 0000000..9194bfc --- /dev/null +++ "b/doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" @@ -0,0 +1,318 @@ +# 《基于openEuler的Trinity软件移植指南》 + +# 1.介绍 + +- 由布罗德研究所和耶路撒冷希伯来大学开发的Trinity代表了一种从RNA-seq数据高效、可靠地从头重建转录组的新方法。Trinity结合了三个独立的软件模块:Inchworm,Chrysalis和Butterfly,这些模块依次应用于处理大量RNA-seq读取。Trinity将序列数据划分为许多个独立的de Bruijn图,每个图代表给定基因或基因座的转录复杂性,然后独立处理每个图以提取全长剪接同工型,并挑出源自旁系基因的转录本。 + +- 官网地址:https://github.com/trinityrnaseq/trinityrnaseq/wiki + +- GITHUB托管地址:https://github.com/trinityrnaseq/trinityrnaseq + +# 2.环境要求 + +- 操作系统:openeuler arm/x86 (本文档以 x86 架构为例) + +# 3.配置编译环境 + +配置环境指导,手动进行配置依赖环境。 + +## 3.1.环境总览 + +- 编译器:gcc + +- 其他类库:`Cmake`, `Zlib`, `Boost`, `Salmon`, `Jellyfish`, `Samtools`, `Bowtie2` + +- 具体版本和下载地址如下 + +具体版本和下载地址如下 + +| 名称 | 版本 | 软件下载地址 | +| -------- | ------ | ---------------------------------------------------------------------------------------------- | +| gcc | 9.3.0 | | +| CMake | 3.23.1 | | +| Zlib | 1.2.11 | | +| BOOST | 1.72.0 | | +| Salmon | 1.9.0 | | +| Jellyfish| 2.3.0 | | +| Samtools | 1.15.0 | | +| Bowtie2 | 2.4.5 | | + +### 3.2.创建文件夹 + +```bash +mkdir -p $HOME/build +mkdir -p $HOME/install +mkdir -p $HOME/tmp +``` + +### 3.3.安装预设 + +设置环境变量,方便修改自定义安装目录 + +- 编译目录为 $HOME/build , 根据实际情况进行修改 +- 软件安装目录为 $HOME/install , 根据实际情况进行修改 +- 下载目录为 $HOME/tmp , 根据实际情况进行修改 + +```bash +#为了方便自定义软件安装目录 +#环境变量DEP_INSTALL_DIR将在后文中作为软件安装目录的根目录 +export DEP_INSTALL_DIR=$HOME/install +#环境变量DEP_BUILD_DIR将在后文中作为编译的根目录 +export DEP_BUILD_DIR=$HOME/build +#环境变量DEP_DOWNLOAD_DIR将在后文中作为下载文件的保存目录 +export DEP_DOWNLOAD_DIR=$HOME/tmp + +#注: 以上变量只在一次会话中有效。如果中途断开ssh会话,则在后续的安装过程中不会生效,需要重新运行 +``` + +### 3.4.安装环境依赖和gcc编译器 + +```bash +#环境依赖 +yum -y install wget tar libatomic + +#安装gcc编译器 +wget -P $DEP_DOWNLOAD_DIR https://ftp.gnu.org/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz +tar -xf $DEP_DOWNLOAD_DIR/gcc-9.3.0.tar.gz -C $DEP_INSTALL_DIR +sed -i "35s/ftp/http/g" ./contrib/download_prerequisites +./contrib/download_prerequisites +./configure --disable-multilib --enable-languages="c,c++,fortran" --prefix=$1 --disable-static --enable-shared +make -j && make install +#设置环境变量 +echo "export PATH=$DEP_INSTALL_DIR/gcc-9.3.0/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +export CC=`which gcc` +export CXX=`which g++` +``` + +### 3.5.下载并编译`Cmake`, `Zlib`, `Boost`, `Salmon`, `Jellyfish`, `Samtools`, `Bowtie2` +```bash +# 下载CMake +wget https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-x86_64.tar.gz -O $DEP_DOWNLOAD_DIR/cmake-3.23.1.tar.gz +tar -xvf $DEP_DOWNLOAD_DIR/cmake-3.23.1-linux-x86_64.tar.gz -C $DEP_INSTALL_DIR/cmake --strip-components=1 +echo "export PATH=$DEP_INSTALL_DIR/cmake/bin:$PATH" >> ~/.bashrc && source ~/.bashrc + +# 下载并编译Zlib +wget http://downloads.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz -O $DEP_DOWNLOAD_DIR/zlib-1.2.11.tar.gz +tar -xzvf $DEP_DOWNLOAD_DIR/zlib-1.2.11.tar.gz -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/zlib-1.2.11 +./configure --prefix=$DEP_INSTALL_DIR/zlib +make -j && make install +echo "export LD_LIBRARY_PATH=$DEP_INSTALL_DIR/zlib/lib:$LD_LIBRARY_PATH" >> ~/.bashrc && source ~/.bashrc + +# 下载并编译Boost +wget https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.gz -O $DEP_DOWNLOAD_DIR/boost_1_72_0.tar.gz +tar -xvf $DEP_DOWNLOAD_DIR/boost_1_72_0.tar.gz -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/boost_1_72_0.tar.gz +cd boost_1_72_0 +./bootstrap.sh +./b2 install --prefix=$DEP_INSTALL_DIR/boost +echo "export BOOST_ROOT=$DEP_INSTALL_DIR/boost/" >> ~/.bashrc && source ~/.bashrc +echo "export LD_LIBRARY_PATH=$DEP_INSTALL_DIR/boost/lib:$LD_LIBRARY_PATH" >> ~/.bashrc && source ~/.bashrc + +# 下载并编译Salmon +wget https://github.com/COMBINE-lab/salmon/archive/refs/tags/v1.9.0.tar.gz -O $DEP_DOWNLOAD_DIR/v1.9.0.tar.gz +tar -xvf $DEP_DOWNLOAD_DIR/v1.9.0.tar.gz -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/salmon-1.9.0 +CC=`which gcc` CXX=`which g++` cmake -DCMAKE_INSTALL_PREFIX=$DEP_INSTALL_DIR/salmon . +make -j4 +make install +echo "export PATH=$DEP_INSTALL_DIR/salmon/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +echo "export LD_LIBRARY_PATH=$DEP_INSTALL_DIR/salmon/lib:$LD_LIBRARY_PATH" >> ~/.bashrc && source ~/.bashrc + +# 下载并编译Jellyfish +wget https://github.com/gmarcais/Jellyfish/releases/download/v2.3.0/jellyfish-2.3.0.tar.gz -O $DEP_DOWNLOAD_DIR/jellyfish-2.3.0.tar.gz +tar -zxvf $DEP_DOWNLOAD_DIR/ellyfish-2.3.0.tar.gz -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/ellyfish-2.3.0 +./configure --prefix=$DEP_INSTALL_DIR/jellyfish +make -j +make install +echo "export PATH=$DEP_INSTALL_DIR/jellyfish/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +echo "export LD_LIBRARY_PATH=$DEP_INSTALL_DIR/jellyfish/lib:$LD_LIBRARY_PATH" >> ~/.bashrc && source ~/.bashrc + +# 下载并编译Samtools +wget https://github.com/samtools/samtools/releases/download/1.15/samtools-1.15.tar.bz2 -O $DEP_DOWNLOAD_DIR/samtools-1.15.tar.bz2 +tar -xJf $DEP_DOWNLOAD_DIR/samtools-1.15.tar.bz2 -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/samtools-1.15 +./configure --prefix=$DEP_INSTALL_DIR/samtools +make -j +make install +echo "export PATH=$DEP_INSTALL_DIR/samtools/bin:$PATH" >> ~/.bashrc && source ~/.bashrc + +# 下载并编译Bowtie2 +wget https://github.com/BenLangmead/bowtie2/archive/refs/tags/v2.4.5.tar.gz -O $DEP_DOWNLOAD_DIR/v2.4.5.tar.gz +tar -xzf $DEP_DOWNLOAD_DIR/v2.4.5.tar.gz -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/bowtie2-2.4.5 +make -j +make static-libs -j && make STATIC_BUILD=1 -j +mkdir -p $DEP_INSTALL_DIR/bowtie2/bin +mv bowtie2* $DEP_INSTALL_DIR/bowtie2/bin +echo "export PATH=$DEP_INSTALL_DIR/bowtie2/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +``` + +## 4.编译Trinity + +### 4.1.下载并编译Trinity + +获取Trinity软件源码并解压文件 + +```bash + +# 下载源码文件 +wget https://github.com/trinityrnaseq/trinityrnaseq/releases/download/Trinity-v2.14.0/trinityrnaseq-v2.14.0.FULL_with_extendedTestData.tar.gz -O $DEP_DOWNLOAD_DIR/trinityrnaseq-v2.14.0.FULL_with_extendedTestData.tar.gz +# 解压源码文件 +tar -xvf $DEP_DOWNLOAD_DIR/trinityrnaseq-v2.14.0.FULL_with_extendedTestData.tar.gz -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/trinityrnaseq-v2.14.0 +#编译源码 +make -j +mkdir -p $DEP_INSTALL_DIR/trinity/bin +mv Trinity $DEP_INSTALL_DIR/trinity/bin +echo "export PATH=$DEP_INSTALL_DIR/trinity/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +``` + +### 4.2. 运行测试文件 + +运行Trinity项目测试文件 + +```bash +make test_trinity +``` + +## 附A:使用hpcrunner进行一键安装Trinity + +推荐使用hpcrunner进行安装Trinity + +### 1.克隆仓库 + +```bash +git clone https://gitee.com/openeuler/hpcrunner.git +``` + +## 2.初始化hpcrunner 和 安装必要软件包 + +初始化项目助手 + +```bash +cd hpcrunner +source init.sh +``` + +安装必要软件包 + +**arm / x86 需要的软件包不同,根据实际环境进行选择** + +```bash +yum install -y environment-modules git flex wget vim tar unzip coreutils +yum install -y gcc gcc-c++ make cmake automake java python3-devel python3-pip zlib-devel bzip2-devel xz-devel curl-devel openssl-devel ncurses-devel +pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple +``` + +### 3.选择平台对应配置文件 + +- arm平台的配置文件为 `templates/trinity/2.14.0/data.trinity.arm.cpu.config` + + ```bash + ./jarvis -use templates/trinity/2.14.0/data.trinity.arm.cpu.config + ``` + +- x86 平台的配置文件为 `templates/trinity/2.14.0/data.trinity.x86.cpu.config` + + ```bash + ./jarvis -use templates/trinity/2.14.0/data.trinity.x86.cpu.config + ``` + +### 4.下载Trinity源码 + +```bash +./jarvis -d +``` + +### 5.一键配置依赖环境 + +```bash +./jarvis -dp +``` + +### 6.一键进行编译 + +```bash +./jarvis -b +``` + +### 7.一键进行运行测试 + +```bash +./jarvis -r +``` + +## 附B:使用singularity运行容器 + +### 使用教程 + +### 下载容器镜像 + +通过链接下载: + +[百度云盘](https://pan.baidu.com/s/1UjHiv6DN_oOVXcuohP5Uqg?pwd=vxit) + +或者扫码下载: + +![百度云](data:image/png;base64,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) + +#### 1.安装singularity + +安装singularity, + +具体步骤如下 + +```bash +mkdir -p ~/install +mkdir -p ~/build + +#安装编译所需依赖 +yum -y install libatomic libstdc++ libstdc++-devel libseccomp-devel glib2-devel gcc squashfs-tools tar + +#安装bisheng编译器 +cd ~/build +wget https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_compiler/bisheng-compiler-2.1.0-aarch64-linux.tar.gz +tar -C ~/install -xf bisheng-compiler-2.1.0-aarch64-linux.tar.gz +echo "export PATH=$HOME/install/bisheng-compiler-2.1.0-aarch64-linux/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +export CC=`which clang` +export CXX=`which clang++` + +#安装go编译器 +cd ~/build +wget https://go.dev/dl/go1.19.linux-arm64.tar.gz +tar -C ~/install -xf go1.19.linux-arm64.tar.gz +echo "export PATH=$HOME/install/go/bin:$PATH" >> ~/.bashrc && source ~/.bashrc + +#安装singularity +cd ~/build +wget https://github.com/sylabs/singularity/releases/download/v3.10.2/singularity-ce-3.10.2.tar.gz +tar -xf singularity-ce-3.10.2.tar.gz +cd singularity-ce-3.10.2 +./mconfig --prefix=$HOME/install/singularity +make -C ./builddir +make -C ./builddir install +echo "export PATH=$HOME/install/singularity/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +``` + +#### 2.构建镜像 + +```shell +# x86 +singularity build ./name-of-image.sif openeuler-gcc-9.3.0-trinity-2.14.0.def +# arm +singularity build ./name-of-image.sif openeuler-bisheng2-trinity-2.14.0.def +# 转换为沙盒 +singularity build --sandbox image-sandbox name-of-image.sif +``` + +#### 3.在沙盒中运行 + +```shell +#进入沙盒 +singularity shell -w image-sandbox +#在沙盒中运行内置的测试案例 +cd /hpcrunner +./jarvis -r +``` diff --git a/package/boost/1.72.0/clang/install.sh b/package/boost/1.72.0/clang/install.sh index 8a27970..5e414ef 100644 --- a/package/boost/1.72.0/clang/install.sh +++ b/package/boost/1.72.0/clang/install.sh @@ -7,4 +7,4 @@ tar -xvf ${JARVIS_DOWNLOAD}/boost_1_72_0.tar.gz cd boost_1_72_0 sed -i '60s/.*/#ifdef PTHREAD_STACK_MIN/' ./boost/thread/pthread/thread_data.hpp ./bootstrap.sh --with-toolset=clang -./b2 install --prefix=$1 +./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" install --prefix=$1 diff --git a/package/bowtie2/2.4.5/install.sh b/package/bowtie2/2.4.5/install.sh new file mode 100644 index 0000000..c30412a --- /dev/null +++ b/package/bowtie2/2.4.5/install.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -x +set -e +. ${DOWNLOAD_TOOL} -u https://github.com/BenLangmead/bowtie2/archive/refs/tags/v2.4.5.tar.gz +cd ${JARVIS_TMP} +tar -xvf ${JARVIS_DOWNLOAD}/v2.4.5.tar.gz -C ${JARVIS_TMP} +cd bowtie2-2.4.5 +if [ `arch` == "aarch64" ]; then + sed -i 's/\CXXFLAGS += -std=c++11/\CXXFLAGS += -std=c++11 -stdlib=libc++/g' Makefile + wget https://github.com/simd-everywhere/simde/archive/refs/tags/v0.7.2.tar.gz + tar -xzf v0.7.2.tar.gz + cp -r simde-0.7.2/simde ./third_party + make -j + make static-libs -j && make STATIC_BUILD=1 -j + mkdir -p ${JARVIS_LIBS}/bisheng2/bowtie2/2.4.5/bin + cp bowtie2* ${JARVIS_LIBS}/bisheng2/bowtie2/2.4.5/bin +else + make -j + make static-libs -j && make STATIC_BUILD=1 -j + mkdir -p ${JARVIS_LIBS}/gcc9/bowtie2/2.4.5/bin + cp bowtie2* ${JARVIS_LIBS}/gcc9/bowtie2/2.4.5/bin +fi diff --git a/package/jellyfish/2.3.0/install.sh b/package/jellyfish/2.3.0/install.sh new file mode 100644 index 0000000..d1c5795 --- /dev/null +++ b/package/jellyfish/2.3.0/install.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -x +set -e +. ${DOWNLOAD_TOOL} -u https://github.com/gmarcais/Jellyfish/releases/download/v2.3.0/jellyfish-2.3.0.tar.gz +cd ${JARVIS_TMP} +tar -xvf ${JARVIS_DOWNLOAD}/jellyfish-2.3.0.tar.gz +cd jellyfish-2.3.0 +./configure --prefix=$1 +make -j +make install \ No newline at end of file diff --git a/package/salmon/1.9.0/bisheng/install.sh b/package/salmon/1.9.0/bisheng/install.sh new file mode 100644 index 0000000..099dce0 --- /dev/null +++ b/package/salmon/1.9.0/bisheng/install.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -x +set -e +. ${DOWNLOAD_TOOL} -u https://github.com/COMBINE-lab/salmon/archive/refs/tags/v1.9.0.tar.gz +cd ${JARVIS_TMP} +tar -xvf ${JARVIS_DOWNLOAD}/v1.9.0.tar.gz +cd salmon-1.9.0 +cmake -DNO_IPO=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_C_FLAGS="-O3 -march=armv8.2-a -mtune=tsv110" -DCMAKE_CXX_FLAGS="-O3 -march=armv8.2-a -mtune=tsv110 -stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++ -lc++ -lc++abi" -DCMAKE_INSTALL_PREFIX=$1 . +make +mkdir -p $1/bin $1/lib +cp src/salmon $1/bin +cp -r external/install/* $1/lib +cp external/install/lib64/lib* $1/lib diff --git a/package/salmon/1.9.0/install.sh b/package/salmon/1.9.0/install.sh new file mode 100644 index 0000000..7f41456 --- /dev/null +++ b/package/salmon/1.9.0/install.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -x +set -e +. ${DOWNLOAD_TOOL} -u https://github.com/COMBINE-lab/salmon/releases/download/v1.9.0/salmon-1.9.0_linux_x86_64.tar.gz +cd ${JARVIS_TMP} +tar -xvf ${JARVIS_DOWNLOAD}/salmon-1.9.0_linux_x86_64.tar.gz +cd salmon-1.9.0_linux_x86_64 +cp -r * $1 \ No newline at end of file diff --git a/templates/.DS_Store b/templates/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ebb32f4cf9bbfc5f39616cab4662c25bf2ca75be GIT binary patch literal 6148 zcmeHK!A`?447Fj1N?dm2m|xf*l&L#$+=V0RD#4_dOoJWZ6!A%X1E0f3@En_IU3)+r z5JI+;Jjbz}3FKWn=Mzd+Z>$aD7cGNRkyK*M{#rg`u6eiel^U~#pWAcoBP3P z2MfFE3^)VMfHU9>{EPv4;2_0?qW8{#GvEyD8Ib!Spb3_SNikm?=yC}FoWPs~y3`U9 z6AVkkq=*>^Yba1d*-8x7aM*+Sm4-=C!-=i Date: Wed, 12 Oct 2022 02:27:41 +0800 Subject: [PATCH 2/7] add trinity config --- templates/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 templates/.DS_Store diff --git a/templates/.DS_Store b/templates/.DS_Store deleted file mode 100644 index ebb32f4cf9bbfc5f39616cab4662c25bf2ca75be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!A`?447Fj1N?dm2m|xf*l&L#$+=V0RD#4_dOoJWZ6!A%X1E0f3@En_IU3)+r z5JI+;Jjbz}3FKWn=Mzd+Z>$aD7cGNRkyK*M{#rg`u6eiel^U~#pWAcoBP3P z2MfFE3^)VMfHU9>{EPv4;2_0?qW8{#GvEyD8Ib!Spb3_SNikm?=yC}FoWPs~y3`U9 z6AVkkq=*>^Yba1d*-8x7aM*+Sm4-=C!-=i Date: Wed, 12 Oct 2022 02:45:56 +0800 Subject: [PATCH 3/7] add trinity config --- package/salmon/1.9.0/bisheng/install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/salmon/1.9.0/bisheng/install.sh b/package/salmon/1.9.0/bisheng/install.sh index 099dce0..f9f6db4 100644 --- a/package/salmon/1.9.0/bisheng/install.sh +++ b/package/salmon/1.9.0/bisheng/install.sh @@ -9,5 +9,6 @@ cmake -DNO_IPO=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_C_FLAGS="-O3 -march=armv make mkdir -p $1/bin $1/lib cp src/salmon $1/bin -cp -r external/install/* $1/lib +cp -r external/install/lib/* $1/lib cp external/install/lib64/lib* $1/lib + -- Gitee From fd8596c023136b405aa7736bfd94ba3414fb1396 Mon Sep 17 00:00:00 2001 From: hujing Date: Wed, 12 Oct 2022 08:49:41 +0800 Subject: [PATCH 4/7] add trinity config --- ...47\273\346\244\215\346\214\207\345\215\227\343\200\213.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" "b/doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" index 9194bfc..022ce98 100644 --- "a/doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" +++ "b/doc/trinity/\343\200\212\345\237\272\344\272\216openEuler\347\232\204Trinity\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" @@ -252,11 +252,11 @@ pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple 通过链接下载: -[百度云盘](https://pan.baidu.com/s/1UjHiv6DN_oOVXcuohP5Uqg?pwd=vxit) +[百度云盘](https://pan.baidu.com/s/1AX5uI5hQl8qMs5clDGfLGQ) 提取码: 0b83 或者扫码下载: -![百度云](data:image/png;base64,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) +![百度云](data:image/jpeg;base64,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) #### 1.安装singularity -- Gitee From 57d69a3f1c4feda5309c3f0255e0e8fb482b7f05 Mon Sep 17 00:00:00 2001 From: hujing Date: Wed, 12 Oct 2022 08:55:41 +0800 Subject: [PATCH 5/7] add trinity config --- .../2.14.0/data.trinity.arm.cpu.config | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/templates/trinity/2.14.0/data.trinity.arm.cpu.config b/templates/trinity/2.14.0/data.trinity.arm.cpu.config index e69de29..f1bfdc6 100644 --- a/templates/trinity/2.14.0/data.trinity.arm.cpu.config +++ b/templates/trinity/2.14.0/data.trinity.arm.cpu.config @@ -0,0 +1,55 @@ +[SERVER] +11.11.11.11 + +[DOWNLOAD] +trinity/2.14.0 https://github.com/trinityrnaseq/trinityrnaseq/releases/download/Trinity-v2.14.0/trinityrnaseq-v2.14.0.FULL_with_extendedTestData.tar.gz + +[DEPENDENCY] +set -e +set -x +./jarvis -install bisheng/2.1.0 com +module purge +module use ./software/modulefiles +module load bisheng2/2.1.0 +export CC=`which clang` +export CXX=`which clang++` +export FC=`which flang` +./jarvis --install zlib/1.2.11 bisheng +./jarvis --install boost/1.72.0/clang bisheng +./jarvis --install jellyfish/2.3.0 bisheng +./jarvis --install samtools/1.15 bisheng +module load boost-clang/1.72.0 +./jarvis --install salmon/1.9.0/bisheng bisheng +./jarvis --install bowtie2/2.4.5 bisheng +cd ${JARVIS_TMP} +tar -xvf ${JARVIS_DOWNLOAD}/trinityrnaseq-v2.14.0.FULL_with_extendedTestData.tar.gz -C ${JARVIS_TMP} +cd trinityrnaseq-v2.14.0 +sed -i 's/\-m64/\ /g' `grep -rl "\-m64" ./` + + +[ENV] +module purge +module use ${JARVIS_ROOT}/software/modulefiles +module load bisheng2/2.1.0 +module load zlib/1.2.11 +module load jellyfish/2.3.0 +module load samtools/1.15 +module load salmon-bisheng/1.9.0 +module load bowtie2/2.4.5 + + +[APP] +app_name = trinity +build_dir = ${JARVIS_TMP}/trinityrnaseq-v2.14.0 +binary_dir = +case_dir = ${JARVIS_TMP}/trinityrnaseq-v2.14.0 + +[BUILD] +make CC=`which clang` CXX=`which clang++` -j +mkdir -p ${JARVIS_LIBS}/bisheng2/trinity/bin +cp Trinity ${JARVIS_LIBS}/bisheng2/trinity/bin + +[RUN] +run = make test_trinity +binary = +nodes = 1 \ No newline at end of file -- Gitee From c48a0b4526a534651cfb1d31534647837d13ced0 Mon Sep 17 00:00:00 2001 From: hujing Date: Wed, 12 Oct 2022 08:56:58 +0800 Subject: [PATCH 6/7] add trinity config --- doc/.DS_Store | Bin 6148 -> 0 bytes doc/trinity/.DS_Store | Bin 6148 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/.DS_Store delete mode 100644 doc/trinity/.DS_Store diff --git a/doc/.DS_Store b/doc/.DS_Store deleted file mode 100644 index c107b07b97cf971243d10101c8a855bf2e7bc5d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!EO^V5FMw1II56x0Kw5xuaTOx1%$XPA^boW!J(iu+l|^48#~Hwx@x0Hdu@M+ zs=f9b`W5{MW^4zwBo#R!1T)h3&5mc*_FK!|0RYjN#BG2E07z8AN*$XeLj9x*Qt=+@ z6!skn3}7qH4${ahM6=^>WPrY14I(g5Kn{1lpGj%DHFS>Atxa#Ga{G1Zdeg&pcwmO3dG=!R&~&?=5qWuWrEgEK-z|%Z zSBM%N{cg15aI90K4{?O~0`E+XO=f@@UF8HJF7Q}7bm<^`@ge-k!dEE5 zj*jnFHXKCYkXvSe8Mx2DntN=}{r}H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Wed, 12 Oct 2022 08:57:28 +0800 Subject: [PATCH 7/7] add trinity config --- .DS_Store | Bin 10244 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index a3d6dcd077a6d3b7ff2f87cbccb55a237bd4090c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 zcmeHMO>h)N6z(?($qX6D0Ezs#16x@r0Rt=v7=EiZe+rTi%qCm`IhOTpYoNR$vFV`WrRv6-bXJ*zW{6iVhI1+*u`AU1J{Me-({(OU=v z0s;YnfIvVXAP~3}5WwGTR^%#9MJo^x2nYlw5n%U26f2{NkdAX2Tpid1DFD)P6bA*r zF%JlAq9IL$bez+`6vyP*1B9j!rWnA@Q6FX9ktRYq&M7x1z|9GSGeel6KrlPnMT71H z5}b-wARrK!i2%#p6_O<$=I#E}{5|VrJkMbUWyC~vHZwwpGme)*$;HgDV^cpK{{p14 z@;Mcia;01)A50E;BT3)z3$(?^A7ES$4v{H+8=3vKHImk9T0Pe{Y}d*M2DWKom%%>U zHNBA*ui%tjJ1QTRb|tadUmNv1!v-eROndL%cq^sqwC{F-5M8ZP?zOKIY_H z?-90I4E^wmAoDms*`CI)a5E;IvA<$6?>e4)gpGi;0-rK+2*?q9&Y)AfD~OYYs$t@w zntjv%2Q;&6th8?i$Si7y7F)SXlqE|p@ny*+l(|*vJiRZ~KcEh#wS`4I`>tW%_FTH( z%2T9it(u~b?9O`bzP!cseOb>bHs>U>)ZF+R=(e$S<5wT_ek%EZTdrfMVs0g$Lev7oTV&)dS#+| z$jiuG2HwET*hoz;ST)ReGI%fN5Iu z7Pe++utvXA?V-2_Su=RY^=e%0IfhZBXp~DD)y;aZV`MBx(M&$i7ImB6SLFCB+8!?4 zsn+VLte4B-7OBEz&3dbTh)vsJP`_)~a@mqDqYk%rcb%^HGhMT31`ArYWNEd&NAHxi zPvrqRWaO=`5e)B%P=22*2WO3PHd?!B``)Comnk*dE!uc<;IZ-xM2;n%I1?OAEU}g! zQLJ=Q9Ozgg9tvcllLpd8I>=#?C!^#nd77LfZ;?ynL-INKn*2b1CD#C;0xDrHR6z|a zgOyMZo1qD|z*cC1F4za%kc2@P0vnD3g%fZRM&T4Z45#5yI17)#Q}8^z058Hz@EW`U zZ^8w58{UJ<@G*P>pTSl52EK*w;Agl7zr!C=xim+rlw@g<6p?gkxfGYSO53FE(q5@c zN=b%vRPv-@zJ956T^%fKFqEG}I(yKC_po$+_MnU0vupRgYR7*j=&sBU!mOtDw#Cs^ zYd37#va@;89l8IOTy|<81m1r`%mm&ac*iu)oe1JlUB03efY(EkhiET`jden1(W_O4 zy<;n73>$4u$gW<4>>jOxvypY{WeibG3RpGL(5PS_YGon2t_fM-jJkb?f+4AuhwSnM zvLs+4k+yam=CUT=EPua3u9EM`FXT`3_xZ30mcShlM=x)IU9dOs^Ca}bAxOhv$bbns zaKVG)=<%mu3?77WcnJOd40`sbXD=VzuIH!RLHo