Performing a test cast¶
Here we will guide you through a small test case using ANNOgesic. You will see who to run the subcommands of ANNOgesic. The test case is a public RNA-Seq data from NCBI GEO that was part of a work by Bischler et al.. The differential RNA-seq data is of Helicobacter pylori 26695. There will be several output files which are generated in different formats - The CSV (tabular separated plain text files) files (opened by LibreOffice or Excel), GFF3 files, TXT files and figures. For viewing GFF3 file, you can use a genome browser, for example IGB, IGV or Jbrowse.
Before we start, please refer to the section of The format of filename
and
The format of libraries for import to ANNOgesic
in
the section of subcommands
. All the details are also in subcommands
.
Moreover, all the requirements are listed in the section of prerequired
.
For the command lines which we will present in the following, please refer to the run.sh
in our Github.
Generating a project¶
First of all, we need to create a working folder, we use create
subcommand.
annogesic create ANNOgesic
Then you will see
Created folder "ANNOgesic" and required subfolders.
$ ls
ANNOgesic
Retrieving the input data¶
For our test case, we can download from NCBI.
We can set the $FTP_SOURCE
first
FTP_SOURCE=ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/Helicobacter_pylori/reference/GCF_000008525.1_ASM852v1/
Then download fasta files(-f
), gff files(-g
), gbk files(-k
), ptt files(-p
),
rnt files(-r
), and converts to embl(-e
).
$ annogesic get_input_files -F $FTP_SOURCE -g -f -e -k -p -r ANNOgesic
Then you will get the following results
$ ls ANNOgesic/input/reference/fasta/
NC_000915.fa
$ ls ANNOgesic/input/reference/annotation/
NC_000915.1.embl NC_000915.1.gbk NC_000915.gff
If the fasta files and annotation files which are retrieved from NCBI is exactly the strain what you want,
you can add -t
for putting the files to ANNOgesic/output/target
. Then you can skip running get_target_fasta
and annotation_transfer
.
In fact, these fasta and gff files are exactly what we want to use for the test case.
But, in order to testing get_target_fasta
and annotation_transfer
, we used them as reference first.
After that, we will reorganize the data again.
Putting wig, bam files and reads to proper location¶
For the test case, you can download files from here.
$ wget ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP%2FSRP056%2FSRP056856/SRR1951997/SRR1951997.sra
$ wget ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP%2FSRP056%2FSRP056856/SRR1951998/SRR1951998.sra
Then you need to convert the SRA files to Fasta or Fastq format for mapping. You can use SRA toolkit for that.
$ wget http://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/2.5.2/sratoolkit.2.5.2-ubuntu64.tar.gz
$ tar -zxvf sratoolkit.2.5.2-ubuntu64.tar.gz
$ rm sratoolkit.2.5.2-ubuntu64.tar.gz
$ ./sratoolkit.2.5.2-ubuntu64/bin/fastq-dump.2.5.2 --fasta SRR1951997.sra
$ ./sratoolkit.2.5.2-ubuntu64/bin/fastq-dump.2.5.2 --fasta SRR1951998.sra
$ mv *.fasta ANNOgesic/input/reads
$ rm SRR1951997.sra
$ rm SRR1951998.sra
Now you get the reads. Then we have to download the wiggle files.
wget -cP ANNOgesic/input/wigs/tex_notex ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM1649nnn/GSM1649587/suppl/GSM1649587%5FHp26695%5FML%5FB1%5FHS1%5F%2DTEX%5Fforward%2Ewig%2Egz
wget -cP ANNOgesic/input/wigs/tex_notex ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM1649nnn/GSM1649587/suppl/GSM1649587%5FHp26695%5FML%5FB1%5FHS1%5F%2DTEX%5Freverse%2Ewig%2Egz
wget -cP ANNOgesic/input/wigs/tex_notex ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM1649nnn/GSM1649588/suppl/GSM1649588%5FHp26695%5FML%5FB1%5FHS1%5F%2BTEX%5Fforward%2Ewig%2Egz
wget -cP ANNOgesic/input/wigs/tex_notex ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM1649nnn/GSM1649588/suppl/GSM1649588%5FHp26695%5FML%5FB1%5FHS1%5F%2BTEX%5Freverse%2Ewig%2Egz
cd ANNOgesic/input/wigs/tex_notex
gunzip GSM1649587_Hp26695_ML_B1_HS1_-TEX_forward.wig.gz \
GSM1649587_Hp26695_ML_B1_HS1_-TEX_reverse.wig.gz \
GSM1649588_Hp26695_ML_B1_HS1_+TEX_forward.wig.gz \
GSM1649588_Hp26695_ML_B1_HS1_+TEX_reverse.wig.gz
cd ../../../../
Because it is a test case, we only download one replicate to reduce the running time.
Improving the reference genome¶
If the data which we retrieved from NCBI is exactly the strain what you want, you can skip this step.
Please remember to put or download the fasta file to ANNOgesic/output/target/fasta
.
If the retrieved strain is only the closed strain of your target strain, you may need to run
subcommand get_target_fasta
. However, this command need the mutation table. please refer
to the section of subcommands
.
Once you have the mutation table, you can improve the fasta files.
We use a simple example to modify our test case. The mutation table is
| #target_id | reference_id | reference_nt | position | target_nt | impact of correction | locus tag | gene | Description |
| NC_test.1 | NC_000915.1 | a | 3 | c | SAOUHSC_00002 | dnaA | XXXXXX | |
| NC_test.1 | NC_000915.1 | t | 6 | - | deletion | YYYYYY | ||
| test_case2 | NC_000915.1 | - | 600 | g | insertion | SAOUHSC_00132 |
Every column is separated by tab. You can see the new strain will be NC_test.1 and test_case2. Therefore, there will be
two fasta files in ANNOgesic/output/target/fasta
.
 In -o
you can assign the filenames of output fasta files and
the strains that you want to put in it. In our case, we call the first fasta file test_case1 and the
second one test_case2. test_case1 stores the fasta of NC_test.1 and test_case2 stores test_case2.
Now we can check the results.
$ head ANNOgesic/input/reference/fasta/NC_000915.fa
>NC_000915.1
TGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAG
TGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAG
TGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTATAGCATCATTTTTTAAATTTAGGTATAAA
ACACCCTCAATTCAAGGGTTTTTGAGTGAGCTTTTTGCTCAAAGAATCCAAGATAGCGTTTAAAAATTTA
GGGGTGTTAGGCTCAGCGTAGAGTTTGCCAAGCTCTATGCATTCATTGATGATGATAGGGTTTTGCGTGG
GCGTGAAGCCAATTTCATACGCTCCTAAGCGTAAAATCGCCTTTTCCATGCTCCCTAATCGCTTGAAATC
CCAGTCTTTTAAATGCGGCTCGATGAGGGCGTCAATTTCATTGATTTTTTCTAACACGCCATTAAAAAGG
CTTAAAGCGAAAGCGAGTTGGTTGTTTTTAATCTTTTTTTCTTCTAACATGCTAGAAGCGATTTTTTTAA
TTTCTTCATTACCGCTCTCAAACGCATACAACAATTCAACCACAGCCCCCCTGGCTTGAGTTCGTGTCGC
$ head ANNOgesic/output/target/fasta/test_case1.fa
>NC_test.1
TGcTTGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATT
AGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTG
ATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTAGTGATTA
TAGCATCATTTTTTAAATTTAGGTATAAAACACCCTCAATTCAAGGGTTTTTGAGTGAGC
TTTTTGCTCAAAGAATCCAAGATAGCGTTTAAAAATTTAGGGGTGTTAGGCTCAGCGTAG
AGTTTGCCAAGCTCTATGCATTCATTGATGATGATAGGGTTTTGCGTGGGCGTGAAGCCA
ATTTCATACGCTCCTAAGCGTAAAATCGCCTTTTCCATGCTCCCTAATCGCTTGAAATCC
CAGTCTTTTAAATGCGGCTCGATGAGGGCGTCAATTTCATTGATTTTTTCTAACACGCCA
TTAAAAAGGCTTAAAGCGAAAGCGAGTTGGTTGTTTTTAATCTTTTTTTCTTCTAACATG
In test_case1.fa
, the third nucleotide replace from A to c. Moreover, The sixth nucleotide is deleted.
In test_case2.fa
, it is also modified by mutation table.
If you have no mutation table, you can also use the subcommand snp
to detect the mutations and apply to
reference genomoes automatically. For this subcommand, we will go through it later.
Generating annotation files¶
We have the fasta files now. We can use it to generate our annotation files. If the annotaion files which
you retrieved by get_input_files
is exactly the strain what you want, you can skip this step. Please
remember to copy or download the annotation files to ANNOgesic/output/target/annotation
.
Before you running it, you have to notice the environment paths of RATT. If you are using docker container, the path is alread setup. If you setup by yourself, please refer to RATT to set your environment paths properly.

