Skip to content

Commit

Permalink
Compatible deserialisation of previous version vdjca files.
Browse files Browse the repository at this point in the history
  • Loading branch information
dbolotin committed Oct 1, 2015
1 parent 2934621 commit 7d877d8
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@
import com.milaboratory.core.io.CompressionType;
import com.milaboratory.mixcr.reference.Allele;
import com.milaboratory.mixcr.reference.AlleleResolver;
import com.milaboratory.mixcr.reference.CompatibilityIO;
import com.milaboratory.mixcr.vdjaligners.VDJCAlignerParameters;
import com.milaboratory.primitivio.PrimitivI;
import com.milaboratory.util.CanReportProgress;
import com.milaboratory.util.CountingInputStream;

import java.io.*;
import java.util.Arrays;
import java.util.List;

import static com.milaboratory.mixcr.basictypes.VDJCAlignmentsWriter.*;
Expand Down Expand Up @@ -86,8 +86,16 @@ public void init() {
assert MAGIC_BYTES.length == MAGIC_LENGTH;
byte[] magic = new byte[MAGIC_LENGTH];
input.readFully(magic);
if (!Arrays.equals(magic, MAGIC_BYTES))
throw new RuntimeException("Unsupported file format; .vdjca file of version " + new String(magic) + " while you are running MiXCR " + MAGIC);
String magicString = new String(magic);
switch (magicString) {
case MAGIC_V3:
CompatibilityIO.registerV3Serializers(input.getSerializersManager());
break;
case MAGIC:
break;
default:
throw new RuntimeException("Unsupported file format; .vdjca file of version " + new String(magic) + " while you are running MiXCR " + MAGIC);
}

parameters = input.readObject(VDJCAlignerParameters.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import java.util.List;

public final class VDJCAlignmentsWriter implements AutoCloseable {
static final String MAGIC_V3 = "MiXCR.VDJC.V03";
static final String MAGIC = "MiXCR.VDJC.V04";
static final int MAGIC_LENGTH = 14;
static final byte[] MAGIC_BYTES = MAGIC.getBytes(StandardCharsets.US_ASCII);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* Copyright (c) 2014-2015, Bolotin Dmitry, Chudakov Dmitry, Shugay Mikhail
* (here and after addressed as Inventors)
* All Rights Reserved
*
* Permission to use, copy, modify and distribute any part of this program for
* educational, research and non-profit purposes, by non-profit institutions
* only, without fee, and without a written agreement is hereby granted,
* provided that the above copyright notice, this paragraph and the following
* three paragraphs appear in all copies.
*
* Those desiring to incorporate this work into commercial products or use for
* commercial purposes should contact the Inventors using one of the following
* email addresses: chudakovdm@mail.ru, chudakovdm@gmail.com
*
* IN NO EVENT SHALL THE INVENTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
* SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
* ARISING OUT OF THE USE OF THIS SOFTWARE, EVEN IF THE INVENTORS HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* THE SOFTWARE PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND THE INVENTORS HAS
* NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
* MODIFICATIONS. THE INVENTORS MAKES NO REPRESENTATIONS AND EXTENDS NO
* WARRANTIES OF ANY KIND, EITHER IMPLIED OR EXPRESS, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
* PARTICULAR PURPOSE, OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY
* PATENT, TRADEMARK OR OTHER RIGHTS.
*/
package com.milaboratory.mixcr.reference;

import com.milaboratory.primitivio.DefaultSerializersProviderImpl;
import com.milaboratory.primitivio.SerializersManager;

import static com.milaboratory.mixcr.reference.BasicReferencePoint.*;
import static com.milaboratory.mixcr.reference.BasicReferencePoint.CEnd;

/**
* Created by dbolotin on 30/09/15.
*/
public final class CompatibilityIO {
private CompatibilityIO() {
}

public static void registerV3Serializers(SerializersManager manager) {
manager.registerCustomSerializer(BasicReferencePoint.class,
new DefaultSerializersProviderImpl.CustomEnumSerializer<>(
BasicReferencePoint.class,
V5UTRBegin, V5UTREndL1Begin, L1EndVIntronBegin, VIntronEndL2Begin,
L2EndFR1Begin, FR1EndCDR1Begin, CDR1EndFR2Begin, FR2EndCDR2Begin,
CDR2EndFR3Begin, FR3EndCDR3Begin, VEndTrimmed, VEnd, DBegin,
DBeginTrimmed, DEndTrimmed, DEnd, JBegin, JBeginTrimmed,
CDR3EndFR4Begin, FR4End, CBegin, CExon1End, CEnd
));
}
}

0 comments on commit 7d877d8

Please sign in to comment.