cannin/biostars_qa huggingface dataset:
Question: Im new to bioinformatics and trying to figure out log 2 FC..

i have a log 2 fold values of a parts of a gene in full sequence which is listed below using micro arrays.
log2-fold change
-0.611040
-0.583231
-0.495397
-0.462919
0.412907
0.405912 which goes on

does negative value mean down regulation and positive valuse mean up regulation ?? like the values with 0 ,1 or -1

Answer: From [wikipedia][1]:

> In the field of genomics (and more generally in bioinformatics), the modern usage is to define fold change in terms of ratios, and not by the alternative definition.[9][10]
> However, log-ratios are often used for analysis and visualization of fold changes. The logarithm to base 2 is most commonly used,[9][10] as it is easy to
> interpret, e.g. a doubling in the original scaling is equal to a log2
> fold change of 1, a quadrupling is equal to a log2 fold change of 2
> and so on. Conversely, the measure is symmetric when the change
> decreases by an equivalent amount e.g. a halving is equal to a log2
> fold change of −1, a quartering is equal to a log2 fold change of −2
> and so on.

and eg other posts here on Biostars:
https://www.biostars.org/p/101727/

in other words: have you tried googling it first?

[1]: https://en.wikipedia.org/wiki/Fold_change
Question: I invested some time into learning R and would prefer not to learn Python or Ruby just for convenience of parsing XML.

I am not a pro R programmer so I need a higher level library then XML package of R.
getNodeSet and XPath is very hard to use.