We use Strain
because the similarity is higher than 90%. For other programs, you can refer to
RATT. We assign the pairs of transfer at -p
.
The names for -p
are the names of strain not filenames of fasta files. -g
means we want to transfer the embl files
to GFF3 files and store in ANNOgesic/output/target/annotation
.
When the computation is done, you can see
$ ls ANNOgesic/output/target/annotation/
test_case1.gff test_case1.ptt test_case1.rnt test_case2.gff test_case2.ptt test_case2.rnt
$ ls ANNOgesic/output/annotation_transfer/
chromosome.NC_test.1.final.embl chromosome.test_case2.final.embl NC_test.1.gff ratt_log.txt test_case2.gff
In ANNOgesic/output/target/annotation
, you can find ptt, rnt and gff files. In ANNOgesic/output/annotation_transfer
,
you can find the results of RATT. chromosome.NC_test.1.final.embl
and
chromosome.test_case2.final.embl
are generated by RATT. Gff files are
transferred from these embl files.
TSS and processing site prediction and optimization¶
Now we already knew how to update the genome fasta and annotation files. In order to go through the following subcommands, we need to reorganize our data. First, we remove the fake files that we generated from previous subcommands.
- ::
- $ rm ANNOgesic/output/target/annotation/*
- rm ANNOgesic/output/target/fasta/*
Then put the correct files that we used as reference before into ANNOgesic/output/target
.
- ::
- $ mv ANNOgesic/input/reference/annotation/* ANNOgesic/output/target/annotation/
- mv ANNOgesic/input/reference/fasta/* ANNOgesic/output/target/fasta/
Before running the subcommands, we need to setup our libraries as a correct format.
tex_notex_libs="GSM1649587_Hp26695_ML_B1_HS1_-TEX_forward.wig:notex:1:a:+,\
GSM1649587_Hp26695_ML_B1_HS1_-TEX_reverse.wig:notex:1:a:-,\
GSM1649588_Hp26695_ML_B1_HS1_+TEX_forward.wig:tex:1:a:+,\
GSM1649588_Hp26695_ML_B1_HS1_+TEX_reverse.wig:tex:1:a:-"
Before running tsspredator
, if you want to use the optimized parameters,
you need to run optimize_TSSpredator
first. It needs to manual check some TSSs.
In our experience, we recommand you detect more than 50 TSSs and longer than 100kb of genome.
For test case, we prepared the manual TSS file in our Github, you can download it.
wget -cP ANNOgesic/input/manual_TSS/ https://raw.githubusercontent.com/Sung-Huan/ANNOgesic/master/tutorial_data/NC_000915_manual_TSS.gff
Now, we have a manual TSS files which store in ANNOgesic/input/manual_TSS
.
we can try optimization of TSSs right now (because the manual TSS file only provide the first 200kb,
we set the --le
as 200000).
annogesic optimize_tsspredator \
-w ANNOgesic/input/wigs/tex_notex \
-fs ANNOgesic/output/target/fasta \
-g ANNOgesic/output/target/annotation \
-n NC_000915.1 \
-l $tex_notex_libs \
-p TSS -s 25 \
-m ANNOgesic/input/manual_TSS/NC_000915_manual_TSS.gff \
-le 200000 \
ANNOgesic
optimize_TSSpredator
will compare gff files of manual checked TSSs and predicted TSSs to find the best parameters.
You can check the results and parameters of each step in screen. we set the steps only 25 for testing.
When the program finished, you can find several files.
$ ls ANNOgesic/output/TSS/optimized_TSSpredator/
best.csv log.txt stat.csv
best.csv
is for the best parameters; stat.csv
is for the parameters of each step.
Let’s assume the best parameters are that height is 0.3, height_reduction is 0.2, factor is 2.0, factor_reduction is 0.5,
base_height is 0.0, enrichment_factor is 1.7, processing_factor is 1.5. Now we can set the parameter set for running
tss
.
annogesic tsspredator \
-w ANNOgesic/input/wigs/tex_notex \
-f ANNOgesic/output/target/fasta \
-g ANNOgesic/output/target/annotation \
-l $tex_notex_libs \
-p test \
-he 0.3 \
-rh 0.2 \
-fa 2.0 \
-rf 0.5 \
-bh 0.0 \
-ef 1.7 \
-pf 1.5 \
-s \
-v \
-le 200000 \
-m ANNOgesic/input/manual_TSS/NC_000915_manual_TSS.gff \
ANNOgesic
If you import the manual checked TSSs to -m
, the subcommand will merge the manual checked TSSs and predicted TSSs.
If you didn’t import it, the subcommand will only produce predicted TSSs. You will get gff file, MasterTable and statistic file.
$ ls ANNOgesic/output/TSS/
configs gffs MasterTables statistics
$ ls ANNOgesic/output/TSS/configs/
config_NC_000915.1.ini
$ ls ANNOgesic/output/TSS/gffs/
NC_000915.1_TSS.gff
$ ls ANNOgesic/output/TSS/MasterTables/MasterTable_NC_000915.1/
AlignmentStatistics.tsv err.txt log.txt MasterTable.tsv superConsensus.fa superTSS.gff superTSStracks.gff test_super.fa test_super.gff test_TSS.gff TSSstatistics.tsv
$ ls ANNOgesic/output/TSS/statistics/NC_000915.1/
stat_compare_TSSpredator_manual_NC_000915.1.csv stat_gene_vali_NC_000915.1.csv stat_TSS_class_NC_000915.1.csv stat_TSS_libs_NC_000915.1.csv TSS_class_NC_000915.1.png TSS_venn_NC_000915.1.png
If you want to predict processing sites, the procedures are the same. You just need to change the program from TSS to
processing_site (-t
) and the parameter sets (we assume the best parameter sets are that
height is 0.3, height_reduction is 0.2, factor is 2.0, factor_reduction is 0.5,
base_height is 0.0, enrichment_factor is 1.9, processing_factor is 5.7).
annogesic tsspredator \
-w ANNOgesic/input/wigs/tex_notex \
-f ANNOgesic/output/target/fasta \
-g ANNOgesic/output/target/annotation \
-l $tex_notex_libs \
-p test \
-he 0.3 \
-rh 0.2 \
-fa 2.0 \
-rf 0.5 \
-bh 0.0 \
-ef 1.9 \
-pf 5.7 \
-s \
-v \
-t processing_site \
ANNOgesic
Performing transcript assembly¶
For detecting transcript boundary, transcript assembly is the basic feature.
we can use the subcommand transcript_assembly
to do it. Normally, we strongly
recommand that user should provide fragmentation RNA-Seq. Because RNA-Seq always lose some information
of 3’end. However, there is no fragmented libraries in the test case.
Therefore, we only use TEX +/- to do it.
The command would be like the following.
annogesic transcript_assembly \
-g ANNOgesic/output/target/annotation \
-tw ANNOgesic/input/wigs/tex_notex \
-tl $tex_notex_libs \
-rt 1 \
-ct ANNOgesic/output/TSS/gffs \
-cg ANNOgesic/output/target/annotation \
ANNOgesic
It will generate gff files and tables. Because we also compared with TSSs and annotation files, it will generate statistics files.
$ ls ANNOgesic/output/transcriptome_assembly/gffs
NC_000915.1_transcript.gff
$ ls ANNOgesic/output/transcriptome_assembly/tables
NC_000915.1_transcript.csv
$ ls ANNOgesic/output/transcriptome_assembly/statistics
stat_compare_Transcriptome_assembly_CDS_NC_000915.1.csv stat_compare_Transcriptome_assembly_TSS_NC_000915.1.csv
Prediction of terminator¶
For predicting terminators, we can use subcommand terminator
. The command is like the following.
annogesic terminator \
-f ANNOgesic/output/target/fasta \
-g ANNOgesic/output/target/annotation \
-s \
-tw ANNOgesic/input/wigs/tex_notex \
-a ANNOgesic/output/transcriptome_assembly/gffs \
-tl $tex_notex_libs \
-rt 1 -tb \
ANNOgesic
It will generate four different kinds of gff files and tables.
$ ls ANNOgesic/output/terminator/gffs/
all_candidates best express non_express
$ ls ANNOgesic/output/terminator/tables
all_candidates best express non_express
all_candidates
is for all candidates; express
is for the candidates which have expression;
best
is for the candidates which coverage significant decreasing. non_express
is for
the candidates which have no expression. There are a gff file or table for each folder.
$ ls ANNOgesic/output/terminator/gffs/best
NC_000915.1_term.gff
$ ls ANNOgesic/output/terminator/gffs/express
NC_000915.1_term.gff
$ ls ANNOgesic/output/terminator/gffs/all_candidates
NC_000915.1_term.gff
$ ls ANNOgesic/output/terminator/gffs/non_express
NC_000915.1_term.gff
$ ls ANNOgesic/output/terminator/tables/best
NC_000915.1_term.csv
$ ls ANNOgesic/output/terminator/tables/express
NC_000915.1_term.csv
$ ls ANNOgesic/output/terminator/tables/all_candidates
NC_000915.1_term.csv
$ ls ANNOgesic/output/terminator/tables/non_express
NC_000915.1_term.csv
In transtermhp folder, there are the output files from TranstermHP.
$ ls ANNOgesic/output/terminator/transtermhp/NC_000915.1
NC_000915.1_best_terminator_after_gene.bag NC_000915.1_terminators.txt NC_000915.1_terminators_within_robust_tail-to-tail_regions.t2t
Moreover, the statistics files are stored in statistics
.
$ ls ANNOgesic/output/terminator/statistics/
stat_NC_000915.1.csv
stat_comparison_terminator_transcript_all_candidates.csv
stat_comparison_terminator_transcript_best.csv
stat_comparison_terminator_transcript_express.csv
Generating UTR¶
Now, we have the information of TSSs, transcripts and terminators. We can detect the 5’UTRs and 3’UTRs easily by using
the subcommand utr
.
annogesic utr \
-g ANNOgesic/output/target/annotation \
-t ANNOgesic/output/TSS/gffs \
-a ANNOgesic/output/transcriptome_assembly/gffs \
-e ANNOgesic/output/terminator/gffs/best \
ANNOgesic
If your TSSs is not generated by ANNOgesic, please assign -s
, it will classify the TSSs for generating UTRs.
The gff files and statistics files will be stored in 5UTR
and 3UTR
.
$ ls ANNOgesic/output/UTR/3UTR
gffs/ statistics/
$ ls ANNOgesic/output/UTR/5UTR
gffs/ statistics/
$ ls ANNOgesic/output/UTR/3UTR/gffs
NC_000915.1_3UTR.gff
$ ls ANNOgesic/output/UTR/5UTR/gffs
NC_000915.1_5UTR.gff
$ ls ANNOgesic/output/UTR/5UTR/statistics
NC_000915.1_all_5utr_length.png
$ ls ANNOgesic/output/UTR/3UTR/statistics
NC_000915.1_all_3utr_length.png
Now, you have all information for defining the transcript boundary.
Integrating to operon and suboperon¶
We already had TSSs, transcripts, terminators, CDSs, UTRs. We can integrate all these information to
detect operons and suboperons. You can use the subcommand operon
to get it.
annogesic operon \
-g ANNOgesic/output/target/annotation \
-t ANNOgesic/output/TSS/gffs \
-a ANNOgesic/output/transcriptome_assembly/gffs \
-u5 ANNOgesic/output/UTR/5UTR/gffs \
-u3 ANNOgesic/output/UTR/3UTR/gffs \
-e ANNOgesic/output/terminator/gffs/best \
-s -c \
ANNOgesic
operon
will generate three folders to store gff files, tables and statistics files.
$ ls ANNOgesic/output/operons/
gffs statistics tables
$ ls ANNOgesic/output/operons/gffs/
NC_000915.1_all_features.gff
$ ls ANNOgesic/output/operons/tables/
operon_NC_000915.1.csv
$ ls ANNOgesic/output/operons/statistics/
stat_operon_NC_000915.1.csv
Promoter motif detection¶
As long as you have TSSs, you can use the subcommand promoter
to get promoters. It will generate the promoters
based on the classes of TSS. Therefore, if your TSSs are not computed by ANNOgesic
,
you need to add -s
and -g
(for annotation files). Then promoter
will help you
to classify your TSSs.
annogesic promoter \
-t ANNOgesic/output/TSS/gffs \
-f ANNOgesic/output/target/fasta \
-w 45,2-10 \
ANNOgesic
You can define the length of motifs. In our test case, we use 50
and 2-10
. 2-10
means the
width is from 2 to 10.
Based on the classes of TSSs, it will generate different output files.
$ ls ANNOgesic/output/promoter_analysis/NC_000915.1
promoter_motifs_NC_000915.1_allstrain_all_types_2-10_nt promoter_motifs_NC_000915.1_allstrain_internal_45_nt promoter_motifs_NC_000915.1_allstrain_secondary_2-10_nt
promoter_motifs_NC_000915.1_allstrain_all_types_45_nt promoter_motifs_NC_000915.1_allstrain_orphan_2-10_nt promoter_motifs_NC_000915.1_allstrain_secondary_45_nt
promoter_motifs_NC_000915.1_allstrain_antisense_2-10_nt promoter_motifs_NC_000915.1_allstrain_orphan_45_nt promoter_motifs_NC_000915.1_allstrain_without_orphan_2-10_nt
promoter_motifs_NC_000915.1_allstrain_antisense_45_nt promoter_motifs_NC_000915.1_allstrain_primary_2-10_nt promoter_motifs_NC_000915.1_allstrain_without_orphan_45_nt
promoter_motifs_NC_000915.1_allstrain_internal_2-10_nt promoter_motifs_NC_000915.1_allstrain_primary_45_nt
$ ls ANNOgesic/output/promoter_analysis/NC_000915.1/promoter_motifs_NC_000915.1_allstrain_all_types_45_nt/
logo10.eps logo1.png logo3.eps logo4.png logo6.eps logo7.png logo9.eps logo_rc10.png logo_rc2.eps logo_rc3.png logo_rc5.eps logo_rc6.png logo_rc8.eps logo_rc9.png meme.xml
logo10.png logo2.eps logo3.png logo5.eps logo6.png logo8.eps logo9.png logo_rc1.eps logo_rc2.png logo_rc4.eps logo_rc5.png logo_rc7.eps logo_rc8.png meme.html meme.csv
logo1.eps logo2.png logo4.eps logo5.png logo7.eps logo8.png logo_rc10.eps logo_rc1.png logo_rc3.eps logo_rc4.png logo_rc6.eps logo_rc7.png logo_rc9.eps meme.txt
Prediction of sRNA and sORF¶
Based on comparison of trascripts and CDSs information, we can detect intergenic sRNAs. Moreover, we
have the information of TSSs and processing sites. We can detect UTR-derived sRNAs as well. You can
get sRNAs by running subcommand srna
. Normally, we would recommand that you also have fragmented libraries to
compute srna
. However, we can’t get it in our test case right now. Therefore, we only use TEX +/- for this test case.
For running srna
, you can import some information to detect sRNA. There are tss
, sec_str
,
blast_nr
, blast_srna
, promoter
, term
, sorf
. Moreover, You can also assign that the best
candidates should contain which information. In this test case, we can try to use tss
, sec_str
,
blast_nr
, blast_srna
, promoter
, term
. If you don’t want to import blast_nr
which take much time
for running, you can also remove it.
Before running srna
, we have to get sRNA database(we use BSRD) and
nr database (if you have not downloaded before).
You can download the fasta file of BSRD from our
Github.
wget -cP ANNOgesic/input/database/ https://raw.githubusercontent.com/Sung-Huan/ANNOgesic/master/database/sRNA_database_BSRD.fa
Then we need to download nr database. If you already had it, you can skip this step.
wget -cP ANNOgesic/input/database/ ftp://ftp.ncbi.nih.gov/blast/db/FASTA/nr.gz
gunzip ANNOgesic/input/database/nr.gz
Because the ANNOgesic
will give the name of nr database - nr, we suggest the rename the nr to nr.fa.
- ::
- mv ANNOgesic/input/database/nr ANNOgesic/input/database/nr.fa
If you already had these databases in other folders, please change -sd
and -od
.
If your databses are formated before, you can remove -sf
and -nf
.
Furthermore, you can assign the best candidates should include which information. You can assign
--best_with_terminator
, --best_with_promoter
, --best_with_all_sRNAhit
, --best_without_sORF_candidate
.
Please check the details in the section of subcommands
.

If you already have the information of sORFs and want to import them, you can also assign
-d tss,blast_srna,promoter,term,blast_nr,sec_str,sorf
and -O
for the path of sORF.
It will compare sORFs and sRNAs.
The output of srna
will be like the following.
$ ls ANNOgesic/output/sRNA/
blast_result_and_misc gffs log.txt mountain_plot sec_structure sRNA_2d_NC_000915.1 sRNA_seq_NC_000915.1 statistics tables
blast_result_and_misc
will store the results of blast; mountain_plot
will store the mountain plots;
sec_structure
will store the plots of secondary structure of sRNA; statistics
will store statistics files.
sRNA_2d_NC_000915.1
and sRNA_seq_NC_000915.1
are text files of sequence of sRNAs and secondary structure of sRNAs.
$ ls ANNOgesic/output/sRNA/blast_result_and_misc/
nr_blast_NC_000915.1.txt sRNA_blast_NC_000915.1.txt
$ ls ANNOgesic/output/sRNA/mountain_plot/NC_000915/
srna0_NC_000915.1_16651_16765_-_mountain.pdf srna138_NC_000915.1_1496938_1497216_-_mountain.pdf srna25_NC_000915.1_444979_445114_+_mountain.pdf srna63_NC_000915.1_761094_761174_+_mountain.pdf
srna100_NC_000915.1_1164252_1164295_-_mountain.pdf srna139_NC_000915.1_1502542_1502637_+_mountain.pdf srna26_NC_000915.1_445012_445139_-_mountain.pdf srna64_NC_000915.1_773130_773564_+_mountain.pdf
...
ls ANNOgesic/output/sRNA/sec_structure/dot_plot/NC_000915/
srna0_NC_000915.1_16651_16765_-_dp.pdf srna138_NC_000915.1_1496938_1497216_-_dp.pdf srna25_NC_000915.1_444979_445114_+_dp.pdf srna63_NC_000915.1_761094_761174_+_dp.pdf
srna100_NC_000915.1_1164252_1164295_-_dp.pdf srna139_NC_000915.1_1502542_1502637_+_dp.pdf srna26_NC_000915.1_445012_445139_-_dp.pdf srna64_NC_000915.1_773130_773564_+_dp.pdf
...
$ ls ANNOgesic/output/sRNA/sec_structure/sec_plot/NC_000915/
srna0_NC_000915.1_16651_16765_-_rss.pdf srna138_NC_000915.1_1496938_1497216_-_rss.pdf srna25_NC_000915.1_444979_445114_+_rss.pdf srna63_NC_000915.1_761094_761174_+_rss.pdf
srna100_NC_000915.1_1164252_1164295_-_rss.pdf srna139_NC_000915.1_1502542_1502637_+_rss.pdf srna26_NC_000915.1_445012_445139_-_rss.pdf srna64_NC_000915.1_773130_773564_+_rss.pdf
...
$ ls ANNOgesic/output/sRNA/statistics/
stat_sRNA_blast_class_NC_000915.1.csv stat_sRNA_class_NC_000915.1.csv
For gffs
and tables
, they are divided by three kinds of results. all_candidates
is for all candidates
without filtering; best
is for the best candidates of sRNAs after filtering; for_class
is for classes which classified
by the information that you assigned. For our test case, folding energy < -0.05(class 1), associated with TSSs(class 2),
blast to nr without homologs(class 3), associated with terminators(class 4),
blast to sRNA database(class 5 for without homologs, class 6 for with homologs), associated with promoters(class 7).
$ ls ANNOgesic/output/sRNA/gffs/
all_candidates best for_class
$ ls ANNOgesic/output/sRNA/tables/
all_candidates best for_class
$ ls ANNOgesic/output/sRNA/gffs/all_candidates/
NC_000915.1_sRNA.gff
$ ls ANNOgesic/output/sRNA/tables/all_candidates/
NC_000915.1_sRNA.csv
$ ls ANNOgesic/output/sRNA/gffs/best/
NC_000915.1_sRNA.gff
$ ls ANNOgesic/output/sRNA/tables/best/
NC_000915.1_sRNA.csv
$ ls ANNOgesic/output/sRNA/gffs/for_class/NC_000915.1/
class_1_all.gff class_1_class_2_class_7_all.gff class_2_all.gff class_3_all.gff
class_1_class_2_all.gff class_1_class_3_all.gff class_2_class_3_all.gff class_3_class_4_all.gff
...
$ ls ANNOgesic/output/sRNA/tables/for_class/NC_000915.1/
class_1_all.csv class_1_class_2_class_7_all.csv class_2_all.csv class_3_all.csv
class_1_class_2_all.csv class_1_class_3_all.csv class_2_class_3_all.csv class_3_class_4_all.csv
...
As we know, the sORFs is also the region which has no annotation but has expression. Therefore, the potential sRNAs
may be sORFs not sRNAs. In order to get information of sORFs, you can use subcommand sorf
to get it.
annogesic sorf \
-g ANNOgesic/output/target/annotation \
-t ANNOgesic/output/TSS/gffs \
-a ANNOgesic/output/transcriptome_assembly/gffs \
-tw ANNOgesic/input/wigs/tex_notex \
-f ANNOgesic/output/target/fasta \
-s ANNOgesic/output/sRNA/gffs/best \
-tl $tex_notex_libs \
-rt 1 -u \
ANNOgesic
For generating best gff files, you can decide which information you want to use for filtering. The options
are ribosomal binding sites, starting from TSSs and non-overlaping with sRNAs.
Then you can get the gff files, statistics files and tables. all_candidates
is the gff files and tables without filtering; best
is the gff_files and tables with filtering.
$ ls ANNOgesic/output/sORF/gffs/all_candidates/
NC_000915.1_sORF.gff
$ ls ANNOgesic/output/sORF/gffs/best/
NC_000915.1_sORF.gff
$ ls ANNOgesic/output/sORF/tables/all_candidates/
NC_000915.1_sORF.csv
$ ls ANNOgesic/output/sORF/tables/best/
NC_000915.1_sORF.csv
$ ls ANNOgesic/output/sORF/statistics/
stat_NC_000915.1_sORF.csv
Performing sRNA target prediction¶
Now we have the sRNA candidates. If you want to know the targets of these sRNAs, you can use srna_target
to get these information.
annogesic srna_target \
-g ANNOgesic/output/target/annotation \
-f ANNOgesic/output/target/fasta \
-r ANNOgesic/output/sRNA/gffs/best \
-q NC_000915.1:-:7249:7321 \
-p both \
ANNOgesic
For testing, we just do the prediction for one sRNA. You can also assign several of sRNAs like
NC_000915.1:-:7249:7321,NC_000915.1:-:16651:16765
. If you want to compute all sRNAs, you
can assign all
to -q
. However, it may take several days.
srna_target
will generate several folders.
$ ls ANNOgesic/output/sRNA_targets/
merge RNAplex RNAup sRNA_seqs target_seqs
sRNA_seqs
and target_seqs
are for the sequences of sRNAs and potential targets.
$ ls ANNOgesic/output/sRNA_targets/sRNA_seqs
NC_000915.1_sRNA.fa
$ ls ANNOgesic/output/sRNA_targets/target_seqs
NC_000915.1_target.fa
RNAplex
and RNAup
are for the output of RNAplex and RNAup.
$ ls ANNOgesic/output/sRNA_targets/RNAplex/NC_000915.1/
NC_000915.1_RNAplex_rank.csv NC_000915.1_RNAplex.txt
$ ls ANNOgesic/output/sRNA_targets/RNAup/NC_000915.1/
NC_000915.1_RNAup.log NC_000915.1_RNAup_rank.csv NC_000915.1_RNAup.txt
merge
is for the merged results of RNAplex and
RNAup. NC_000915.1_merge.csv
merge all the results of
both methods. NC_000915.1_overlap.csv
only stores the candidates which are top 20(default) in both methods.
$ ls ANNOgesic/output/sRNA_targets/merge/NC_000915.1/
NC_000915.1_merge.csv NC_000915.1_overlap.csv
Mapping and detecting of circular RNA¶
You may also be interested in circular RNAs. The subcommand circrna
can help you to get the information.
It apply Segemehl to detect circular RNAs. Because
we didn’t map the reads of test case before, we can also do it by running circrna
. If your mapping is
generated by Segemehl with -S
, then you can
skip -a
and assign the path of bam files to -nb
or -fb
. It can reduce the running time. However,
if you mapped the reads by other tools or you mapped the reads by
Segemehl without -S
, Unfortunately,
you have to re-mapping again. You can assign parallel (-p
) to run it as well.
Since it is only a test case, we can reduce the running time by selecting the subset of reads(first 50000).
head -n 50000 ANNOgesic/input/reads/SRR1951998.fasta > ANNOgesic/input/reads/SRR1951998_50000.fasta
head -n 50000 ANNOgesic/input/reads/SRR1951997.fasta > ANNOgesic/input/reads/SRR1951997_50000.fasta
rm ANNOgesic/input/reads/SRR1951997.fasta
rm ANNOgesic/input/reads/SRR1951998.fasta
Now, we can try circrna
annogesic circrna \
-f ANNOgesic/output/target/fasta \
-p 10 \
-g ANNOgesic/output/target/annotation \
-a \
ANNOgesic
circrna
will generate several folders.
$ ls ANNOgesic/output/circRNA/
circRNA_tables gffs segemehl_align segemehl_splice statistics
segemehl_align
and segemehl_splice
are for the results of
Segemehl. segemehl_align
stores the bam files of
alignment and segemehl_splice
stores the results of splice detection.
$ ls ANNOgesic/output/circRNA/segemehl_align/NC_000915.1/
SRR1951997_50000_NC_000915.1.bam SRR1951998_50000_NC_000915.1.bam
$ ls ANNOgesic/output/circRNA/segemehl_splice/NC_000915.1/
splicesites_all.bed transrealigned_all.bed
The gff files, tables and statistics files are stored in gffs
, circRNA_tables
and statistics
.
$ ls ANNOgesic/output/circRNA/gffs/NC_000915.1/
NC_000915.1_circRNA_all.gff NC_000915.1_circRNA_best.gff
$ ls ANNOgesic/output/circRNA/circRNA_tables/NC_000915.1/
circRNA_NC_000915.1_all.csv circRNA_NC_000915.1_best.csv
$ ls ANNOgesic/output/circRNA/statistics/
stat_circRNA_NC_000915.1.csv
NC_000915.1_circRNA_all.gff
and circRNA_NC_000915.1_all.csv
are for all circular RNAs without filtering.
NC_000915.1_circRNA_best.gff
and circRNA_NC_000915.1_best.csv
are the circular RNAs after filering by mapping ratio and comparison of genome annotation.
SNP calling¶
If you want to know the SNPs or mutations of your RNA-seq data, you can use snp
to get it.
snp
is divided by two parts. One part is for comparing with the “reference strain” which is the
closed strain of your strain(“target strain”). It is useful for users who have no fasta files of their
strain. You can refer to the section of Retrieving the input data
.
Because you may not have time to check the mutations between “reference strain” and “target strain”,
it is a good way to detect the mutations automatically. You just need to put your bam files of
“reference strain” in correct path. It will generate the potential sequences.
The other part is for detecting the mutations of the alignment files and “target strain”. In this part,
you can know the real mutations of “target strain”. Therefore, you need to put the bam files of
“target strain” to the correct folder.
Before running the subcommand, we must have the bam files. Because we already generated them through
running circrna
, we can just use them. However, please remember that the mapping function of
circrna
is only basic one. If you have other request, please do mapping by yourself.
For testing, we only discover the mutations of “target strain” because our mapping is based on the
fasta of “target strain” - NC_000915. Therefore, we copy the bam files to BAMs_map_target
.
cp ANNOgesic/output/circRNA/segemehl_align/NC_000915.1/SRR195199* ANNOgesic/input/BAMs/BAMs_map_target/tex_notex
Then we can run the subcommand.
annogesic snp \
-t target \
-p 1,2,3 \
-tw ANNOgesic/input/BAMs/BAMs_map_target/tex_notex \
-f ANNOgesic/output/target/fasta \
ANNOgesic
If you want to compute for comparison of “reference strain” and “target strain”, you just need to change
-t
to reference
and assign the correct bam files.
snp
will generate two folders, compare_reference
is for the results of comparison of “reference strain”
and “target strain”. validate_target
is for the results of real mutations of “target strain”.
$ ls ANNOgesic/output/SNP_calling/
compare_reference validate_target
Becaues we run validate_target
, you can see there are several folders under validate_target
.
$ ls ANNOgesic/output/SNP_calling/validate_target/
SNP_raw_outputs SNP_table seqs statistics
All folders are divided by three parts - extend_BAQ
, with_BAQ
and without_BAQ
.
$ ls ANNOgesic/output/SNP_calling/validate_target/seqs/
extend_BAQ/ with_BAQ/ without_BAQ/
In seqs
, there are the potential sequences.
$ ls ANNOgesic/output/SNP_calling/validate_target/seqs/with_BAQ/NC_000915.1/
NC_000915.1_NC_000915.1_1_1.fa
SNP_raw_outputs
stores the output of `Samtools and Bcftools<https://github.com/samtools>`_.
SNP_table
stores the results after filtering and the indices of potential sequence(
you can see the difference between these potential sequences in seqs
).
statistics
stores the statistics and visualization files.
$ ls ANNOgesic/output/SNP_calling/validate_target/SNP_raw_outputs/NC_000915.1/
NC_000915.1_extend_BAQ.vcf NC_000915.1_with_BAQ.vcf NC_000915.1_without_BAQ.vcf
$ ls ANNOgesic/output/SNP_calling/validate_target/SNP_table/NC_000915.1/
NC_000915.1_extend_BAQ_depth_only.vcf NC_000915.1_with_BAQ_depth_only.vcf NC_000915.1_without_BAQ_depth_only.vcf
NC_000915.1_extend_BAQ_depth_quality.vcf NC_000915.1_with_BAQ_depth_quality.vcf NC_000915.1_without_BAQ_depth_quality.vcf
NC_000915.1_extend_BAQ_seq_reference.csv NC_000915.1_with_BAQ_seq_reference.csv NC_000915.1_without_BAQ_seq_reference.csv
$ ls ANNOgesic/output/SNP_calling/validate_target/statistics/
NC_000915.1_extend_BAQ_NC_000915.1_SNP_QUAL.png NC_000915.1_without_BAQ_NC_000915.1_SNP_QUAL.png stat_NC_000915.1_with_BAQ_SNP.csv
NC_000915.1_with_BAQ_NC_000915.1_SNP_QUAL.png stat_NC_000915.1_extend_BAQ_SNP.csv stat_NC_000915.1_without_BAQ_SNP.csv
Mapping Gene ontology¶
Gene ontology is useful for understanding the function of gene products. go_term
is the
subcommand for mapping your annotations to gene ontology. Before running go_term
, we
need to prepare some databases. First, please download
goslim.obo and
go.obo and
idmapping_selected.tab.
$ wget -cP ANNOgesic/input/database http://www.geneontology.org/ontology/subsets/goslim_generic.obo
$ wget -cP ANNOgesic/input/database http://geneontology.org/ontology/go.obo
$ wget -cP ANNOgesic/input/database ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/idmapping/idmapping_selected.tab.gz
$ gunzip ANNOgesic/input/database/idmapping_selected.tab.gz
Now, we have all required databases. You can also import the information of transcript to generate the results which only included the expressed CDS.
Let’s try it.
annogesic go_term \
-g ANNOgesic/output/target/annotation \
-a ANNOgesic/output/transcriptome_assembly/gffs \
ANNOgesic
The output of go_term
will store in Go_term_results
. The statistics files and
figures will store in statistics
.
- ::
- $ ls ANNOgesic/output/Go_term/ all_CDS expressed_CDS $ ls ANNOgesic/output/Go_term/all_CDS/ Go_term_results statistics $ ls ANNOgesic/output/Go_term/all_CDS/Go_term_results/NC_000915.1/ all_strains_uniprot.csv $ ls ANNOgesic/output/Go_term/all_CDS/statistics/NC_000915.1/ figs stat_NC_000915.1.csv $ ls ANNOgesic/output/Go_term/all_CDS/statistics/NC_000915.1/figs/ NC_000915.1_biological_process.png NC_000915.1_cellular_component.png NC_000915.1_molecular_function.png NC_000915.1_three_roots.png
Prediction of Subcellular localization¶
Subcellular localization may be a useful information for analysis of protein function. For
generating the information of subcellular localization, you can use the subcommand
subcellular_localization
to get it. Like go_term
, you can also import the
information of transcript to generate the results which only included the expressed CDS.
annogesic subcellular_localization \
-g ANNOgesic/output/target/annotation \
-f ANNOgesic/output/target/fasta \
-a ANNOgesic/output/transcriptome_assembly/gffs \
-m -b negative \
ANNOgesic
The output of subcellular_localization
will generate two folders. psortb_results
will
store the output of Psortb. statistics
will store
the statistics files and figures.
$ ls ANNOgesic/output/subcellular_localization/
all_CDS expressed_CDS
$ ls ANNOgesic/output/subcellular_localization/all_CDS/
psortb_results statistics
$ ls ANNOgesic/output/subcellular_localization/all_CDS/psortb_results/NC_000915.1/
NC_000915.1_raw.txt NC_000915.1_table.csv
$ ls ANNOgesic/output/subcellular_localization/all_CDS/statistics/NC_000915.1/
NC_000915.1_NC_000915.1.png stat_NC_000915.1_sublocal.csv
Generating protein-protein interaction network¶
Protein-protein interaction network is an important feature for analysis of regulation.
The subcommand ppi_network
combines STRING
(database of protein-protein interaction)
and PIE
(text-mining for protein-protein interaction). It can generate the protein-protein
interaction networks with supported literatures. You can refer to relevance of literatures
and networks to find your interesting candidates.
Before running the subcommand, you need to download the species.vXXXX.txt from STRING
wget -cP ANNOgesic/input/database http://string-db.org/newstring_download/species.v10.txt
Now, we can try the subcommand.
annogesic ppi_network \
-s NC_000915.1.gff:NC_000915.1:'Helicobacter pylori 26695':'Helicobacter pylori' \
-g ANNOgesic/output/target/annotation \
-d ANNOgesic/input/database/species.v10.txt \
-q NC_000915.1:217:633:-,NC_000915.1:2719:3402:+ \
-n \
ANNOgesic
We just tried to compute two proteins. If you want to get all proteins in ptt files,
you just need to assign all
in -q
.
ppi_network
will generate three folders.
$ ls ANNOgesic/output/PPI/
all_results/ best_results/ figures/
all_results
is for all interactions without filtering. best_results
is for the interactions with
filtering of PIE score. figures
is for
the figures of protein-protein interaction networks. There are two subfolders - with_strain
and without_strain
in these folders. These two folders store all information of interactions and literature scores.
with_strain
is for the information with giving specific strain name for searching literatures.
without_strain
is for the information without giving specific strain name for searching literatures.
$ ls ANNOgesic/output/PPI/all_results/PPI_NC_000915.1/
NC_000915.1_without_strain.csv NC_000915.1_with_strain.csv without_strain/ with_strain/
$ ls ANNOgesic/output/PPI/best_results/PPI_NC_000915.1/
NC_000915.1_without_strain.csv NC_000915.1_with_strain.csv without_strain with_strain
$ ls ANNOgesic/output/PPI/figures/PPI_NC_000915.1/
without_strain with_strain
$ ls ANNOgesic/output/PPI/all_results/PPI_NC_000915.1/with_strain/NC_000915.1/
carA_C694_01345.csv carB_C694_01345.csv pyrB_carB.csv ribD_ribH.csv
carA_carB.csv carB_guaB.csv pyrB_guaB.csv rpsJ_nusB.csv
carA_guaB.csv guaB_C694_01345.csv pyrD_C694_01345.csv
carA_pyrB.csv nusG_rpoB.csv pyrE_pyrF.csv
$ ls ANNOgesic/output/PPI/all_results/PPI_NC_000915.1/without_strain/NC_000915.1/
carA_C694_01345.csv carB_C694_01345.csv pyrB_carB.csv ribD_ribH.csv
carA_carB.csv carB_guaB.csv pyrB_guaB.csv rpsJ_nusB.csv
carA_guaB.csv guaB_C694_01345.csv pyrD_C694_01345.csv
carA_pyrB.csv nusG_rpoB.csv pyrE_pyrF.csv
$ ls ANNOgesic/output/PPI/best_results/PPI_NC_000915.1/without_strain/NC_000915.1/
carA_C694_01345.csv carB_C694_01345.csv pyrD_C694_01345.csv
carA_carB.csv guaB_C694_01345.csv
$ ls ANNOgesic/output/PPI/best_results/PPI_NC_000915.1/with_strain/NC_000915.1/
(It can't find any interactions)
$ ls ANNOgesic/output/PPI/figures/PPI_NC_000915.1/with_strain/NC_000915.1/
HP0001_nusB.png HP0005_pyrF.png
$ ls ANNOgesic/output/PPI/figures/PPI_NC_000915.1/without_strain/NC_000915.1/
P0001_nusB.png HP0005_pyrF.png
Generating riboswitch¶
If you want to know the riboswitchs, you can use the subcommand riboswitch
.
Before running riboswitch
, you need to get the information of known riboswitches in Rfam.
You can download it from our Github.
$ wget -cP ANNOgesic/input/riboswitch_ID/ https://raw.githubusercontent.com/Sung-Huan/ANNOgesic/master/database/Rfam_riboswitch_ID.csv
You also need to download Rfam.
$ wget -cP ANNOgesic/input/database ftp://ftp.ebi.ac.uk/pub/databases/Rfam/12.0/Rfam.tar.gz
$ cd ANNOgesic/input/database
$ tar -zxvf Rfam.tar.gz
$ rm Rfam.tar.gz
$ cd ../../../
Now we can try the subcommand.
annogesic riboswitch \
-g ANNOgesic/output/target/annotation \
-f ANNOgesic/output/target/fasta \
-i ANNOgesic/input/riboswitch_ID/Rfam_riboswitch_ID.csv \
-R ANNOgesic/input/database/CMs/Rfam.cm \
ANNOgesic
The output is the following. gffs
is for gff files of riboswitchs; tables
is for tables of riboswitchs;
scan_Rfam
is for the output files of scanning Rfam; statistics
is for the statistics files.
$ ls ANNOgesic/output/riboswitch/
gffs scan_Rfam statistics tables
$ ls ANNOgesic/output/riboswitch/gffs/
NC_000915.1_riboswitch.gff
$ ls ANNOgesic/output/riboswitch/scan_Rfam/NC_000915.1/
NC_000915.1_riboswitch_prescan.txt NC_000915.1_riboswitch_scan.txt
$ ls ANNOgesic/output/riboswitch/tables/
NC_000915.1_riboswitch.csv
$ ls ANNOgesic/output/riboswitch/statistics/
stat_NC_000915.1_riboswitch.txt
Producing the screenshots¶
It is a good idea if we can get the screenshots of our interesting features. Then we can
check them very quickly. Therefore, ANNOgesic provide a subcommand screenshot
for
generating screenshots.
Before you running it, you have to install IGV for generating screenshot.
For testing, we use TSSs as main feature, sRNAs and CDSs information as side features.
annogesic screenshot \
-mg ANNOgesic/output/TSS/gffs/NC_000915.1_TSS.gff \
-sg ANNOgesic/output/target/annotation/NC_000915.1.gff,ANNOgesic/output/sRNA/gffs/best/NC_000915.1_sRNA.gff \
-f ANNOgesic/output/target/fasta/NC_000915.1.fa \
-o ANNOgesic/output/TSS \
-tl $tex_notex_libs \
-tw ANNOgesic/input/wigs/tex_notex \
ANNOgesic
screenshot
will generate two txt files and two folders.
$ ls ANNOgesic/output/TSS/screenshots/NC_000915.1/
forward/ forward.txt reverse/ reverse.txt
forward.txt
and reverse.txt
are batch files for IGV.
forward
and reverse
are the folders for storing screenshots.
Now, please open IGV. Please follow the procedures: Tools ->
Run Batch Script -> choose forward.txt
. When it has done, please do it again for reverse strand: Tools ->
Run Batch Script -> choose reverse.txt
. If you just want to test it and don’t want to wait a long time for
generating screenshots, you can delete some lines of gff files of TSSs.
After that, you can see that there are several screenshots in forward
and reverse
.
$ ls ANNOgesic/output/TSS/screenshots/NC_000915.1/forward
...
NC_000915.1:1002230-1002230.png NC_000915.1:1245705-1245705.png NC_000915.1:1516949-1516949.png NC_000915.1:246369-246369.png NC_000915.1:463673-463673.png NC_000915.1:741002-741002.png
NC_000915.1:1002524-1002524.png NC_000915.1:124623-124623.png NC_000915.1:151822-151822.png NC_000915.1:251753-251753.png NC_000915.1:463731-463731.png NC_000915.1:744418-744418.png
NC_000915.1:1002728-1002728.png NC_000915.1:1249488-1249488.png NC_000915.1:1520156-1520156.png NC_000915.1:255496-255496.png NC_000915.1:464179-464179.png NC_000915.1:744551-744551.png
...
$ ls ANNOgesic/output/TSS/screenshots/NC_000915.1/reverse
...
NC_000915.1:1002215-1002215.png NC_000915.1:1235881-1235881.png NC_000915.1:1481470-1481470.png NC_000915.1:179609-179609.png NC_000915.1:467716-467716.png NC_000915.1:767765-767765.png
NC_000915.1:1002707-1002707.png NC_000915.1:1238472-1238472.png NC_000915.1:1482537-1482537.png NC_000915.1:181416-181416.png NC_000915.1:46780-46780.png NC_000915.1:769891-769891.png
NC_000915.1:100498-100498.png NC_000915.1:1240517-1240517.png NC_000915.1:1482926-1482926.png NC_000915.1:181781-181781.png NC_000915.1:468289-468289.png NC_000915.1:770316-770316.png
...
Coloring the screenshots¶
If your RNA-seq data has a lot of tracks and you want to check TSSs, it will be painful for distinguish the
tracks of TEX+ and TEX-. Therefore, we provide a subcommand color_png
for coloring
your screenshots.
annogesic color_png \
-t 2 \
-f ANNOgesic/output/TSS \
ANNOgesic
You will see the filenames of png files are the same as before. However, when you open them, the tracks are colored.
$ ls ANNOgesic/output/TSS/screenshots/NC_000915.1/forward
...
NC_000915.1:1002230-1002230.png NC_000915.1:1245705-1245705.png NC_000915.1:1516949-1516949.png NC_000915.1:246369-246369.png NC_000915.1:463673-463673.png NC_000915.1:741002-741002.png
NC_000915.1:1002524-1002524.png NC_000915.1:124623-124623.png NC_000915.1:151822-151822.png NC_000915.1:251753-251753.png NC_000915.1:463731-463731.png NC_000915.1:744418-744418.png
NC_000915.1:1002728-1002728.png NC_000915.1:1249488-1249488.png NC_000915.1:1520156-1520156.png NC_000915.1:255496-255496.png NC_000915.1:464179-464179.png NC_000915.1:744551-744551.png
...
$ ls ANNOgesic/output/TSS/screenshots/NC_000915.1/reverse
...
NC_000915.1:1002215-1002215.png NC_000915.1:1235881-1235881.png NC_000915.1:1481470-1481470.png NC_000915.1:179609-179609.png NC_000915.1:467716-467716.png NC_000915.1:767765-767765.png
NC_000915.1:1002707-1002707.png NC_000915.1:1238472-1238472.png NC_000915.1:1482537-1482537.png NC_000915.1:181416-181416.png NC_000915.1:46780-46780.png NC_000915.1:769891-769891.png
NC_000915.1:100498-100498.png NC_000915.1:1240517-1240517.png NC_000915.1:1482926-1482926.png NC_000915.1:181781-181781.png NC_000915.1:468289-468289.png NC_000915.1:770316-770316.png
...
Now you already finished your first wonderful trip of ANNOgesic.


Product Details
Price: Rs {{product.price}}
{{product.title}}
{{product.description}}
Add to Cart
Buy Now


Read a variable and write (copy) to another variable
Variable server uri:
Variable id to read:
Variable id to write:
Run copy


| Edit | TAX Deduction Account Number of Deductor | Name of Deductor | Income Chargeable Under Salaries | Total TAX Deducted | Delete |
|---|
| Edit | TAX Collection Account(TCN) Number of Collector | Name of Collector | Total TAX Deducted | Delete |
|---|
| Edit | BSR Code | Serial No. of challan | TAX Paid | Delete |
|---|


Muhammad Quli Qutb Shah (1565 – 11 January 1612) was the fifth sultan of the Qutb Shahi dynasty of Golkonda and founded the city of Hyderabad, in South-central India and built its architectural centerpiece, the Charminar and Mecca Masjid. He was an able administrator and his reign is considered one of the high points of the Qutb Shahi dynasty. He ascended to the throne in 1580 at the age of 15 and ruled for 31 years.
Muhammad Quli built the city of Hyderabad on the southern bank of the Musi River in 1591. He called architects from all around the world to lay out the city, which was built on a grid plan. The city was named in the remembrance of 4th Caliph of Islam or 1st Imam of Shia Muslim Ali Ibne Abi Talib. He constructed Char Minar and Makkah Masjid. He was the one who laid foundation stone of Makkah Masjid after checking that there was no one in the crowd who never skipped a single prayer except him.


Next: Exceptional Situations in the Compiler, Previous: File Compilation, Up: Compilation
The functions eval and compile are required to ensure that literal objects referenced within the resulting interpreted or compiled code objects are the same as the corresponding objects in the source code. compile-file, on the other hand, must produce a compiled file that, when loaded with load, constructs the objects defined by the source code and produces references to them.
In the case of compile-file, objects constructed by load of the compiled file cannot be spoken of as being the same as the objects constructed at compile time, because the compiled file may be loaded into a different Lisp image than the one in which it was compiled. This section defines the concept of similarity which relates objects in the evaluation environment to the corresponding objects in the run-time environment.
The constraints on literal objects described in this section apply only to compile-file; eval and compile do not copy or coalesce constants.


Macromedia Flash Content URL:
Alternate URL :
Macromedia Flash Version:
2.0
3.0
4.0
5.0
Require Latest Plug-in
If the Macromedia Flash Player is not installed and auto-installation is not possible, then:
Install Macromedia Flash Player
Installation URL:
Load Alternate URL
If the Macromedia Flash Player version is unacceptable and auto-update is not possible, then:
Update Macromedia Flash Player
Updater URL:
Load Alternate URL


responses RSV cells vaccine respiratory antibody virus titers T-cell animals syncytial using boost regimens induced . SD RSV-F-specific post Fig. week group prime-boost response serum study antibodies immune protein determined number vectors weeks human BAL immunity immunization infection lung {border-style Ad.RSV.FA homologous IFNγ based catalog detected measured multiple px;} time #ffffff;} IgG dilution neutralizing (Fig. IgA expressing prime cell cynomolgus mean post-F samples Adenoviral Mix/Mix RSV-F blood described heterologous induce intramuscular pre-F (BD ELISA ELISPOT RSV-specific animal functional high individual mucosal protective min × IL- followed humoral negative stimulation vaccination viral washed (Supplementary ICS adenovirus analysis assessed background clone immunogenicity incubated lower observed peptide pre-F-specific sample systemic targeting values (week Biosciences, Infect. TNFα, differences fluid owing performed µl (.–.) IFNγ, Tukey antigen-specific compared correction expression fusion neutralization peak signal significant test vector (RSV) Shown analyzed cellular comparisons). cytokine cytokines disease hoc nasal plates polyfunctionality positive pre- px; responses. specific standard used {font-family °C Ad/Ad Animals ERD RPMI- RSV-FA Supplementary adenoviral assay calculated corresponding degree deviation durable flow font-size including indicated levels log macaques magnitude obtained polyfunctional provided regimens. staining strong vaccines (Quality (group ANOVA PBS RT. adults arithmetic censored clinical cotton did double; groups higher included indicate infants limit limited luciferase means peripheral post-F-specific previously ratio recombinant regimens, responder responses, role set showed strains threshold µl), (Tobit (n = -well . × Ad, Animal IFNγ CD Janssen N.C.S., NCT, NHP PBMCs RSV-A TNFα Titers administration al.A amino assays binding border-color border-width challenge control data defined detectable development duplicate. elderly exact expected final healthy high-risk kept material memory mix monoclonal neutralized points. post-prime postfusion potentially prefusion presence protection reached receiving ref. serotype severe shown size solid; starting statistical sterile {font-style {font-weight (Mix/Mix (all Ad-based Care Cells Commons Creative D-PBS Dis../ Endpoint FACS Fisher’s However, Netherlands) Pre-F-specific RSV-B RSV.FA Synergy Th-biased Th-type Tween, Vaccines Virus analysis) analysis. antigen approach article associated available bold boost. buffer, cells, characterized coated comparison concentration containing contracted control, correlated courier; dilutions em; end experimental exploratory formalin-inactivated groups, half heat-inactivated important indicating information irrespective licensed line long-lasting low luminescence lung, macaque mice model model. natural nonhuman overlapping particularly persisted platform polychromatic pool population promising prototype pt;} received reciprocal regimen reinfection research safety serial significantly similar slightly spun stimulated strain study, tract transferred tubes type µg/ml


Here is the Spring Cloud Netflix official documentation for configuring replication:
By default, the JHipster Registry works in standalone mode: you will see one replica in this screen, which the current standalone registry: the address of the replica should be the same as the address of your server.
The JHipster Registry also works in "peer aware mode", and provides for this two pre-defined Spring profiles, named "peer1" and "peer2". Those profiles are mostly here as working examples, as you will probably want something different in production.
Those profiles trigger some specific Spring Boot configurations, which are available in your registry's
src/main/resources/config
folder.
Those profiles expect to have 2 different hosts, one for each replica: this is required by Eureka, which expects to have replicas on
different servers. If you want to run this on your local machine, you need to point those 2 hostnames to your local address, for
example on a Unix/MacOSX system, edit /etc/hosts
to add those lines:
# Eureka peers <IP_ADDRESS> eureka-peer-1 <IP_ADDRESS> eureka-peer-2
Running a peer-aware development cluster is then just a matter of running:
./mvnw -Pdev,git,peer1
./mvnw -Pdev,git,peer2
Here is a sample working configuration for "peer1". Note that its "serviceUrl" points to "peer2":
server: port: 8761 eureka: instance: hostname: eureka-peer-1 server: enable-self-preservation: false registry-sync-retry-wait-ms: 500 a-sgcache-expiry-timeout-ms: 60000 eviction-interval-timer-in-ms: 30000 peer-eureka-nodes-update-interval-ms: 30000 renewal-threshold-update-interval-ms: 15000 client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://admin:admin@eureka-peer-2:8762/eureka/
Here is the same configuration for "peer2", which has a "serviceUrl" pointing to "peer1":
server: port: 8762 eureka: instance: hostname: eureka-peer-2 server: enable-self-preservation: false registry-sync-retry-wait-ms: 500 a-sgcache-expiry-timeout-ms: 60000 eviction-interval-timer-in-ms: 30000 peer-eureka-nodes-update-interval-ms: 30000 renewal-threshold-update-interval-ms: 15000 client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://admin:admin@eureka-peer-1:8761/eureka/


About
Welcome to the Digital Library Federation (DLF) Assessment Interest Group (AIG) Metadata Working Group, also known as the DLF Metadata Assessment Working Group.
Mission
The DLF Metadata Assessment Working Group strives to collaboratively build guidelines, best practices, tools, and workflows around the evaluation and assessment of metadata used by and for digital libraries and repositories. We fulfill this mission by supporting discussions of metadata assessment and quality control, sharing metadata assessment approaches, and fostering a community of dedicated metadata assessment professionals.
The DLF Metadata Assessment Working Group creates high-level outputs that metadata workers from all walks of life can employ for their various metadata assessment needs.
As such, our efforts focus on how to measure, evaluate, and assess metadata as it exists in various digital library systems.
We hope that this resource offers a way for fellow metadata professionals to perform their own assessment of metadata practices; understand the results; and–ultimately–decide on a path that both enhances metadata quality and leads to a better understanding of one’s collections.
Organization
The DLF Metadata Assessment Working Group consists of the following sub-groups:
- Collaboration (with other AIG working groups).
- Environmental Scan.
- Metadata Quality Benchmarks.
- Tools.
- Website.
Current Project Focus
The 2019 DLF Metadata Assessment Working Group’s efforts focused on:
- Updating the Metadata Assessment Zotero Library.
- Developing a survey about metadata assessment and metadata quality practices.
- Creating a preliminary metadata analysis tools repository.
- Updating the DLF Metadata Assessment Working Group’s website.
Prior Efforts
See the DLF Metadata Assessment Working Group’s wiki page for prior years’ goals and deliverables.
Project Limitations
This resource provides metadata professionals with a plain language, high-level resource for assessing descriptive metadata in digital collections.
Due to the wide range of digital collections, users, and institutions, this tool does not offer prescriptive recommendations for metadata.
Future Efforts
As our research efforts continue, we hope to expand our efforts to include related topics like:
- Other kinds of metadata, such as structural, administrative, and technical metadata.
- Assessment of the utility and importance of metadata.
- The qualitative state of metadata currently used.
- Metadata beyond the digital repository.
As a member of the DLF community, we abide by the DLF Code of Conduct.


{% extends "base.html" %} {% block custom_styles %} nav { background-color: #5B6982; min-height: 40px; } {% endblock %} {% block title %}
Use the copy options below to setup your device.
{% endblock %} {% block send_email_failure_alert_text %} There was a problem sending your invite.\n\nCheck that you have correctly filled out the form and try again. {% endblock %} {% block send_email_button_text %} Send Email {% endblock %} {% block start_meeting_button_text %} Start Meeting {% endblock %} {% block email_instructions %}Use the form below to send your meeting URL to your family and friends.
The meeting link will be included below your message.
{% endblock %} {% block email_recipients_label %} Recipient's e-mail address: {% endblock %} {% block email_message_label %} {% endblock %} {% block email_message %} Please join my video conferencing call. {% endblock %}


this site is a parody site I made for donation pages back when I first learned HTML
this is a site I mde when I got bored "MLG.404"


[gecode-users] Bug with Tuple, Minimizescript (Restart) and several threads
Manuel Baclet
manu.baclet at gmail.com
Mon Jul 16 00:30:39 CEST 2012
Hello,
first of all, thank you for this great software tool. I think there is a bug in Gecode when using extensional constraint with tuples, minimizescript, restart search and several threads. For example, the following program terminates most of the time with a segmentation fault. I tested this on osX and Linux:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.cp
Type: application/octet-stream
Size: 1399 bytes
Desc: not available
URL: <http://www.gecode.org/pipermail/users/attachments/20120716/05e75099/attachment.obj>
-------------- next part --------------
Everything is fine when using one thread or using bab search and i don't think that the problem occurs when using DFA or regular expressions instead of tuples.
On Linux, gdb says:
[New Thread 0xb62b6b40 (LWP 7988)]
[New Thread 0xb5ab5b40 (LWP 7989)]
[New Thread 0xb52b4b40 (LWP 7990)]
[New Thread 0xb4ab3b40 (LWP 7991)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb62b6b40 (LWP 7988)]
0xb7aacf95 in Gecode::Int::Extensional::Base<Gecode::Int::BoolView, true>::valid (this=0x806f030, t=0x11, dom=0x806e038)
at ./gecode/int/extensional/base.hpp:131
131 if (!dom[i].get(static_cast<unsigned int>(t[i]-ts()->min)))
Regards,
Manuel
More information about the users
mailing list


People find me to be an upbeat, self-motivated team player with excellent communication skills.
I’ve created several websites designed to streamline sales and marketing activities for busy professionals.
I see myself as a relentless problem-solver and I’m always looking for a new challenge.
I also use a blend of technical skills to take pictures of people, places, landscapes, just to mention but a few!
I decided to take programming classes at Moringa School because understanding code opens up huge opportunities to create unique and useful content.
If you want to know more about me, here is .
Here are some of my projects;
This is basically a website that helps users to book appointments whenever they want their cars to be fixed at the garage or at home. It uses HTML and CSS.
This is a website that gives detailed steps of how to cook your favorite meal. It uses HMTL and CSS.


-
Welcome!
Complete Developer Network System
HIGH SECURITY AND PRIVACY
LOGIN AS ADMIN -
Welcome!
Complete Developer Network System
FAST AND RELIABLE
LOGIN AS ADMIN -
Welcome!
Complete Developer Network System
ALL IN ONE
LOGIN AS ADMIN


About Us
An online community where clients or businesses can seek expertise from creative and tech professionals in Kenya who can offer them quality work at market price. The online platform will focus on showcasing and building a community of up and coming creatives and tech experts throughout from Kenya.


{% extends 'base.html' %} {% block title %} About {% endblock %} {% block body %}
Our mission at Fausties Bakery is to deliver well-crafted cakes of superior quality for celebrations and everyday life at affordable prices. Driven by unmatched passion in our craft, we go above and beyond to ensure that we deliver remarkable cakes to our clients for we truly believe in customer satisfaction.
We pride ourselves in our creativity which truly speaks for itself. With regards to time, you can rest easy for we are particularly keen to deliver cakes in good time without compromising on value thus saving you the needless hussle.Moreover, Deliveries can be made to Gateway Mall, Syokimau or within the CBD but at a fee. So, what are you waiting for? Come join the Fausties community and be a part of something great.


Returns the tasks for this Thor class and all subclasses.
OrderedHash |
An ordered hash with tasks names as keys and Thor::Task objects as values. |
# File lib/thor/base.rb, line 340 def all_tasks @all_tasks ||= from_superclass(:all_tasks, Thor::CoreExt::OrderedHash.new) @all_tasks.merge(tasks) end
Adds an argument to the class and creates an attr_accessor for it.
Arguments are different from options in several aspects. The first one is how they are parsed from the command line, arguments are retrieved from position:
thor task NAME
Instead of:
thor task --name=NAME
Besides, arguments are used inside your code as an accessor (self.argument), while options are all kept in a hash (self.options).
Finally, arguments cannot have type :default or :boolean but can be optional (supplying :optional => :true or :required => false), although you cannot have a required argument after a non-required argument. If you try it, an error is raised.
name<Symbol> |
The name of the argument. |
options<Hash> |
Described below. |
:desc - Description for the argument. :required - If the argument is required or not. :optional - If the argument is optional or not. :type - The type of the argument, can be :string, :hash, :array, :numeric. :default - Default value for this argument. It cannot be required and have default values. :banner - String to show on usage notes.
ArgumentError |
Raised if you supply a required argument after a non required one. |
# File lib/thor/base.rb, line 204 def argument(name, options={}) is_thor_reserved_word?(name, :argument) no_tasks { attr_accessor name } required = if options.key?(:optional) !options[:optional] elsif options.key?(:required) options[:required] else options[:default].nil? end remove_argument name arguments.each do |argument| next if argument.required? raise ArgumentError, "You cannot have #{name.to_s.inspect} as required argument after " << "the non-required argument #{argument.human_name.inspect}." end if required options[:required] = required arguments << Thor::Argument.new(name, options) end
Returns this class arguments, looking up in the ancestors chain.
# File lib/thor/base.rb, line 234 def arguments @arguments ||= from_superclass(:arguments, []) end
If you want to raise an error for unknown options, call check_unknown_options! This is disabled by default to allow dynamic invocations.
# File lib/thor/base.rb, line 135 def check_unknown_options! @check_unknown_options = true end
Adds an option to the set of class options
name<Symbol> |
The name of the argument. |
options<Hash> |
Described below. |
:desc |
– Description for the argument. |
:required |
– If the argument is required or not. |
:default |
– Default value for this argument. |
:group |
– The group for this options. Use by class options to output options in different levels. |
:aliases |
– Aliases for this option. Note: Thor follows a convention of one-dash-one-letter options. Thus aliases like “-something” wouldn’t be parsed; use either “--something” or “-s” instead. |
:type |
– The type of the argument, can be :string, :hash, :array, :numeric or :boolean. |
:banner |
– String to show on usage notes. |
:hide |
– If you want to hide this option from the help. |
# File lib/thor/base.rb, line 269 def class_option(name, options={}) build_option(name, options, class_options) end
Adds a bunch of options to the set of class options.
class_options :foo => false, :bar => :required, :baz => :string
If you prefer more detailed declaration, check class_option.
Hash[Symbol => Object]
# File lib/thor/base.rb, line 247 def class_options(options=nil) @class_options ||= from_superclass(:class_options, {}) build_options(options, @class_options) if options @class_options end
Defines the group. This is used when thor list is invoked so you can specify that only tasks from a pre-defined group will be shown. Defaults to standard.
name<String|Symbol>
# File lib/thor/base.rb, line 315 def group(name=nil) @group = case name when nil @group || from_superclass(:group, 'standard') else name.to_s end end
Sets the namespace for the Thor or Thor::Group class. By default the namespace is retrieved from the class name. If your Thor class is named Scripts::MyScript, the help method, for example, will be called as:
thor scripts:my_script -h
If you change the namespace:
namespace :my_scripts
You change how your tasks are invoked:
thor my_scripts -h
Finally, if you change your namespace to default:
namespace :default
Your tasks can be invoked with a shortcut. Instead of:
thor :my_task
# File lib/thor/base.rb, line 415 def namespace(name=nil) @namespace = case name when nil @namespace || Thor::Util.namespace_from_thor_class(self) else @namespace = name.to_s end end
All methods defined inside the given block are not added as tasks.
So you can do:
class MyScript < Thor no_tasks do def this_is_not_a_task end end end
You can also add the method and remove it from the task list:
class MyScript < Thor def this_is_not_a_task end remove_task :this_is_not_a_task end
# File lib/thor/base.rb, line 386 def no_tasks @no_tasks = true yield ensure @no_tasks = false end
Allows to use private methods from parent in child classes as tasks.
names<Array>:: Method names to be used as tasks
public_task :foo public_task :foo, :bar, :baz
# File lib/thor/base.rb, line 456 def public_task(*names) names.each do |name| class_eval "def #{name}(*); super end" end end
Removes a previous defined argument. If :undefine is given, undefine accessors as well.
names<Array> |
Arguments to be removed |
remove_argument :foo remove_argument :foo, :bar, :baz, :undefine => true
# File lib/thor/base.rb, line 284 def remove_argument(*names) options = names.last.is_a?(Hash) ? names.pop : {} names.each do |name| arguments.delete_if { |a| a.name == name.to_s } undef_method name, "#{name}=" if options[:undefine] end end
Removes a previous defined class option.
names<Array> |
Class options to be removed |
remove_class_option :foo remove_class_option :foo, :bar, :baz
# File lib/thor/base.rb, line 303 def remove_class_option(*names) names.each do |name| class_options.delete(name) end end
Removes a given task from this Thor class. This is usually done if you are inheriting from another class and don’t want it to be available anymore.
By default it only remove the mapping to the task. But you can supply :undefine => true to undefine the method from the class as well.
name<Symbol|String> |
The name of the task to be removed |
options<Hash> |
You can give :undefine => true if you want tasks the method to be undefined from the class as well. |
# File lib/thor/base.rb, line 357 def remove_task(*names) options = names.last.is_a?(Hash) ? names.pop : {} names.each do |name| tasks.delete(name.to_s) all_tasks.delete(name.to_s) undef_method name if options[:undefine] end end
Parses the task and options from the given args, instantiate the class and invoke the task. This method is used when the arguments must be parsed from an array. If you are inside Ruby and want to use a Thor class, you can simply initialize it:
script = MyScript.new(args, options, config) script.invoke(:task, first_arg, second_arg, third_arg)
# File lib/thor/base.rb, line 432 def start(given_args=ARGV, config={}) config[:shell] ||= Thor::Base.shell.new dispatch(nil, given_args.dup, nil, config) rescue Thor::Error => e ENV["THOR_DEBUG"] == "1" ? (raise e) : config[:shell].error(e.message) exit(1) if exit_on_failure? rescue Errno::EPIPE # This happens if a thor task is piped to something like `head`, # which closes the pipe when it's done reading. This will also # mean that if the pipe is closed, further unnecessary # computation will not occur. exit(0) end
If you want only strict string args (useful when cascading thor classes), call strict_args_position! This is disabled by default to allow dynamic invocations.
# File lib/thor/base.rb, line 157 def strict_args_position! @strict_args_position = true end
Returns the tasks for this Thor class.
OrderedHash |
An ordered hash with tasks names as keys and Thor::Task objects as values. |
# File lib/thor/base.rb, line 330 def tasks @tasks ||= Thor::CoreExt::OrderedHash.new end
The basename of the program invoking the thor class.
# File lib/thor/base.rb, line 628 def basename File.basename($0).split(' ').first end
A flag that makes the process exit with status 1 if any error happens.
# File lib/thor/base.rb, line 621 def exit_on_failure? false end
Retrieves a value from superclass. If it reaches the baseclass, returns default.
# File lib/thor/base.rb, line 604 def from_superclass(method, default=nil) if self == baseclass || !superclass.respond_to?(method, true) default else value = superclass.send(method) if value if value.is_a?(TrueClass) || value.is_a?(Symbol) value else value.dup end end end end
Everytime someone inherits from a Thor class, register the klass and file into baseclass.
# File lib/thor/base.rb, line 577 def inherited(klass) Thor::Base.register_klass_file(klass) klass.instance_variable_set(:@no_tasks, false) end
Fire this callback whenever a method is added. Added methods are tracked as tasks by invoking the create_task method.
# File lib/thor/base.rb, line 584 def method_added(meth) meth = meth.to_s if meth == "initialize" initialize_added return end # Return if it's not a public instance method return unless public_instance_methods.include?(meth) || public_instance_methods.include?(meth.to_sym) return if @no_tasks || !create_task(meth) is_thor_reserved_word?(meth, :task) Thor::Base.register_klass_file(self) end
Receives a set of options and print them.
# File lib/thor/base.rb, line 511 def print_options(shell, options, group_name=nil) return if options.empty? list = [] padding = options.collect{ |o| o.aliases.size }.max.to_i * 4 options.each do |option| unless option.hide item = [ option.usage(padding) ] item.push(option.description ? "# #{option.description}" : "") list << item list << [ "", "# Default: #{option.default}" ] if option.show_default? list << [ "", "# Possible values: #{option.enum.join(', ')}" ] if option.enum end end shell.say(group_name ? "#{group_name} options:" : "Options:") shell.print_table(list, :indent => 2) shell.say "" end
Generated with the Darkfish Rdoc Generator 2.


Navigation
Main
Home
Intensity
Pages not preloaded
Technical details
Integration
WordPress
More
Changelog
2.0
3.0
5.0
License


Clouds
Skip to primary content
Skip to navigation
Clouds
Home
Weather
About Clouds
Cirrus Clouds
Stratus Clouds
Cumulus Clouds
Physical Categories of Clouds
{{content}}


If you are seeing this page, then Salesforce has succesfully posted the signed request to the Canvas-Starter kit. Click on a link below to get more details on the Canvas topic.


We compare inbound to outbound normalized densities modality by modality. It hints at the structure of power balance.


Fast regional association analysis of quantitative traits for family-based and population studies.
| Version: | 1.1.0 |
| Depends: | R (≥ 3.0.0) |
| Imports: | methods, Matrix, splines, parallel |
| Suggests: | doParallel, foreach, GenABEL, seqminer |
| Published: | 2018-01-15 |
| Author: | Nadezhda M. Belonogova and Gulnara R. Svishcheva, with contributions from: Seunggeun Lee (kernel functions), Pierre Lafaye de Micheaux ('davies' method), Thomas Lumley ('kuonen' method), James O. Ramsay (functional data analysis functions), David Clayton ('read.plink' function) and Brian Ripley ('ginv' function) |
| Maintainer: | Nadezhda M. Belonogova <belon at bionet.nsc.ru> |
| License: | GPL-3 |
| NeedsCompilation: | yes |
| CRAN checks: | FREGAT results |
| Reference manual: | FREGAT.pdf |
| Package source: | FREGAT_1.1.0.tar.gz |
| Windows binaries: | r-devel: FREGAT_1.1.0.zip, r-release: FREGAT_1.1.0.zip, r-oldrel: FREGAT_1.1.0.zip |
| OS X binaries: | r-release: FREGAT_1.1.0.tgz, r-oldrel: FREGAT_1.1.0.tgz |
| Old sources: | FREGAT archive |
Please use the canonical form https://CRAN.R-project.org/package=FREGAT to link to this page.


We will not pass your contact details to third parties.
We may use your contact details to advise you of products and information on our website or to keep you updated on orders placed.
Upon request we provide site visitors with access to all information [including proprietary information] that we maintain about them.
Site visitors can be informed of the information we maintain about them by writing to our registered office:
Damp Expert LtdThis site does not use cookies to collect personally identifiable information about you.
However, if you wish to restrict or block cookies which are set as a result of visiting this website, or indeed any other website, you can do this with your browser settings. The Help menu within your browser should tell you how to do this. Useful information about cookies and how to control them on a wide variety of browsers can be found at www.aboutcookies.org.
This site uses a limited number of third party suppliers to provide specific functionality and these cookies are included in the list below. Further information on the nature of the information collected and the options you have to control these are provided as links in this list.
| Cookie Name | Purpose |
| Google Analytics __utma __utmb __utmc __utmz |
This website uses Google Analytics, a web analytics service provided by Google, Inc. Google Analytics sets cookies in order to evaluate your use of the website and compile reports for us on activity on the site. Google stores the information collected by the cookie on servers in the United States. Google may also transfer this information to third parties where required to do so by law, or where such third parties process the information on Google’s behalf. Google will not associate your IP address with any other data held by Google. By using the website, you consent to the processing of data about you by Google in the manner and for the purposes set out above. How to reject or delete this cookie |
We review our privacy policy periodically. Regularly reviewing this page ensures you are always aware of the information we collect, how we use it and under what circumstances we might share it with other parties.


The Internet?
Want to know how the internet works, watch the video below :D
The REAL way the Internet Works
The easiest way to explain the internet is if we start with a wire. This wire is the internet. The wire can connect different devices to each other both physically and wirelessly.
There are also servers connected to this wire. These servers hold web pages and host them. Each of these servers have an IP address, which consists of numbers and dots. These addresses are given names people can actually remember and connect to, e.g facebook.com, youtube.com, etc.
An everyday computer is called a client. These clients are connected to an ISP (Internet Service Provider) and they then connect to the wire. The wire then connects to the webpage that you want.
When sending content over the internet it is cut into little pieces called packets. These packets send information quicker and more securely in small pieces. Once it reaches its destination it is put back together.


A template is an exact, full-size pattern of your counters, clearly showing seams, cutouts, edges, backsplashes, faucet holes, etc.
- All estimates include the cost of an on-site measurement.
- Final costs are determined by the approved templates or measurements.
- A 50% deposit is due before any on-site measurements are scheduled.


Alberto’s Lounge
12:00pm - 12:00am | Sunday
12:00pm - 1:00am | Friday - Saturday
5:00pm - 1:00am | Thursday
5:00pm - 12:00am | Monday - Wednesday
17-19 Alberta Street Sydney 2000
Features
At 10 William St, Dan Pepperell was known for cooking some of the most inventive Italian food in the country. At Alberto’s Lounge, which opened in December 2018, he’s once again exploring the cuisine and delighting our tastebuds.
The menu includes dishes such as gnocchi cacio e pepe, trippa all Romana (Roman-style tripe), macadamia panna cotta and house-made gelato. But in typical Pepperell style, even the dishes that look and taste entirely traditional have a few quirks in preparation. His playful approach is more Australian-Italian than straight-laced Italian.
Likewise, Alberto’s itself is more flexible than a typical restaurant – which is probably to be expected given it’s owned by Anton and Stefan Forte, the brothers behind Hubert, Frankie’s, Baxter Inn and Shady Pines. If you just want to show up unannounced and drink a few whiskies or cocktails, go ahead. Most of the restaurant’s seating is reserved for walk-ins. Alternately, if you want to settle in and make a night of it with Pepperell’s food (which you absolutely should), you can reserve a table and there’s a wine list stacked with wines from Tuscany and Sicily, and many others are available by the carafe.
Local artist Allie Webb – a frequent collaborator – created a mural on the rear laneway wall, which is visible through the large glass windows at the back of the venue. Elsewhere the aesthetics are the Fortes’ modernised interpretation of a “cool ’70s restaurant”. In late 2019, Alberto's was given an extension on their license to operate later into the night. Now, every Saturday and Sunday Alberto's hosts DJs spinning throwback Euro music.
Phone: No phone
Website: albertoslounge.com
Independent Editorial Policy
We do not seek or accept payment from the cafes, restaurants, bars and shops listed in the Directory – inclusion is at our discretion. Venue profiles are written by independent freelancers paid by Broadsheet.


Seijuro Akashi
Seijūrō Akashi (赤司 征十郎 Akashi Seijūrō) was the captain of Generation of Miracles. He is the only person that the Generation of Miracles knuckles under. He is the point guard and captain of Rakuzan High and later on for Team Vorpal Swords as well.
Akashi when first appearing in the series is shown with an extremely intimidating and condescending personality. He is able to control the Generation of Miracles as their leader as they all submit to his requests. Akashi has a certain level of respect for all of his teammates, former and present, and has utter faith in their abilities. Due to the way Akashi grew up during childhood, he developed a strong winners-mentality, believing that winners get everything in life while losers are denied all.


Installation¶
Installing allesfitter¶
- git clone https://github.com/MNGuenther/allesfitter into your
PYTHONPATH
. - git clone https://github.com/MNGuenther/exoworlds into your
PYTHONPATH
. - (soon to be pip-installable)
Requirements¶
Standard packages (install via conda/pip):
- python (>=2.7 or >=3.5)
- numpy
- scikit-learn
- matplotlib
- h5py
- seaborn
- tqdm
Special packages (install via pip):
- ellc (>=1.8.0) [1]
- dynesty (>=0.9.2) [2]
- emcee (>=3.0rc2) [3]
- celerite (>=0.3.0) [4]
- corner (>=2.0.1)
Footnotes
| [1] | requires a Fortran compiler; on Mac, you can install one e.g. via brew install gcc |
| [2] | optional; for Nested Sampling |
| [3] | optional; for MCMC |
| [4] | optional; for Gaussian Processes |


New Hi–Chiu Candies!
 Only $69 each!
Click Here
to see My first web page (not my first, but my first via Brackets)


These subroutines scatters the portions of global dense matrix owned
by a process to all the processes in the processes grid.
where:
is the global matrix
is the local portion of global dense matrix on
process .
is the scatter function.
Table 17:
Data types
Subroutine
Integer
psb_scatter
Short Precision Real
psb_scatter
Long Precision Real
psb_scatter
Short Precision Complex
psb_scatter
Long Precision Complex
psb_scatter
Type:
Synchronous.
On Entry
glob_x
The array that must be scattered into local pieces.
Scope: global
Type: required
Intent: in.
Specified as: a rank one or two array.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
root
The process that holds the global copy. If all
the processes have a copy of the global vector.
Scope: global
Type: optional
Intent: in.
Specified as: an integer variable
, default
psb_root_, i.e. process 0.
mold
The desired dynamic type for the internal vector storage.
Scope: local.
Type: optional.
Intent: in.
Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is
only allowed when loc_x is of type vdatapsb_T_vect_type.
On Return
loc_x
the local portion of global dense matrix
.
Scope: local
Type: required
Intent: out.
Specified as: a rank one or two ALLOCATABLE array or an object of type vdatapsb_T_vect_type containing numbers of the type
indicated in Table 17.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.


Credits to Martin Whitaker for creating the book hover effect I extended/customized to use on this page.
Here is a list of the work related books I have been reading/checking out in the last couple of years.
Credits to Martin Whitaker for creating the book hover effect I extended/customized to use on this page.


Home
Find similar students or groups
Predict student or group performance
Find anomalies among students or groups
Find events that occur usually simultaneously
Customize UUI
Social
Open educational resources
Connect
Or select pilot
Pataluoto
Lyseo
Athens informal
Athens formal
Real-time classification off
You have to have JavaScript enabled.


about
Hello 👋, my name is Anjan Roy. I am a computer programmer, living in India.
Hello 👋, my name is Anjan Roy. I am a computer programmer, living in India.
I've a B.Sc. in Computer Science from Dept. of Computer & System Sciences, Visva-Bharati,
Santiniketan, India. Currently I'm in final semester of my post-gradution in CS.
You may be interested in taking a look at my CV.
Number Theory, Image Processing, Quantum Computing & Robotics. Exploring BlockChain & Functional Programming eagerly.
During offtime, I love to watch movies & tv series. I also ❤ to cook 😋. I've an appetite for good story books ( mostly mystery & adventure ).


color
The color library contains static methods to help manipulate colors.
Installation
npm install --save @danehansen/color
Usage
As a module:
import * as color from '@danehansen/color';
var r = color.getRed(0xff0000);
In your browser:
<script src='danehansen-color.min.js'></script>
<script>
var color = window.danehansen.color;
var r = color.getRed(0xff0000);
</script>
Methods
- getRed(color:uint):uint
Returns the red portion of a uint.
- getGreen(color:uint):uint
Returns the green portion of a uint.
- getBlue(color:uint):uint
Returns the blue portion of a uint.
- getUint(r:uint, g:uint, b:uint):uint
Converts 3 uints into a single uint.
- distance({red:uint, green:uint, blue:uint}, {red:uint, green:uint, blue:uint}):Number
Returns the "distance" between two color objects with red
, green
, and blue
properties. The distance is an arbitrary value.
- sortColorsByHue(rgbs:Array):Array
Approximately sorts a list of objects with red
, green
, and blue
properties by their hue.
- getHSL(r:uint, g:uint, b:uint):Object
Converts 3 uints into an object with hue
, saturation
, and lightness
properties.
- getRGB(h:uint, s:Number, b:Number):Object
Converts 3 numbers into an object with red
, green
, and blue
properties.
- hexToUint(hex:String):uint
Converts a hex in string format to a uint.
- getBrightness(r:uint, g:uint, b:uint):Number
Returns the overall brightness of an RGB color as a single decimal between 0 and 1.
- getRGBString(r:uint, g:uint, b:uint, alpha:Number = 1):String
Converts 3 uints into a 'rgba(X,X,X,X)' string.
- getHSLString(h:uint, s:Number, l:Number, alpha:Number = 1):String
Converts 3 numbers into a 'hsla(X,X,X,X)' string.
- rgbStringToRGB(str:String):Object
Converts a 'rgb' style string into an object with red
, green
, and blue
properties.
- hslStringToHSL(str:String):Object
Converts a 'hsl' style string into an object with hue
, saturation
, and lightness
properties.
- getHex(color:uint):String
Converts a uint into a '#XXXXXX' string.
- getHex({string:String, uint:uint, red:uint, green:uint, blue: uint, hue: uint, saturation: Number, lightness: Number}):Object
Converts whatever you got into an object with red
, green
, blue
, hue
, saturation
, lightness
, brightness
, rgb
, hsl
, uint
, and hex
properties.


--- layout: default title: Home ---
Why, yes it is! Studies prove that learning JavaScript freshens the mind and extends life span by several hundred years. (Note: some scientists disagree with these claims.)
Why, yes it can! It's the most versatile programming language ever created and is trained to provide financial management advice, life-saving CPR, and even to take care of household pets.
Why, no there isn’t! It’s even able to write its own public relations-oriented Frequently Asked Questions pages. Now that’s one smart programming language!


Everyone Has His Wing Broken
问题描述 :
Long long ago, N gamblers (numbered from 1 to N) got together to gamble. At that time, the kinds of gamble were not that much diversified. The gamble can only be performed in a way that two people played against each other and the one who lost the game would have to give the winner $1.  But he still has to pay $1 (He may sell his pants). After playing for quite a long time, they felt as if they had their wings broken, for everyone still here won nothing.
As one of the gamblers, mzry1992 wondered what really happened. Now mzry1992 wants you to tell him what happened between some pairs, for example how much does gambler A win from gambler B directly. But actually you do not know the real situation. So you could just tell him one of the possible situations.
As one of the gamblers, mzry1992 wondered what really happened. Now mzry1992 wants you to tell him what happened between some pairs, for example how much does gambler A win from gambler B directly. But actually you do not know the real situation. So you could just tell him one of the possible situations.
输入:
There are T cases and the first line of the input contains the number T. The first line of each case consists of one integer N(2 ≤N≤500), indicating the number of gamblers. Then comes N lines. The i-th line is a non-negative integer smaller than 101 indicating the i-th gambler’s initial possess. The next line contains one integer M(0≤M≤10000), indicating the number of pairs of gamblers who gambled. The following M line contains three integer A, B, t(1≤A, B≤N, 1≤t≤100), which means that the gamble A and the gamble B played the game for t times. The final part of each test case begins with an integer Q (1≤Q≤200000). Then Q lines follows. Each line contains two integers A, B. You are asked to answer how much gambler A wins from B.
输出:
There are T cases and the first line of the input contains the number T. The first line of each case consists of one integer N(2 ≤N≤500), indicating the number of gamblers. Then comes N lines. The i-th line is a non-negative integer smaller than 101 indicating the i-th gambler’s initial possess. The next line contains one integer M(0≤M≤10000), indicating the number of pairs of gamblers who gambled. The following M line contains three integer A, B, t(1≤A, B≤N, 1≤t≤100), which means that the gamble A and the gamble B played the game for t times. The final part of each test case begins with an integer Q (1≤Q≤200000). Then Q lines follows. Each line contains two integers A, B. 你不会从小到大没出过村子吧？
int L[m+1][n+1];这样定义出错，这个在gcc上可以编译通过 在VS上不行 应该改为new 或者vector
这是什么编译器啊，不通过
int L[m+1][n+1];这样定义出错，这个在gcc上可以编译通过 在VS上不行 应该改为new 或者vector
书上的解法更巧妙一些，在九度OJ实测的效率差不多
分析的很详细！赞一个
我还有个问题想请教一下，就是感觉对于新手来说，递归理解起来有些困难，不知有没有什么好的方法或者什么好的建议？
终于明白了递归和dp的关系，多谢分享！
补充：此算法求出的不一定是最优解，之前理解错了
这个问题别太纠结了，不同的编译器结果不一
这代码的输出格式不对阿，else语句的low=p移动一下位置，增加可读性
参考 http://www.acmerblog.com/leetcode-solutions-6422.html
大哥，你复制也看看是不是这题的答案才复制吧。
bottes vernies blanches
I appreciate the efforts you men and women place in to share blogs on such sort of matters, it was certainly useful. Keep Posting!
I go through some of your put up and I uncovered a good deal of expertise from it. Many thanks for posting this sort of exciting posts


PERLDOS
Section: Perl Programmers Reference Guide (1)Updated: 2009-08-22
Index Return to Main Contents
NAME
perldos - Perl under DOS, W31, W95.SYNOPSIS
These are instructions for building Perl under DOS (or w??), using DJGPP v2.03 or later. Under w95 long filenames are supported.DESCRIPTION
Before you start, you should glance through the README file found in the top-level directory where the Perl distribution was extracted. Make sure you read and understand the terms under which this software is being distributed.This port currently supports MakeMaker (the set of modules that is used to build extensions to perl). Therefore, you should be able to build and install most extensions found in the CPAN sites.
Detailed instructions on how to build and install perl extension modules, including XS-type modules, is included. See 'BUILDING AND INSTALLING MODULES'.
Prerequisites for Compiling Perl on DOS
- DJGPP
-
DJGPP is a port of GNU C/C++ compiler and development tools to 32-bit,
protected-mode environment on Intel 32-bit CPUs running MS-DOS and compatible
operating systems, by DJ Delorie<EMAIL_ADDRESS>and friends.
For more details (FAQ), check out the home of DJGPP at:
http://www.delorie.com/djgpp/
If you have questions about DJGPP, try posting to the DJGPP newsgroup: comp.os.msdos.djgpp, or use the email gateway<EMAIL_ADDRESS>You can find the full DJGPP distribution on any of the mirrors listed here:
http://www.delorie.com/djgpp/getting.html
You need the following files to build perl (or add new modules):
v2/djdev203.zip v2gnu/bnu2112b.zip v2gnu/gcc2953b.zip v2gnu/bsh204b.zip v2gnu/mak3791b.zip v2gnu/fil40b.zip v2gnu/sed3028b.zip v2gnu/txt20b.zip v2gnu/dif272b.zip v2gnu/grep24b.zip v2gnu/shl20jb.zip v2gnu/gwk306b.zip v2misc/csdpmi5b.zip
or possibly any newer version.
- Pthreads
- Thread support is not tested in this version of the djgpp perl.
Shortcomings of Perl under DOS
Perl under DOS lacks some features of perl under UNIX because of deficiencies in the UNIX-emulation, most notably:- *
- fork() and pipe()
- *
- some features of the UNIX filesystem regarding link count and file dates
- *
- in-place operation is a little bit broken with short filenames
- *
- sockets
Building Perl on DOS
- *
-
Unpack the source package perl5.8*.tar.gz with djtarx. If you want
to use long file names under w95 and also to get Perl to pass all its
tests, don't forget to use
set LFN=y set FNCASE=y
before unpacking the archive.
- *
-
Create a ``symlink'' or copy your bash.exe to sh.exe in your "($DJDIR)/bin"
directory.
ln -s bash.exe sh.exe
[If you have the recommended version of bash for DJGPP, this is already done for you.]
And make the "SHELL" environment variable point to this sh.exe:
set SHELL=c:/djgpp/bin/sh.exe (use full path name!)
You can do this in djgpp.env too. Add this line BEFORE any section definition:
+SHELL=%DJDIR%/bin/sh.exe
- *
-
If you have split.exe and gsplit.exe in your path, then rename
split.exe to djsplit.exe, and gsplit.exe to split.exe.
Copy or link gecho.exe to echo.exe if you don't have echo.exe.
Copy or link gawk.exe to awk.exe if you don't have awk.exe.
[If you have the recommended versions of djdev, shell utilities and gawk, all these are already done for you, and you will not need to do anything.]
- *
-
Chdir to the djgpp subdirectory of perl toplevel and type the following
commands:
set FNCASE=y configure.bat
This will do some preprocessing then run the Configure script for you. The Configure script is interactive, but in most cases you just need to press ENTER. The ``set'' command ensures that DJGPP preserves the letter case of file names when reading directories. If you already issued this set command when unpacking the archive, and you are in the same DOS session as when you unpacked the archive, you don't have to issue the set command again. This command is necessary *before* you start to (re)configure or (re)build perl in order to ensure both that perl builds correctly and that building XS-type modules can succeed. See the DJGPP info entry for ``_preserve_fncase'' for more information:
info libc alphabetical _preserve_fncase
If the script says that your package is incomplete, and asks whether to continue, just answer with Y (this can only happen if you don't use long filenames or forget to issue ``set FNCASE=y'' first).
When Configure asks about the extensions, I suggest IO and Fcntl, and if you want database handling then SDBM_File or GDBM_File (you need to install gdbm for this one). If you want to use the POSIX extension (this is the default), make sure that the stack size of your cc1.exe is at least 512kbyte (you can check this with: "stubedit cc1.exe").
You can use the Configure script in non-interactive mode too. When I built my perl.exe, I used something like this:
configure.bat -des
You can find more info about Configure's command line switches in the INSTALL file.
When the script ends, and you want to change some values in the generated config.sh file, then run
sh Configure -S
after you made your modifications.
IMPORTANT: if you use this "-S" switch, be sure to delete the CONFIG environment variable before running the script:
set CONFIG=
- *
-
Now you can compile Perl. Type:
make
Testing Perl on DOS
Type:
make test
If you're lucky you should see ``All tests successful''. But there can be a few failed subtests (less than 5 hopefully) depending on some external conditions (e.g. some subtests fail under linux/dosemu or plain dos with short filenames only).
Installation of Perl on DOS
Type:
make install
This will copy the newly compiled perl and libraries into your DJGPP directory structure. Perl.exe and the utilities go into "($DJDIR)/bin", and the library goes under "($DJDIR)/lib/perl5". The pod documentation goes under "($DJDIR)/lib/perl5/pod".
BUILDING AND INSTALLING MODULES ON DOS
Building Prerequisites for Perl on DOS
For building and installing non-XS modules, all you need is a working perl under DJGPP. Non-XS modules do not require re-linking the perl binary, and so are simpler to build and install.XS-type modules do require re-linking the perl binary, because part of an XS module is written in ``C'', and has to be linked together with the perl binary to be executed. This is required because perl under DJGPP is built with the ``static link'' option, due to the lack of ``dynamic linking'' in the DJGPP environment.
Because XS modules require re-linking of the perl binary, you need both the perl binary distribution and the perl source distribution to build an XS extension module. In addition, you will have to have built your perl binary from the source distribution so that all of the components of the perl binary are available for the required link step.
Unpacking CPAN Modules on DOS
First, download the module package from CPAN (e.g., the ``Comma Separated Value'' text package, Text-CSV-0.01.tar.gz). Then expand the contents of the package into some location on your disk. Most CPAN modules are built with an internal directory structure, so it is usually safe to expand it in the root of your DJGPP installation. Some people prefer to locate source trees under /usr/src (i.e., "($DJDIR)/usr/src"), but you may put it wherever seems most logical to you, *EXCEPT* under the same directory as your perl source code. There are special rules that apply to modules which live in the perl source tree that do not apply to most of the modules in CPAN.Unlike other DJGPP packages, which are normal ``zip'' files, most CPAN module packages are ``gzipped tarballs''. Recent versions of WinZip will safely unpack and expand them, *UNLESS* they have zero-length files. It is a known WinZip bug (as of v7.0) that it will not extract zero-length files.
From the command line, you can use the djtar utility provided with DJGPP to unpack and expand these files. For example:
C:\djgpp>djtarx -v Text-CSV-0.01.tar.gz
This will create the new directory "($DJDIR)/Text-CSV-0.01", filling it with the source for this module.
Building Non-XS Modules on DOS
To build a non-XS module, you can use the standard module-building instructions distributed with perl modules.
perl Makefile.PL make make test make install
This is sufficient because non-XS modules install only ``.pm'' files and (sometimes) pod and/or man documentation. No re-linking of the perl binary is needed to build, install or use non-XS modules.
Building XS Modules on DOS
To build an XS module, you must use the standard module-building instructions distributed with perl modules *PLUS* three extra instructions specific to the DJGPP ``static link'' build environment.
set FNCASE=y perl Makefile.PL make make perl make test make -f Makefile.aperl inst_perl MAP_TARGET=perl.exe make install
The first extra instruction sets DJGPP's FNCASE environment variable so that the new perl binary which you must build for an XS-type module will build correctly.  The third extra instruction installs the perl binary from your module directory into the standard DJGPP binary directory, "($DJDIR)/bin", replacing your previous perl binary.
Note that the MAP_TARGET value *must* have the ``.exe'' extension or you will not create a ``perl.exe'' to replace the one in "($DJDIR)/bin".
When you are done, the XS-module install process will have added information to your ``perllocal'' information telling that the perl binary has been replaced, and what module was installed. You can view this information at any time by using the command:
perl -S perldoc perllocal
AUTHOR
Laszlo Molnar<EMAIL_ADDRESS>[Installing/building perl]Peter J. Farley III<EMAIL_ADDRESS>[Building/installing modules]
SEE ALSO
perl(1).
Index
This document was created by man2html, using the manual pages.
Time: 05:29:08 GMT, December 24, 2015


2 Chronicles 10:13
And the king answered them roughly; and king Rehoboam forsook the counsel of the old men,


{% extends "base.html" %} {% import 'bootstrap/form.html' as wtf %} {% block app_content %} ADD MOOVIE Please use our format which includes the year of release like this: Doctor Zhivago (1965) Also, please use the full title on the IMDB page for your moovie.
{% endblock %}