enter image description hereenter image description hereIs there a data analysis software (free) or code that I can use to view normalized CDR3 amino acid length distributions?

Regarding code, preferably using Python or R.

EDIT: Added a picture of the non-normalized CDR3 amino acid length distribution. The issue is that ES0017_metastasis has more samples than all other individuals which is why it has the highest peak at every amino acid length from 10-20. Was wondering if normalization was possible? Plot generated via Immunarch package in R.

EDIT2: Now able to access OriginPro and Graphpad Prism via university.

EDIT3: enter image description here

EDIT4: enter image description here Here are the results, what do you think... The first chart is the log transformation (one extra as well, don't know how to delete). The bottom chart is the min-max transformation.

The x-axis refers to amino acid length. Each discrete block is an amino acid length, e.g. 12 amino acids long, etc.

  • $\begingroup$ Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking. $\endgroup$
    – Community Bot
    Jul 26, 2023 at 18:28
  • $\begingroup$ Welcome to the site. It is unlikely free software is available, although PAML did capture this distribution, I think for HIV (thats about trees). The question is not clear as to what the goal of normalisation is. A histogram would be useful. Normalisation is usually requires trial and error based on the histogram. It is likely to be over dispersed but understanding the distribution is a good start. $\endgroup$
    – M__
    Jul 27, 2023 at 2:11
  • 1
    $\begingroup$ Apologies for the lack of clarity, edited the quesiton. $\endgroup$
    – SData11
    Jul 27, 2023 at 8:42

1 Answer 1


Final update

Okay the answer below is based on the second graph from the top. Looking at the update the correct answer is closer to the first answer presented. EDIT 3 is normalised data. It appears that the y-axis is probably natural log transformed (loge) or log2 and this transformation has normalised it.

Thus there is not need to normalise the data, the program has already done it in EDIT3 and in the very top graph now presented.

This looks impressive, thanks. I get it. There are two way to do this. If you are normalising the frequency (y-axis) is what you are wanting to normalise then either (in this instance its the wrong answer [see below the ----]):

  • a log10 transformation (even Excel will log this data)
  • a max-min transformation (thats in Python, likely in R - I dunno a general package maybe SPSS??, dunno)

You then test via the normal distribution using with Shapiro–Wilk test or Kolmogorov–Smirnov test

I suspect the max-min transformation will work. There are other ways in but it will involve discarding data that is >3SD from the mean. Try the above and see how it works.

Note, a specialist statistician will request you perform a QQ plot, because the above tests of normalisation are not perfect.

This is not standardisation this is conformation to the normal distribution.

This could be about bin size if you have a discrete range for gene length and doesn't need to be very big - normally you need to try a few values, in this case its just 1 amino acid bin ... This can be used as a sliding window. It will pull the data into a normal distribution. That may not be very well explained, but I'm pretty sure that will work.

1 amino acid sounds weird but part the failure to see a normal distribution is a result of your calculation: you are splitting an amino acid into fractions and thats whats causing the irregularities in the data. Thus between values 10 and 20 on the x-axis (presumably size range difference) you should only have 20 bars - but you've got loads > 100 which isn't possible.

Do that try SW and KS tests and you're sorted.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.