Answer: There are at least four packages (I haven't tried any of them) I found on crantastic.org:

- [RNCBIAxis2Libs](http://crantastic.org/packages/RNCBIAxis2Libs)
- [RNCBIEUtilsLibs](http://crantastic.org/packages/RNCBIEUtilsLibs)
- [NCBI2R](http://crantastic.org/packages/NCBI2R)
- [RNCBI](http://crantastic.org/packages/RNCBI)
Question: I want to train a binary classifier using cancer RNA-seq data. After differential expression analysis, I selected some top DEGs as features for glmnet training, however the performances were quite bad, I think this may be due to tumor heterogeneity.

Therefore I plan to do feature engineering, like using the sum of expression values of genes in one pathway as one feature.

I saw some paper used the raw counts (but microarray data) and some paper used normalized RNA-Seq counts. I feel a bit confused, what kind of counts should be added up here? raw counts? TPM or CPM or log-CPM? need to do normalization like TMM? or depends on which algorithm?

Answer: I also found this post: [Difference between CPM and TPM and which one for downstream analysis?](https://bioinformatics.stackexchange.com/questions/2298/difference-between-cpm-and-tpm-and-which-one-for-downstream-analysis).

The answers say TPM is better than CPM since TPM accounts for transcript length differences including more information, while the better one is values after normalization and transformation using `vst` or `rlog`.
Question: Hello,

I tried to use GSEA to generate mountain graph.

ERROR:
Trouble saving image
java.lang.IllegalArgumentException: Must be finite.

I think the input number is infinite.

So how I can figure out this problem?

Thanks in advance for any help!

Best,

Yue

Answer: This could be a bug in the software:
https://github.com/GSEA-MSigDB/gsea-desktop/issues/14

I suggest trying different gene enrichment analysis software or an older version of GSEA (not version 4.0)
Question: Hi,
I would like to rename the sequences in my file to have leading zeros in front of the header name using unix or perl based on the number of sequences in the file. I am unable to open these files using a text editor since they are too large.
Example.

```
>gmp-15
>gmp-126
>gmp-127890 to
>gmp-000015
>gmp-000126
>gmp-127890
```

Thanks

Answer: awk -F "-" '{if(/^>/)printf("%s-%06d\n",$1,$2); else print $0}' file.fasta > out.fasta
Question: First time trying out HISAT2 and I'm having a problem here, even with the pre-made indices for GRCH38.

$ hisat2 -x /share/projects/RNASeq/data/reference/GRCh38/grch38_tran -1 /home/echang/PANCANCER-030817-JE3-35880845/KTP-10-43736695/KTP-10_S3_L001_R1_001.fastq.gz -2 /home/echang/PANCANCER-030817-JE3-35880845/KTP-10-43736695/KTP-10_S3_L001_R2_001.fastq.gz -S tmp.sam

Error follows

Could not locate a HISAT2 index corresponding to basename "/share/projects/RNASeq/data/reference/GRCh38/grch38_tran"
Error: Encountered internal HISAT2 exception (#1)
Command: /home/echang/software/hisat2-2.1.0/hisat2-align-s --wrapper basic-0 -S tmp.sam -1 /tmp/31969.inpipe1 -2 /tmp/31969.inpipe2 /share/projects/RNASeq/data/reference/GRCh38/grch38_tran
(ERR): hisat2-align exited with value 1

The contents of the `grch38_tran`

$ ls /share/projects/RNASeq/data/reference/GRCh38/grch38_tran
genome_tran.1.ht2 genome_tran.3.ht2 genome_tran.5.ht2 genome_tran.7.ht2 make_grch38_tran.sh
genome_tran.2.ht2 genome_tran.4.ht2 genome_tran.6.ht2 genome_tran.8.ht2

I thought perhaps the `genome_tran.*.ht2` needed to change to `grch38_tran.*.ht2`, but it still does not work after renaming. I've since untarred the original file again without change. Was there a step I missed? Where can I find `HISTAT2_INDEXES`?

-x
The basename of the index for the reference genome. The basename is the name of any of the index files up to but not including the final .1.ht2 / etc. hisat2 looks for the specified index first in the current directory, then in the directory specified in the HISAT2_INDEXES environment variable.

Answer: Your genome index path in hisat2 should be,

-x /share/projects/RNASeq/data/reference/GRCh38/grch38_tran/genome_tran
Question: Hi,
I am comparing transcriptome assemblies from a few different assemblers and have been using BUSCO (http://busco.ezlab.org/) to characterize the completeness of assembly compared to a set of orthologues.

All seems to work well for some transcriptome assemblies (e.g. Trinity) but not for others (Oases) - I get this error:

*** Extracting candidate transcripts! ***
Traceback (most recent call last):
File "/root/Downloads/BUSCO_v1.22/BUSCO_v1.22.py", line 565, in
out = open('%s%s%s_.temp' % (args['tmp'],i,args['abrev']),'w')
IOError: [Errno 2] No such file or directory: './Locus_1_Transcript_5/10_Confidence_0.455_Length_2461new_.temp'

after running this

root@:~ python /root/Downloads/BUSCO_v1.22/BUSCO_v1.22.py -o new -in
./transcripts-l200.fasta -l /root/Downloads/BUSCO_v1.22/metazoa/ -m trans

All dependencies installed, and I as I said, works for some fasta assemblies but not others. I thought it might be issues with the long fasta headers, but that error does not suggest such a problem. Looking at that line in the python code;

if i in scaff_list:
565 out = open('%s%s%s_.temp' % (args['tmp'],i,args['abrev']),'w')
out.write('>%s\n' % (i))
check = 1

Any ideas?

Thanks for any help.

LP

Answer: Actually, it was the headers. There is a forward slash in each of the fasta headers in the Oases assembly output - that was the offender. Replacing "/" with an underscore character in all headers solved the problem.
Question: My file is like this-

Pcol Mcol
P1 M1,M2,M5,M6
P2 M1,M2,M3,M5
P3 M4,M5,M7,M6

I want to find the combination of Mcol elements along with Pcol.

Expected output-

Pcol Mcol
P1 M1,M2
P2 M1,M2
P1 M1,M5
P2 M1,M5
P1 M1,M6
P1 M2,M5
P2 M2,M5
P1 M2,M6
P1 M5,M6
P3 M5,M6
P2 M1,M3
P2 M2,M3
P3 M4,M5
P3 M4,M7
P3 M4,M6
P3 M7,M6

I have tried this-

x <- read.csv("file.csv" ,header = TRUE, stringsAsFactors = FALSE)
xx <- do.call(rbind.data.frame,
lapply(x$Gcol, function(i){
n <- sort(unlist(strsplit(i, ",")))
t(combn(n, 2))
}))

But it only gives output of combination not the Pcol elements.

Answer: Your code was very close we need to add *Pcol* in the output, see below:

# example data
x <- read.table(text = " Pcol Mcol
P1 M1,M2,M5,M6
P2 M1,M2,M3,M5
P3 M4,M5,M7,M6", header = TRUE, stringsAsFactors = FALSE)

res <- do.call(rbind,
apply(x, 1, function(i){
n <- sort(unlist(strsplit(i[ 2 ], ",")))
mycomb <- t(combn(n, 2))
data.frame(Pcol = unname(i[ 1 ]),
Mcol = paste(mycomb[, 1], mycomb[, 2], sep = ","))
})
)

# Pcol Mcol
# 1 P1 M1,M2
# 2 P1 M1,M5
# 3 P1 M1,M6
# 4 P1 M2,M5
# 5 P1 M2,M6
# 6 P1 M5,M6
# 7 P2 M1,M2
# 8 P2 M1,M3
# 9 P2 M1,M5
# 10 P2 M2,M3
# 11 P2 M2,M5
# 12 P2 M3,M5
# 13 P3 M4,M5
# 14 P3 M4,M6
# 15 P3 M4,M7
# 16 P3 M5,M6
# 17 P3 M5,M7
# 18 P3 M6,M7

Then to address your other question about adding frequency, try:

res$Freq <- table(res$Mcol)[ res$Mcol ]
# Pcol Mcol Freq
# 1 P1 M1,M2 2
# 2 P1 M1,M5 2
# 3 P1 M1,M6 1
# 4 P1 M2,M5 2
# 5 P1 M2,M6 1
# 6 P1 M5,M6 2
# 7 P2 M1,M2 2
# 8 P2 M1,M3 1
# 9 P2 M1,M5 2
# 10 P2 M2,M3 1
# 11 P2 M2,M5 2
# 12 P2 M3,M5 1
# 13 P3 M4,M5 1
# 14 P3 M4,M6 1
# 15 P3 M4,M7 1
# 16 P3 M5,M6 2
# 17 P3 M5,M7 1
# 18 P3 M6,M7 1
Question: Hi,

I got a little confused with the terms of annotation files for the human genome. I want to express, that I collected coordinates from the gtf file of ensemble version 91 with the title "Homo_sapiens.GRCh38.91.chr.gtf". This file is based on the Genome Reference Consortium Human Build 38 path 12 (GRCh38.p12). However, I'm not sure, how to correlty cite the file from ensembl, since I don't know if the two files are equal. Do I have to cite GRCh38.p12 or GRCh38.91?

Answer: p12 is the patch version of the GRCh38 genome.

91 is the version of the gene annotation. Looking at the [Ensembl archive site](http://dec2017.archive.ensembl.org/Homo_sapiens/Info/Index) for version 91, I can see that the genome patch version used was p10.

You should match your genome to your annotation. To get p12 annotation, you'll need to use the current (96) files from Ensembl.
Question: I am trying to index a bam file that was generated by bwa mem from a PacBio run (fastq) that did not contain any read names.
I don't want to run the alignment again. Of course, Edit: if the purpose of the index is to find reads by name (Edit: which is not the case), so this undertaking is somewhat silly but some tools require the bam file to be indexed. Also, I cannot just number the rows in the bam file because some may come from the same read. Is it possible?

$ samtools index -@50 SMRT1_Crogercresseyi.bam
[E::hts_idx_push] NO_COOR reads not in a single block at the end 7 -1
samtools index: failed to create index for "SMRT1_Crogercresseyi.bam"

Answer: I don't understand this. The purpose of the BAM index is to find reads when queried by location, not by name. Read names should have no impact on indexing.

Is your data aligned, and sorted by chromosome/position order?
Question: I have a big genomic file including coordinate as below.

Data:

chr10	42383177	42384128
chr10	42384129	42385080
chr10	42385081	42386032
chr10	42386033	42386984
chr10	42386985	42387936
chr10	42387937	42388888
chr10	42388889	42389840
chr10	42389841	42390793

I would like to extract some features from UCSC like:

- GC content
- conservation score (phastCons)
- repeat fraction (RepeatMasker)

is there any way to download the whole genomic table from UCSC or any script to get those scores for my given coordinates? How can I get those features from UCSC?

Many thanks in advance!

Answer: Hello,

These entire data sets are all available from our download server (as well as our API and public mysql for programmatic point access). Here is an example of the data locations for GRCh38/hg38:

* GC content - http://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/gc5BaseBw.txt.gz
* conservation score (phastCons) - http://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/phastConsElements100way.txt.gz
* repeat fraction (RepeatMasker) - http://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/rmsk.txt.gz

I would also like to mention we have a Data Integrator (http://genome.ucsc.edu/cgi-bin/hgIntegrator) tool. If you upload your bed file, you can then select tracks that it will overlap with your positions and annotate according to those tracks. I made a small bed file with your example positon, chose the following tables for hg38:

* GC Percent
* Conservation - Cons 100 verts
* RepeatMaster

Then configured some of the output fields (to reduce redundancy and simplify the example), and get an output as follows:

# hgIntegrator: database=hg38 region=genome Wed Jan 15 09:14:18 2020
#ct_UserTrack_3545.chrom	ct_UserTrack_3545.chromStart	ct_UserTrack_3545.chromEnd	gc5BaseBw.valueAverage	phastCons100way.valueAverage	rmsk.repName	rmsk.repClass	rmsk.repFamily
chr10	42383177	42384128	35.247108	AluSc	SINE	Alu
chr10	42383177	42384128	MER57A-int	LTR	ERV1
chr10	42383177	42384128	LTR19A	LTR	ERV1
chr10	42384129	42385080	47.024185	LTR19A	LTR	ERV1
chr10	42384129	42385080	LTR19-int	LTR	ERV1
chr10	42384129	42385080	AluYi6_4d	SINE	Alu
chr10	42384129	42385080	HERVFH19-int	LTR	ERV1
chr10	42385081	42386032	44.058885	HERVFH19-int	LTR	ERV1
chr10	42385081	42386032	AluSx1	SINE	Alu
chr10	42386033	42386984	44.794953	AluSx1	SINE	Alu
chr10	42386033	42386984	HERVFH19-int	LTR	ERV1
chr10	42386985	42387936	43.238696	HERVFH19-int	LTR	ERV1
chr10	42386985	42387936	AluSg	SINE	Alu
chr10	42386985	42387936	HERVFH19-int	LTR	ERV1
chr10	42387937	42388888	45.467928	HERVFH19-int	LTR	ERV1
chr10	42387937	42388888	AluSx1	SINE	Alu
chr10	42387937	42388888	HERVFH19-int	LTR	ERV1
chr10	42388889	42389840	41.808623	HERVFH19-int	LTR	ERV1
chr10	42389841	42390793	46.491597	HERVFH19-int	LTR	ERV1
chr10	42389841	42390793	AluSz	SINE	Alu
chr10	42389841	42390793	HERVFH19-int	LTR	ERV1

You'll notice though that this region does not have conservation scores, looks to be due to repeats. If you have further questions you can email us at genome@soe.ucsc.edu.
Question: Hi,

I am planning on doing eQTL analysis using the MatrixEQTL R ([MatrixEQTL link][1]) package and I need to extract genotype information and create a SnpMatrix file for that like the one given here [SNP.txt file link][2]. I have tried vcftools to create a similar looking file but to no avail, I have tried

- vcf-to-tab < genotypes.vcf > requiredFormat.txt
- [Sample output][3]

- vcftools --vcf genotypes.vcf --extract-FORMAT-info GT --out requiredFormat.txt
- [Sample output][4]

Is there any other way to extract genotype information from the VCF file and convert it to that format?

Thanks
> Description of the SnpMatrix file - In VCF files, 0 represents the reference allele and integers greater than 0
represent the alternate alleles (i.e., 2, 3, 4 would indicate the 2nd, 3rd
or 4th allele in the ALT field for a particular variant). This function only
supports variants with a single alternate allele and therefore the alternate
values will always be 1. Genotypes are stored in the SnpMatrix
as 0, 1, 2 or 3 where 0 = missing, 1 = "0/0", 2 = "0/1" or "1/0" and
3 = "1/1". In SnpMatrix terminology, "A" is the reference allele
and "B" is the risk allele. Equivalent statements to those made with 0 and 1
allele values would be 0 = missing, 1 = "A/A", 2 = "A/B" or "B/A" and 3 = "B/B".

[1]: http://www.bios.unc.edu/research/genomic_software/Matrix_eQTL/R.html "MatrixEQTL link"
[2]: http://www.bios.unc.edu/research/genomic_software/Matrix_eQTL/Sample_Data/SNP.txt "SNP.tx"
[3]: https://postimg.cc/image/riksnalf9 "out"
[4]: https://postimg.org/image/n2u7bbdxl/ "out2"

Answer: using bioalcidae and the following script: http://lindenb.github.io/jvarkit/BioAlcidae.html

var snp_id=0;
var samples = header.getSampleNamesInOrder();
out.print("id");
for(var i=0;i< samples.size();++i)
{
out.print("\t"+samples.get(i));
}
out.println();

while(iter.hasNext()) {
var ctx= iter.next();
++snp_id;
out.print(new java.lang.Integer(snp_id));
for(var i=0;i< samples.size();++i)
{
out.print("\t");
var g= ctx.getGenotype(samples.get(i));
if(g.isHomRef())
{
out.print("1");
}
else if(g.isHet())
{
out.print("2");
}
else if(g.isHomVar())
{
out.print("3");
}
else
{
out.print("0");
}
}

out.println();
}
Question: Hello, I'm new with python and especially with Biopython. I'm trying to take some information from an XML file with Entrez.efetch and then read it. Last week this script worked well:

handle = Entrez.efetch(db="Protein", id="YP_008872780.1", retmode="xml")
records = Entrez.read(handle)

But now I'm getting an Error:

Bio.Entrez.Parser.ValidationError: Failed to find tag 'GBSeq_xrefs' in the DTD. To skip all tags that are not represented in the DTD, please call Bio.Entrez.read or Bio.Entrez.parse with validate=False.

So I run this:

records = Entrez.read(handle, validate=False)

But I'm still getting an Error:

TypeError: 'str' object does not support item assignment

After some research I realized that NCBI made new changes concerning the RefSeq which creates new tags in the xml file (of GenPept): http://www.ncbi.nlm.nih.gov/mailman/pipermail/refseq-announce/2014q2/000117.html

Do I need to change something in the DTD to support these new tags?

Thank you very much for your support.

Answer: The DTD used by Bio.Entrez is out of date.

Download the DTD from here

Put it in the Bio.Entrez DTDs folder.

To find the location of the folder:

>>> from Bio import Entrez
>>> Entrez.__file__

The folder is `xxxxxxxxxxxxxxxxxxxx/Bio/Entrez/DTDs`
Question: Hi all,

Any script available for doing sequence length disrtibution of fastq file?

Thanks,
Deepthi

Answer: You can use [FASTQC][1]. It gives you all the details you need, including the quality, overrepresented sequences, enriched k-mers etc.

[1]: http://www.bioinformatics.babraham.ac.uk/projects/fastqc/
Question: Suppose we have two random sequences A and B of **L nucleotide** each. What is the probability to observe a common substring (kmer) of at least **k nucleotides** between those two strings ? What I have got so far :

#param :
k = 3 #common substring must be of at least 3 nucleotides
L = length(A) = length(B) = 12 #the two random sequences are 12 nt long

prob_kmer = 1/(4**k) # 1/64, the probability to observe a particular sequence in a random kmer
N_prob_kmer = 1 - prob_kmer # 63/64, the probability to NOT observe a particular sequence in a random kmer
nb_kmer = L - k + 1 # 10, the number of possible kmer in a sequence of length 12
nb_comparison = nb_kmer**2 # 100, the number of kmer comparison between the two sequences of length 12

P = 1 - ((N_prob_kmer)**(nb_comparison)) # 80%, probability to find at least one of the kmer of sequence A matching a kmer of sequence B.

Is this correct ? I'm concerned that subsequent k-mer do not have independent sequences (they share some nucleotide since they are overlapping) so the probabilities are not independent either... But I have no idea how to take that into account in my calculation.

Thanks.

Answer: I would approach the problem like this:

> 1) Estimate number of unique kmers in each sequence.
>
> 2) Calculate probability of the sets intersecting.

I'm sure there's a closed-form solution for each, but I don't know them off the top of my head, so here's how I'd do it iteratively:

public class ProbShared {

public static void main(String args[]){
int k=Integer.parseInt(args[0]);
int len1=Integer.parseInt(args[1]);
int len2=Integer.parseInt(args[2]);

System.out.println("Cardinality 1: "+cardinality(k, len1));
System.out.println("Cardinality 2: "+cardinality(k, len2));
System.out.println("Probability: "+probIntersect(k, len1, len2));

}

static int cardinality(int k, int seqLength){
double space=Math.pow(4, k);
int kmers=seqLength-k+1;
double unique=0;
for(int i=0; ijava fun.ProbShared 3 10 17
Cardinality 1: 8
Cardinality 2: 13
Probability: 0.8521277771213935

Edit: As explained below, this does NOT correctly solve the problem of kmers generated from strings (which all overlap); rather, it solves the problem for sets of completely random numbers. As a result, it gives an overestimate for the probability of two strings sharing kmers by up to ~25% depending on the string length and kmer length. The reason is that if two strings share one kmer, there is a minimum of a 25% chance that they also share the next kmer, and 6.25% chance that they share the kmer after that, rather than a flat 1/(4^K) chance if the kmers were non-overlapping. Therefore, if two strings *don't* share a specific kmer, there must be a similarly reduced chance that they don't share the next kmer. It's probably possible to update the code to be correct given this information.
Question: Hi all!

We have a working NGS analysis variant calling pipeline for cancer which we've recently ran on a sample.

A certain mutation was found, specifically in chr3:178936095 (hg19), now as part of a confirmation process the lab ran a Sanger sequencing process on the mutation region and found out that a 2-based deletion and 1-base insertion wrt hg19, occurred in a close position, in chr3:178936116 and that the mutation we found seems like a false-positive.

Looking through the VCF files, I didn't find the deletion+insertion position, nor did I find it when I checked the BAM file.

We're using:
- BWA MEM as an aligner. Our command for running is: `bwa mem -t 12 -R > aligned.sam`
- Realigning around indels using GATK.
- Calling variants with FreeBayes, GATK & bcf tools.
- Currently there's no filter based on read quality other than the default one in bwa mem.

There was a consensus between all 3 on the mutation we found from the NGS data.

This has led me to think that the reads 'supporting' that hypothesis weren't aligned from the .fastq files as they were too different from the reference or got a 'lower score'.

My question is: Has something similar ever occurred to you? Is there a parameter/argument I can provide BWA MEM with so that those missing reads would be aligned? Otherwise, can you recommend a program/pipeline I can use to call these indels/insertions successfully?

Thank you very much in advance,

Alon

Answer: By "false positive", do you really mean "false negative"? By "2-based deletion and 1-base insertion", do you mea "2-base insertion and 1-base deletion wrt hg19"?

You can cut the flanking sequences and map to hg19 again. You will find that chr3:178936095 is similar to the ~chr22:17052975. They differ by a couple of mismatches and one gap. The gap difference happens to occur at chr3:178936116. It is possible that bwa-mem maps the reads on chr3 to chr22 (false mapping); it is also possible that your sanger PCR is non-specific (false priming and thus NGS is correct). Hard to conclude without detailed analysis.
Question: Hi,

I know it is too naive but when I tried to extract genes with fold-change >2.0 or <0.5 alterations I faced error.

I tried so

results <- t[which(abs(t$logFC) > 1 & t$adj.P.Val < 0.05),]

This gives me only `fold-change >2.0` , then how I add `fold-change < 0.5` to this code please??

Thank you
Question: Hello everyone!
I made a GWAS analysis and found several SNPs that are located close to each other (less than 0.5 megabases). Then I want to find haploblocks in order to make haploblock-trait association. In case If I want to find haploblocks that are associated with the trait of interest should I use only significantly associated SNPs in order to find haploblocks (in Haploview) or the other nearly located SNPs should also be included in the analysis?

Answer: Hey,

No, for HaploView, use all of your SNPs that have passed quality control checks. HaploView will then determine haploblocks and haplotypes based on whatever measure / metric that you select. You can note the haploblocks in which your statistically significant SNPs lie.

As far as I am aware, HaploView provides functions that also then permit you to perform association tests based on the defined haploblocks / types.

Kevin
Question: Dear all:

I have downloaded Geneious software trial version [https://www.geneious.com/][1], but now it is expired. As a fresh level grad student, I can't afford to pay full version of Geneious software. I aware that Geneious has abundant features to analyze NGS data. My expectation is to find tools that relatively similar to Geneious. My major intent is to carry out **phylogenetic analysis**.Can anyone recommend the better alternative for Geneious tools? Is there any free, open source software tools that can be alternative for Geneious? My colleague is not well comfortable with R environment, so we are seeking tools that require less programming input. Can anyone give possible aid or point out which library we can use?

[1]: https://www.geneious.com/

Answer: [MEGA][1] should fit the bill.

[1]: http://megasoftware.net/