#!python
#
#    JKS - Measurement database system
#    Copyright (C) 2013-2024  Christoph Lehner (christoph.lehner@ur.de, https://github.com/lehner/jks)
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with this program; if not, write to the Free Software Foundation, Inc.,
#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#
# Title:  Variance rescaling
# Author: Christoph Lehner
# Date:   2021
#
import jks, sys, os, math, glob, numpy as np
if len(sys.argv) < 4 or len(sys.argv) % 2 != 0:
    print("%s database.jks tag1 var_scale1 [tag2 var_scale2 ...]" % sys.argv[0])
    sys.exit(0)

Ntag=1 + (len(sys.argv) - 4) // 2

fno=sys.argv[1]

res=jks.resamples(fno)

for i in range(Ntag):
    otag=sys.argv[2+2*i]
    ovar_scale=float(sys.argv[3+2*i])
    jk=res.get(otag)
    for j in range(len(jk.blocks)):
        jk.blocks[j] = (jk.blocks[j] - jk.orig)*ovar_scale**0.5 + jk.orig
    #res.add(otag,jk)

res.save(fno)
